I see.  As I said I saw something in the FOP classes which appeared to be 
looking for such a code and translating it, but I just pulled up a .FO file and 
I see it's already translated to be <fo:inline>□</fo:inline> so there must be 
something in the Oracle Transformer.
So it seems FOP just gets the actual square and still has to know what 
character it maps to in the font.

So I'm trying to pass in this text ("&#x25A1;") and get it to display with 
Java's Graphics2D.drawText().
So I'm wondering if I translate that the same way I do to create this FO, with 
an XSL file and a Transformer or if there's a simpler method.
So I'm looking at the class java.nio.charset.Charset trying to figure out if or 
how that connects to a custom font file.


-----Original Message-----
From: Christopher R. Maden [mailto:[email protected]] 
Sent: Friday, September 02, 2011 1:56 PM
To: [email protected]
Subject: Re: How to translate characters?

On 09/02/2011 01:40 PM, Eric Douglas wrote:
> I pass a character into my XML/FO as &#x25A1; and it shows on the PDF 
> as a square.
> I'm trying to figure out what Java has for interpreting such code, and 
> it appears FOP just string searches and pulls out the number, in the 
> class org.apache.xmlgraphics.fonts.Glyphs.
> Is this all it is, to search text for "&#" and ";" and find the 
> character value between, or is there an actual Java class/method for 
> translating such values?

By the time FOP gets this information, the XML has been parsed.
&#x25a1; is just a convenient way of entering the single character with Unicode 
value 25A1, □, WHITE SQUARE.  Equivalents would be &#9633; or (with common ISO 
entity declarations) &squ; - in all cases, FOP just receives a single 
character, □.

FOP then attempts to find which of the specified fonts actually has a glyph for 
that character, and does so using the numeric Unicode value of the character, 
but that is independent of how the input XML (which FOP does not see) specified 
the character.  If you’re looking at altering or overriding the code, you need 
to operate in the character domain, not the XML markup domain.

(By analogy, FOP receives elements, root-in-the-FO-namespace etc., not the 
string “<fo:root ...”.  This is the same kind of thing.)

~Chris
--
Chris Maden, text nerd  <URL: http://crism.maden.org/ > “The present tendency 
and drift towards the Police State gives all  free Americans pause.” - Alabama 
Supreme Court, 1955  (Pike v. Southern Bell Tel. & Telegraph, 81 So.2d 254)

Reply via email to