Phaser предоставляет гибкие возможности работы с текстом в играх и приложениях, включая поддержку как Bitmap-шрифтов, так и Web Fonts. Выбор подхода зависит от требований к производительности, стилю текста и кросс-браузерной совместимости.
Bitmap-шрифт представляет собой заранее
подготовленное изображение с символами и мета-информацией о
позиционировании каждого символа. В Phaser используется объект
BitmapText для отображения такого текста.
Создание шрифта Bitmap-шрифты обычно создаются с помощью инструментов вроде BMFont или Hiero. Они генерируют два файла:
fnt — XML или текстовый файл с описанием метрик
символов.png — текстура с символами.Загрузка шрифта в Phaser Для загрузки
используется метод this.load.bitmapFont() в сцене:
this.load.bitmapFont('arcadeFont', 'assets/fonts/arcade.png', 'assets/fonts/arcade.fnt');
Здесь 'arcadeFont' — ключ шрифта,
arcade.png — текстура, arcade.fnt — метрики
символов.
Создание BitmapText
const text = this.add.bitmapText(100, 50, 'arcadeFont', 'Привет, Phaser!', 32);
Параметр 32 задаёт размер шрифта, масштабируемый без
потери качества.
Web Fonts позволяют использовать системные или
сторонние шрифты через CSS или Google Fonts. В Phaser они интегрируются
с обычным текстовым объектом Text.
Через CSS Например, Google Fonts:
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">Загрузка шрифта в Phaser Для гарантированной
работы шрифтов перед рендером сцены используется библиотека
WebFontLoader:
this.load.script('webfont', 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js');
WebFont.load({
google: {
families: ['Roboto']
},
active: () => {
this.add.text(100, 50, 'Привет, Phaser!', { fontFamily: 'Roboto', fontSize: '32px', color: '#ffffff' });
}
});Создание текста Объект Text
позволяет легко менять стиль и динамически обновлять содержимое:
const text = this.add.text(200, 100, 'Динамический текст', {
fontFamily: 'Roboto',
fontSize: '24px',
color: '#ff0000',
fontStyle: 'bold'
});| Параметр | Bitmap-шрифты | Web Fonts |
|---|---|---|
| Производительность | Высокая, текст как спрайты | Средняя, зависит от браузера |
| Динамическая стилизация | Нет | Полная поддержка |
| Поддержка любых шрифтов | Да, с ограничением текстуры | Да, через CSS/Google Fonts |
| Загрузка ресурсов | Файлы PNG + FNT | CSS/скрипты/Google Fonts |
| Качество масштабирования | Не теряет резкости | Может размываться при большом увеличении |
WebFontLoader и событие
active для предотвращения FOUT (Flash of Unstyled
Text).Такой подход к загрузке шрифтов позволяет в Phaser создавать как производительный игровой текст, так и гибкий интерфейс с динамическими стилями.