Font to Binary
公開中ドットフォントを、そのままコードに貼れる配列へ
- Web ツール
- 組み込み
- フォント
短縮パス takushio2525.com/font-to-bin

どんなもの
ドットフォントを、C / C++ / Arduino / Python / JavaScript / TypeScript / Rust / Go / JSON などの配列に変換するブラウザのツールだ。DotGothic16 と美咲ゴシックを同梱していて、手持ちの TTF / OTF もその場で読み込める。
幅と高さは 4〜64px で別々に決められ、2 次元・フラット・ビットパックといった配列の形、10 進 / 16 進 / 2 進の表記、MSB / LSB の並びを選べる。読み込んだ字は、1 ピクセルずつ手で直せる。
出力した配列の使い方
このページには Font to Binary を作った理由と作りを書いた。出力した配列をマイコンの表示器でどう使うかは、Font to Binary の中のガイドに、実際の出力とスケッチつきでまとめてある。
- Arduino と OLED(SSD1306)で日本語を表示する
日本語フォントのライブラリを入れずに、表示したい文字だけを美咲フォント 8×8 の配列にして、Adafruit_GFX の drawBitmap や U8g2 の drawXBMP で描く。
- 8×8 LED マトリクス(MAX7219)に文字を表示する
1 文字 8 バイトの配列を LedControl の setRow で 1 行ずつ送る方法と、列方向の配列で文字を流す方法。
- ドットフォントの配列の読み方
行方向・列方向のビットパックと MSB / LSB の違いと、Adafruit_GFX・U8g2・MicroPython などに合わせる設定の対応表。
なぜ作ったか
マイコンにつないだ小さな表示器に文字を出すには、フォントを 1 文字ずつ 0 と 1 の並びに起こした配列が要る。その配列を作る作業が、文字を出すたびに挟まるのを無くしたくて作った。
作り方の判断と経緯
最初は手元で動く Python の道具だった
最初のコミットは 2025 年 7 月 14 日で、翌日までにできた最初の版は Python の道具だった。コマンドで動く版と Tkinter の画面を持つ版があり、フォントの字形を C の配列に書き出していた。
2026 年 4 月 21 日に、これをブラウザで動く Web アプリとして一から作り直した。Python で動かすより、もっと簡単に Web で使えるようにしたかったからだ。React・Vite・TypeScript で書き、GitHub Pages から配る形にしている。同じ日に、出力の言語と配列の形を選ぶ詳しいモードとは別に、よく使う組み合わせを選ぶだけの「かんたん」モードとプリセットを用意し、MIT ライセンスと同梱フォントのライセンス文書をそろえて公開した。Python の版は legacy/ に残してあり、設計は LaTeX の仕様書にまとめた。
出力をそのまま貼れることを、コンパイラで確かめる
この道具の役目は、出てきた配列をそのままコードに貼れることにある。ところが 9 月 28 日、このサイトで紹介する記事を書く前に Arduino / C の出力を avr-g++ でコンパイルしてみると、2 か所で通らなかった。9 月 18 日に Issue に挙げていた const と PROGMEM の二重(かんたんモードのプリセットと宣言を組み立てる処理の両方が付けていた)と、1 次元の配列なのに 1 文字ごとに {} で包んでいたことだ。紹介記事はいったん止め、翌日に両方を直した。
直す途中で、Rust の出力でも同じ種類の食い違いが見つかった。行方向に詰めた形と 2 次元の形が、宣言した型と中身の入れ子の深さで合わず、rustc が型の不一致で止まる。Go も同じ作りなので合わないはずだが、まだ確かめていない。
設定は URL で渡せるようにした
ブラウザの中で完結させる代わりに、選んだ設定は LocalStorage に自動で残し、URL にして人へ渡せるようにしてある。同じ形式の配列を、別の人や別の端末でそのまま作り直せる。9 月 18 日には、GitHub Pages のサブパスで配っていたのを、ほかの作品と同じ takushio2525.com のサブドメインへ移した。
フォントのライセンスを原文に合わせた
9 月の権利まわりの点検で、同梱している美咲フォントのライセンス文書が配布元の原文ではなく、要約に原文に無い記述が混じったものだったと分かった。9 月 30 日に原文(英語と日本語)と著作権の表示に差し替え、変換した配列を機器やソフトに組み込んで配るときの条件(DotGothic16 は SIL Open Font License 1.1 の改変版として著作権の表示とライセンス文を添える、美咲フォントは自由に使える)をサイトに書き足した。配信している JavaScript と CSS に入っている React や Tailwind CSS などのライセンス文も、配信物の中から読めるようにしている。
数字で見る今
Font to Binary の数字は、2026 年 10 月 12 日に GitHub とリポジトリで数えた(最後のコミットは 9 月 30 日)。
| 項目 | 値 |
|---|---|
| 開発した期間 | 2025 年 7 月 14 日〜2026 年 9 月 30 日(間に 9 か月の空き) |
| コミット(main) | 23。うち Claude との共著が 16 |
| Issue | 15 件。閉じたものは 11 件 |
| プルリクエスト | 11 件。マージしたものは 6 件 |
| 出力の言語 | 12(C・C++・Arduino・Python・JavaScript・TypeScript・Rust・Go・JSON・Markdown・プレーン・記号アート) |
| 配列の形 | 5(2 次元・3 次元・フラット・行方向と列方向のビットパック) |
| 字の大きさ | 幅と高さを別々に 4〜64px |
| 同梱のフォント | 2(DotGothic16・美咲ゴシック第 2) |
| 使い方のガイド | 3 本 |
これから
いちばんの残りは、Rust と Go の出力を宣言の型に合わせることだ(Issue #16)。ほかに、計測の設定まわりの直しが 2 件と、リンターを入れる件が開いている。
関連リンク
- 最初の Python 版(legacy/) … 2025 年 7 月に作った、コマンドと Tkinter の画面で動く版
- Issue の一覧 … 残っている不具合と改善
使った技術
- 言語
- TypeScript
- UI
- React
- ビルド
- Vite
- PWA manifest
- 配信
- GitHub Pages
開発の記録
リポジトリのコミット履歴から出した数字です(2026 年 10 月 12 日時点)。
- 開発期間
- 2025 年 7 月 〜 2026 年 9 月
- コミット数
- 23