跳转至

glyphkit:与绘图端无关的 Python 排版引擎

返回不可变排版数据、自己不绘图的 Python 排版引擎。

GitHub PyPI 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 子集字节,以及有版本的纯数据串行化。

    字体安全

  • 坐标与度量

    字体单位、缩放、字幅与墨迹的差别,以及对齐、裁切或做碰撞检查时该用哪个方框。

    坐标与度量

安装

uv add --prerelease allow glyphkit

需要 Python 3.10 到 3.13。WOFF2 额外安装项见安装。

示例

本文档的每张图都附上生成它的脚本。可一次下载全部。

下载全部示例

评论