关于systemFont的一些坑点

有时候在不同系统上面显示的字体不一样,系统的SFUI字体会被改成TimesNewRomanPSMT 也就是非衬线字体改成了衬线字体,这种问题设计师一看就能看出问题

问题:

CoreText note: Client requested name ".SFUI-Regular", it will get TimesNewRomanPSMT rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[UIFont systemFontOfSize:].

解决方案:

CoreText note: Set a breakpoint on CTFontLogSystemFontNameRequest to debug.

THLabel库里面的一段代码会导致这个问题

CTFontRef fontRef = CTFontCreateWithName((__bridge CFStringRef)self.font.fontName, self.font.pointSize, NULL);

升级最新版本可以解决

SF的系统字体尽量用[UIFont systemFontOfSize:]、CTFontCreateUIFontForLanguage()这种方法创建,而不要用[UIFont fontWithName:fontName size:fontSize]、 CTFontCreateWithName这种方法创建,iOS13之后会有问题

发表评论

邮箱地址不会被公开。 必填项已用*标注