Final Fantasy: 20th Anniversary Edition/FIF

Материал из ConsolWiki
Перейти к: навигация, поиск

FIF (предположительно от Font InFo) — описательная информация шрифта, хранящая координаты печатаемых символов на полотне шрифта, а также информацию для определения кодов служебных символов. Полотно хранится в изображении формата GIM, обычно с тем же именем, что и FIF-файл.

Структура файла

Размер Данные
4 байта Заголовок
276 байт Информация о кодировке
Количество символов × размер записи символа Записи символов
Показать код на языке: C++ (псевдокод)

Заголовок

Смещение Размер Описание
0x00 2 байта Высота шрифта
0x02 2 байта Количество символов
Показать код на языке: C++

Информация о кодировке

Информация о кодировке представляет из себя массив из 138 элементов, где элемент с индексом, равным коду символа в соответствии с кодировкой юникод, равен индексу символа в данном шрифте. Отсюда же берётся код конца строки — самый первый элемент, т.е. соответствующий символу с кодом 0.

Т.е., например, чтобы узнать индекс буквы "A" (0x0041) в данном шрифте, надо взять элемент с индексом 0x0041:

uint16 charAIndex = encodingMap['A'];

Если индексы служебных символов не заданы в массиве, то они вычисляются по количеству символов в шрифте:

Служебный символ Код
Конец строки Количество символов
Перенос строки Количество символов + 1
Неизвестно Количество символов + 2
Следующая часть сообщения Количество символов + 3
Показать код на языке: C++

Запись символа

Смещение Размер Описание
0x00 2 байта X-координата глифа на полотне шрифта
0x02 2 байта Y-координата глифа на полотне шрифта
0x04 2 байта Ширина глифа
Показать код на языке: C++