Документация
Docs/ru/reference/font-format/bmfont.md
Контракт бинарного BMFont
Сгенерированный справочник. Не редактируйте его напрямую. Обновите
BuildTools/FontFormatInterface.json, затем выполнитеpython BuildTools/docs_font_format.py --write.
| Индекс | Форматы | FOFNT | BMFont | Привязка | Компоновка | Отрисовка | Проверка | Канонический JSON | Руководство |
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
font-format.bmfont.binary-v3-signature |
Сигнатура binary v3 | Первые четыре байта должны быть B, M, F и версией бинарного формата 3. | Любая другая сигнатура или версия BMFont отклоняется до разбора блоков. | Source/Client/FontManager.cpp |
font-format.bmfont.block-order |
Фиксированный порядок блоков | Экспортируйте Info, Common, Pages и Chars в стандартном бинарном порядке без необязательных блоков между ними. | Парсер продвигается на размер каждого блока и напрямую читает полезную нагрузку следующего; он не ищет блок по типу. | Source/Client/FontManager.cpp |
font-format.bmfont.info-padding |
Однопиксельный отступ экспортёра | Установите отступы BMFont Info сверху, справа, снизу и слева ровно в один пиксель. | Загрузчик требует четыре байта отступа 0x01010101, затем удаляет по одному пикселю с каждой стороны прямоугольника глифа. | Source/Client/FontManager.cpp |
font-format.bmfont.single-page |
Одна страница текстуры | Экспортируйте ровно одну страницу текстуры. | Число страниц в Common должно быть равно одному; многостраничные дескрипторы BMFont отклоняются. | Source/Client/FontManager.cpp |
font-format.bmfont.relative-page-image |
Относительное изображение страницы | Храните завершённое NUL имя страницы, разрешаемое относительно каталога дескриптора .fnt. | Полезная нагрузка Pages читается как одна строка и объединяется с каталогом дескриптора до загрузки спрайта. | Source/Client/FontManager.cpp |
font-format.bmfont.char-records |
Двадцатибайтные записи символов | Кодируйте каждую запись Chars в 20-байтной раскладке BMFont v3. Формат определяет xoffset, yoffset и xadvance как знаковые поля, но текущий загрузчик читает все три как беззнаковые little-endian uint16; избегайте отрицательных метрик, пока этот дефект runtime не будет исправлен отдельно. | В поставляемых шрифтах встречаются отрицательные выносы, поэтому это подтверждённое исходным кодом ограничение должно быть явно указано, а не описано как корректное знаковое декодирование. | Source/Client/FontManager.cpp, Source/Common/FileSystem.h |
font-format.bmfont.metric-conversion |
Преобразование метрик Engine | Оставляйте прозрачный пиксель вокруг каждого глифа; загрузчик сдвигает x/y внутрь, удаляет два пикселя из ширины/высоты, меняет знак выносов и добавляет пиксель к xadvance. | Engine выбирает расширенный прямоугольник для сглаживания и необязательной обводки, сохраняя видимые метрики глифа отдельно. | Source/Client/FontManager.cpp |
font-format.bmfont.line-metrics |
Производные метрики строки | Ожидайте, что Engine LineHeight использует видимую высоту глифа W, когда он есть, иначе Common.base; YAdvance равен половине результата. | Поле BMFont Common.lineHeight участвует в преобразовании выноса, но не копируется напрямую в высоту строки Engine. | Source/Client/FontManager.cpp |
font-format.bmfont.gray-bordered |
Подготовка серого и обводки | Бинарные привязки BMFont всегда нормализуют непрозрачные пиксели в серый и создают вторую копию атласа с обводкой. | Это обеспечивает runtime-тонирование и FontFlag::Bordered без переключателей в дескрипторе. | Source/Client/FontManager.cpp |