Ir para o conteúdo
PS5PCEM
ParcialFirmware e HLE

Renderização de fontes

A libSceFont rasteriza faces TrueType e OpenType fornecidas pelo título com FreeType. Pedidos de fonte do sistema usam o substituto Noto Sans incluído para latim, grego e cirílico.

Notas do repositório até 10 de outubro de 2026

Faces, escala e tempo de vida

Um título abre uma biblioteca de fontes, cria uma face a partir de bytes que ele fornece ou de um pedido de fonte do sistema, e então pede métricas e cobertura de glifos. Cada face guarda a própria escala, a escala de renderização, a inclinação e o tempo de vida. Fechar a biblioteca libera as faces dela, e o encerramento do processo limpa o estado das fontes. Os bytes da fonte são copiados na abertura, então um desmapeamento posterior do buffer de origem do título não pode invalidar o rasterizador.

Noto Sans é um substituto, não uma cópia idêntica byte a byte de toda fonte de firmware. Cobre latim, grego e cirílico. Uma face que o título fornece pode conter outros glifos, inclusive CJK, e esses contornos são usados. O próprio pedido de fonte do sistema não substitui uma face CJK.

Glifos, kerning e atlas

O caminho de glifos devolve métricas reais, layout horizontal, kerning básico de pares, cobertura com antisserrilhamento, recorte e descritores de resultado de renderização. Um cache limitado de glifos evita rasterizar o mesmo caractere de novo, e um cache separado de pares reutiliza o kerning entre tamanhos. As escritas verificam permissões de CPU e invalidam as vigias de página da GPU antes de tocar um atlas de textura.

Um escalar Unicode válido que a face não contém usa o contorno .notdef da face, inclusive códigos de controle encontrados enquanto um título monta um intervalo completo de atlas. Esse caminho de glifo ausente é o que permite a Jurassic Park Classic Games Collection terminar de montar o atlas de fontes. Escalares Unicode inválidos e identificadores explícitos de glifo fora do intervalo ainda devolvem um erro. A cobertura é escrita em pixels de um a quatro bytes.

O que o layout de texto deixa com o título

Muitos títulos nunca chamam a libSceFont. Eles desenham texto com a fonte do próprio motor, e esta implementação não muda esses pixels. O caminho HLE é para títulos que pedem ao firmware para rasterizar.

A modelagem de texto, o layout bidirecional, o peso sintético, a substituição de fonte de sistema CJK, a seleção de face em coleção e as APIs de mais alto nível FontWriting e String não estão implementados. As verificações focadas ficam atrás de zig build test-hle com o filtro de fontes.

O que está implementado

  • Rasterização com FreeType de faces TrueType e OpenType fornecidas pelo título.
  • Substituto Noto Sans para pedidos de fonte do sistema em latim, grego e cirílico.
  • Métricas, layout horizontal, kerning de pares, inclinação, recorte e um cache de glifos.
  • Reserva .notdef para escalares Unicode ausentes, o que desbloqueia o atlas de Jurassic Park.

O que ainda falta

  • A modelagem de texto, o layout bidirecional e as APIs FontWriting estão ausentes.
  • Pedidos de fonte do sistema não substituem uma face CJK.
  • Títulos que desenham texto inteiramente no próprio motor não usam este caminho.

Mecanismos relacionados

O que estas páginas descrevem

O texto segue as notas de arquitetura e os relatórios de outubro de 2026 no repositório do PS5PCEM. Um teste pontual que passa não é uma nova taxa de quadros nem uma nova conclusão de jogo.

Todas as tecnologias