Este é um conjunto de testes para motores de renderização de texto. Não é fácil exibir o texto corretamente, então fundamos este projeto para ajudar as implementações a acertar isso.
$ 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 Atualmente, o conjunto de testes suporta seis implementações do OpenType:
Com --engine=FreeStack , os testes são executados na pilha de renderização de texto de código aberto gratuito/libre com Freetype, Harfbuzz, Fribidi e Raqm. Essas bibliotecas são usadas pelo Linux, Android, Chromeos e muitos outros sistemas. - Relatório de teste para Freestack.
Com --engine=CoreText , os testes são executados no Coretext da Apple. Esta opção funcionará apenas se você executar o conjunto de testes no MacOS X. - Relatório de teste para o Coretext.
Com --engine=TehreerStack , os testes são executados em uma pilha de renderização de texto de código aberto, composto por Freetype, Sheenbidi e Sheenfigure. - Relatório de teste para Tehreerstack.
Com --engine=fontkit , os testes são executados no Fontkit, um mecanismo de fonte JavaScript. - Relatório de teste para Fontkit.
Com --engine=OpenType.js , os testes são executados usando o OpenType.js, outro mecanismo de fonte JavaScript. - Relatório de teste para opentype.js.
Com --engine=Allsorts , os testes são executados usando o AllSorts, um mecanismo de análise e modelagem implementado em ferrugem. - Relatório de teste para AllSorts.
É trivial testar outras implementações; Basta escrever uma pequena ferramenta de wrapper. Para a biblioteca Go Font, veja aqui. Para a biblioteca da fonte de ferrugem, veja aqui.
Os casos de teste são definidos no diretório TestCases. Ele contém trechos HTML que descrevem cada teste e definem os parâmetros de renderização juntamente com o resultado esperado.
Para cada caso de teste, o script check.py analisa o trecho html para extrair os parâmetros de renderização. Em seguida, ele executa um subprocesso (escrito em C ++, objetivo C, Rust ou JavaScript, dependendo da implementação testada) que grava a renderização observada no formato SVG na saída padrão. Finalmente, o script verifica se a renderização esperada corresponde ao resultado observado. Atualmente, a “correspondência” é implementada iterando sobre os caminhos SVG, permitindo o máximo de 1 unidade de design da fonte.
Copyright © 2016-2024 Unicode, Inc. Unicode e o logotipo Unicode são marcas registradas da Unicode, Inc. nos Estados Unidos e em outros países.
É necessário um CLA para contribuir com este projeto - consulte o arquivo contribuinte.md (ou inicie uma solicitação de tração) para obter mais informações.
O conteúdo deste repositório é regido pelos Termos de Uso Unicode e é liberado sob licença.