Перейти к содержимому
PS5PCEM
ЧастичноПрошивка и HLE

Отрисовка шрифтов

libSceFont растеризует поставленные игрой гарнитуры TrueType и OpenType через FreeType. Запросы системного шрифта используют входящую в комплект замену Noto Sans для латиницы, греческого и кириллицы.

Заметки репозитория по 10 октября 2026 г.

Гарнитуры, масштаб и время жизни

Игра открывает библиотеку шрифтов, создаёт гарнитуру из байтов, которые сама даёт, или из запроса системного шрифта, а затем запрашивает метрики глифов и покрытие. У каждой гарнитуры свои масштаб, масштаб отрисовки, наклон и время жизни. Закрытие библиотеки освобождает её гарнитуры, а завершение процесса очищает состояние шрифтов. Байты шрифта копируются при открытии, поэтому позднее снятие отображения исходного буфера игры не может сделать растеризатор недействительным.

Noto Sans — замена, а не побайтовая копия каждого шрифта прошивки. Он покрывает латиницу, греческий и кириллицу. Гарнитура, которую даёт игра, может содержать другие глифы, включая CJK, и эти контуры используются. Сам запрос системного шрифта не подставляет гарнитуру CJK.

Глифы, кернинг и атласы

Путь глифа возвращает настоящие метрики, горизонтальную раскладку, базовый парный кернинг, сглаженное покрытие, отсечение и дескрипторы результата отрисовки. Ограниченный кэш глифов не растеризует тот же символ снова, а отдельный кэш пар повторно использует кернинг между размерами. Записи проверяют права CPU и инвалидируют наблюдения страниц GPU, прежде чем коснуться атласа текстур.

Допустимый скаляр Unicode, которого нет в гарнитуре, использует контур .notdef этой гарнитуры, включая управляющие коды, встреченные, пока игра строит полный диапазон атласа. Именно этот путь отсутствующего глифа позволяет Jurassic Park Classic Games Collection достроить атлас шрифта. Недопустимые скаляры Unicode и явные идентификаторы глифов вне диапазона по-прежнему возвращают ошибку. Покрытие пишется в пиксели от одного до четырёх байт.

Какую раскладку текста игра делает сама

Многие игры никогда не вызывают libSceFont. Они рисуют текст собственным шрифтом движка, и эта реализация те пиксели не меняет. Путь HLE — для игр, которые просят прошивку растеризовать.

Формирование текста, двунаправленная раскладка, синтетическая насыщенность, подстановка системного шрифта CJK, выбор гарнитуры из коллекции и API более высокого уровня FontWriting и String не реализованы. Точечные проверки запускаются через zig build test-hle с фильтром шрифта.

Что реализовано

  • Растеризация FreeType гарнитур TrueType и OpenType, поставленных игрой.
  • Запасной Noto Sans для запросов системного шрифта в латинице, греческом и кириллице.
  • Метрики, горизонтальная раскладка, парный кернинг, наклон, отсечение и кэш глифов.
  • Запасной .notdef для отсутствующих скаляров Unicode, что снимает блокировку атласа Jurassic Park.

Чего ещё нет

  • Формирование текста, двунаправленная раскладка и API FontWriting отсутствуют.
  • Запросы системного шрифта не подставляют гарнитуру CJK.
  • Игры, которые рисуют текст целиком своим движком, этот путь не используют.

Связанные механизмы

Чему посвящены эти страницы

Текст следует архитектурным заметкам и отчётам октября 2026 года в репозитории PS5PCEM. Пройденный точечный тест — это не новая частота кадров и не новое прохождение.

Все технологии