Este es un conjunto de pruebas para motores de representación de texto. No es fácil mostrar correctamente el texto, por lo que fundamos este proyecto para ayudar a las implementaciones a hacerlo bien.
$ 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 Actualmente, el conjunto de pruebas admite seis implementaciones de OpenType:
Con --engine=FreeStack , las pruebas se ejecutan en la pila de representación de texto de código abierto gratuito/libre con Tipo de Tipo, Harfbuzz, Fribidi y RAQM. Estas bibliotecas son utilizadas por Linux, Android, Chromeos y muchos otros sistemas. - Informe de prueba para Freestack.
Con --engine=CoreText , las pruebas se ejecutan en Coreteext de Apple. Esta opción funcionará solo si ejecuta la suite de prueba en MacOS X. - Informe de prueba para CorEtext.
Con --engine=TehreerStack , las pruebas se ejecutan en una pila de representación de texto de código abierto que consiste en Tipo de FreeType, Sheenbidi y Sheenfigure. - Informe de prueba para Tehererstack.
Con --engine=fontkit , las pruebas se ejecutan en Fontkit, un motor de fuentes JavaScript. - Informe de prueba para FontKit.
Con --engine=OpenType.js , las pruebas se ejecutan usando Opentype.js, otro motor de fuentes JavaScript. - Informe de prueba para OpenType.js.
Con --engine=Allsorts , las pruebas se ejecutan utilizando AllSorts, un motor de análisis y conformación implementado en Rust. - Informe de prueba para AllSorts.
Es trivial probar otras implementaciones; Simplemente escriba una herramienta de envoltura pequeña. Para la biblioteca de fuentes Go, vea aquí. Para la biblioteca de fuentes de óxido, vea aquí.
Los casos de prueba se definen en el directorio TestCass. Contiene fragmentos HTML que describen cada prueba y definen los parámetros de representación junto con el resultado esperado.
Para cada caso de prueba, el script check.py analiza el fragmento HTML para extraer los parámetros de representación. Luego, ejecuta un subproceso (escrito en C ++, Objetivo C, Rust o JavaScript dependiendo de la implementación probada) que escribe la representación observada en formato SVG a la salida estándar. Finalmente, el script verifica si la representación esperada coincide con el resultado observado. Actualmente, la "coincidencia" se implementa iterando sobre las rutas SVG, lo que permite una unidad de diferencia de diseño de fuente máxima.
Copyright © 2016-2024 Unicode, Inc. Unicode y el logotipo de Unicode son marcas registradas de Unicode, Inc. en los Estados Unidos y otros países.
Se requiere un CLA para contribuir a este proyecto; consulte el archivo Contributing.MD (o inicie una solicitud de extracción) para obtener más información.
El contenido de este repositorio se rige por los Términos de uso de Unicode y se liberan bajo licencia.