Saltar al contenido
PS5PCEM
ParcialFirmware y HLE

Renderizado de fuentes

libSceFont rasteriza caras TrueType y OpenType aportadas por el título con FreeType. Las peticiones de fuente del sistema usan el sustituto Noto Sans incluido para latino, griego y cirílico.

Notas del repositorio hasta el 10 de octubre de 2026

Caras, escala y ciclo de vida

Un título abre una biblioteca de fuentes, crea una cara a partir de bytes que él aporta o de una petición de fuente del sistema, y después pide métricas de glifos y cobertura. Cada cara conserva su propia escala, escala de render, inclinación y ciclo de vida. Cerrar la biblioteca libera sus caras, y el cierre del proceso limpia el estado de las fuentes. Los bytes de la fuente se copian al abrir, de modo que un desmapeo posterior del búfer de origen del título no puede invalidar el rasterizador.

Noto Sans es un sustituto, no una copia idéntica byte a byte de cada fuente del firmware. Cubre latino, griego y cirílico. Una cara que aporta el título puede contener otros glifos, incluido CJK, y esos contornos se usan. La petición de fuente del sistema en sí no sustituye una cara CJK.

Glifos, kerning y atlas

La ruta de glifos devuelve métricas reales, disposición horizontal, kerning básico de pares, cobertura con antialiasing, recorte y descriptores del resultado de render. Una caché de glifos acotada evita rasterizar otra vez el mismo carácter, y una caché de pares distinta reutiliza el kerning entre tamaños. Las escrituras comprueban los permisos de CPU e invalidan las vigilancias de página de la GPU antes de tocar un atlas de textura.

Un escalar Unicode válido que la cara no contiene usa el contorno .notdef de la cara, incluidos los códigos de control que aparecen mientras un título construye un rango completo de atlas. Esa ruta de glifo ausente es lo que permite a Jurassic Park Classic Games Collection terminar de construir su atlas de fuentes. Los escalares Unicode no válidos y los identificadores de glifo explícitos fuera de rango siguen devolviendo un error. La cobertura se escribe en píxeles de uno a cuatro bytes.

Qué maquetación de texto queda en manos del título

Muchos títulos nunca llaman a libSceFont. Dibujan el texto con la fuente de su propio motor, y esta implementación no cambia esos píxeles. La ruta HLE es para los títulos que piden al firmware que rasterice.

El shaping del texto, la disposición bidireccional, el peso sintético, la sustitución de fuente del sistema para CJK, la selección de caras de una colección y las API de nivel superior FontWriting y String no están implementados. Las comprobaciones enfocadas viven detrás de zig build test-hle con el filtro de fuentes.

Qué está implementado

  • Rasterización con FreeType de caras TrueType y OpenType aportadas por el título.
  • Sustituto Noto Sans para peticiones de fuente del sistema en latino, griego y cirílico.
  • Métricas, disposición horizontal, kerning de pares, inclinación, recorte y una caché de glifos.
  • Alternativa .notdef para escalares Unicode ausentes, que desbloquea el atlas de Jurassic Park.

Qué falta todavía

  • El shaping, la disposición bidireccional y las API FontWriting están ausentes.
  • Las peticiones de fuente del sistema no sustituyen una cara CJK.
  • Los títulos que dibujan el texto por completo en su propio motor no usan esta ruta.

Mecanismos relacionados

Qué describen estas páginas

El texto sigue las notas de arquitectura y los informes de octubre de 2026 del repositorio PS5PCEM. Un test concreto que pasa no es una tasa de fotogramas nueva ni una partida terminada nueva.

Todas las tecnologías