gpt4 book ai didi

objective-c - CoreText 相当于 [NSFont fontWithName]

转载 作者:行者123 更新时间:2023-12-03 17:20:42 25 4
gpt4 key购买 nike

在我们的应用程序中,我们将自定义对象的字体存储为包含字体名称(从字体面板检索)的字符串,并使用实例化字体

+ (NSFont *)fontWithName:(NSString *)fontName

现在,当加载或导入文件时,我们想检查字体名称是否能在当前系统上实际解析。

由于某些设计限制,我们需要使用普通的旧 C/C++ 来执行检查,即现在使用 CoreText

但是,似乎不存在与 fontWithName:: 类似的等效 CoreText API 调用:

  • CTFontCreateWithName 始终在使用后备策略时返回字体
  • CTFontCopyFullName 似乎使用了与 NSFont 接受/使用的名称不同的名称..?

所以基本上问题是:
我们如何使用 CoreText 功能来检查当前系统上是否存在某种字体,并且稍后可以使用 [NSFont fontWithName:] 成功实例化该字体..?

最佳答案

看起来 CTFontCopyPostScriptName()对于 [NSFont fontWithName:] 可以理解的任何字符串,将始终返回有效结果 - 反之亦然。

至少在我的 10.8 - 10.10 实验中,使用有效且虚构的字体名称,CTFontCopyPostScriptName() 的结果始终可用于验证字体名称对于 是否有效NSFont

编辑#1
一些实验表明,为了安全起见,使用 CTFontCopyFamilyName() 添加后备也是一个好主意。

关于objective-c - CoreText 相当于 [NSFont fontWithName],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29361496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com