Fonts 带有撤消子程序的CFF(压缩字体格式)库?

Fonts 带有撤消子程序的CFF(压缩字体格式)库?,fonts,opentype,Fonts,Opentype,出于PDF字体嵌入的目的,我的任务是从CFF OpenType文件中删除未使用字形的字形轮廓数据,以减小其大小 问题在于,与TTF不同,CFF将其字形轮廓数据“压缩”到子例程中,并在字形之间创建依赖关系,我不能仅从cmap和轮廓数据中删除字形及其匹配字符 由于有几个开放源码的CFF库(如otfcc)可以对CFF文件执行子例程,我想知道是否有库可以执行相反的操作并撤消子例程 更新: 我正在使用的库是otfcc和SFN。SFNly没有CFF解析器,所以我扩展了一个,otfcc也有一个,但似乎没有子集

出于PDF字体嵌入的目的,我的任务是从CFF OpenType文件中删除未使用字形的字形轮廓数据,以减小其大小

问题在于,与TTF不同,CFF将其字形轮廓数据“压缩”到子例程中,并在字形之间创建依赖关系,我不能仅从cmap和轮廓数据中删除字形及其匹配字符

由于有几个开放源码的CFF库(如otfcc)可以对CFF文件执行子例程,我想知道是否有库可以执行相反的操作并撤消子例程

更新: 我正在使用的库是otfcc和SFN。SFNly没有CFF解析器,所以我扩展了一个,otfcc也有一个,但似乎没有子集选项,不过源代码看起来更有希望。我还研究了freetype,虽然它有CFF加载程序,但似乎没有子服务器


目前,我已经完成了将pdfbox的fontbox从Apache移植到SFX的一半。解析器可以工作,但subsetter仍然不完整

最后我使用了AFDKO,我没有意识到它是开源的!
它拥有从添加CFF到使用CFF制作otf字体的所有功能。

请删除
c++
标记。这是一件奇怪的事情:你的工具链应该已经能够做到这一点,所以为了避免遇到这样的问题:你能提供更多关于你已经在使用哪些工具从“源代码”到“最终pdf”的详细信息吗?因为取决于该链中使用的工具,几乎可以肯定已经有一个实用工具,甚至只有运行时标志为您实现了这一点。@Mike'Pomax'Kamermans我们的应用程序还没有CFF支持,它只是有一个TTF子服务器,似乎是内部开发的,以fontbox Apache作为参考。ie)根本不支持CFF,使用CFF OTF唯一能做的就是将其嵌入pdf中,而不进行子集设置。这听起来像是你在重新发明轮子,因为font forge、fonttools和adobe FDK等东西已经是免费的了……只需将它们用于子集设置即可。见鬼,通过TTX运行字体并展开字符串,修剪不需要的字形,通过TTX重新运行以将其打包,如果需要进一步优化,请使用adobe自己的子例程优化器。完成了,没有你的努力。TTF的一些真正的,TTX->删除字形-> TTX,你已经完成,无论谁开发你的工具,字面上浪费时间在它= /@ Mik'PoMAX'Kalman是,但要求是,我需要包括在我们的应用程序中的功能,而不增加分布式文件,所以我需要将其端口到C++,并集成到项目。FontTools实际上支持CFF子设置选项,因此您可以获得子设置的OTF,而无需将其转换为TTX格式,但我还是需要对其进行移植。