我怀疑这是一个编码/宽度问题。两者都有点偏差,但我无法确定原因。
以下是一些嫌疑人:
第一
文本流以UTF-16 LE方式定义。charNULLcharNULL,使用正常的字符串绘制命令语法:
(some text) Tj
有一种方法可以将任何旧字符值转义为()字符串。您也可以这样定义十六进制字符串:
<203245> Tj
没有使用任何方法,只有可疑的内联空值。如果GS试图在没有与之关联的长度的情况下使用指向char的指针,则可能会导致问题。
第二
宽度数组很愚蠢。您可以这样分组定义宽度:
[ 32 [450 525 500] 37 [600 250] 40 [0] ]
这定义了
32: 450
33: 525
34: 500
37: 600
38: 250
40: 0
这些字体将它们的连续宽度定义为单独的数组。不违法,但肯定是浪费/愚蠢的,如果GS编码为期望数组之间存在间隙,则可能会引发错误。
数组中还有一些非常可疑的值。32到126是连续定义的,但然后它开始跳来跳去:
...126 [600] 8364 [500] 8216 [222] 402 [500] 8222 [389]. 8230 [1000] 8224 [444]..
,然后从160到255再次连续。
很奇怪。
第三
我一点也不确定,但CIDToGIDMap流包含大量null值。
底线
这些字体很可疑。我从未听说过“Bellflower Books”或“UFPDF 0.1”
那个版本号让我感到不安。你也应该感到不安。
在谷歌搜索“UFPDF”时,我找到了作者的这个注释:
注意:我编写UFPDF只是作为一个实验,并不是一个完整的产品。如果您在使用它时遇到问题,请不要向我寻求支持。补丁是受欢迎的,但我没有太多时间来维护它。
UFPDF是一个坐在FPDF上面的PHP库。0.1。快跑。
gs -v
来获取版本。(我使用 gs 8.71 也遇到了同样的问题)。 - John Flatness