PDFPatcher icon indicating copy to clipboard operation
PDFPatcher copied to clipboard

字体为null

Open Charltsing opened this issue 4 months ago • 9 comments

null.zip

结构查看器--XObject--Fm1--命令

Image

Charltsing avatar Aug 25 '25 09:08 Charltsing

无法重现故障。

Image

wmjordan avatar Aug 25 '25 11:08 wmjordan

无法重现故障。

1.2.0.4683 不报错误。

我下载github最新版也是三天前的,报错。大概还没更新?

Image

Charltsing avatar Aug 25 '25 12:08 Charltsing

1.2.0.4678 版,点击XObject--X25--命令--第二个绘图状态--文本区--字符串(TJ),这里的字符串4678和4683版都没有解析它 我估计因为字体错误把这句操作符跳过去了

Image

这个是github当前版本提示的错误

Image

Charltsing avatar Aug 25 '25 15:08 Charltsing

这串16进制用另一个字体DecodeSingleCID解析出来是:打好基础 32EC 2A16 2893 48D9

但我不知道怎么挨个试字体

Charltsing avatar Aug 26 '25 02:08 Charltsing

用1.2.0.4683版。

Image

wmjordan avatar Aug 26 '25 02:08 wmjordan

1.2.0.4683不报错并不是它没bug,好像是把错误的操作符吃了,压根就没提示。

请查看结构查看器--XObject--X25--命令--第二个图形状态,滚动条拖到最下面,文本区(BT),第一个Tc,Tw,Tm后面的TJ没了 Image

这是导出的资源内容流,X25的内容流在txt的4281行~5786行。消失的操作符在5768行,结构查看器未显示这行操作符。 资源文本字体null-XObjects.zip

Charltsing avatar Aug 27 '25 02:08 Charltsing

新的4688测试版修复了这个问题,会报告缺少字体的错误。

wmjordan avatar Aug 27 '25 12:08 wmjordan

在X25的Resourrce里面有两个字体C0_0和C0_1,其中一个是可以解析这个TJ文本的。 可否提升TJ解析的字体兼容性,错误信息保持不变,但如果能解析出来的文本就保留这个文本做输出,而不是输出乱码。

也就是说当font为null的时候,读一下X25中的font(或者页面的font)当作默认字体进行尝试。

Charltsing avatar Aug 28 '25 08:08 Charltsing

我找了个省事的办法,在CMapAwareDocumentFont中 InitFont()时,把CMapToUnicode都记下来,这样哪个代码对应哪个汉字就有了个完整的字典 在PaceAndTextCommand中,如果遇到字体为null,就从字典里面的CMap中lookup编码,一般都能找到对应的汉字

Charltsing avatar Sep 03 '25 07:09 Charltsing