Un problema simile è stato discusso in Carattere installato personalizzato non visualizzato correttamente in UILabel . Non è stata data alcuna soluzione.
Ecco la soluzione che ha funzionato per il mio carattere personalizzato che presentava lo stesso problema in UILabel, UIButton e simili. Il problema con il font si è rivelato essere il fatto che la sua proprietà ascender era troppo piccola rispetto al valore dei font di sistema. Ascender è uno spazio bianco verticale sopra i caratteri del font. Per correggere il tuo carattere dovrai scaricare le utilità della riga di comando di Apple Font Tool Suite . Quindi prendi il tuo carattere e fai quanto segue:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
Questo creerà Bold.hhea.xml
. Aprilo con un editor di testo e aumenta il valore ascender
dell'attributo. Dovrai sperimentare un po 'per scoprire il valore esatto che funziona meglio per te. Nel mio caso l'ho cambiato da 750 a 1200. Quindi esegui di nuovo l'utilità con la seguente riga di comando per unire le modifiche nel file ttf:
~$ ftxdumperfuser -t hhea -A f Bold.ttf
Quindi usa il carattere ttf risultante nella tua app.
OS X El Capitan
Il programma di installazione di Apple Font Tool Suite non funziona più su OSX El Capitan a causa di SIP perché tenta di installare i file binari in una directory protetta. Devi estrarre manualmente ftxdumperfuser
. Prima copia il pkg da dmg in una directory locale, quindi decomprimi OS X Font Tools.pkg
con
~$ xar -xf OS\ X\ Font\ Tools.pkg
Ora vai nella cartella fontTools.pkg
con
~$ cd fontTools.pkg/
Estrai il carico utile con
~$ cat Payload | gunzip -dc | cpio -i
Ora il ftxdumperfuser
binario è nella tua cartella corrente. Puoi spostarlo in /usr/local/bin/
modo da poterlo utilizzare in ogni cartella all'interno dell'applicazione terminale con quanto segue.
~$ mv ftxdumperfuser /usr/local/bin/