1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TrueTypeフォントからFONTX2形式/BDF形式(など)に変換する

Last updated at Posted at 2025-05-27

まえがき

Rapberry PI Pico(標準SDK/ArduinoSDK) 用 ILI9341 TFT液晶 日本語ライブラリや、Rapberry PI Pico用 ST7735 TFT液晶 SDKライブラリなどで、日本語のフォントデータを扱うときに、今まではC#で適当に書きなぐったツールを使っていました。

いい加減使いにくくなったので、最近使い始めたPythonで練習がてら書き直しました。練習プログラム以外では、初めて作ったPythonのコードなのでかなり汚いく恥ずかしいのですが、公開しないほうがもっとハズカシイので公開することにしました。

電子工作界隈では、FONTX2は現役なので必要な方は使ってみてください。

1.0 初稿
1.1 BDF形式出力のサポート

新たにBDFフォーマットでのビットマップフォント出力に対応しました。

  • コマンドラインオプション -t BDF でBDFファイルを生成可能。
  • BDF出力時の分割オプション追加-bdf-split オプションを追加し、BDF出力時に半角・全角文字を別ファイルで出力可能。
    BDFエンコーディング指定オプション追加
  • -be または --bdf-encoding オプションで、BDF出力時のエンコーディング(SJIS, JIS, UTF8)を選択可能になりました。

これ以下の紹介分は、次のプロンプトを使い、ChatGPTにかいてもらったものをそのまま掲載します。

このプロジェクトに関してのqiitaページを書いてください。
readme_ja.mdの内容を包含してください。事務的な記述にして、githubページの解説を含めてください。

(事務的な記述にして、はこれがなかったとき、「そんな時使えるのが、XXX!」「みんなも使ってみてくださいね!」など、私の趣味と違う文章になっていたので追加した)

変更履歴

TrueTypeフォント(TTF)からビットマップフォントデータを生成するPythonユーティリティ

概要

本プロジェクトは、TrueType(.ttf)フォントファイルから日本語を含むビットマップフォントデータを生成するPython製ユーティリティです。C言語ヘッダファイル、Pythonソース、バイナリ、FONTX2、BDFなど複数形式での出力に対応しています。

特徴

  • TrueTypeフォントから日本語を含むビットマップフォントデータを生成
  • C言語、Python、バイナリ、FONTX2、BDF形式での出力に対応
  • 文字セットやエンコーディング、出力形式を柔軟に指定可能
  • コマンドラインから簡単に利用可能

インストール

必要なパッケージをインストールします。

pip install -r requirements.txt

使い方

  1. GitHubリポジトリから font.py をダウンロードします。
  2. コマンドラインで以下のように実行します。
python font.py [オプション] フォントファイル(ttf)

主なオプションとデフォルト値

オプション 説明 デフォルト値
-h, --help ヘルプメッセージを表示して終了 -
-n, --name NAME C言語ヘッダファイルで生成される構造体名 自動生成
-s, --size SIZE フォントサイズ(全角は正方形、半角は半分の幅) 12
-xo, --xoffset XOFFSET 文字の水平方向シフト量(ピクセル) 0
-yo, --yoffset YOFFSET 文字の垂直方向シフト量(ピクセル) -1
-cs, --codeset {ALL,LEVEL1,SCHOOL,CUSTOM,TEST} 文字セット指定 ALL
-cf, --charfile CHARFILE 文字リストファイル(CUSTOM時必須) -
-o, --output OUTPUT 出力ファイル名 自動生成
-m, --mapping {KANA,NONE} 文字グループのマッピング KANA
-em, --endmark {ALLZERO,ALLMAX,NONE} データ末尾の終了マーク ALLZERO
-t, --outtype {CData,PBinary,Python,FONTX2,BDF} 出力フォーマット CData
-bs, --bdf-split {Default,True,False} BDF出力時の分割設定 Default
-en, --encoding {UTF8,SJIS,JIS} 出力ファイルのエンコーディング -tに従う
-fr, --filereplace ファイル名の不適切文字を置換 -
-v, --verbose 詳細なデバッグ情報を表示 -
-i, --image 変換中の文字画像を表示 -

ヘルプ表示

--help オプションで使い方が表示されます。システムロケールにより日本語または英語で表示されます。LANG環境変数で切り替え可能です。

使用例

python font.py JF-Dot-Shinonome12.ttf -s 12 -cs SCHOOL -o MyFont.h

→ 教育漢字のみを含む12x12ドットのC言語ヘッダファイルを出力

python font.py FONTDATA/ipam.ttf -s 24 -cs ALL -t FONTX2 -o IPAMincho

→ 24x24ドットの全角・半角フォントファイルを別々に出力

注意事項

出力ファイルについて

  • デフォルトはC++ヘッダファイル(.h)
  • バイナリやPython形式も出力可能(-tオプション)
  • 生成ヘッダファイルはKNJGfx9341プロジェクト等で利用可能

※注意:FONTDATAディレクトリに存在する変換後のフォントファイルの権利は、変換元になったフォントの権利に従います。


ライセンス

このプロジェクトはMITライセンスで公開されています。

MIT License

Copyright (c) 2025 Hisayuki Nomura

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

ご質問や不明点はGitHubリポジトリのIssue等でご連絡ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?