我正在尝试使行为与字体管理器非常相似,但是我根本找不到任何有关如何进行操作的文档,例如,将OpenType字体添加到NSFontManager提供的列表中。我什至看不到“字体书”都显示了通过字体管理器应用程序激活的字体,因此我想了解幕后情况。正在调用什么库?
谢谢!
Apple有一篇名为Mac OS X: Font locations and their purposes的旧存档文章,其中包含有关手动管理字体的部分:
[...]您可以通过双击字体并按照Font Book应用程序中的屏幕提示来安装字体,或通过手动将字体文件复制或拖动到Mac OS X中的任何标准Fonts文件夹中。
字体所在的文件夹确定谁可以访问和使用字体。例如:如果用户在
~/Library/Fonts/
处手动安装了新字体,则该字体仅对该用户可用。如果root用户或admin用户在/Network/Library/Fonts/
处安装了相同的字体,则所有网络用户都可以使用这些字体(假设网络管理员已为这种类型的共享设置了计算机)。更改字体会在打开应用程序或用户登录发生更改的帐户或计算机时生效。重复的字体会根据为标准Font文件夹定义的优先顺序进行解析,并在下面按从高到低的优先级进行描述。
我使用我创建的空字体(Awfulcode-Regular.otf
)和TextEdit进行了测试,发现更改是即时的。因此我推测,任何延迟实际上都是由特定应用而非macOS本身引入的。
[花了我很多时间,但here's the way to go。
CTFontManagerRegisterFontURLs完全符合我在macOS上寻找的功能。另外,来自2019年WWDC的session 227提供了更多信息,尽管重点是iOS。