FOnline Engine
Current master GitHub
Документация 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
Введите запрос.