投稿日
2013/7/29 月曜日
ちょっとフォント名(フォントファミリ名)からフォントのファイル名を検索したかったので、その一覧を作成するスクリプトを書いた。
ただ、諸般の事情で無駄になってしまった。
そのままお蔵入りさせるのも勿体無いので公開。
動作確認した環境は、Mac OS X 10.8.4、OS標準のPython 2.7。
pip install freetype-py 等でfreetype-pyをインストールする必要がある。
あと、 brew install freetype 等でfreetypeのバイナリをインストールする必要があるかも。
./list_font_name.py "フォントファイルもしくはフォントを設置したディレクトリのパス"
-rオプションで再帰的にディレクトリをたどる。(つまりデフォルトでは指定したディレクトリ直下のファイルのみ調べる。)
出力は、”フォントファイル名, フォントファミリ名”のリストとなる。
フォントファイルじゃないものがあったり、freetypeが認識に失敗したらフォントファミリ名として”不明”と表示される。
あと、サッと適当に書いたソースなので注意。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
パラメータで渡されたディレクトリの中にあるフォントファイルのフォント名(フォントファミリ名)を一覧表示する。
要 freetype-py
'''
import os.path
import sys
import freetype
from optparse import OptionParser
def main(dir_path, do_recursive):
if do_recursive:
for root, dirs, files in os.walk(dir_path):
for fname in files:
path = os.path.join(root, fname)
print_font_name(path)
else:
for fname in os.listdir(dir_path):
path = os.path.join(dir_path, fname)
print_font_name(path)
def print_font_name(font_path):
if not os.path.isfile(font_path):
return
try:
face = freetype.Face(font_path)
print "%s, %s" % (os.path.basename(font_path), face.family_name)
except (freetype.ft_errors.FT_Exception):
print "%s, %s" % (os.path.basename(font_path), "不明")
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-r", "--recursive",
action = "store_true",
dest = "recursive",
default = False,
help = "ディレクトリを再帰的に処理する。")
(options, args) = parser.parse_args()
if len(args) < 1:
print "エラー: 処理するフォントファイルまたはディレクトリを指定してください。"
sys.exit(1)
path = os.path.abspath(args[0])
if not os.path.exists(path):
print "エラー: フォントファイルまたはディレクトリが存在しません。"
sys.exit(1)
if os.path.isdir(path):
main(path, options.recursive)
elif os.path.isfile(path):
print_font_name(path)
else:
print "エラー: ファイルまたはディレクトリを指定してください。"
sys.exit(1)
最近のコメント
たかたむ
はじめまして。初リアルフォース(R3ですが)で,同…
nokiyameego
ZFS poolのデバイスラベル破損で悩んていたと…
名前
しゅごい
Jane Doe
FYI Avoid Annoying Unexpe…
Jane Doe
ご存じとは思いますが、whileには、”~の間”と…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…
花粉症対策2019 – 日曜研究室
[…] 花粉症対策についてはこれまで次の記事を書いてきました。https://…