BitmapFont в PixiJS представляет собой способ отображения текста с использованием заранее подготовленных растровых изображений шрифтов. Такой подход обеспечивает высокую производительность, особенно при необходимости отображения большого объёма текста с эффектами или в играх с интенсивной графикой. BitmapFont состоит из двух основных компонентов: текстуры, содержащей глифы, и метаданных (XML или JSON), описывающих положение каждого символа в текстуре.
Ручное создание BitmapFont подразумевает самостоятельное формирование текстур и метаданных. Этот подход даёт полный контроль над шрифтом, но требует внимательности и точности.
Метаданные описывают положение каждого символа в текстуре. Они могут быть в формате XML или JSON:
Пример JSON-структуры:
{
"info": {"face": "MyFont", "size": 32},
"common": {"lineHeight": 36},
"chars": [
{"id": 65, "x": 0, "y": 0, "width": 32, "height": 32, "xoffset": 0, "yoffset": 0, "xadvance": 32},
{"id": 66, "x": 32, "y": 0, "width": 32, "height": 32, "xoffset": 0, "yoffset": 0, "xadvance": 32}
]
}
После создания текстуры и метаданных шрифт регистрируется через
PIXI.BitmapFont.install:
PIXI.BitmapFont.install({
font: "MyFont",
size: 32,
chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
texture: PIXI.BaseTexture.from("myfont.png"),
lineHeight: 36
});
Можно также использовать PIXI.BitmapText для отображения
текста:
const bitmapText = new PIXI.BitmapText("HELLO PIXI", { fontName: "MyFont" });
app.stage.addChild(bitmapText);
Для упрощения процесса создания BitmapFont существуют специализированные инструменты, автоматизирующие генерацию текстур и метаданных.
После получения текстуры и метаданных, созданных инструментами, подключение в PixiJS выглядит следующим образом:
PIXI.Assets.load(['myfont.png', 'myfont.fnt']).then(() => {
const bitmapText = new PIXI.BitmapText("TEXT USING BITMAP FONT", { fontName: "MyFont", fontSize: 32 });
app.stage.addChild(bitmapText);
});
PIXI.Assets.load обеспечивает асинхронную загрузку
ресурсов..fnt
и параметра fontName в BitmapText..fnt (XML) и .json для метаданных. Важно
правильно указывать кодировку символов.Можно создать BitmapFont программно из системного шрифта без ручной подготовки текстуры:
const fontStyle = new PIXI.TextStyle({
fontFamily: "Arial",
fontSize: 32,
fill: "#ffffff"
});
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
PIXI.BitmapFont.from("ArialBitmap", fontStyle, { chars });
Использование BitmapFont в PixiJS обеспечивает высокую производительность и гибкость при отображении текста, особенно в игровых и графически насыщенных приложениях. Ручное создание позволяет точный контроль, а специализированные инструменты ускоряют процесс подготовки качественных шрифтов.