這是用於文本渲染引擎的測試套件。正確顯示文本並不容易,因此我們建立了該項目以幫助實施以使其正確。
$ 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 目前,測試套件支持六個Opentype實現:
使用--engine=FreeStack ,測試將在免費/Libre開源文本文本呈現堆棧上,其中包括Freetype,Harfbuzz,Fribidi和Raqm。這些庫由Linux,Android,Chromeos和許多其他系統使用。 - Freestack的測試報告。
使用--engine=CoreText ,測試是在Apple的Coretext上進行的。僅當您在MacOS X上運行測試套件時,此選項才能工作。 — CoreText的測試報告。
使用--engine=TehreerStack ,測試是在開源文本呈現堆棧上進行的,該堆棧由Freetype,Sheenbidi和Sheenfigure組成。 - Tehrestack的測試報告。
使用--engine=fontkit ,測試是在JavaScript字體引擎Fontkit上進行的。 - Fontkit的測試報告。
使用--engine=OpenType.js ,使用另一台JavaScript字體引擎Opentype.js運行測試。 - opentype.js的測試報告。
使用--engine=Allsorts ,測試是使用Allsorts,Rust實現的解析和塑造引擎進行的。 - Allsorts的測試報告。
測試其他實現是微不足道的;只需寫一個小型包裝工具即可。對於Go Font庫,請參閱此處。對於Rust字體庫,請參見此處。
測試案例是在測試容器目錄中定義的。它包含HTML片段,這些摘要描述了每個測試,並將渲染參數與預期結果定義。
對於每個測試用例, check.py腳本都會解析HTML摘要以提取渲染參數。然後,它運行一個子過程(根據測試的實現,用C ++,目標C,Rust或JavaScript編寫),該子過程以SVG格式將觀察到的渲染編寫為標準輸出。最後,腳本檢查預期渲染是否與觀察到的結果相匹配。當前,通過在SVG路徑上進行迭代,可以實現“匹配”,從而使1個字體設計單元的差異單位。
版權所有©2016-2024 Unicode,Inc。 Unicode和Unicode徽標是美國和其他國家的Unicode,Inc。的註冊商標。
需要CLA為該項目做出貢獻 - 請參閱contruting.md文件(或啟動拉動請求)以獲取更多信息。
該存儲庫的內容由Unicode使用條款管轄,並根據許可發布。