Skip to content

类型化塑形文字输出(R22 首个配置)

首个类型化塑形文字输出配置的 GID、簇、字体子集和页面写出限制。

TextPrelayoutOfdWriter.CreateSinglePageWithPositionedGlyphs 消费已完成的 R21 预排版结果。它为每个非空行写入一个由生成器控制的 OFD TextCode,保持逻辑源文本不变,并提供到实际原始 GID 的完整 CGTransform 映射。字形原点使用塑形后的笔位步进和偏移,只从字体单位转换为页面毫米一次。公开的 OfdPositionedGlyphRun 将绝对 UTF-16 源簇、原字面 SHA-256、GID、原点和步进与逻辑文本分开保存。

此输出配置接受常规、静态、水平的拉丁文游程,每行包含 1–8 个可打印的非空白 ASCII 字符。每个字符必须按源顺序对应一个字形,或者一个完整的双字符/三字符连字对应一个字形。它还接受一个 ASCII 拉丁字母后接 U+0300–U+036F 中一个非间距标记的组合,但 HarfBuzz 必须返回一个完整的双代码单元簇;源文本不经规范化而原样保留。独立标记字形、其他组合范围及更长的组合序列仍不受支持。所选字面会被嵌入,TrueType 子集将实际塑形 GID 保留在原始槽位。写出器会在写入输出流之前,拒绝与所选嵌入资源不匹配的字面哈希、导入的 SourceXml 以及不受支持的源文本、簇或位置形状。一对一输出要求不同值之间保持源字符与 GID 的一一对应:重复的 GID 必须表示同一字符,重复字符也必须保持相同 GID。这使 PDF ToUnicode、字体别名和 SVG 轮廓语义保持明确。旧版 CreateSinglePage 约定仍严格要求标称一对一 ASCII 字形和完整字体嵌入。

候选包消费程序分别验证启用和禁用字距调整的 AV、启用和禁用 liga 特性的 ffi、分解形式的 e + U+0301,以及分解形式的 a + U+0308。它确认第二个 AV 的原点发生变化,并分别检查 OFD 文本回读、SVG 原始 GID 路径、PDF 文本提取和渲染后的 PDF 页面。这些检查仅覆盖上述有界样例。混合方向、阿拉伯文/印度文塑形、一般组合标记、多 TextCode 组合、增补字符、垂直输出和通用段落双向排版仍不在此生成器配置范围内。导入的 OFD 内容继续遵循其自身的源保留和 R02 验收边界。

生成的 PNG 或 SVG 输出不等同于 macOS Preview 或独立阅读器验收结果。发布前,每个视觉出口都需要各自的证据。

独立混排写出器及其重复字母候选已在 R22 剩余范围账本中核对。上述拉丁文生成器约定不代表通用段落或 SVG 文本语义。

Type to search…

↑↓ navigate↵ selectEsc close