Benutzerdefinierte Schriftarten werden auf iOS nicht korrekt angezeigt

8

Ich versuche, eine Reihe von Neo Sans Pro-Schriftarten auf dem iPhone arbeiten zu lassen. Ich habe vier Gewichte: Light, Regular, Medium, Bold als OTF-Dateien (NeoSansPro-Light.otf, -Regular.otf usw.). Die Dateien sind im Build enthalten und in der Datei info.plist registriert.

Aufruf von [UIFont fontNamesForFamilyName:@"Neo Sans Pro"] gibt ein Array mit 4 Einträgen zurück, z. "NeoSansPro-Light".

Ich kann Font-Objekte für jeden dieser Strings mit UIFont fontWithName:size: abrufen.

Wenn ich jedoch einen Text mit ihnen zeichne, zeichnen die Versionen Light, Regular und Medium alle genau gleich und sehen aus wie die Light-Version. Die Fett-Version zeichnet anders.

Laut Font Book enthält jede Schriftartdatei unterschiedliche Glyphen.

Ich bin völlig ratlos - irgendwelche Hinweise, was ich tun muss?

[Hinzugefügt] Etwas mehr Untersuchung:

%Vor%

Wenn Sie diesen Code ausführen, erhalten Sie die folgende Protokollausgabe:

%Vor%

Also sind die drei Schriftarten, die das gleiche anzeigen, wirklich gleich. Aber es gibt vier Schriftarten und vier Schriftarten im Build.

    
Malcolm Box 18.07.2011, 20:22
quelle

3 Antworten

10

Sieht aus, als wäre das das gleiche Problem wie hier: Mehrere Schriften derselben Familie in eine iPad-Anwendung einbinden

Es scheint, dass die iOS-Schriftart-Architektur verwirrt wird, wenn mehrere Schriftarten in derselben Schriftfamilie vorhanden sind, und die richtige Schriftart nicht zurückgibt. Die Lösung besteht darin, die Informationen zur Schriftfamilie manuell zu bearbeiten (mit etwas wie Font Forge zu verschiedenen Werten).

z. Legen Sie für die Schriftart Neo Sans Pro Light die Schriftfamilie (in den PSNames und TTF-Namen) auf "NSP Light" fest. Tun Sie ähnlich für Neo Sans Pro Regular - & gt; NSP Regular etc.

Sie können sich dann auf die Schriftart mit dem ursprünglichen Namen z. "NeoSansPro-Light"

Hässlich, aber es funktioniert.

    
Malcolm Box 19.07.2011, 10:54
quelle
0

Font forge sah ein bisschen zu viel für mich aus, also habe ich eine Methode erstellt, die Beschreibungen der Schriftarten im fontsArray einer bestimmten Familie liest und die entsprechende Schriftart zurückgibt.

%Vor%     
Elendurwen 11.08.2011 09:17
quelle
0

Ich habe eine Google-Schriftart namens Arvo verwendet. Es hatte folgende Dateien:

  • Arvo-Regular.ttf
  • Arvo-Bold.ttf
  • Arvo-BoldItalic.ttf
  • Arvo-Italic.ttf

Diese Namen wurden in der Datei info.plist meiner App hinzugefügt, aber aus irgendeinem Grund konnte meine App nur die fett-, fett- und kursiven Schriftarten lesen. Es konnte die normale Schriftart nicht lesen, als ich versuchte, sie zu laden. Nach dem Ausdruck der Schriftnamen kam jedoch heraus, dass Arvo-Regular in meiner App als Arvo erkannt wurde.

    
kevinl 28.02.2014 22:03
quelle

Tags und Links