如何在mac应用程序中使用自定义字体?

C-V*_*rel 7 macos xcode custom-font swift

我尝试在我的swift应用程序中使用自定义字体,但它们不加载.

我复制了我的资源文件夹中的fonts.ttf,并在Info.plist中的"应用程序提供的字体"键下添加了名称.

我尝试使用.plist中的"应用程序字体资源路径"键,但没有结果.这是我用来应用我的字体的代码.我试过:"MyFont.ttf"和"MyFont"

@IBOutlet weak var label:NSTextField!

override func awakeFromNib() {
    label.font = NSFont(name: "MyFont.ttf", size: 15)
}
Run Code Online (Sandbox Code Playgroud)

小智 22

由于"应用程序字体资源路径"现在是XCode 7.3.1中的字符串类型,我似乎无法找到将数组用于多种字体的方法,因此我使用了".".在Info.plist中:

     Application fonts resource path     String    .
Run Code Online (Sandbox Code Playgroud)

这似乎可以动态地在Resources文件夹中获取我的所有自定义字体,例如使用Swift

 labelText.font = NSFont(name: "DS-Digital", size: 48)
Run Code Online (Sandbox Code Playgroud)

但是,要在XCode设计模式下看到它(从下拉菜单中选择字体),我需要先将字体添加到Font Book中.

但是,动态方法不需要Font Book :)


And*_*rew 11

ATSApplicationFontsPath适用于 macOS

ATSApplicationFontsPath ( String- macOS ) 标识字体文件或字体目录在包的资源目录中的位置。如果存在,macOS 会在指定路径激活字体以供捆绑的应用程序使用。字体仅为捆绑的应用程序激活,而不是为整个系统激活。路径本身应指定为包资源目录的相对目录。例如,如果字体目录位于路径 /Applications/MyApp.app/Contents/Resources/Stuff/MyFonts/ 中,您应该为此键的值指定字符串 Stuff/MyFonts/。

macOS 应用说明:

  1. 项目导航器中选择您的 Xcode 项目
  2. 选择您的 应用目标
  3. 单击+ 按钮并添加一个新的复制文件阶段
  4. 选择资源目的地
  5. subpath 下指定目录(例如Fonts),您的嵌入字体将被复制到应用程序包的 Resources 目录中。
  6. 将字体文件拖放到Copy Files构建阶段的文件列表中。

UIAppFonts适用于 iOS

UIAppFonts ( Array- iOS ) 指定应通过正常机制提供的任何应用程序提供的字体。数组中的每一项都是一个字符串,其中包含位于应用程序包中的字体文件(包括文件扩展名)的名称。系统加载指定的字体,并在应用程序运行时使它们可供应用程序使用。

iOS 3.2 及更高版本支持此密钥。


Kel*_*sha 8

通过直接将应用程序字体资源路径设置为我的字体文件的名称,我完全幸运地解决了这个问题。

1

  • 我只是将其留空,它起作用了 <key>ATSApplicationFontsPath</key><string></string> 我的字体位于资源根文件夹中。 (2认同)

小智 7

对于那些字体系列被称为My-Custom-Font-Family之类的人:请注意,在代码中,您应该像这样实例化自定义字体:NSFont(name: "MyCustomFontFamily-Bold", size: 20) 空格和“-”被忽略,字体类型写在“-”之后。我没有在任何文档中看到这一点,并花了几个小时试图弄清楚 wtf 是错误的。另外,如果您想获取所有可用字体的列表,您可以使用此代码

for font in NSFontManager.shared.availableFonts {
    print(font)
}
Run Code Online (Sandbox Code Playgroud)


Leo*_*bus 5

首先将您想要嵌入 OSX 应用程序的所需字体添加到您的项目中:

在此输入图像描述

然后单击项目 > 信息,然后单击加号并添加新键“应用程序字体资源路径”,然后在其中键入字体名称,创建字符串数组:

在此输入图像描述

现在您可以选择自定义字体,字体名称将显示在那里,您仍然需要使用字体簿使其在 Xcode 中可用。

在此输入图像描述

  • 应用程序字体资源路径是字符串类型,我无法添加字符串数组 (4认同)
  • 对我来说,这就是问题所在,字体必须先安装在系统中(即字体簿),然后才能嵌入应用程序中。这看起来很荒谬,但我假设解释是这样你可以在 Interface Builder 中使用它,但即使你只在代码中创建字体,它也需要最初安装在 Font Book 中,然后你可以根据需要将其删除到。苹果在页面上没有提及如何在应用程序中嵌入字体,因此非常令人困惑。另外,对于 macOS,我使用 plist 键“应用程序提供的字体”而不是“应用程序字体资源路径”。 (4认同)
  • 嗨,如果应用程序字体资源路径是字符串而不是数组怎么办,我无法像您对该图像所做的那样添加字体 (3认同)