Benutzerdefinierte Schriftarten nicht korrekt angezeigt auf iOS
Ich versuche, einen Satz von Neo Sans Pro-Schriften arbeiten auf dem iPhone. Ich habe vier Schnitte: Light, Regular, Medium, Bold als OTF-Dateien (NeoSansPro-Licht.otf, -Regelmäßige.otf etc.). Die Dateien sind im build enthalten, und registriert die info.plist.
Aufrufen [UIFont fontNamesForFamilyName:@"Neo Sans Pro"]
gibt ein array mit 4 Einträgen, z.B. "NeoSansPro-Licht".
Kann ich abrufen font-Objekte für jede dieser Zeichenfolgen mit UIFont fontWithName:size:
.
Jedoch, wenn ich zeichne text mit, Light, Regular und Medium-Versionen, alle zeichnen genau das gleiche, und sehen aus wie die Light-version. Die Bold-version zeichnet anders.
Laut-Schrift-Buch, jede schriftart-Datei enthält verschiedene Glyphen.
Ich bin völlig ratlos - irgendwelche Hinweise, was ich tun muss?
[Hinzugefügt]
Einige weitere Untersuchung:
NSArray *fonts = [UIFont fontNamesForFamilyName:@"Neo Sans Pro"];
for (NSString *fname in fonts) {
UIFont *font = [UIFont fontWithName:fname size:12.0];
NSLog(@"name: %@ font: %@", fname, font);
}
Diesen code ausführen, gibt die folgende log-Ausgabe:
name: NeoSansPro-Light font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px
name: NeoSansPro-Regular font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px
name: NeoSansPro-Medium font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px
name: NeoSansPro-Bold font: <UICFFont: 0xaa06070> font-family: "Neo Sans Pro"; font-weight: bold; font-style: normal; font-size: 12px
Also die drei Schriften zeigen die gleiche wirklich gleich sind. Aber es gibt vier font-GEWICHTE und vier Schriftarten in der build.
- Habe auch versucht als TTF-Dateien, aber gleiche passiert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie das ist das gleiche problem wie hier: Auch mehrere Schriftarten der gleichen Familie in einer iPad-Applikation
Scheint es die iOS-font-Architektur Durcheinander kommt, wenn mehrere Schriftarten in der gleichen schriftart-Familie, und wird nicht die hand zurück, die richtige Schrift. Die Lösung ist manuell zu Bearbeiten, die schriftart-Informationen (mit so etwas wie Font Forge auf unterschiedliche Werte.
E. g. Für die Neo Sans Pro Light schriftart, die Schriftart-Familie (in der PSNames-und TTF-Namen) zu "NSP Licht". Ebenso tun für die Neo Sans Pro Regular -> NSP Regelmäßigen etc.
Können Sie verweisen Sie dann auf die schriftart, indem Sie den ursprünglichen Namen z.B. "NeoSansPro-Licht"
Hässlich, aber es funktioniert.
Font forge sah ein bisschen zu viel für mich also habe ich eine Methode erstellt, liest die Beschreibungen der Schriften in der fontsArray einer bestimmten Familie und gibt entsprechende schriftart.
War ich mit einer Google-font namens Arvo. Sie hatten die folgenden Dateien:
Diese Namen wurden Hinzugefügt, die in meinem app-info.plist, aber für einige Grund, meine app könnte nur noch Lesen bold, Bold und italic Schriftarten. Es konnte nicht gelesen werden, die in Normalschrift, wenn ich versuchte, es zu laden. Jedoch, nach der Ausgabe die Namen der Schriftarten, es kam heraus, dass Arvo-Regelmäßige erkannt wurde, wie Arvo in meiner app.