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

时间:2014-12-28 21:46:36

标签: xcode macos swift custom-font

我尝试在我的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)
}

6 个答案:

答案 0 :(得分:20)

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

     Application fonts resource path     String    .

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

 labelText.font = NSFont(name: "DS-Digital", size: 48)

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

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

答案 1 :(得分:2)

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

enter image description here

然后点击项目>信息,然后单击加号并添加一个新密钥"应用程序字体资源路径"并在那里输入字体名称,创建一个字符串数组:

enter image description here

现在您可以选择自定义字体并在那里显示字体名称,您仍然需要使用字体书才能在Xcode中使用它。

enter image description here

答案 2 :(得分:2)

ATSApplicationFontsPath is for macOS

  

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

macOS应用说明:

  1. 项目导航器
  2. 中选择您的Xcode项目
  3. 选择您的 应用目标
  4. 点击 +按钮并添加 New Copy Files阶段
  5. 为目标
  6. 选择资源
  7. subpath 下,指定将嵌入式字体复制到应用程序包的Res​​ources目录中的目录(例如字体)。
  8. 将字体文件拖放到复制文件构建阶段的文件列表中。

UIAppFonts is for iOS

  

UIAppFonts Array- iOS )指定应由应用程序提供的所有字体   可以通过正常机制获得。中的每个项目   array是一个字符串,其中包含字体文件的名称(包括   位于应用程序捆绑包中的文件扩展名)。系统   加载指定的字体并使它们可供应用程序使用   该应用程序何时运行。

     

iOS 3.2及更高版本支持此键。

答案 3 :(得分:1)

尝试从属性检查器中的界面构建器执行此操作。

答案 4 :(得分:0)

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

1

答案 5 :(得分:0)

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

for font in NSFontManager.shared.availableFonts {
    print(font)
}