glyphkit:与绘图端无关的 Python 排版引擎
返回不可变排版数据、自己不绘图的 Python 排版引擎。
glyphkit 1.0 为测试版
glyphkit 1.0.0b4 是预发行版本。预发行版本之间的每项变更都记录在变更记录。
from glyphkit import FontLibrary, FontSource, Paragraph, TextSpan, TextStyle
library = FontLibrary.from_sources(
(
FontSource.path("fonts/SourceSans3-Regular.ttf"),
FontSource.path("fonts/NotoSansTC-Regular.otf"),
),
generic_families={"sans-serif": ("Source Sans 3", "Noto Sans TC")},
)
paragraph = Paragraph(
(TextSpan("效用 U(x₁, x₂)", TextStyle(("sans-serif",), 18)),),
max_width=360,
)
layout = library.layout(paragraph)
print(layout.logical_bounds)
功能
-
字体与字形处理
明确的字体来源、确定的配对、设置好的后备字体、Unicode 文本系统、双向文本与 OpenType 字形处理。
-
段落排版
换行的段落,附逻辑范围与墨迹范围、基线、对齐与缩进,使用排版单位而非像素。
-
结构化数学式
明确定义的类 LaTeX 语法,依 TeX 的规则与字体 OpenType MATH 表的常数排版。
-
精确的字形轮廓
以字体单位表示的移动、直线、二次、三次与封闭命令,并可依你选的容许误差自适应展平。
-
会检查权限的字体子集
遵守字体嵌入权限的 SFNT 或 WOFF2 子集字节,以及有版本的纯数据串行化。
-
坐标与度量
字体单位、缩放、字幅与墨迹的差别,以及对齐、裁切或做碰撞检查时该用哪个方框。
安装
需要 Python 3.10 到 3.13。WOFF2 额外安装项见安装。
示例
本文档的每张图都附上生成它的脚本。可一次下载全部。