Mac でフォントの表示名からフォントへのフルパスを見つけるにはどうすればよいですか?
質問
Photoshop の JavaScript API を使用して、特定の PSD 内のフォントを検索しています。
API から返されたフォント名を指定して、ディスク上でそのフォント名に対応する実際の物理フォント ファイルを見つけたいと考えています。
これはすべて OSX 上で実行されている Python プログラムで起こっているので、次のいずれかを探していると思います。
- 一部の Photoshop JavaScript
- Python 関数
- Pythonから呼び出せるOSX API
解決
残念ながら、非推奨になっていない唯一の API は ApplicationServices フレームワークにありますが、これにはブリッジ サポート ファイルがないため、ブリッジでは使用できません。ctypes を使用したい場合は、ATSFontRef を検索した後に ATSFontGetFileReference を使用できます。
Cocoa には、少なくとも 10.5 の時点では、フォントの場所を取得するためのネイティブ サポートがありません。
他のヒント
ターミナル (「アプリケーション」->「ユーティリティ」->「ターミナル」) を開き、次のように入力します。
locate InsertFontHere
これにより、必要な名前を持つすべてのファイルが吐き出されます。
警告:乗り越えなければならないことがたくさんあるかもしれません。
Cocoa にはフォントのリストを取得するメソッドが必要です。その場合は、PyObjC バインディングを使用してそれを呼び出す必要があります。
必要な用途に応じて、おそらく次のようなものを使用できます。
import os
def get_font_list():
fonts = []
for font_path in ["/Library/Fonts", os.path.expanduser("~/Library/Fonts")]:
if os.path.isdir(font_path):
fonts.extend(
[os.path.join(font_path, cur_font)
for cur_font in os.listdir(font_path)
]
)
return fonts
これを直接行うものは見つかりませんでした。システム上のさまざまなフォント フォルダーを反復処理する必要があると思います。 /System/Library/Fonts
, /Library/Fonts
, 、そしておそらくユーザーレベルのディレクトリも存在する可能性があります ~/Library/Fonts
.