后记和阿拉伯字母

时间:2014-03-13 13:12:06

标签: fonts arabic ghostscript postscript

我有一个带有一些阿拉伯文字的postScript文件,GhostScript无法正确呈现文本。即使将postScript转换为PDF也会产生相同的结果。

PS文件的文字可读且正确。使用的字体是Andalus,GhostScript发现字体没有问题,但渲染错误。我们得到了未知无意义的字符而不是阿拉伯字符(如方形或符号,BTW,当我们将postScript文件转换为PDF时会显示相同的字符)

postScript片段:

    /Andalus findfont 20 scalefont setfont
    100.00 xx  320.00 xx  moveto
    (WELCOME Mr. رانيا) show
    %%EndPage

我不知道它有什么问题。我尝试了很多不同的阿拉伯字体,但没有一个工作过。问题与我们在postScript中编写阿拉伯文本的方式有关吗?

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您通常不能简单地将阿拉伯文字粘贴到字符串中,并期望在不重新编码字体的情况下获得合理的输出。

PostScript字符串实际上只是一串字节;对于拉丁字体和文本,标准编码是ASCII,所以它们匹配,你可以只写ASCII文本。对于几乎任何非拉丁语言,这都行不通。

PostScript通过一种有点神秘但非常灵活的方法呈现字形,我们现在将忽略CIDFonts并输入0字体,因为它们使问题复杂化。

当被告知显示一个字符串时,解释器从字符串中单独获取每个字节,然后在该字节中查找由该字节值索引的字体中的条目。这将为它提供一个表示特定字形的名称对象。然后它查找CharStrings字典中的该名称,结果是解释器运行的过程,以绘制字形。

现在,对于一段简单的阿拉伯语,你可以通过一个简单的编码来逃脱。编码数组限制为255个条目,因此您不能拥有比单个字体实例更多的字形。如果你需要超过255个字符,那么你需要一个更复杂的结构,一个CIDFont。

由您来重新编码字体,以便您要使用的字形位于您要引用它们的编码位置。我不会说阿拉伯语,所以我根本无法帮助你。

但是我知道阿拉伯字形最多可以包含3种形式,首字母,内侧和终端,所以你可能需要比非阿拉伯语说话者所期望的字形多几倍才能覆盖整个范围。

我建议您阅读Acumen培训网站http://www.acumentraining.com/acumenjournal.html提供的John Deubert的文章,特别是2001年11月和12月关于重新编码字体的文章,而不是尝试在这里提供完整的教程。