我遵循了一堆教程,但它不起作用:我只是想在macOS应用程序中添加自定义字体。
我本质上尝试了什么:
.ttf
字体文件添加到我的项目:设置了目标成员资格,我还确保使用Copy Files
中的Bundle Phases
复制文件。编译后我可以看到所有文件都在Bundle中。所以这似乎完全正常。 Info.plist
:我添加了Fonts provided by application
,并为我要添加的每个字体文件创建了一个项目(myFont.tff
等值)。< / p>
我确保使用正确的字体名称。我在我的系统上安装了字体,并使用Interface Builder配置了Label,以便它使用所需的字体。我打印了它的值print(myLabel.font.fontName)
。
令人困惑:如果要添加到应用程序的完全相同的字体文件安装在系统Fontbook中并激活,则一切正常。当我停用它时,它不起作用。对我来说,这表明我使用了正确的字体名称。
我找到ATSApplicationFontsPath
并尝试将其添加到Info.plist
,但都没有使用路径(文档推荐)或{{1}等值(这似乎适用于那里的一些人)解决了。
感谢任何帮助!
答案 0 :(得分:3)
我偶然解决了我的问题。
我注意到在Bundle文件中,我的字体被包含了两次:它们被复制到&#34;资源&#34;目录以及我在&#34;复制文件&#34;中声明的子路径;建立阶段。 我从项目中删除了字体,再次添加它们(不检查&#34; Target Membership&#34;)并将它们添加到Build Phases中,以便将它们复制到子路径中。之后它起作用了。
附加说明:
原来,Fonts provided by application
是仅限iOS的属性,因此macOS实现不需要它。
此外,ATSApplicationFontsPath
不需要任何斜杠。例如:Fonts
应该可以正常工作。
我很难找到.ttf字体文件的正确名称,有时会发现一些奇怪的行为:NSFont从字体系列中随机选择字体(常规,中等,粗体......)而不进行任何代码更改。通过使用.otf文件,我也可以解决这个问题。
答案 1 :(得分:1)
值ATSApplicationFontsPath
(即Application fonts resource path
)相对于应用包的Resources
文件夹。
要查看字体的复制位置:
答案 2 :(得分:1)
以上所有内容均不适用于运行BigSur的Xcode 12 beta 1,但这些步骤确实有效。
无需编辑构建阶段或其他任何内容。
答案 3 :(得分:1)
Xcode 12添加自定义字体,您必须从提供的字符串中排除扩展名。
即
.font(.custom(“您的字体名称”,大小:xx))//每次都可以工作
.font(.custom(“您的字体名称.extension”,size:xx))//始终失败
对于Xcode 11.xx,在fontname.extension起作用的情况下,这是不正确的。
答案 4 :(得分:0)