世界を動かす技術を、日本語で。

ジムのTrueType QRコードフォント

2026年7月8日原文(github.com)

概要

QR Font は、角括弧で囲んだテキストを QRコード シンボルに変換する OpenTypeフォント。 通常テキストは Liberation Sans Regular の書体で表示。 3種類のフォントサイズにより、 最大53文字 までQR化可能。 Pythonスクリプト で自動生成、ビルドやデモページも提供。 SIL Open Font License 1.1 に基づくライセンス。

QR Font:角括弧付きテキストをQRコード化する実験的フォント

  • https://qr.jim.sh/ にてライブデモ公開
  • qrfont-1L.ttf (21×21モジュール、最大17文字対応)
  • qrfont-2L.ttf (25×25モジュール、最大32文字対応)
  • qrfont-3L.ttf (29×29モジュール、最大53文字対応)

仕様・特徴

  • 角括弧 [ と ] で囲んだ部分だけQRコード化
    • 例:abc[hello]ghi → abc(通常テキスト)+ QRコード(hello)+ ghi(通常テキスト)
  • Byteモード印刷可能ASCII のみ入力対応
  • 固定マスクパターン0 を使用
  • OpenType GSUB 機能による字形変換とQR生成
  • フォント外のテキストは Liberation Sans Regular 由来で自然な表示
  • フォント名は QR Font 1-L/2-L/3-L (Liberation名称は未使用)

ビルド・生成方法

  • Python依存管理 にuvを使用
  • 通常ビルド:
    • make
    • uv run tools/build_font.py
  • ベースフォント変更:
    • uv run tools/build_font.py --base-font /path/to/BaseFont-Regular.ttf
  • Reed-Solomon回路 完全生成:
    • make full-parity(デフォルト)
  • 高速ビルド (ゼロパリティのプレースホルダ):
    • make fast-placeholder
  • 字形ストリームのデバッグ
    • uv run tools/shape_debug.py '[a]' '[b]'

出力物と利用方法

  • dist/qrfont-*.ttf (1-L, 2-L, 3-Lのフォントファイル)
  • dist/index.html (インタラクティブWebデモ)
  • build/qrfont-*.fea (OpenTypeフィーチャーファイル)
  • dist/index.html をブラウザで開き、[hello]のような角括弧テキストを入力
  • 英数字混在例 :abc[def]ghi → 通常テキスト+QRコード+通常テキスト

ライセンス

  • SIL Open Font License 1.1 準拠
  • 詳細はLICENSE-OFL.txtおよびNOTICE.md参照

注意事項・制限

  • OpenType shaping 必須環境(GSUB機能を適用するレンダラーが必要)
  • QRブロック内は 印刷可能ASCII かつ 各フォント上限文字数 まで
  • 実験的プロトタイプ としての提供

추신: https://qr.jim.sh/

Hackerたちの意見

[重複] 最近のShow HN: https://news.ycombinator.com/item?id=48703200

スペースがあんまり好きじゃないみたい。SafariのiOSでは[QRコード]のコードが壊れてる。スペースを取ると、またちゃんと動くQRコードになるよ。

ページではこの問題に触れてて、ブラウザのテキストラッピングが問題を引き起こすことがあるって言ってる。対処法もアドバイスしてるよ。

Safariではこれが正しく表示されないみたい(macOSで確認した)。でもChromeとFirefoxでは問題なく動くよ。Safariの何か特有の問題かもね。

すごいけど、iOS 27では例の一つすら動かない。スペースに問題があるみたい。https://imgur.com/a/tZGqtjR

説明読んだ?ページにその理由が書いてあるよ。もしかして、見たときにそのテキストは追加されたのかな?

スマホで確認したら、ChromeとFirefoxは大丈夫だけど、WebKit(wpe-android経由)はダメだった。SafariとWebKitは何かの理由でこのフォントを表示できないみたい。

日常的に使うには実用的じゃないかもしれないけど、フォントをハックして全然違うものを作り出す方法はすごいね!

フォントレンダリングはちょっと怖いよね。

確かに、私は全てのブラウザでフォントのダウンロードをデフォルトでオフにしてるよ。

残念ながら、ここで一番大事なことが欠けてる。どうやってここに至ったのか、これらのフォントが何をできるのか、そういう説明が全然ない…

HNのよくある欠点だね。投稿者がプロジェクトの説明よりもGitHubのリポジトリをリンクすることが多い。記事にはプロジェクトのリンクが上の方(GitHubのリンクのすぐ下)に追加されてて、ストーリーがずっとわかりやすくなってるよ。

Hacker Newsで議論の続きを見る