ttf-parser 0.5 - uma nova biblioteca para trabalhar com fontes TrueType

analisador ttf é uma biblioteca para analisar fontes TrueType/OpenType.
A nova versão tem suporte total para fontes variáveis
(fontes variáveis) e API C, e como resultado decidi anunciá-lo na tradição.

Até recentemente, se houvesse necessidade de trabalhar com fontes TrueType, havia exatamente duas opções: FreeType e stb_truetype. O primeiro é uma combinação enorme, o segundo suporta um número bastante pequeno de funções.

O analisador ttf está em algum lugar no meio. Ele suporta todas as mesmas tabelas TrueType (o formato TrueType consiste em muitas tabelas binárias separadas) que o FreeType, mas não desenha os próprios glifos.

Ao mesmo tempo, o analisador ttf contém muitas outras diferenças significativas:

  1. ttf-parser é escrito em Rust sem usar inseguro. FreeType e stb_truetype são escritos em C.
  2. ttf-parser é a única implementação segura para memória. A leitura da memória aleatória não é possível. Vulnerabilidades são constantemente corrigidas no FreeType e stb_truetype, em princípio, não foi projetado para ler fontes arbitrárias.
  3. ttf-parser é a única implementação thread-safe. Todos os métodos de análise são constantes. A única exceção é definir coordenadas para fontes variáveis, mas esta função é reentrante. FreeType é basicamente de thread único. stb_truetype - reentrante (você pode usar cópias individuais em threads diferentes, mas não em um entre muitos).
  4. ttf-parser é a única implementação que não usa alocações de heap. Isso permite acelerar a análise e evitar problemas com OOM.
  5. Além disso, quase todas as operações aritméticas e conversões de tipos numéricos são verificadas (inclusive estaticamente).
  6. Na pior das hipóteses, a biblioteca pode lançar uma exceção. Neste caso, na API C, exceções serão capturadas e a função retornará um erro, mas não travará.

E apesar de todas as garantias de segurança, o analisador ttf também é a implementação mais rápida. Por exemplo, a análise de CFF2 é 3.5 vezes mais rápida que o FreeType. A análise de glyf, por sua vez, é 10% mais lenta do que em stb_truetype, mas isso se deve ao fato de que ele não suporta fontes variáveis, cuja implementação requer armazenamento adicional. Informação. Mais detalhes em README.

Fonte: linux.org.ru

Adicionar um comentário