Dies ist eine Testsuite für Text -Rendering -Motoren. Es ist nicht einfach, Text korrekt anzuzeigen. Daher haben wir dieses Projekt gegründet, um die Implementierung zu unterstützen, um dies richtig zu machen.
$ brew install cmake ninja npm rust
$ git clone --recursive https://github.com/unicode-org/text-rendering-tests.git
$ cd text-rendering-tests
$ for engine in CoreText FreeStack TehreerStack fontkit OpenType.js Allsorts ; do python3 check.py --engine= $engine --output=reports/ $engine .html ; done Derzeit unterstützt die Testsuite sechs OpenType -Implementierungen:
Mit --engine=FreeStack werden die Tests auf dem freien/libre-Open-Source-Text-Rendering-Stapel mit Freetyp, Harfbuzz, Fribidi und Raqm durchgeführt. Diese Bibliotheken werden von Linux, Android, Chromeos und vielen anderen Systemen verwendet. - Testbericht für Freestack.
Mit --engine=CoreText werden die Tests auf Apple's Coretext durchgeführt. Diese Option funktioniert nur, wenn Sie die Testsuite auf MacOS X ausführen. - Testbericht für Coretext.
Mit --engine=TehreerStack werden die Tests auf einem Open-Source-Text-Rendering-Stack durchgeführt, der aus Freetyp, Sheenbidi und Sheenfigure besteht. - Testbericht für TehreStack.
Mit --engine=fontkit werden die Tests auf Fontkit, einer JavaScript -Schriftmotor, durchgeführt. - Testbericht für Fontkit.
Mit --engine=OpenType.js werden die Tests unter Verwendung von OpenType.js, einer anderen JavaScript -Schriftmotor, durchgeführt. - Testbericht für Opentype.js.
Mit --engine=Allsorts werden die Tests mit Allsorts durchgeführt, eine in Rost implementierte Parsen- und Formungsmotor. - Testbericht für Allsorts.
Es ist trivial, andere Implementierungen zu testen. Schreiben Sie einfach ein kleines Wrapper -Werkzeug. Für die Go -Schriftbibliothek finden Sie hier. Für die Rust -Schriftbibliothek finden Sie hier.
Die Testfälle sind im Testcases -Verzeichnis definiert. Es enthält HTML -Snippets, die jeden Test beschreiben und die Rendering -Parameter zusammen mit dem erwarteten Ergebnis definieren.
Für jeden Testfall analysiert das check.py . Anschließend wird ein Unterprozess ausgeführt (geschrieben in C ++, objektiv C, Rost oder JavaScript, abhängig von der getesteten Implementierung), das das beobachtete Rendering im SVG-Format in die Standardausgabe schreibt. Schließlich prüft das Skript, ob das erwartete Rendering dem beobachteten Ergebnis übereinstimmt. Derzeit wird „Matching“ durch Iterieren über SVG -Pfade implementiert, sodass 1 Schriftart der Differenzierung maximal 1 Schriftart entworfen werden kann.
Copyright © 2016-2024 Unicode, Inc. Unicode und das Unicode-Logo sind eingetragene Marken von Unicode, Inc. in den USA und anderen Ländern.
Eine CLA muss zu diesem Projekt beitragen. Weitere Informationen finden Sie in der Datei mit beitragen.md (oder starten Sie eine Pull -Anfrage).
Der Inhalt dieses Repositorys unterliegt den Nutzungsbedingungen der Unicode und unter Lizenz.