Ich möchte wissen, ob es eine Möglichkeit gibt, Kerning-Paare von Schriftarten mit Android API zu lesen.
Es gibt keine öffentliche API zum Lesen von Kerning-Paaren aus einer TTF-Datei. Allerdings zog ich den entsprechenden Code aus Apache FOP und Sie können die Kerning-Paare mit this library lesen.
Beispiel Nutzung:
TTFFile file = TTFFile.open(getAssets().open("fonts/font.ttf"));
Map<Integer, Map<Integer, Integer>> kerning = file.getKerning();
Sie können auch andere Metadaten abrufen. Beispiel:
TTFFile ttfFile = TTFFile.open(new File("/system/fonts/Roboto-Regular.ttf"));
String name = ttfFile.getFullName(); // "Roboto Regular"
String family = ttfFile.getSubFamilyName(); // "Regular"
int fontWeight = ttfFile.getWeightClass(); // 400
String copyright = ttfFile.getCopyrightNotice(); // "Font data copyright Google 2014"
Ich möchte für den Text ermöglichen Kerning ich die Anzeige bin.
See:
How to adjust text kerning in Android TextView?
setLetterSpacing(float)
[Diese ältere Frage] (http://stackoverflow.com/q/1640659/2564301) (aber mit Antworten so aktuell wie letztes Jahr) schlagen vor, dass die Kern-Tabellen nicht in Java verfügbar sind. Ist das "manuelle" Parsen der Rohdaten eine praktikable Option? (Beachten Sie, dass es mehrere verschiedene Tabellenformate gibt, alle gleichermaßen grauenhaft ...) – usr2564301
danke, Jongware. Es macht mir nichts aus, * .ttf-Dateien zu analysieren, vorausgesetzt, es gibt einige Informationen darüber, wo nach Kerning-Paaren gesucht werden soll (ich habe normalerweise ein wenig Angst vor schrecklichen Formaten). –
Das wäre in den [OpenType-Spezifikationen] (https://www.microsoft.com/typography/otspec/default.htm), um genau zu sein [Die Kerning-Tabelle] (https://www.microsoft.com/) Typografie/otspec/kern.htm). Bestimmt nicht für schwache Nerven; und wenn du * wirklich * unglücklich bist, ist die Schriftart, die du benutzt hast, ein Type 1 Type und du müsstest die 'GPOS' Untertabelle parsen, was aber immer noch schwieriger ist ... (Dies könnte der Grund sein, warum Programmierer von Canvas ''drawText' stört einfach nicht ...) – usr2564301