OpenType CFF2 默认实例外观

原生 plain、rich、shaped 和 family 外观构建器接受在默认 variation 坐标下包含 CFF2 轮廓的完整 OpenType OTTO 字体

原始字体始终是 Unicode 字符映射、字形索引、水平步进和整形的来源;HarfBuzz 解析其默认实例轮廓,包括经由多个字体字典选中的轮廓

构建器把每个字形转换为静态 CID-keyed CFF 1 程序,并以 FontFile3、Subtype CIDFontType0C、Adobe Identity 集合以及等于原始字形索引的 CID 嵌入

生成的编码、宽度和 ToUnicode 映射保留原始字形身份和逻辑 Unicode 序列,包括增补字符、连字(ligature)和组合标记

由此产出的是使用 ISO 32000-1:2008 9.7 和 9.9 所述 CFF 1 结构的 PDF 1.7 字体程序;不会把 CFF2 直接嵌入 PDF 字体流

需要匹配架构、暴露 hb_font_draw_glyph 和不可变 draw 回调的 HarfBuzz 库,未整形文本也不例外;这些 API 自 HarfBuzz 7 起可用,HOTPDF_HARFBUZZ_LIBRARY 可显式指定库

复杂整形同样沿用既有的 FriBidi 依赖和既有的 scale-1000 整数步进契约;原始 unitsPerEm 下未量化的理想步进属于另一个精度限制

可编辑外观需要 installable 或 editable 嵌入权限;只读外观生成允许 preview-and-print 权限,restricted 和 bitmap-only 权限依旧被拒绝

no-subsetting 会在转换后的程序中保留每个原始字形,包括未使用的字形;转换会改变字体程序格式,不承诺逐字节保留原始 OpenType 容器

转换后的程序使用不同的主名称,保留可读的版权与许可声明以及原始 name-table 字节

源字体、工作缓冲、完整字体布局、对象大小、rich 字体聚合、取消和原生渲染各项上限都会在发布前检查;畸形的 missing glyph 程序仍然是错误,合法的空字形则保留

Type 2 输出具备 16.16 坐标精度和有界操作数 delta,字形至多 65,535 个,每个字形程序至多 65,535 字节

独立的 raw CFF2 表、既有 PDF 默认外观资源中的直接 CFF2 字体流、非默认 variation 轴选择以及更广义的复杂文本布局都不在此后端的范围内

既有 CFF 1 OpenType 输入继续走紧凑外观后端,而内嵌的 Type1、Type1C、CIDFontType0C 注释资源走原始 raw 字体回退

TryGetCFF2FontTable 是一个设界的格式能力查询,不是完整的轮廓或权限校验

另见 HPDFBuildHeadlessTextAppearance 与 THPDFTrueTypeData