Return-Path: X-Original-To: apmail-xmlgraphics-fop-dev-archive@www.apache.org Delivered-To: apmail-xmlgraphics-fop-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E2EF7817F for ; Mon, 5 Sep 2011 22:34:31 +0000 (UTC) Received: (qmail 71160 invoked by uid 500); 5 Sep 2011 22:34:31 -0000 Delivered-To: apmail-xmlgraphics-fop-dev-archive@xmlgraphics.apache.org Received: (qmail 71068 invoked by uid 500); 5 Sep 2011 22:34:30 -0000 Mailing-List: contact fop-dev-help@xmlgraphics.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: fop-dev@xmlgraphics.apache.org Delivered-To: mailing list fop-dev@xmlgraphics.apache.org Received: (qmail 71061 invoked by uid 99); 5 Sep 2011 22:34:30 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 05 Sep 2011 22:34:30 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [74.43.0.115] (HELO mail.blockhouse.com) (74.43.0.115) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 05 Sep 2011 22:34:25 +0000 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01CC6C1B.E7C1D03F" X-MimeOLE: Produced By Microsoft Exchange V6.5 Subject: RE: How to translate characters? Date: Mon, 5 Sep 2011 18:31:08 -0400 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: How to translate characters? thread-index: AcxprEPORRyWKS7RQj6BwdTAUSbHYwCbz34r References: <4E611898.7060508@maden.org> <4E6132FA.902@maden.org> <4E6137EC.1060404@maden.org> From: "Eric Douglas" To: This is a multi-part message in MIME format. ------_=_NextPart_001_01CC6C1B.E7C1D03F Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable So, I'm confused. I put that exact string into an fo:inline. I'm running embedded code and I separated the XML-FO transform step from = the FOP step. I'm just running a straight Oracle transform. My input is an XML file containing the string □ My transformer is created using an XSL file. My output is an FO file with that string converted to a square. I put that string into a Java String and get the value. It comes out = the same as it went in. How do I get the value of the String as a square? -----Original Message----- From: Christopher R. Maden [mailto:crism@maden.org] Sent: Fri 9/2/2011 4:09 PM To: fop-dev@xmlgraphics.apache.org Subject: Re: How to translate characters? =20 I overlooked a couple things here... so by way of explanation: On 09/02/2011 02:44 PM, Eric Douglas wrote: > 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 > ? so there must be something in the Oracle > Transformer. There is nothing in the Oracle Transformer doing this. When you pass XML+XSLT or raw FO XML to FOP, the first thing that happens is the XML is parsed. XML is a markup language (obviously): the information represented by: ? ? is not only identical in effect, but literally indistinguishable after parsing. Operating on the parsed document, you cannot tell these things apart. They each represent a single XML element (named inline in the FO namespace) with a single character of content, U+25A1 WHITE SQUARE. The Oracle Transformer is operating on that data: an element with content that is one character long. No lookup or mapping is done. > So it seems FOP just gets the actual square and still has to know > what character it maps to in the font. FOP gets the square which *is* a character. It knows which character it maps to because it *is* that character. What FOP doesn't know (at first) is which fonts have useful glyphs for that character. It looks through the fonts currently in scope (as specified in the list in the font-family property) to find the first one that does specify a useful glyph for that character.[*] ~Chris [*] Strictly, as I understand it, it looks for the font that best matches an entire string, as character-by-character font selection isn't implemented. But for a single-character string, it's the same thing. --=20 Chris Maden, text nerd "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) ------_=_NextPart_001_01CC6C1B.E7C1D03F Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 eJ8+IjwWAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEEgAEAIQAAAFJFOiBIb3cgdG8gdHJhbnNs YXRlIGNoYXJhY3RlcnM/AI8LAQWAAwAOAAAA2wcJAAUAEgAfAAgAAQAqAQEggAMADgAAANsHCQAF ABIAIQA7AAEAXwEBCYABACEAAAA4OTBFRkUxM0ExNTdGODQ1QjYwMjg0NjVFMkY1MjcyOQARBwED kAYAjA8AADkAAAADACYAAAAAAAMANgAAAAAAQAA5AIPpyoEbbMwBHgA9AAEAAAAFAAAAUkU6IAAA AAACAUcAAQAAADYAAABjPVVTO2E9IDtwPUJsb2NraG91c2U7bD1CSEVYQ0hBTkdFLTExMDkwNTIy MzM1OVotNTE2MQAAAB4ASQABAAAAIQAAAFJlOiBIb3cgdG8gdHJhbnNsYXRlIGNoYXJhY3RlcnM/ AAAAAEAATgAAvr4wrGnMAR4AWgABAAAAFQAAAENocmlzdG9waGVyIFIuIE1hZGVuAAAAAAIBWwAB AAAAQgAAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAAENocmlzdG9waGVyIFIuIE1hZGVuAFNNVFAA Y3Jpc21AbWFkZW4ub3JnAAAAAgFcAAEAAAAVAAAAU01UUDpDUklTTUBNQURFTi5PUkcAAAAAHgBd AAEAAAAVAAAAQ2hyaXN0b3BoZXIgUi4gTWFkZW4AAAAAAgFeAAEAAABCAAAAAAAAAIErH6S+oxAZ nW4A3QEPVAIAAAAAQ2hyaXN0b3BoZXIgUi4gTWFkZW4AU01UUABjcmlzbUBtYWRlbi5vcmcAAAAC AV8AAQAAABUAAABTTVRQOkNSSVNNQE1BREVOLk9SRwAAAAAeAGYAAQAAAAUAAABTTVRQAAAAAB4A ZwABAAAAEAAAAGNyaXNtQG1hZGVuLm9yZwAeAGgAAQAAAAUAAABTTVRQAAAAAB4AaQABAAAAEAAA AGNyaXNtQG1hZGVuLm9yZwAeAHAAAQAAAB0AAABIb3cgdG8gdHJhbnNsYXRlIGNoYXJhY3RlcnM/ AAAAAAIBcQABAAAAGwAAAAHMaaxDzkUcliku0UI+gcHUwFEmx2MAm89+KwAeAHQAAQAAAB8AAABm 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 I8S3A7dvajHsWypHxSPEfkUDQYrEof86EyIAd2AgED0xISAkcASB/yIwJcJfcj1huPPDZapUIXT3 JQAiMLAGdEvhLbOH0mcB1yI0x3NOly1SkC2XCMnjfxbAK+AiAFOxLZGzwXQ1bfdRMY4SINNCIVFd cpJWzbn/zEZiwzynUXMjtUKgT6VFAz9F5HGhDsIjkAsgIQA8VRxSTETgK3A0QDovL6VG0y5HNy8g fnUimmK3kdaYAUYRY8IRJdFkBoHvIWE+gAsRc6RQBvAN4EAyf05SQyA2sGLywqUoUWKRQR8xgYgB BjEKsCCxLiIg9dTAQQtgYjzwOgFRIBsgZz0BCFJfgTE5HWBPRSj8UGlQoDtAIPAf8CFQRYG1A6BC jzJUjzAg8Cbisp5lSyMgEIOwH+EuMiVQKQ4wNClBin3lgB4ANRABAAAARQAAADxCRTVBQkQyOURB QTdEODREOTk2M0NBOTIzQzk2Q0VBNzAxMUNDNTY5QEJIRVhDSEFOR0UuYmxvY2tob3VzZS5jb20+ AAAAAB4AORABAAAA3gAAADxCRTVBQkQyOURBQTdEODREOTk2M0NBOTIzQzk2Q0VBNzAxQUYyOUEz QEJIRVhDSEFOR0UuYmxvY2tob3VzZS5jb20+IAk8NEU2MTE4OTguNzA2MDUwOEBtYWRlbi5vcmc+ IDxCRTVBQkQyOURBQTdEODREOTk2M0NBOTIzQzk2Q0VBNzAxQUYyOUE0QEJIRVhDSEFOR0UuYmxv Y2tob3VzZS5jb20+IDw0RTYxMzJGQS45MDJAbWFkZW4ub3JnPiA8NEU2MTM3RUMuMTA2MDQwNEBt YWRlbi5vcmc+AAAAHgBHEAEAAAAPAAAAbWVzc2FnZS9yZmM4MjIAAAsA8hABAAAAHwDzEAEAAABS AAAAUgBFACUAMwBBACAASABvAHcAIAB0AG8AIAB0AHIAYQBuAHMAbABhAHQAZQAgAGMAaABhAHIA YQBjAHQAZQByAHMAJQAzAEYALgBFAE0ATAAAAAAACwD2EAAAAABAAAcwxSTGgRtszAFAAAgw2IDS 5xtszAEDAN4/r28AAAMA8T8JBAAAHgD4PwEAAAANAAAARXJpYyBEb3VnbGFzAAAAAAIB+T8BAAAA YgAAAAAAAADcp0DIwEIQGrS5CAArL+GCAQAAAAAAAAAvTz1CTE9DS0hPVVNFL09VPUZJUlNUIEFE TUlOSVNUUkFUSVZFIEdST1VQL0NOPVJFQ0lQSUVOVFMvQ049RURPVUdMQVMAAAAeAPo/AQAAABUA AABTeXN0ZW0gQWRtaW5pc3RyYXRvcgAAAAACAfs/AQAAAB4AAAAAAAAA3KdAyMBCEBq0uQgAKy/h ggEAAAAAAAAALgAAAAMA/T/kBAAAAwAZQAAAAAADABpAAAAAAAMAHUAAAAAAAwAeQAAAAAAeADBA AQAAAAkAAABFRE9VR0xBUwAAAAAeADFAAQAAAAkAAABFRE9VR0xBUwAAAAAeADJAAQAAABAAAABj cmlzbUBtYWRlbi5vcmcAHgAzQAEAAAAQAAAAY3Jpc21AbWFkZW4ub3JnAB4AOEABAAAACQAAAEVE T1VHTEFTAAAAAB4AOUABAAAAAgAAAC4AAAADAHZA/////wsAKQAAAAAACwAjAAAAAAADAAYQ2m/d ZgMABxCwCAAAAwAQEAAAAAADABEQAAAAAB4ACBABAAAAZQAAAFNPLElNQ09ORlVTRURJUFVUVEhB VEVYQUNUU1RSSU5HSU5UT0FORk86SU5MSU5FSU1SVU5OSU5HRU1CRURERURDT0RFQU5ESVNFUEFS QVRFRFRIRVhNTC1GT1RSQU5TRk9STVMAAAAAAgF/AAEAAABFAAAAPEJFNUFCRDI5REFBN0Q4NEQ5 OTYzQ0E5MjNDOTZDRUE3MDExQ0M1NjlAQkhFWENIQU5HRS5ibG9ja2hvdXNlLmNvbT4AAAAALIE= ------_=_NextPart_001_01CC6C1B.E7C1D03F--