Rit*_*tra 6 pdf gdi truetype embedded-fonts
我试图将PDF内容呈现给GDI设备上下文(确切地说是24位位图).将PDF流解析为PDF对象并从内容字典中呈现PDF命令效果很好,包括字体渲染.
嵌入式字体从其FontFile流中解压缩并使用"加载" AddFontMemResourceEx
.现在一些嵌入字体删除了GDI所需的一些TrueType表,比如'name'表.因此,我尝试通过将TrueType子集字体解析为其表来修改字体,并修改那些具有数据缺失/缺失表的表,并使用尽可能正确的信息重新生成.
我使用Microsoft字体验证工具来查看生成的字体是如何"正确"的.我仍然得到一些错误,比如对于maxp表,最大值通常太大(它是一个子集)或者xAvgCharWidth
字段不等于'OS/2'表的计算值不正确但这不会停止其他嵌入字体可用.使用PDFCreator嵌入的字体是有问题的.
问题:
如果需要:我可以在某处制作原始字体文件和更改后的字体文件.
到目前为止做了哪些修改:
差不多晚了一年,但我找到了答案:
“cmap”表和“name”表的字体类型(符号或非符号)应该相同。因此,如果 cmap 具有 3,0,4 cmap(MS、符号、段增量编码)并且名称表包含 3,1,$0409(MS、Unicode、enUS)条目,则该字体将不会加载。
看起来“symbol cmap”的存在决定了 Windows 是否将字体视为符号字体;“OS/2”中的标志似乎并不重要。
因此,如果使用“Microsoft Font Validator”看起来字体正确,请检查“cmap”和“name”表中的符号/unicode 字段是否对齐。