none53 / font2img

convert font files into image files

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

font2img

フォントファイルから画像生成.

研究室で受け継がれてたものが古くて改造しにくかったので, PythonのPillowで試しに作ってみたものです.

Requirement

  • Python 3
  • Pillow
  • Numpy
  • tqdm
pip3 install pillow numpy tqdm

Usage

python3 font2img.py {フォントファイル(ttf, ttc, otf, otc)が入ったディレクトリ} {画像化したい文字列が入ったtxt} {出力ディレクトリ(自動生成)} [options]

Options

オプションコマンド 効果 デフォルト値
-c (--canvas_size) {キャンバスサイズ} キャンバスの一辺のサイズを指定.単位はpixel. 256
-f (--font_size) {フォントサイズ} フォントサイズ指定.単位はpt.指定しなければ適当に決まる. canvas_size * 0.75
-e (--ext) {拡張子} 出力する画像の拡張子. png
--not-centering センタリングしないように. False
-m (--maximum) キャンバスサイズいっぱいに最大化.処理遅め. False
-b (--binary) 2値画像として保存. False
-u (--unicode) 画像のファイル名をUnicodeの数値として保存. False
--by-char 階層構造を変更.サブディレクトリ名が文字名に. False
-r (--recursive) サブディレクトリのフォントファイルも探索. False

Features

  • 入力txtはただのtxtファイルでOK.A-Zを出力したいならABCDEFGHIJKLMNOPQRSTUVWXYZと書く.
    • 重複していても1回しか生成されない.
    • スペース,タブ,改行などは無視される.
  • 出力のディレクトリ構造は,
    • デフォルトでは,各フォント名のディレクトリが生成され,その中にA.png, B.png...のように保存される.
    • --by-charオプションをつけると,文字名がディレクトリ,その中にArial.pngのように保存される.
  • 文字名について,
    • ファイル名として不適切な文字は{その文字コード}となる.(?:/"などが該当.)
    • アルファベットの大文字と小文字が存在する場合,大文字のほうはA_のようにアンダースコアが付与される.
  • 描画に失敗した場合,その情報が{出力ディレクトリ}/failure.txtに出力される.
    • ある文字がフォントに含まれていなかった(真っ白だった)場合のエラーはwhite,該当する文字も出力
    • すべての文字が同じになった(ttfの異常? #16)場合のエラーはsame

TODO

  • 最大化が遅い.アルゴリズム変えてもっと高速化できるはず.
  • failure.txtは追記形式.なので,同じ出力先で数回実行しても追記されるだけ.更新されるようにしたい.

References

About

convert font files into image files

License:MIT License


Languages

Language:Python 100.0%