可变与彩色 OpenType 字体
HotPDF 可以检查 fvar 轴和命名实例,验证所选坐标,并在常规字体安装、子集化和持久缓存之前生成静态实例
可变字体工作流
PDF.InspectVariableFont(FontPath, Axes, Instances);
PDF.SetVariableFontAxis('wght', 650);
PDF.RegisterUnicodeTTF(FontPath);
CFF2 OpenType 字体在内部以默认或所选坐标实例化,包括 fvar、avar 1.0 和 2.0 映射、按字体字典的 vsindex 状态、blend 求值、递归局部和全局子程序,以及 HVAR、VVAR 和 MVAR 度量增量
带 glyf 轮廓的 TrueType 可变字体,在使用非默认坐标时会在内部实例化。整个流程会计算共享和私有的 gvar tuple,应用 IUP 插值,更新简单轮廓和复合字形的偏移,解析水平与垂直 phantom point 的度量,烘焙(bake)MVAR,重建紧凑的字形数据和 loca,最终得到去除了 variation 表、校验和正确的静态 sfnt
OnVariableFontInstance 对 CFF2 和 TrueType 可变字体是可选的。它可以通过返回一个不含 fvar 表的有效静态 sfnt 来覆盖非默认的内部实例
解析后的坐标仍可通过 GetRegisteredVariableFontAxes 获取,并成为已安装和已缓存字体内容的一部分
底层实例化、子集化与安全性
HPDFIsCFF2Font、HPDFInstantiateCFF2Font、HPDFSubsetCFF2Font、HPDFIsTrueTypeVariableFont 和 HPDFInstantiateTrueTypeVariableFont 为已经管理字体容器的调用方提供字节数组工作流
静态输出在重建 sfnt 表和校验和的同时保留字形 ID 和提示程序。CFF2 路径还保留按字体字典的私有数据和字体矩阵
格式错误的偏移、无效的变化结构、过深的子程序嵌套、操作限制和扩展的 CharString 限制会失败关闭,而不是返回部分实例化的字体
彩色字形工作流
GetRegisteredColorGlyphInfo 检测已注册字体的 COLR 和 CPAL 图层、SVG 字形文档、CBDT/CBLC 位图以及 sbix 位图
DrawRegisteredColorGlyph 原生绘制 COLR v0 图层、有界的 COLR v1 绘制图、受限的安全 SVG 文档、CBDT PNG 图像以及 sbix PNG 或 JPEG 图像
COLR v1 支持分层字形裁剪、纯色和多停止线性填充、径向填充、扇形填充、仿射变换、可复用彩色字形、源和目标排序以及 PDF 混合合成
原生 SVG 配置文件支持路径、矩形、圆形、椭圆、直线、多边形、折线、继承的纯色填充和描边、仿射变换以及 gzip 压缩的 SVG 文档
THPDFColorGlyphRasterizeEvent 仍然是不受支持的 SVG 特性、不受支持的 Porter-Duff 模式、不透明度、渐变和应用特定栅格输出的回退方案
THPDFOpenTypeColorGlyphInfo.COLRv1Paints 通过 THPDFCOLRv1Paint、THPDFCOLRv1ColorStop 和 THPDFCOLRv1Transform 记录暴露经过验证的扁平 DAG,供检查而无需重新解析字体字节
调用方选择调色板和目标像素尺寸,使位图选择和栅格输出保持确定性