Jim的TrueType二维码字体

Hacker News Top 工具

摘要

Jim Paris发布了一款实验性TrueType OpenType字体,该字体使用OpenType塑形和Reed-Solomon编码,将括号分隔的文本渲染为二维码,同时保持周围文本可读。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/07 17:13

jimparis/qr-font

来源:https://github.com/jimparis/qr-font

Jim 的 TrueType QR 码字体

在线演示:https://qr.jim.sh/

下载:

  • qrfont-1L.ttf (https://github.com/jimparis/qr-font/releases/latest/download/qrfont-1L.ttf)(21x21 模块,最多 17 个字符)
  • qrfont-2L.ttf (https://github.com/jimparis/qr-font/releases/latest/download/qrfont-2L.ttf)(25x25 模块,最多 32 个字符)
  • qrfont-3L.ttf (https://github.com/jimparis/qr-font/releases/latest/download/qrfont-3L.ttf)(29x29 模块,最多 53 个字符)

本仓库生成一种实验性的 OpenType 字体,它可以将方括号括起来的文本转换为 QR 码符号,同时保持周围的文本可读。

text abc[hello]ghi

所有字体均使用:

  • 字节模式
  • 可打印 ASCII 输入
  • 固定掩码图案 0
  • [] 作为分隔符

这些字体是自动生成的,而非手工制作。构建脚本会生成字形轮廓和 GSUB 功能逻辑,然后将其编译为 dist/qrfont-*.ttf。默认构建会编译分隔符解析器、字节扩展、Reed-Solomon 校验电路、QR 模块放置和固定掩码渲染。

可打印 ASCII 字形从 Liberation Sans Regular 复制,并按比例缩放到 QR 字体的 em 方块中,因此括号外的 QR 块文本在相同字体中呈现为普通文本。Liberation 是源字体许可证下的保留字体名称,因此生成的字体族命名为 QR Font 1-LQR Font 2-LQR Font 3-L

构建

sh make

该项目使用 uv 进行 Python 依赖管理。你也可以直接运行生成器:

sh uv run tools/build_font.py

默认情况下,生成器从以下路径读取 Liberation Sans Regular:

text /usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf

使用其他兼容的 TrueType 源字体:

sh uv run tools/build_font.py --base-font /path/to/BaseFont-Regular.ttf

尝试完整的生成式 Reed-Solomon 电路:

sh make full-parity

这也是默认的 make 路径。它会生成数千个上下文查找,通常比纯布局构建耗时明显更长。

如需更快的纯布局构建(使用占位零校验):

sh make fast-placeholder

检查形状化的字形流:

sh uv run tools/shape_debug.py '[a]' '[b]'

输出:

  • dist/qrfont-*.ttf(1-L、2-L 和 3-L 字体文件)
  • dist/index.html(交互式网页演示)
  • build/qrfont-*.fea(生成的 OpenType 功能文件)

在浏览器中打开 dist/index.html,输入带方括号的文本,例如 [hello]。混合文本如 abc[def]ghi 应显示为普通文本,然后显示 def 的 QR 码,再继续显示普通文本。

许可证

生成的字体是 Liberation Sans Regular 的修改版本,并遵循 SIL Open Font License 1.1 版许可。请参阅 LICENSE-OFL.txtNOTICE.md

注意事项

这是一个概念验证字体。它依赖于 OpenType 整形,因此需要一个对字体应用 GSUB 功能的环境。QR 块内的输入仅限于可打印 ASCII 字符,根据所选字体版本,最多支持 17、32 或 53 个字符。

相似文章

二维码生成器

Simon Willison's Blog

一款可自定义样式的二维码生成工具,借助Claude构建。支持网址、文本和WiFi网络码。

抖动二维码

Hacker News Top

本文介绍了一个抖动二维码生成器,它允许你在保持二维码可扫描的同时嵌入照片,并解释了相应的底层技术,如功能图案、拜耳抖动和弗洛伊德-斯坦伯格误差扩散。