Font names using multi-byte strings
Mark Gibson <[email protected]> Thu, 15 Jan 2026 17:09:34 +0000
| Newsgroups | gmane.text.xml.fop.user |
|---|---|
| Message-ID | <SN7PR04MB8767FCEF0C434834531030E0DD8CA@SN7PR04MB8767.namprd04.prod.outlook.com> |
--_000_SN7PR04MB8767FCEF0C434834531030E0DD8CASN7PR04MB8767namp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Hi,
I thought I'd just poll the community on this one, as I can't see it report=
ed anywhere.
We have a PDF that lists its fonts using Japanese characters (in this case,=
it's MS Gothic and MS PGothic, where "Gothic" actually is in Japanese char=
acters).
When trying to import that image using fo:external-graphic (fop-pdf-images.=
jar), we get an exception with the message "Only 8-bit characters allowed b=
y this implementation".
In reviewing FOP code, org.apache.fop.pdf.PDFName.toHex() throws this excep=
tion if the character id is > 256.
Does this mean FOP cannot handle cases where the names of PDF records are n=
ot in simple ascii range?
Caused by: java.lang.IllegalArgumentException: Only 8-bit characters allowe=
d by this implementation
at org.apache.fop.pdf.PDFName.toHex(PDFName.java:78)
at org.apache.fop.pdf.PDFName.escapeName(PDFName.java:64)
at org.apache.fop.pdf.PDFName.<init>(PDFName.java:42)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(P=
DFCloner.java:106)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDF=
Cloner.java:154)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(P=
DFCloner.java:104)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSObject(PDFClon=
er.java:134)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(P=
DFCloner.java:84)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDF=
Cloner.java:154)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(P=
DFCloner.java:104)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDF=
Cloner.java:154)
at org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(P=
DFCloner.java:104)
at org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter.cloneForNewDocume=
nt(PDFBoxAdapter.java:141)
at org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter.createStreamFromP=
DFBoxPage(PDFBoxAdapter.java:212)
at org.apache.fop.render.pdf.pdfbox.AbstractPDFBoxHandler.createStr=
eamForPDF(AbstractPDFBoxHandler.java:111)
at org.apache.fop.render.pdf.pdfbox.PDFBoxImageHandler.handleImage(=
PDFBoxImageHandler.java:77)
--_000_SN7PR04MB8767FCEF0C434834531030E0DD8CASN7PR04MB8767namp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" xmlns:w=3D"urn:sc=
hemas-microsoft-com:office:word" xmlns:m=3D"http://schemas.microsoft.com/of=
fice/2004/12/omml" xmlns=3D"http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Aptos;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:12.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;
mso-fareast-language:EN-US;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang=3D"EN-GB" link=3D"#467886" vlink=3D"#96607D" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hi,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">I thought I’d just poll the community on this =
one, as I can’t see it reported anywhere.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">We have a PDF that lists its fonts using Japanese ch=
aracters (in this case, it’s MS Gothic and MS PGothic, where “G=
othic” actually is in Japanese characters).<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">When trying to import that image using fo:external-g=
raphic (fop-pdf-images.jar), we get an exception with the message “On=
ly 8-bit characters allowed by this implementation”.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">In reviewing FOP code, org.apache.fop.pdf.PDFName.to=
Hex() throws this exception if the character id is > 256.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">Does this mean FOP cannot handle cases where the nam=
es of PDF records are not in simple ascii range?<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
Caused by: java.lang.IllegalArgumentException: Only 8-bit characters allowe=
d by this implementation<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.pdf.PDFName.to=
Hex(PDFName.java:78)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.pdf.PDFName.es=
capeName(PDFName.java:64)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.pdf.PDFName.&l=
t;init>(PDFName.java:42)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.cloneForNewDocument(PDFCloner.java:106)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.readCOSDictionary(PDFCloner.java:154)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.cloneForNewDocument(PDFCloner.java:104)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.readCOSObject(PDFCloner.java:134)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.cloneForNewDocument(PDFCloner.java:84)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.readCOSDictionary(PDFCloner.java:154)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.cloneForNewDocument(PDFCloner.java:104)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.readCOSDictionary(PDFCloner.java:154)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFCloner.cloneForNewDocument(PDFCloner.java:104)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFBoxAdapter.cloneForNewDocument(PDFBoxAdapter.java:141)<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFBoxAdapter.createStreamFromPDFBoxPage(PDFBoxAdapter.java:212)<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.AbstractPDFBoxHandler.createStreamForPDF(AbstractPDFBoxHandler.java:111=
)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:"Courier New"">=
at org.apache.fop.render.pdf.pdf=
box.PDFBoxImageHandler.handleImage(PDFBoxImageHandler.java:77)<o:p></o:p></=
span></p>
</div>
</body>
</html>
--_000_SN7PR04MB8767FCEF0C434834531030E0DD8CASN7PR04MB8767namp_--