有没有办法在base14字体(Helvetica)的TJ运算符中使用'rcaron'(U + 0159,ř)等特殊字符?
像[(\ rcaron)] TJ那样?
它是否以字体显示?
我经历了Helvetica.afm,似乎这个字符出现在字体中。此外,当我在PDF中的交互式文本字段中使用此字符时,它似乎存在。
我尝试使用pdfbox生成示例文件,但它失败了 - 它使用了TJ并且字符不正确。
非常感谢。
答案 0 :(得分:3)
关于字符集PDF查看器必须支持未嵌入的base14字体,PDF规范ISO 32000-1在第9.6.2.2节中说明:
这些字体的字符集和编码列于附件D中。
和附件D.1:
D.2,“拉丁字符集和编码”,描述了Adobe标准拉丁文字体的整个字符集。该字符集应由Times,Helvetica和Courier字体系列支持,这些字体系列是标准的14种预定义字体之一;见9.6.2.2,“标准类型1字体(标准14字体)”。
如果你检查D.2中的表格,你会看到没有明确支持rcaron,只有scaron,zcaron和一个赤裸的caron。后者表明你可以构建一个rcaron。不幸的是,该表说明裸体卡车在 WinAnsiEncoding 中不可用,这是PDFBox中假设的标准编码。
因此,要绘制未嵌入的base14 Helvetica rcaron,您基本上必须使用具有非 WinAnsiEncoding 编码的Helvetica字体对象,例如的 MacRomanEncoding 强>
此外,您必须调整添加到内容流中的字符串的编码。如果你是曾经使用PDPageContentStream.drawString(String)
,你必须改变它,因为该方法使用COSString(String)
构造函数,隐含地假设其他编码(“ISO-8859-1”或“UTF-16BE”)不适合手头的任务。