我正在为我的应用程序添加在生成的PDF中嵌入TrueType字体的可能性,但字体"Sitka Text"(以及它的变体“Sitka Banner”,“Sitka small”等)和"Meiryo"不会被嵌入。
我认为这是因为我正在使用LOGFONT对象的名称,对于这些字体,我应该使用PostScript名称。
如何获取PostScript名称?
我使用GetFontData获取了'name' table,但结果没有返回任何可用的名称。
是否有任何WINAPI方法可以给我那个名称?
我认为这是因为我正在使用LOGFONT对象的名称,对于这些字体,我应该使用PostScript名称。
如何获取PostScript名称?
我使用GetFontData获取了'name' table,但结果没有返回任何可用的名称。
是否有任何WINAPI方法可以给我那个名称?
编辑:我只向我的用户显示具有嵌入权限“可编辑”和“可安装”的字体,这些权限是我使用方法EnumFontFamiliesEx及其CALLBACK函数获得的。
我还检查了NEWTEXTMETRIC ntmFlags,它显示我的所有字体都是NTM_TT_OPENTYPE。
编辑2:不嵌入意味着PDF阅读器不会将我的字体显示为嵌入式(Acrobat不会显示任何文本)
错误示例。
已解决
首先,我想感谢Michael Mckeough和mkl,你们真棒,帮了我很多忙。我检查了原始字体,发现它并没有损坏,也没有更改字体字节,但最终我注意到,如果你调用GetFontData到一个(.ttc)文件,它将裁剪掉ttcf部分,没有PDF阅读器能够理解这是什么字体。