Answers:
您的假设是正确的。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
文件,然后为每种字体打印出PostScript名称,可用于在XCode或其他地方引用字体文件。
如果您想了解一些其他信息(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名称。
有用的提示:如果您在终端中为上述脚本添加别名,那么您只需键入一个命令即可获取当前目录中所有文件的所有PostScript字体名称,那么您将节省开发时间,并在需要时准备好使用此方便的脚本。
希望这可以帮助!