Final Fantasy: 20th Anniversary Edition/FIF
FIF (предположительно от Font InFo) — описательная информация шрифта, хранящая координаты печатаемых символов на полотне шрифта, а также информацию для определения кодов служебных символов. Полотно хранится в изображении формата GIM, обычно с тем же именем, что и FIF-файл.
Структура файла
Размер | Данные |
---|---|
4 байта | Заголовок |
276 байт | Информация о кодировке |
Количество символов × размер записи символа | Записи символов |
Заголовок
Смещение | Размер | Описание |
---|---|---|
0x00 | 2 байта | Высота шрифта |
0x02 | 2 байта | Количество символов |
Информация о кодировке
Информация о кодировке представляет из себя массив из 138 элементов, где элемент с индексом, равным коду символа в соответствии с кодировкой юникод, равен индексу символа в данном шрифте. Отсюда же берётся код конца строки — самый первый элемент, т.е. соответствующий символу с кодом 0.
Т.е., например, чтобы узнать индекс буквы "A" (0x0041) в данном шрифте, надо взять элемент с индексом 0x0041:
uint16 charAIndex = encodingMap['A'];
Если индексы служебных символов не заданы в массиве, то они вычисляются по количеству символов в шрифте:
Служебный символ | Код |
---|---|
Конец строки | Количество символов |
Перенос строки | Количество символов + 1 |
Неизвестно | Количество символов + 2 |
Следующая часть сообщения | Количество символов + 3 |
Запись символа
Смещение | Размер | Описание |
---|---|---|
0x00 | 2 байта | X-координата глифа на полотне шрифта |
0x02 | 2 байта | Y-координата глифа на полотне шрифта |
0x04 | 2 байта | Ширина глифа |