使用 Arial 字体的 PDF 查看器错误,其中空格变为 "question mark"

PDF Viewer bug using Arial font where whitespaces became "question mark"

直到我 运行 在 Google Chrome 在 Windows 7 中我才注意到这个错误。它在 Internet Explorer 中并不明显,因为它是使用 Adob​​e Acrobat,但 Chrome 使用内置 PDF 查看器。

文本 "Hello, How are you?" 已变为 "Hello,?How?are?you?"。

using pdfclownFonts = org.pdfclown.documents.contents.fonts;

private void DocumentTemplate(Document parmDocument)
{
    PrimitiveComposer primitiveComposer = new PrimitiveComposer(page);
    {
        BlockComposer blockComposer = new BlockComposer(primitiveComposer);
        pdfclownFonts::Font fontArial = pdfclownFonts::Font.Get(parmDocument, _fontArialRegularFilePath);
        primitiveComposer.SetFont(fontArial, 26 /*[Font-Size]*/);

        blockComposer.Begin(New RectangleF(5f, 5f, 500f, 30f), XAlignmentEnum.Left, YAlignment Enum.Top);
        blockComposer.ShowText("Hello, How are you?");
        blockComposer.End();

        blockComposer.Flush();
    }
}

然后我在 http://sourceforge.net/p/clown/bugs/52/ 找到了这个错误报告。

所以我的问题是...

1) 这只是一个 Chrome 错误吗?

2) 或者它只是一个 PDFClown 错误?

3) 如果 PDFClown 存在 bug,那么您是否知道修复它的估计时间?

谢谢。

Vadim 在 his answer and was the subject of at least one pdf.js' bug-tracking entry.

中巧妙地解释了这个问题

简短的回答是 PDF Clown 生成完全合法的 PDF 文件(因此它们可以由 Adob​​e Acrobat、基于 Poppler 的查看器(如 Evince,甚至优秀的 Ghostscript 解释器)正确呈现)。问题是这些 PDF 文件具有 "jagged" 混合长度代码点,像 Chrome 这样不太成熟的查看者无法正确处理这些代码点。

为避免此类不便,PDF Clown 将仅使用单一长度编码(这是 0.2.0 中要解决的问题之一)。


2015 年 4 月 14 日更新

我很高兴地宣布 the issue has been solved and committed to the project's repo。它将包含在下一个版本中(0.1.2.1 和 0.2.0);同时,您可以从指定的 link 下载代码快照。