要在iOS中使用字体,必须根据字体的完整名称(PostScript名称)加载字体,该名称有时(通常)与字体的实际文件名称不同。
想象一下你将字体文件“Arial-regular.ttf”重命名为“foo.ttf”。你刚刚重命名的字体文件内包含的字体仍然是“Arial-regular”。
本主题已经提供了一些获取字体名称的良好程序化方法,但我有一个使用命令行的不同方法。
如果您使用的是Mac或Linux,请在存储自定义字体的目录中从命令行运行此脚本(使用fontconfig的fc-scan
工具,该工具可能已安装,但如果没有,可以通过homebrew进行安装:brew install fontconfig
):
for file in "$arg"*.{ttf,otf}; do fc-scan --format "%{postscriptname}\n" $file; done
这是我在~/Library/Fonts
目录上运行上述命令的截图:
![在此输入图片描述](https://istack.dev59.com/k4vTt.webp)
以上脚本将遍历当前目录中所有的.ttf
和.otf
文件,然后打印出每个字体的PostScript名称,您可以使用该名称在XCode或其他地方引用字体文件。
如果您想要一些附加信息(PostScript名称、文件名)和一些颜色编码,您可以运行此替代脚本:
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
![输入图片说明](https://istack.dev59.com/ICUpu.webp)
这比将代码复制粘贴到AppDelegate.m文件中以打印名称的普遍方法快一些,而且比打开FontBook来检查PostScript名称也更快。
实用提示:如果您在终端中为上述脚本设置别名,那么每次只需键入一个命令即可获取当前目录中所有文件的PostScript字体名称(我的函数称为fontnames
,因此我只需在包含字体的目录中的终端内键入fontnames
,就会自动打印出PostScript名称),这将节省您在开发工作流程中的时间,并准备好这个方便的脚本在需要时使用。
希望这有所帮助!
familyNames
并没有显示我要查找的字体。 - Fogmeisterfc-scan --format "%{foundry}: %{family}\n" filename.ttf
或filename.otf
. - Dave Jarvis