Tengo una UIButton
que usa una fuente personalizada, que se establece cuando se carga mi vista:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
El problema que tengo es que la fuente parece flotar hacia arriba de la línea central. Si comento esta línea, la fuente predeterminada aparece bien centrada verticalmente. Pero cambiar a la fuente personalizada rompe la alineación vertical.
También tengo el mismo problema en una celda de tabla con una fuente personalizada.
¿Debo decirle a la vista en algún lugar que la fuente personalizada no es tan alta como otras fuentes?
EDITAR: Me acabo de dar cuenta de que la fuente que estoy usando es una fuente TrueType de Windows. Puedo usarlo bien en TextEdit en Mac, solo un problema con la alineación en mi aplicación
Respuestas:
Se discutió un problema similar en La fuente instalada personalizada no se muestra correctamente en UILabel . No se dio ninguna solución.
Aquí está la solución que funcionó para mi fuente personalizada que tenía el mismo problema en UILabel, UIButton y demás. El problema con la fuente resultó ser el hecho de que su propiedad ascendente era demasiado pequeña en comparación con el valor de las fuentes del sistema. Ascender es un espacio en blanco vertical sobre los caracteres de la fuente. Para arreglar su fuente, tendrá que descargar las utilidades de línea de comandos de Apple Font Tool Suite . Luego toma tu fuente y haz lo siguiente:
Esto creará
Bold.hhea.xml
. Ábralo con un editor de texto y aumente el valor delascender
atributo. Tendrá que experimentar un poco para encontrar el valor exacto que mejor funcione para usted. En mi caso, lo cambié de 750 a 1200. Luego, ejecute la utilidad nuevamente con la siguiente línea de comando para fusionar sus cambios nuevamente en el archivo ttf:Luego, use la fuente ttf resultante en su aplicación.
OS X El Capitán
El instalador de Apple Font Tool Suite ya no funciona en OSX El Capitan debido a SIP porque intenta instalar los archivos binarios en un directorio protegido. Tienes que extraer manualmente
ftxdumperfuser
. Primero copie el paquete del dmg a un directorio local, luego descomprima el paqueteOS X Font Tools.pkg
conAhora navegue a la carpeta
fontTools.pkg
conExtraiga la carga útil con
Ahora el
ftxdumperfuser
binario está en su carpeta actual. Puede moverlo para/usr/local/bin/
poder usarlo en cada carpeta dentro de la aplicación de terminal con lo siguiente.fuente
Resolví el problema ajustando el contenido superior (¡no el título!).
Por ejemplo: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
¡Buena suerte!
fuente
No estoy seguro si esto ayudará, ya que puede depender de su fuente, pero podría ser que su línea de base esté desalineada.
fuente
Creo que esta es la mejor respuesta. no jugar con ascender, numberOfHMetrics, etc ... solo importar-exportar por la aplicación Glyphs y trabajo hecho. Gracias a esta respuesta: https://stackoverflow.com/a/16798036/1207684
fuente
Puede probar esto en Interface Builder. Aquí hay una instantánea de cómo hacerlo:
Como puede ver, intentar hacer esto en IB tiene sus propios beneficios.
fuente
Llegó tarde a la fiesta, pero como este problema me golpeó por enésima vez, pensé en publicar la solución más simple que he encontrado: usar Python FontTools .
Instale Python 3 si no está disponible en su sistema.
Instalar FontTools
pip3 install fonttools
FontTools incluye una herramienta TTX que permite la conversión desde y hacia XML.
Convierta su fuente a .ttx en la misma carpeta
ttx myFontFile.otf
Realice las ediciones necesarias en .ttx y elimine el archivo .otf, ya que se reemplazará en el siguiente paso.
Convierta el archivo de nuevo a .otf
ttx myFontFile.ttx
Motivación: La solución de kolyuchi está incompleta, e incluso con este flujo de instalación extendido , la ejecución
ftxdumperfuser
produjo un error en 10.15.2 Catalina.fuente