Как делать шрифты для TextMeshPro

TextMeshPro уже давно часть Unity и в последних версиях заменил основной компонент Text, теперь всё старое хранится в пункте меню Legacy. Не буду описывать все преимущества перед старым текстовым компонентом, это примерно как сравнивать Блокнот и Word.

Шрифт который используется по умолчанию поддерживает все основные символы, но он обычный/скучный/дефолтный, примерно как китовый объектив у фотоаппарата 😅 Для добавления в свою игру нового красивого/необычного/индивидуального шрифта, надо проделать несколько действий.

Итак, что необходимо подготовить:

  1. Сам шрифт TTF (OTF), не забывайте про лицензию ☝️
  2. Набор символов или unicode range, который будете использовать

Надо понимать, что во многих шрифтах может не быть необходимых символов. Проверить можно через классный сервис Wakamai Fondue.

У Google есть бесплатные Noto Fonts которые тоже немного скучные, но поддерживают все языки!

Порядок действий следующий:

  1. Добавляете файл шрифта в проект, открываете Window → TextMeshPro → Font Asset Creator и перетаскиваете шрифт в поле Source Font File
  2. Теперь можно выбрать набор символов, для этого есть меню Character Set

Всё что идёт до Custom Range – это разновидности ASCII и символы. После, это опции где можно выбирать откуда брать символы: из файла, просто перечислить в поле, указать промежуток, последовательность и т.д.

  1. Выберем Unicode Range (HEX) и укажем, например 0020-007F – это базовые латинские символы, ренжи можно указывать через запятую
  2. Теперь можно нажать Generate Font Atlas
  3. Сохраняете с нужным именем

Окно после настроек и генерации шрифта, должно выглядеть как-то так:

Complete font generation for TMP

Что тут у нас:

  • из указанного ренжа было добавлено 95 из 96 символов, не добавился 007F – ␡, его нет в этом шрифте
  • в результате для атласа 512×512 получился Point Size = 70, потому что в настройках было указано Auto Sizing
  • можно указать размер шрифта вручную, но тогда надо следить чтобы всё влезло в атлас и при необходимости увеличить размер атласа или 👇
  • также, можно разбить свои шрифты на несколько ассетов, например, сделать один (базовый) с часто используемыми символами, второй с математическими знаками, третий с кириллицей и т.д. При необходимости TMP сам будет использовать нужный атлас. Для этого к базовому ассету нужно добавить поддержку остальных, также как делали с эмоджи:
TMP fallback list

Разные unicode ranges для создания своих шрифтов можно подглядеть тут.

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

Нет комментариев

    Ваш комментарий