本文へスキップ
takushio2525

Font to Binary

公開中

ドットフォントを、そのままコードに貼れる配列へ

短縮パス takushio2525.com/font-to-bin

Font to Binary の画面。A・B・C・あ・い のドット絵のプレビューと、生成された C 言語の配列が並んでいる

どんなもの

ドットフォントを、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 の中のガイドに、実際の出力とスケッチつきでまとめてある。

なぜ作ったか

マイコンにつないだ小さな表示器に文字を出すには、フォントを 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 件と、リンターを入れる件が開いている。

関連リンク

使った技術

言語
  • TypeScript
UI
  • React
ビルド
  • Vite
  • PWA manifest
配信
  • GitHub Pages

開発の記録

リポジトリのコミット履歴から出した数字です(2026 年 10 月 12 日時点)。

開発期間
2025 年 7 月 〜 2026 年 9 月
コミット数
23

ほかのもの

公開しているものの一覧へ戻る