如何在IOS13中找到此字体相关的coretext警告的来源?


17

在更新我的应用程序时,我注意到在IOS13上的Xcode 11.2中运行该应用程序时,我在日志中收到大量警告。

CoreText注意:客户端请求的名称为“ .SFUI-Regular”,它将获得TimesNewRomanPSMT而不是预期的字体。所有系统UI字体访问均应通过适当的API进行,例如CTFontCreateUIFontForLanguage()或+ [UIFont systemFontOfSize:]。

我挖了一下,发现了WWDC的这句话:

正如在许多WWDC会话中提到的那样,不要直接使用点前缀的字体名称。

我本人几乎只使用IB和笔尖为文本字段等设置字体,并且我的代码中均未引用“ SFUI-Regular”,因此我不确定如何找到这些警告的实际原因(我有在日志中大约有20-30行)。

是否有人对我如何找到警告的来源以及如何解决它有任何提示?

Answers:


6

控制台中还有另一个输出,您可以尝试添加符号断点

CoreText注意:在CTFontLogSystemFontNameRequest上设置一个断点以进行调试。


是的,设置此符号断点。中断时,检查您的调用堆栈。然后,您将看到罪魁祸首。对我来说,第三方软件。
PDG

@PDG第三方软件到底在做什么?
Kaunteya

5

我从Xcode 11开始,在带有MacOS和iOS目标的控制台中开始遇到此警告。

您将从收到“ .SFUI-Regular” UIFont.systemFont(ofSize: X).fontName。如果尝试实例化使用,则会出现警告UIFont(name: fontName, size: size)

在我的情况下,我让用户自定义显示字体,但是默认值为“ .SFUI-Regular”,因此我将其更改为“ TimesNewRomanPSMT”

let defaultFont = UIFont.systemFont(ofSize: X).fontName

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)

2

也有同样的问题,在我的代码中也没有引用点缀字体。设置一个符号断点,但没有任何用处


2
在macOS应用中,此处存在相同问题。我开始怀疑SDK错误?
豪尔赫·莱安德罗·佩雷斯

我跟踪了我使用的旧版Pod。
托尼·罗

6
作为记录,我在一个空的macOS项目中重现了此问题,没有外部依赖关系,只有两行代码。女士们,先生们,提交的技术支持票将随时为您发布
Jorge Leandro Perez

1
@Klaas对迟到表示歉意!是的...这是我通过技术支持获得的官方回复:
Jorge Leandro Perez,

1
Regarding the error mesage shown in your video, I view it as a system bug because I don’t see any of your code requesting “.AppleColorEmojiUI” – If your real app indeed does that, you should follow the message to correct it. Other than that, I don’t have anything worth to mentioning. (而且他们没有添加任何其他内容。...“系统错误”)
豪尔赫·莱安德罗·佩雷斯

0

对于我来说,事实证明这是一个第三方库,一段时间以来一直没有更新,这是罪魁祸首。

根据用户的建议,我设置了一个断点并找到了源。在我的情况下是TOMSMorphingLabel


0
let fontCT = CTFontCreateUIFontForLanguage(.label, fontSize as CGFloat, nil)
attrStr.addAttribute(.font, value: fontCT as Any, range: NSMakeRange(0, text.count))

ios 13 uifont问题的解决方案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.