Benutzerdefinierte installierte Schriftart wird in UILabel nicht korrekt angezeigt
Ich versuche, einen die Helvetica Neue Condensed schriftart, die ich aus dem Adobe Font Collection Pro Paket. Leider, so scheint es, zu zeichnen falsch, wenn ich es innerhalb von ein UILabel
.
Die Zeilenhöhe scheint korrekt berechnet werden (denke ich), aber wenn die schriftart angezeigt wird, ist ausgerichtet, um die Oberseite des Begrenzungsrahmens. Ich rief [myLabel sizeToFit]
und nur anhand der Breite, der zur Herstellung dieses screen capture:
Ich hatte das gleiche problem sowohl mit dem bold und regular-version der schriftart. Ich war in der Lage, ziehen Sie eine version von Helvetica Neue Bold von OSX und legte Sie auf mein Gerät und zeigt es in Ordnung (grüner hintergrund im Bild oben).
Was falsch sein könnte mit der entweder die schriftart-Datei, oder mein code dazu führen würde, dass es zu ziehen, auf diese Weise?
InformationsquelleAutor der Frage MikeQ | 2011-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe eine Lösung, umfasst patching-ttf-schriftart-Datei hier:
Hier ist die Lösung, die funktionierte für meine eigene Schrift, die hatte das gleiche Problem in UILabel, UIButton und so. Das problem mit der Schrift erwies sich die Tatsache, dass seine seilwinde Eigenschaft war zu klein im Vergleich zum Wert der system-Schriftarten. Seilwinde ist eine vertikale Leerraum oberhalb der Schrift-Zeichen. Befestigen Sie Ihr schriftart, die Sie downloaden müssen Apple Font Tools Suite Befehlszeilen-Dienstprogramme. Dann nehmen Sie Ihre schriftart und Folgendes tun:
Dadurch wird
Bold.hhea.xml
. Öffnen Sie mit einem text-editor und erhöhen Sie den Wert vonascender
Attribut. Sie müssen ein wenig Experimentieren, um herauszufinden, die genaue Wert, der am besten für Sie arbeitet. In meinem Fall habe ich es geändert von 750 bis 1200. Führen Sie das Dienstprogramm erneut mit der folgenden Befehlszeile zu verschmelzen, Ihre änderungen zurück auf die ttf-Datei:Dann verwenden Sie einfach die resultierende ttf-schriftart in Ihrem app.
InformationsquelleAutor der Antwort kolyuchiy
So ist dies eine modifizierte version von kolyuchiy ist Antwort.
Öffnete ich meine Schrift mit Glyphenund dann exportiert es, ohne irgendetwas zu verändern. Irgendwie magisch, die vertikale Ausrichtung Problem war Weg!
Was ist besser ist, dass die neue schriftart spielt schön mit Methoden wie
sizeWithFont:
so dass er nicht die erwähnten Probleme durch Joshua.Habe ich einen Blick in der HHEA-Tabelle mit dem Befehl kolyuchiy erwähnt, und bemerkt, dass Glyphen verändert nicht nur die
ascender
aber auchlineGap
undnumberOfHMetrics
für mich.Hier ist die raw-Daten, bevor:
und nach:
Also die moral von der Geschichte - nicht nur die Erhöhung der seilwinde, aber ändern andere zugehörige Werte.
Ich bin kein typographie-Experte, also kann ich nicht wirklich erklären, warum und wie. Wenn jemand eine bessere Erklärung, es würde sehr geschätzt werden! 🙂
InformationsquelleAutor der Antwort Joseph Lin
iOS 6 Ehrungen der Schrift lineGap-Eigenschaft, während iOS 7 ignoriert es. Also nur benutzerdefinierte Schriftarten mit einer Zeile Abstand von 0 " funktioniert auf beiden Betriebssystemen.
Die Lösung ist, den lineGap 0 und stellen Sie die seilwinde entsprechend größer. Pro die Antwort vor, eine Lösung ist der import und export von Glyphen. Beachten Sie jedoch, dass eine zukünftige version der Anwendung könnte dieses Problem beheben "Fehler".
Einer robusteren Lösung ist das Bearbeiten der schriftart selbst, pro diese post. Insbesondere
ftxdumperfuser -t hhea -A d YOUR_FONT.ttf
ascender
Eigenschaft, indem Sie den Wert derlineGap
Eigenschaft. Zum Beispiel, wenn dielineGap
ist 200 und dieascender
750, machen dieascender
950.lineGap
0.ftxdumperfuser -t hhea -A f YOUR_FONT.ttf
Sobald Sie dies tun, müssen Sie möglicherweise passen Sie Ihre Benutzeroberfläche entsprechend.
InformationsquelleAutor der Antwort phatmann
InformationsquelleAutor der Antwort nurxyz
Hatten wir das gleiche Problem mit einem unserer benutzerdefinierten Schriftarten. Wir haben auch "Feste" das problem durch Bearbeiten der schriftart seilwinde Eigenschaft. Allerdings fanden wir, dass dies andere Probleme verursacht und layout-Probleme. Beispielsweise dynamisch festlegen von Zellenhöhe basierend auf label Höhe würde die Luft zu sprengen, wenn Sie mithilfe unserer seilwinde bearbeitet schriftart.
Was wir am Ende tun war das ändern der UIButton contentEdgetInsets Eigenschaft.
Nicht sicher sind, welche Methode besser ist, aber wollte nur zu teilen ein anderer Weg, um das problem zu beheben.
InformationsquelleAutor der Antwort Joshua Dance
Dank dieser Antwort ich reparierte mein problem mit Glyphen, aber ein wenig anders.
Öffnete ich meine font mit Glyphen (funktioniert auch mit Glyphen mini) und fand diesen Abschnitt (diese von Glyphen mini, um dorthin zu gelangen drücken der Taste i in der rechten oberen Ecke):
Löschen Sie alle von dieser Ausrichtung Zonen (oder einige von Ihnen), und es kann dieses problem beheben.
Funktionierte perfekt für mich.
InformationsquelleAutor der Antwort DevilPinky
Für diejenigen unter OS X El Capitan und kommt zu diesem thread, Sie haben vielleicht bemerkt, dass das Apple-Font-Tool-Suite ist nicht mehr kompatibel (zumindest für jetzt).
Aber man kann immer noch führen die beschriebenen änderungen durch kolyuchiy und Joseph Lin mit kostenlosen font-editing-software FontForge.
Öffnen Sie den font mit FontForge, und wählen Sie Element in der oberen Menüleiste, dann gehen Sie zu Font Info > OS/2 - > Metriken. Es gibt Sie Bearbeiten möchten HHEad Linie Spalt-und HHead Aufstieg Offset-Werte.
Sobald Sie das getan haben, die notwendigen änderungen können Sie nur exportieren Sie die schriftart in der Datei > Erstellung von Schriftarten und wählen Sie die richtige schriftart-format
InformationsquelleAutor der Antwort Naiko
Haben Sie versucht,Core Text? Ich habe einige Erfolg rendering-benutzerdefinierte Schriftarten durch die Kern-Text, aber ich weiß nicht, ob es passen würde Ihre situation.
InformationsquelleAutor der Antwort RyanR
Wenn Ihr Probleme mit diese Befehl Linie Dienstprogramme, die dann versuchen fontcreator auf Fenster. und die schriftart ändern assender von seiner Einstellung-Menü.
InformationsquelleAutor der Antwort Gaurav
Ich hatte ein ähnliches Problem mit der legendären "FontAwesome" - Schrift in meinem Sprite-Kit-Spiel.
Einstellung der SKLabelNode ist SKLabelVerticalAlignmentMode Eigenschaft .Center arbeitete für mich.
myLabel.verticalAlignmentMode = SKLabelVerticalAlignmentMode.Center
Nur teilen wollte, im Falle jemand würde kämpfen mit dem gleichen problem.
InformationsquelleAutor der Antwort requig