THotPDF.CompactFontSubsetting

THotPDF

 

属性  EnableFontSubsetting  FontEmbedding

控制字体子集是否对保留的字形重新编号,从而大幅缩小子集体积

 

Delphi 语法:

property CompactFontSubsetting: Boolean;

 

C++ 语法:

__property bool CompactFontSubsetting;

 

说明

在 BeginDoc 之前把 CompactFontSubsetting 设为 true 即可构建紧凑字体子集。普通子集沿用源字体的字形编号:未用字形被清空,但字体仍要声明每个字形,并为每个字形携带定位和宽度条目。对一个带 2 万到 3 万个字形的 CJK 字体来说,仅这些表在压缩前就有 200 KB 以上,哪怕页面只显示两个字符

 

紧凑子集把保留字形重新编号到一段密集区间,并只为这些字形重建字形表。页面内容仍以 CID 形式引用原始字形号,由显式 /CIDToGIDMap 流(ISO 32000-1 9.7.4.2)把它们映射到重编号后的字形,因此文本、宽度和文本提取都不受影响。SimSun 里的两个汉字在普通子集中约占 25 KB 字体数据,紧凑子集约 3 KB

 

该属性作用于以 Type 0 字体写出的 TrueType 字体(且 EnableFontSubsetting 开启时),以及用 RegisterUnicodeTTF 注册的字体(后者总是做子集化)。OpenType-CFF 字体保持普通子集。某个字体无法构建紧凑子集时,HotPDF 回退到普通子集

 

该属性默认关闭,既有输出不受影响。PDF/A 下注册的字体总是得到紧凑子集。紧凑子集最适合最终成品输出:之后往文档里用同一字体追加文本需要新建子集,之后合并的文档也无法共用同一字体的子集

 

See also: EnableFontSubsetting, FontEmbedding, RegisterUnicodeTTF