これは、テキストレンダリングエンジンのテストスイートです。テキストを正しく表示するのは簡単ではないので、このプロジェクトを設立して、実装がこれを正しくするのを支援しました。
$ 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 現在、テストスイートは6つのOpentype実装をサポートしています。
--engine=FreeStackを使用すると、テストはフリー/Libreのオープンソーステキストで実行されます。フリータイプ、Harfbuzz、Fribidi、およびRaqmを使用してスタックをレンダリングします。これらのライブラリは、Linux、Android、Chromeos、および他の多くのシステムで使用されます。 - FreeStackのテストレポート。
--engine=CoreTextでは、テストはAppleのCoreTextで実行されます。このオプションは、MacOS Xでテストスイートを実行した場合にのみ機能します。— CoreTextのテストレポート。
--engine=TehreerStackを使用すると、テストは、Freetype、Sheenbidi、およびSheenFigureで構成されるスタックのレンダリングスタックで実行されます。 - Tehreerstackのテストレポート。
--engine=fontkitを使用すると、テストはJavaScriptフォントエンジンであるfontkitで実行されます。 - fontkitのテストレポート。
--engine=OpenType.jsを使用すると、テストはOpentype.jsを使用して実行されます。 - opentype.jsのテストレポート。
--engine=Allsortsを使用すると、テストはAllSorts、錆びた解析および形成エンジンを使用して実行されます。 - Allsortsのテストレポート。
他の実装をテストするのは些細なことです。小さなラッパーツールを書くだけです。 GOフォントライブラリについては、こちらをご覧ください。 Rust Fontライブラリについては、こちらをご覧ください。
テストケースは、TestCasesディレクトリで定義されています。各テストを記述するHTMLスニペットが含まれており、レンダリングパラメーターと予想される結果を定義します。
各テストケースについて、 check.pyスクリプトはHTMLスニペットを解析して、レンダリングパラメーターを抽出します。次に、観測されたレンダリングをSVG形式で標準出力に書き込むサブプロセス(テスト済みの実装に応じて、C ++、客観的C、RUST、またはJavaScriptで記述されています)を実行します。最後に、スクリプトは、予想されるレンダリングが観測された結果と一致するかどうかを確認します。現在、「マッチング」はSVGパスを繰り返して実装され、最大1つのフォント設計単位の差が可能になります。
Copyright©2016-2024 Unicode、Inc。UnicodeとUnicodeロゴは、米国およびその他の国のUnicode、Inc。の登録商標です。
このプロジェクトに貢献するにはCLAが必要です。詳細については、Convinting.mdファイル(またはプルリクエストを開始)を参照してください。
このリポジトリの内容は、Unicode使用条件によって管理され、ライセンスの下でリリースされます。