From: Norman Walsh Date: Wed, 17 Dec 2003 01:01:34 +0000 (+0000) Subject: Support unicode.font in Xalan extensions X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e502d471c7cf601fc30e48e9a0da4e6bd5b59bff;p=docbook-dsssl Support unicode.font in Xalan extensions --- diff --git a/xsl/extensions/xalan2/.classes/Makefile.common b/xsl/extensions/xalan2/.classes/Makefile.common index 13b234da0..5f02eb756 100644 --- a/xsl/extensions/xalan2/.classes/Makefile.common +++ b/xsl/extensions/xalan2/.classes/Makefile.common @@ -1,6 +1,6 @@ -XALANROOT=/projects/apache/xml-xalan/java +XALANROOT=/usr/local/java/xalan2 -CLASSPATH=$(CLASSBASE):$(XALANROOT)/build/xalan.jar:$(XALANROOT)/bin/xml-apis.jar:$(XALANROOT)/bin/xercesImpl.jar:/usr/local/jaxp-1.1/jaxp.jar:/usr/local/jaxp-1.1/parser.jar +CLASSPATH=$(CLASSBASE):$(XALANROOT)/bin/xalan.jar:$(XALANROOT)/bin/xml-apis.jar:$(XALANROOT)/bin/xercesImpl.jar:/usr/local/jwsdp-1.3/jaxp/lib/jaxp-api.jar all: $(CLASSFILES) -@for f in $(SUBDIRS); do \ @@ -18,7 +18,7 @@ clean: done jar: all - jar cf ../../xalan2.jar `find com -name "*.class" -print` + jar cf ../../xalan25.jar `find com -name "*.class" -print` %.class : %.java javac -classpath $(CLASSPATH) \ diff --git a/xsl/extensions/xalan2/com/nwalsh/xalan/FormatCallout.java b/xsl/extensions/xalan2/com/nwalsh/xalan/FormatCallout.java index 0c179a1dc..aa5cf1701 100644 --- a/xsl/extensions/xalan2/com/nwalsh/xalan/FormatCallout.java +++ b/xsl/extensions/xalan2/com/nwalsh/xalan/FormatCallout.java @@ -3,7 +3,7 @@ package com.nwalsh.xalan; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; import org.w3c.dom.*; -import org.apache.xpath.DOMHelper; +import org.apache.xml.utils.DOMHelper; import org.apache.xml.utils.DOMBuilder; import org.apache.xml.utils.AttList; import com.nwalsh.xalan.Callout; diff --git a/xsl/extensions/xalan2/com/nwalsh/xalan/FormatUnicodeCallout.java b/xsl/extensions/xalan2/com/nwalsh/xalan/FormatUnicodeCallout.java index ef8f352fd..2fdaf54ce 100644 --- a/xsl/extensions/xalan2/com/nwalsh/xalan/FormatUnicodeCallout.java +++ b/xsl/extensions/xalan2/com/nwalsh/xalan/FormatUnicodeCallout.java @@ -1,5 +1,6 @@ package com.nwalsh.xalan; +import org.xml.sax.helpers.AttributesImpl; import org.xml.sax.SAXException; import org.w3c.dom.*; import org.apache.xml.utils.DOMBuilder; @@ -30,8 +31,10 @@ import org.apache.xml.utils.AttList; public class FormatUnicodeCallout extends FormatCallout { int unicodeMax = 0; int unicodeStart = 0; + String unicodeFont = ""; - public FormatUnicodeCallout(int start, int max, boolean fo) { + public FormatUnicodeCallout(String font, int start, int max, boolean fo) { + unicodeFont = font; unicodeMax = max; unicodeStart = start; stylesheetFO = fo; @@ -45,11 +48,34 @@ public class FormatUnicodeCallout extends FormatCallout { try { if (label == null && num <= unicodeMax) { + AttributesImpl inAttr = new AttributesImpl(); + String ns = ""; + String prefix = ""; + String inName = ""; + + if (!unicodeFont.equals("")) { + if (stylesheetFO) { + ns = foURI; + prefix = "fo:"; + inName = "inline"; + inAttr.addAttribute("", "", "font-family", "CDATA", unicodeFont); + } else { + inName = "font"; + inAttr.addAttribute("", "", "face", "CDATA", unicodeFont); + } + } + char chars[] = new char[1]; chars[0] = (char) (unicodeStart + num - 1); startSpan(rtf); + if (!unicodeFont.equals("")) { + rtf.startElement(ns, inName, prefix+inName, inAttr); + } rtf.characters(chars, 0, 1); + if (!unicodeFont.equals("")) { + rtf.endElement(ns, inName, prefix+inName); + } endSpan(rtf); } else { formatTextCallout(rtf, callout); diff --git a/xsl/extensions/xalan2/com/nwalsh/xalan/Params.java b/xsl/extensions/xalan2/com/nwalsh/xalan/Params.java index fd6c97a3c..20261261d 100644 --- a/xsl/extensions/xalan2/com/nwalsh/xalan/Params.java +++ b/xsl/extensions/xalan2/com/nwalsh/xalan/Params.java @@ -22,7 +22,8 @@ public class Params { return ""; } } catch (TransformerException te) { - System.out.println("Transformer exception getting value of $" + varName); + // Nevermind the warning + // System.out.println("Transformer exception getting value of $" + varName); return ""; } } diff --git a/xsl/extensions/xalan2/com/nwalsh/xalan/Verbatim.java b/xsl/extensions/xalan2/com/nwalsh/xalan/Verbatim.java index 43425d5ba..42fd74838 100644 --- a/xsl/extensions/xalan2/com/nwalsh/xalan/Verbatim.java +++ b/xsl/extensions/xalan2/com/nwalsh/xalan/Verbatim.java @@ -457,8 +457,9 @@ public class Verbatim { } else if (Params.getBoolean(context, "callout.unicode")) { int uStart = Params.getInt(context, "callout.unicode.start.character"); int uMax = Params.getInt(context, "callout.unicode.number.limit"); + String uFont = Params.getString(context, "callout.unicode.font"); return insertUnicodeCallouts(areaspecNodeSet, xalanNI, defaultColumn, - uStart, uMax, useFO); + uFont, uStart, uMax, useFO); } else if (Params.getBoolean(context, "callout.dingbats")) { int dMax = 10; return insertDingbatCallouts(areaspecNodeSet, xalanNI, defaultColumn, @@ -482,10 +483,11 @@ public class Verbatim { public DocumentFragment insertUnicodeCallouts (NodeIterator areaspecNodeSet, NodeIterator xalanNI, int defaultColumn, + String uFont, int uStart, int uMax, boolean useFO) { - FormatUnicodeCallout fuc = new FormatUnicodeCallout(uStart, uMax, useFO); + FormatUnicodeCallout fuc = new FormatUnicodeCallout(uFont, uStart, uMax, useFO); return insertCallouts(areaspecNodeSet, xalanNI, defaultColumn, fuc); }