回答:
あなたの仮定は正しいです。iOSでは、Postscript名(またはフルネーム)に基づいてフォントを識別する必要がありますが、これは常にフォントの実際のFilenameと同じではありません。
FontBookを使用してPostScript名を取得できます(ここで受け入れられている回答を参照)が、他の方法もあります。
XCodeの内部から直接、を介してプロジェクトのインストール済みフォントからPostScript名を抽出できますUIFont
。これを実行するだけで、インストールされているプロジェクトフォントのPostScript名を印刷できます。
Objective-C (ソース):
for (NSString *fontFamilyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:fontFamilyName]) {
NSLog(@"Family: %@ Font: %@", fontFamilyName, fontName);
}
}
またはSwift 3.0(ソース)
for familyName in UIFont.familyNames {
for fontName in UIFont.fontNames(forFamilyName: familyName ) {
print("\(familyName) : \(fontName)")
}
}
または、ターミナルから、フォントファイルがあるディレクトリ内から、このスクリプトを実行して、現在のディレクトリ内のフォントのすべてのPostScript名を印刷できます(すでにインストールされているfontconfigのfc-scan
ユーティリティを使用します)(ソース):
for file in "$arg"*.{ttf,otf}; do fc-scan --format "%{postscriptname}\n" $file; done
~/Library/Fonts
ディレクトリで実行されている上記のコマンドのスクリーンショットは次のとおりです。
上記のスクリプトは、現在のディレクトリ内のすべてのファイル.ttf
と.otf
ファイルを実行し、XCodeまたは他の場所でフォントファイルを参照するために使用できる各フォントのPostScript名を出力します。
いくつかの追加情報(PostScriptName、Filename)といくつかのカラーコーディングに興味がある場合は、次の代替スクリプトを実行できます。
for file in "$arg"*.{ttf,otf}; do
postscriptname=$(fc-scan --format "%{postscriptname}\n" $file);
printf "\033[36m PostScript Name:\033[0m %s \e[90m(%s)\033[0m\n" "$postscriptname" "$file";
done
これは、新しいフォントファイルを追加するたびに名前を印刷するAppDelegate.mファイル内にコードをコピーアンドペーストするよりも少し高速です。これは一般的な方法であり、FontBookのFontを開くよりも高速です。 PostScript名を調べます。
便利なヒント:上記のスクリプトを端末でエイリアス化して、1つのコマンドを入力するだけで、現在のディレクトリ内のすべてのファイルのすべてのPostScriptフォント名を取得する場合、開発ワークフローの時間を節約し、この便利なスクリプトは、必要なときにすぐに使用できます。
お役に立てれば!
私は他の人と共有すべきだと思ったわずかに異なるユースケースに出くわしました:
購入してダウンロードしたフォントファイルは、アプリの使用のみに制限されています。私は通常、受け入れられた答えのように、PostScript名を取得するためにFontBookを使用します。ただし、アプリの使用制限のため、フォントをFontBookにインポートできませんでした。
私のために働いたのは、フォントファイルを右クリックして「情報を見る」を選択することでした。「一般」タブの下の「フルネーム」フィールドの値は、私にとってはうまくいき、PostScript名のように見えます。PostScript名を確実に知っている他のいくつかのフォントファイルでこれを確認しました。
簡単で、別のアプリを開く必要はありません。