Dieses Verzeichnis enthält Tools für das OpenType-Kontext-Halbbreite-Abstandsfunktion für die japanische/chinesische/koreanische Typografie.
Diese Funktion ermöglicht die in JLREQ 3.1.2 Positionierung von Interpunktionsmarken (Kommas, Perioden und Klammern) beschriebene Typografie . Im Folgenden finden Sie eine Zahl von JLREQ:
Eine frühzeitige Diskussion im Adobe CJK -Typ -Blog -Artikel und Teil II kann dazu beitragen, die Funktion besser zu verstehen.
Hier finden Sie Beispieltext. Diese Beispielseite verwendet mit diesem Tool gebildete Schriftarten.
OpenType definiert 4 Feature -Tags für Schriftarten, um diese Funktion zu unterstützen:
chws " und das " vchw " -Features -Tag als vertikaler Fluss -Gegenstück.halt " und das " vhal " -Features -Tag als Gegenstück vertikaler Fluss.Alle 4 Funktionen sind gewünscht, da jede Funktion in unterschiedlichem Kontext angewendet wird.
Dieses Paket fügt diese Funktionen zu allen OpenType-/TrueType -Schriftarten hinzu, wenn sie fehlen, indem die Funktionstabellen aus Daten wie Unicode -Codepunkten und Glyph -Umrissen berechnet werden.
Sie können dieses Tool mit PIP oder PIPX installieren.
pipx install east-asian-spacingpip install east-asian-spacingBitte beachten Sie, dass die Abhängigkeiten, wenn Sie mit PIP in der globalen Umgebung installieren, Konflikte mit anderen Paketen verursachen können. Wenn alles, was Sie brauchen, das Befehlszeilen -Tool ist, kann PipX es global installieren und gleichzeitig in einer virtuellen Umgebung isolieren.
Bitte sehen Sie sich auch den Abschnitt "Installationspaket" an, wenn Sie dieses Paket aus Ihrem Python -Programm oder im Abschnitt "Klon und Installation" verwenden möchten, wenn Sie Schriftarten oder den Code genauer diagnostizieren möchten.
Das folgende Beispiel fügt die Funktion in input-font-file hinzu und speichert sie im build -Verzeichnis.
east-asian-spacing -o build input-font-fileDer Testabschnitt enthält Ressourcen für die Überprüfung der Unterschiede und die von Ihnen erstellten Testen.
Für andere Optionen und Verwendungen kann die Option --help die vollständige Liste der Optionen angezeigt.
Der Algorithmus gilt für alle CJK -Schriftarten. Die folgenden Schriftarten werden bei jeder Version getestet:
CJK -Schriftarten unter Fonts.google.com werden im Paket CHWS_TOOL getestet. Während der Entwicklung wurden auch mehrere andere Schriftarten getestet.
Beim Hinzufügen der Funktionen zu Ihren Schriftarten ist der Test HTML ein praktisches Werkzeug, um die Ergebnisse zu überprüfen. Wenn Sie auf Probleme mit Ihren Schriftarten stoßen, melden Sie sich bitte mit Problemen.
Bitte sehen Sie auch die erweiterten Themen unten, wenn Sie das Standardverhalten für Ihre Schriftarten anpassen möchten.
Wenn die Eingabe -Schriftart eine TrueType Collection (TTC) ist, fügt dieses Tool standardmäßig alle Schriftarten in der TTC hinzu.
Wenn Sie die Funktion nur einigen Schriftarten im TTC hinzufügen möchten, können Sie eine von Kommas getrennte Liste von Schriftindizes angeben. Das folgende Beispiel fügt die Funktion dem Schriftart Index 0 und 1 hinzu, jedoch nicht zu anderen Schriftarten im TTC.
east-asian-spacing --index=0,1 input-font-file.ttcSie können dieses Paket mit Ihren bevorzugten Paket -Management -Tools wie Poesie, Pipenv oder PIP installieren.
pip install east-asian-spacingpipenv install east-asian-spacingpoetry add east-asian-spacingBitte sehen Sie sich auch den Abschnitt Klon und installieren Sie, wenn Sie Schriftarten oder den Code genauer diagnostizieren möchten.
Das folgende Beispiel erstellt eine Schriftart mit den Funktionen im Verzeichnis " build ", wenn die Funktionen anwendbar sind.
import east_asian_spacing
async def main_async ():
builder = east_asian_spacing . Builder ( "fonts/input.otf" )
output_path = await builder . build_and_save ( "build" )
if output_path :
print ( f"Saved to { output_path } " )
else :
print ( "Skipped" )Eine Test -HTML -Seite ist verfügbar, um das Verhalten von Schriftarten auf Browsern zu überprüfen.
Es kann Schriftarten testen, die Sie lokal gebaut haben.
<script> -Blocks in die Liste " fonts " hinzu.Hinweis, wenn Sie eine TTC (TrueType Collection) testen möchten, Ihr Browser kann jedoch nur die erste Schrift im TTC laden. Der folgende Befehl extrahiert alle OpenType -Schriftarten (.OTF oder .ttf) aus einer OpenType -Sammlungs -Schriftart (.ttc oder .OTC).
east-asian-spacing ttc build/NotoSansCJK-Regular.ttc Der dump -Unterkommando kann verschiedene Arten von Text-Dump-Dateien erstellen.
Die einfachste Verwendung besteht darin, eine Liste von Tabellen anzuzeigen. Dies ähnelt der Option " -l " von TTX, mit Ausnahme von TrueType -Sammlungen (TTC) kann dieses Tool Tabellen aller Schriftarten im TTC angezeigt werden, und mit denen die Tabellen mit welchen Schriftarten geteilt werden.
east-asian-spacing dump build/NotoSansCJK-Regular.ttc Die Option " -o " erstellt Tabellenlistendateien im angegebenen Verzeichnis:
east-asian-spacing dump -o build/dump build/ * .ttc Die Option " --ttx " erstellt zusätzlich zu den Tabellenlistendateien TTX -Text -Dumps aller Tabellen. Dies ähnelt der Option " -s " von TTX, mit der Ausnahme, dass alle Tabellen in TrueType -Sammlungen (TTC) abgelassen werden können.
east-asian-spacing dump -o build/dump --ttx build/ * .ttc Der dump Sub-Command kann auch Dump-Dateien von zwei Schriftartdateien erstellen und vergleichen. Dies hilft, Unterschiede in zwei Schriftarten zu visualisieren, insbesondere in den Schriftdateien, die Sie aus den ursprünglichen Schriftartdateien erstellt haben.
east-asian-spacing dump -o build/diff --diff source_fonts_dir build/NotoSansCJK.ttc Das obige Beispiel berechnet die Unterschiede zwischen source_fonts_dir/NotoSansCJK.ttc und build/NotoSansCJK.ttc indem Sie folgende 3 Sätze von Dateien erstellen:
build/NotoSansCJK.ttc im Verzeichnis build/diff/dump .source_fonts_dir/NotoSansCJK.ttc im Verzeichnis build/diff/src .build/diff -Verzeichnis.HINWEIS: Die Option "
--diff" ist effizienter als all diese, insbesondere für große Schriftarten, da sie TTX von Tabellen erzeugt, wenn sie binärer gleich sind.
Die Option -o ist optional. Wenn es weggelassen wird, gibt der Unterkommando den Diff von stdout aus.
east-asian-spacing dump --diff source_fonts_dir build/NotoSansCJK.ttc | lessUm Diff -Dateien für alle von Ihnen erstellten Schriftarten zu erstellen, können Sie die Ausgabe wie unten leiten:
east-asian-spacing -p * .otf | east-asian-spacing dump -o build/diff - Die Option " -p " druckt die Eingangs- und Ausgabe-Schriftart Pfade zu stdout im Registerkarten-Wert-Werteformat. Der dump -Unterkommand mit dem Argument " - " liest diese Liste von stdin und erstellt ihren Text -Dump- und Diff -Dateien im build/diff -Verzeichnis. Die Option " --diff " ist in diesem Fall nicht erforderlich, da die Quellschriftpfade aus dem Rohr bereitgestellt werden.
Sobald Sie die oben erstellten Diff -Dateien überprüft oder von Ihnen erstellte Schriftarten getestet haben, können Sie die Diff -Dateien in das references kopieren. Wenn Sie sie dann erneut erstellen möchten, z. B. wenn die Schriftarten aktualisiert werden oder wenn die Build -Umgebung geändert wird, können Sie die Diff -Dateien mit den Referenzdateien vergleichen, um zu wissen, wie sich neue Schriftarten von früheren Builds unterscheiden.
Mit der Option " -r " erstellt der dump Sub-Command Diff-Dateien zwischen zwei Schriftartdateien und vergleichen die Diff-Dateien mit einmal überprüften Diff-Dateien im references .
Die typische Verwendung dieser Option ist wie unten:
east-asian-spacing -p -g=build/glyphs * .otf |
east-asian-spacing dump -o=build/diff -r=references - Bitte beachten Sie den Diff -Abschnitt für die Option " -p " und die Rohrleitungen.
Die build*.sh -Skripte enthalten diese Option.
Die Formtestformen testen Strings und prüfen, ob der Kontextabstand angewendet wird oder nicht.
Die Option --test legt die Ebene des Formtests fest.
east-asian-spacing --test 2 -v -o build input-font-fileDie Stufe 0 deaktiviert die Formtests. Der Level 1 führt einen Rauchtest mit einem kleinen Satz von Proben aus. Die Stufe 2 führt die Formtests mit einem großen Satz von Testketten aus. Der Standardwert ist 1.
Der Algorithmus ist eine agnostische Sprache und ist für CJK -Schriftarten anwendbar.
Dieses Paket ermittelt die Glyphenpaare, um die Abteilung anhand einer Reihe von Unicode -Codepunkten anzupassen, die in der Config definiert sind.
Dann überprüft es für jedes Paar, ob die Bereiche anwendbar sind, indem Glyphenumrechnungen und Berechnung von Tintengrenzkästen mit Glyphen untersucht werden. Wenn beispielsweise Glyphen sehr dick sind, haben Glyphen möglicherweise nicht genügend Innenabstände, und das Auftragen der Abschnitte kann dazu führen, dass Glyphen kollidieren. Dieses Paket erkennt solche Fälle automatisch und vermeiden Sie die Anwendung von Abschnitten auf solche Paare.
Dieses automatische Verhalten kann deaktiviert werden, indem die folgenden Sprachen angegeben oder Config.use_ink_bounds False .
Es gibt sprachspezifische Konventionen dafür, wo Interpunktionszeichen in den Glyphenräumen platziert werden. Zum Beispiel sollte U+3002 ideografischer Vollstopp an der linken Ecke des Glyphenraums auf Japanisch platziert werden, während es in traditionellen Chinesen in die Mitte platziert werden sollte.
Standardmäßig bestimmt dieses Paket solche Unterschiede zu Glyph -Umrissen, wie im obigen Algorithmus -Abschnitt beschrieben. Sie können jedoch das OpenType -Sprachsystem -Tag angeben, damit dieses Paket der Sprachkonvention folgt, anstatt Glyph -Umrisse zu verwenden. Das folgende Beispiel deaktiviert die automatische Bestimmung durch Glyph -Umrisse und gibt an, dass die Schriftart eine japanische Schriftart ist.
east-asian-spacing --language=JAN input-font-fileFür TrueType Collections (TTC) gilt die Sprachoption standardmäßig für alle Schriftarten in der TTC. Wenn Sie in der TTC verschiedene Sprachen für jede Schriftart angeben möchten, akzeptiert sie eine von Kommas getrennte Liste. Das folgende Beispiel gibt Koreanisch für den Schriftartindex 1 an, vereinfacht Chinesisch für den Schriftartindex 2 und automatisch für alle anderen Schriftarten.
east-asian-spacing --language=,KOR,ZHS input-font-file.ttc Sie können diese beiden Optionen kombinieren. Das folgende Beispiel gilt JAN auf den Index 2 und ZHS auf den Index 3. Andere Schriftarten in der TTC werden nicht geändert.
east-asian-spacing --index=2,3 --language=JAN,ZHS input-font-file.ttcMöglicherweise möchten Sie anpassen, welche Charakterpaare Bereiche anpassen sollten, in Fällen, in denen Ihre Schriftarten möglicherweise keine Bereiche für einige Zeichen erwartet haben. Derzeit ist dies nur aus Python -Programmen möglich.
Ein einfaches Beispiel finden Sie in der Funktion test_config in tests/config_test.py .
Das Projekt CHWS_TOOL ist ein tatsächliches Beispiel für das Anpassen dieses Pakets.
Dieses Paket verwendet die Harbbuzz -Formungsmotor mithilfe einer Cython -Bindungen Uharfbuzz.
Wenn Sie einen bestimmten Build des Harfbuzz verwenden möchten, kann dieses Tool stattdessen das externe HB-Form-Befehlszeilen-Tool aufrufen, indem die SHAPER Umgebungsvariable festgelegt wird.
export SHAPER=hb-shapeSo installieren Sie HB-Form für Linux:
sudo apt get libharfbuzz-binSo installieren Sie HB-Form für MAC mit Homebrew:
brew install harfbuzzAnweisungen für andere Plattformen sind möglicherweise unter command --not-found.com verfügbar.
Wenn Sie möglicherweise Schriftarten oder den Code diagnostizieren müssen, wird empfohlen, mithilfe von Poesie zu klonen und zu installieren:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
poetry install
poetry shellDiese Methode hat folgende Vorteile:
-e " -Option oder setuptools "Entwicklungsmodus").Sie können das geklonte Verzeichnis auch mit PIP installieren, wenn Sie es vorziehen:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
pip install .Dieses Repository enthält Unit -Tests mit PyTest. Die Unit -Tests decken die grundlegenden Funktionen einschließlich Formtests, die Feature zu einer Testschrift und den Vergleich mit Referenzen ab.
Wenn Sie den Abschnitt Klon und Installation befolgt haben, sind bereits Werkzeuge für die Einheitstests installiert. Bevor Sie sie zum ersten Mal ausführen, müssen Sie Schriftarten zum Testen herunterladen:
./tests/download_fonts.pySie können dann die Tests durchführen von:
pytestOder führen Sie sie mit Tox mit mehreren Versionen von Python aus:
tox Das scripts -Verzeichnis verfügt über einige kleine Shell -Skripte.
build*.sh -Skripte sind nützlich, um Schriftarten zu erstellen, Differhaben aus Quellschriften zu berechnen und die Diff -Dateien mit Referenzen zu vergleichen. Die folgenden Anhänger sind beispielsweise Verwendungen.
./scripts/build.sh input-font-file.otf -v
./scripts/build-noto-cjk.sh ~ /fonts/noto-cjk -v