¿Cómo puedo encontrar la fuente de esta advertencia de coretext relacionada con la fuente en IOS13?

17

Al trabajar en una actualización de mi aplicación, noto que recibo toneladas de advertencias en el registro cuando ejecuto la aplicación en Xcode 11.2 en IOS13.

Nota de CoreText: El cliente solicitó el nombre ".SFUI-Regular", obtendrá TimesNewRomanPSMT en lugar de la fuente deseada. Todo el acceso a la fuente de la interfaz de usuario del sistema debe realizarse a través de las API adecuadas, como CTFontCreateUIFontForLanguage () o + [UIFont systemFontOfSize:].

Busqué un poco y encontré esta cita de WWDC:

Como se mencionó en numerosas sesiones de WWDC, los nombres de fuente con prefijo de punto no se deben usar directamente.

Yo mismo uso casi exclusivamente IB y plumillas para configurar fuentes para campos de texto, etc., y no hay ninguna referencia a "SFUI-Regular" en mi código en ninguna parte, por lo que no estoy seguro de cómo encontrar el motivo real de estas advertencias (tengo algo así como 20-30 filas de estos en los registros).

¿Alguien tiene algún consejo sobre cómo puedo encontrar de dónde viene la advertencia y cómo solucionarla?

Mathias
fuente

Respuestas:

6

Hay otra salida en la consola, puede intentar agregar un punto de interrupción simbólico

Nota de CoreText: establezca un punto de interrupción en CTFontLogSystemFontNameRequest para depurar.

clatt
fuente
Sí, establezca este punto de corte simbólico. Cuando se rompe, revisa tu pila de llamadas. Entonces verás cuál es el culpable. Para mí, software de terceros.
PDG
@PDG ¿Qué estaba haciendo exactamente el software de terceros?
Kaunteya
5

Comencé a experimentar esta advertencia en la consola comenzando con Xcode 11, con objetivos MacOS e iOS.

Recibirá ".SFUI-Regular" de UIFont.systemFont(ofSize: X).fontName. La advertencia se producirá si intenta crear una instancia usando UIFont(name: fontName, size: size).

En mi caso, dejo que el usuario personalice la fuente de visualización, pero el valor predeterminado era ".SFUI-Regular", por lo que lo he cambiado a "TimesNewRomanPSMT"

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

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)
gheclipse
fuente
2

Al tener el mismo problema y ninguna referencia a la fuente con prefijo de punto en mi código tampoco. Establecer un punto de interrupción simbólico pero nada de utilidad.

Tony Law
fuente
2
El mismo problema aquí, en una aplicación macOS. Estoy empezando a sospechar un error del SDK?
Jorge Leandro Perez
Rastreé el mío hasta una versión anterior de un pod que estoy usando.
Tony Law
66
Para el registro, he reproducido este problema en un proyecto de macOS vacío, sin dependencias externas y solo 2 líneas de código. Boleto de soporte técnico enviado, los mantendremos informados, damas y caballeros
Jorge Leandro Pérez, el
1
@Klaas se disculpa por llegar tarde! SÍ ... esta es la respuesta oficial que recibí, a través del Soporte Técnico:
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. (Y no agregaron nada más ... "error del sistema")
Jorge Leandro Perez
0

Para mí, resultó que era una biblioteca de terceros que no se había actualizado en un tiempo que era el culpable.

Puse un punto de interrupción como el usuario clatt sugirió y encontré la fuente. En mi caso fue TOMSMorphingLabel .

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

solución para el problema uifont para ios 13

Jagveer Singh
fuente