文章で、書体をつくる。
「丸くて太いポップ体」「和風の毛筆で力強い」のような一言から、
そのまま打てるフォントファイル(.ttf)を作ります。
作った書体
いずれも、下の文章だけを入力して自動で作ったものです(漢字入り約3,200字)。
表示されない文字(対応外の記号など)は、お使いの端末の標準フォントで代わりに表示されます。
発明版 — 実在しない書体
ここまでは「実在書体の特徴を混ぜる」方式でした。こちらは、混ぜる比率を実在書体の外側へはみ出させ、さらに文字の骨格そのものを変形(傾き・波うち・縦横比など)して、機械が選んだ書体です。
選び方
- 読めるか: 文字認識AIで確認(見たことのない実フォントでの正解率 97%)。生成した文字が正しく読めた割合を「読める」と表示しています。
- どれだけ新しいか: 学習に使った97書体のうち「一番似ている書体」との字形の一致度(IoU)。低いほど、既存の書体に似ていません。
- 候補400本から、読めて、品質の基準を通り、互いにも似ていない6本を機械が選びました。
注意: 一致度が低い理由の一部は、傾きや波うちなど形を動かしたこと自体です。「新しい=美しい」ではありません。見た目の良し悪しは、人が決めてください。
しくみ
3つの段階です。
文章 → スタイルの数値「太さ・線の強弱・丸み・払い・ゆらぎ」など8つの数値に直します。似た依頼を探して小さな言語モデルに見せる方式で、パソコン内だけで動きます(外部サービスは使いません)。
数値 → 近い実在書体の特徴を混ぜるオープンライセンス(SIL OFL)の日本語フォント97本で学習したネットワークが、数値に近い書体の特徴を混ぜ合わせます。
文字の骨格 → 字形 → フォント文字ごとの骨格(線の通り道)から字形を描き、輪郭を取り出して .ttf に組み立てます。学習に使っていない漢字にも使えます。
どのくらい合っているか
測った数字をそのまま載せます。
| 測ったこと | 結果 | 読み方 |
文章 → 数値の誤差 (テスト20問) | 0.209 → 0.116 | 標準値のままより約45%減。ただし正解は作者が付けた主観値で、厳密な評価ではありません |
字形の一致度(IoU) 学習した書体 × 見たことのない漢字 | 0.583 | 1.0 が完全一致 |
字形の一致度(IoU) 見たことのない書体 × 見たことのない漢字 | 0.488 | 「骨格を太らせただけ」の基準線は 0.438。差は +0.05 と小さめ |
生成にかかる時間 (漢字入り約3,200字) | 約2〜3分 | パソコン1台・GPU なし |
できないこと
- ゼロからの創作ではありません。「作った書体」は実在書体の特徴の混合です。「発明版」も、学習した書体の特徴を外側へはみ出させ、骨格を変形したもので、新しさはその範囲です。
- 大きく拡大すると粗さが出ます。字形は96ピクセルで作ってから輪郭にしているため、本文サイズ向きです。英字の字間に崩れも残っています。
- 言葉の理解は限定的です。小さな言語モデルなので、変わった言い回しでは外れることがあります。
- 書体の「強弱」「横幅」「丸み」「払い」は人手のラベルで学習の手がかりにしています(自動測定が効かなかったため)。
- Windows のアプリ上での表示確認は、まだ十分ではありません。
権利について
このページの書体データには、次の条件があります。
- 文字の骨格に KanjiVG(© Ulrich Apel、CC BY-SA 3.0)を使っています。同じ条件(CC BY-SA)での公開と、出典の表示が必要です。発明版も同じです。
- 学習には Google Fonts の SIL OFL フォントを使いました。商用での配布・販売の前には、権利の確認が必要です。
- 英数字の骨格は Hershey フォント(パブリックドメイン)です。
権利の確認が済むまで、フォントファイル(.ttf)の配布はしていません。いまは試作の段階です。名前・運営・公開方法は決まっていません。
自分のパソコンで作る
文章を変えれば、別の書体になります。
python learned_font.py "上品で細い明朝体" -o out/min --kanji # 学習型(漢字も)
python fontgen.py "丸くて太いポップ体" -o out/pop # ペン方式(速い)