[ios] IOS13에서이 글꼴 관련 핵심 텍스트 경고의 출처를 어떻게 찾을 수 있습니까?

내 앱 업데이트 작업 중 IOS13의 Xcode 11.2에서 앱을 실행할 때 로그에 많은 경고가 표시됩니다.

CoreText 참고 : 클라이언트가 “.SFUI-Regular”라는 이름을 요청하면 의도 한 글꼴이 아닌 TimesNewRomanPSMT가 표시됩니다. 모든 시스템 UI 글꼴 액세스는 CTFontCreateUIFontForLanguage () 또는 + [UIFont systemFontOfSize :]와 같은 적절한 API를 통해 이루어져야합니다.

나는 조금 주위를 파고 WWDC 에서이 인용문을 발견했다.

많은 WWDC 세션에서 언급했듯이 점 접두사 글꼴 이름은 직접 사용되지 않습니다.

나는 거의 독점적으로 텍스트 필드 등의 글꼴을 설정하기 위해 IB와 펜촉을 사용하고 있으며 내 코드에는 “SFUI-Regular”에 대한 참조가 없으므로 이러한 경고의 실제 원인을 찾는 방법을 잘 모르겠습니다 ( 로그에 20-30 행과 같은 것).

누구나 경고의 출처를 찾는 방법과 수정 방법에 대한 팁이 있습니까?



답변

콘솔에 다른 출력이 있습니다. 심볼 중단 점을 추가 할 수 있습니다

CoreText 참고 : CTFontLogSystemFontNameRequest에서 중단 점을 설정하여 디버그하십시오.


답변

MacOS 및 iOS 대상 모두에서 Xcode 11로 시작하는 콘솔 에서이 경고가 발생하기 시작했습니다.

에서 “.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)


답변

내 코드에서 동일한 문제가 있고 점 접두사 글꼴에 대한 참조가 없습니다. 상징적 중단 점을 설정하지만 아무 것도 사용하지 않음


답변

나에게 그것은 그것이 범인이었던 한동안 업데이트되지 않은 타사 라이브러리였습니다.

사용자 clatt가 제안하고 소스를 찾은대로 중단 점을 넣었습니다. 내 경우에는 TOMSMorphingLabel 입니다.


답변

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

iOS 13의 uifont 문제 해결


답변