
2026/07/08 1:30
ジムのトルートタイプQRコードフォント
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
本稿で提示される主な革新は、標準文書内において角括弧で囲まれたテキストを機能性の QR コードに変換する新規の OpenType フォントファミリーです。このツールを使用すると、専門的なソフトウェアを必要とせずにスキャン可能なデータを埋め込むことができ、周辺テキストが読みやすいまま、シンボルあたり最大 53 文字(qrfont-1L.ttf、qrfont-2L.ttf、qrfont-3L.ttf の 3 つの異なるバージョン)を符号化することができます。
技術的には、このソリューションはバイトモードやリード・ソロモンパリティ論理といった高度なアルゴリズムに依存しており、これらはスキャン時のデータ整合性を保証するための誤り修正システムとして機能します。これらの論理的構造は、GGSUB フィーチャースクリプトを使用して形の変換を動的に管理するように TrueType ファイルへとコンパイルされます。デフォルトでは、フォントはリベレーション・サンズレギュラーを採用した基礎フォントとし(ただし
--base-font を使用することでカスタムフォントを指定できます)、グリフアウトラインと論理が dist/ ディレクトリに生成されます。ビルドプロセス中に Python 依存関係の管理には uv が利用されています。
今後の開発としては、配布フォルダ内の
index.html を介してアクセスできるインタラクティブなデモが含まれており、ここで角括弧で囲まれたフレーズを試すことができます。現在、QR ブロック内での入力は印刷可能な ASCII に限定されていますが、この概念証明は、単純な置換を通じて日常の読みやすいテキストに直接スキャン可能なデータを統合するための有望な手法を実証しています。生成されたフォントは、基礎フォントの変種として SIL Open Font ライセンスバージョン 1.1 でライセンスされています。本文
実験的 OpenType フォント「QR Font」
このプロジェクトでは、角括弧
で囲まれたテキストを QR コードに変換し、それ以外のテキストは通常通りに表示するための実験的な OpenType フォントを生成します。[]
リンクとダウンロード
- ライブデモ: https://qr.jim.sh/
- フォントファイル:
: 21×21 モジュール、最大 17 キャラクターqrfont-1L.ttf
: 25×25 モジュール、最大 32 キャラクターqrfont-2L.ttf
: 29×29 モジュール、最大 53 キャラクターqrfont-3L.ttf
基本仕様
すべてのフォントは以下の技術仕様を使用しています。
- モード: バイトモード
- 入力文字: プリント可能な ASCII キャラクターのみ
- マスキングパターン: 固定値
(デフォルト)0 - デリミター(区切り記号):
[ ] - 自動生成: グリフとロジックはプログラムで生成されています
ビルド方法
このプロジェクトでは Python の依存関係管理に
uv を使用します。
デフォルトビルド
以下のコマンドを実行することで、全て機能(デリミターパーサー、バイト展開、リード・ソロモンパリティなど)を含むフォントが生成されます:
uv run tools/build_font.py
ソースフォントの変更
デフォルトでは
/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf が使用されます。
別の TrueType ソースを使用する場合は以下のように指定します:
uv run tools/build_font.py --base-font /path/to/BaseFont-Regular.ttf
リード・ソロモンパリティ回路の動作確認
数千もの文脈依存ルックアップを出力し、レイアウト専用のビルドよりも時間がかかります。
# make パス(デフォルト)
高速なレイアウト専用ビルド
リード・ソロモンパリティ機能を実装せず、高速化したい場合:
uv run tools/build_font.py --no-parity
グリフストリームの確認
生成されたグリフを調べるためのコマンドです:
uv run tools/shape_debug.py '[a]' '[b]'
出力結果
ビルド完了後に以下のファイルが作成されます。
: 生成された OpenType フォント(1-L, 2-L, 3-L)dist/qrfont-*.ttf
: インタラクティブなウェブデモdist/index.html
: 生成された OpenType フィーチャーファイルbuild/qrfont-*.fea
デモでの使い方
dist/index.html をブラウザで開き、角括弧付きテキストを入力します。
例:abc[def]ghi
- 「abc」と「ghi」は通常のテキストとして表示されます。
- その間に「def」が QR コードとしてレンダリングされます。
ライセンス
生成されたフォントは「Liberation Sans Regular」の修正版であり、SIL Open Font License バージョン 1.1 にてライセンスされています。 詳細については
LICENSE-OFL.txt および NOTICE.md をご参照ください。
注意点: 「Liberation」はソースフォントのライセンス上、予約済み名のため、生成されたファミリー名は「QR Font 1-L」「QR Font 2-L」「QR Font 3-L」となっています。
備考・制限事項
- コンセプト验证: これは OpenType のシェイピング機構(GSUB フィーチャー)をテストするためのフォントです。適用可能な環境が必要です。
- 文字数制限: デリミター内に入れるテキストは、フォントバージョンによるが、17, 32, または 53 文字までに限られます。
- 制限: 角括弧内のテキストのみが QR コードに変換され、それ以外のエリアは通常の表示に制限されます。