Тема: Формат шрифта BFT
Фиксирую результат разбора на данный момент.
Файл состоит из 4-х частей:
000-05F: заголовок
060-15F: таблица ширины символов (256)
160-25F: таблица сдвига по вертикали (256)
260-XXX: символы
Заголовок:
000-01F: сигнатура, параметры? Назначение удалось установить только для байа 05, это высота символа. Также в рассмотренных файлах меняется байт 07, но закономерность установить не удалось. Остальные байты не меняются.
020-02F: название шрифта, null terminated
030-05F: назначение не установлено, всегда нули
Таблица ширины, 256 байт.
Ширина символа в пикселях. Если 0, то символ в шрифте пропущен. Вероятно, значение может лежать в диапазоне 1-8, других значений в имеющихся шрифтах не нашел. Ширина матрицы всегда 1 байт, т.е. 8 пикселей. В матрице символ выровнен влево, неиспользуемые пиксели равны 0 по всей высоте символа.
Таблица сдвига, 256 байт.
На каждый символ - один байт со знаком. Означает сдвиг матрицы по вертикали на экране, то есть размер поля символа на экране должен учитывать максимальные сдвиги вверх и вниз по этой таблице.
Символы.
Каждый символ занимает количество байт, равное высоте (байт 05) из заголовка. Общий размер данных определяется как произведение этого значения на количество ненулевых байтов в таблице ширины.
Пример для шрифта SYSTEM (высота символов 8 строк):
Заголовок
0000 86 00 40 00 08 [08] 01 [0C] 00 00 00 00 00 00 00 00 . ` ←←▃╰
0010 20 00 40 00 60 00 00 00 60 01 60 02 00 00 00 00 ` ю ю▃ю▅
0020 D3 D9 D3 D4 C5 CD 00 00 00 00 00 00 00 00 00 00 SYSTEM
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ширина символов
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' a b c d e f g h i j k l m n o
00A0 03 06 06 06 06 06 04 06 06 02 06 06 02 07 06 06 ▇∀∀∀∀∀⋁∀∀▅∀∀▅∃∀∀
00B0 06 06 06 06 04 06 06 07 06 06 06 03 01 03 06 05 ∀∀∀∀⋁∀∀∃∀∀∀▇▃▇∀╗
00C0 08 06 06 07 07 06 08 06 06 06 06 06 06 07 06 06 ←∀∀∃∃∀←∀∀∀∀∀∀∃∀∀
00D0 06 06 06 06 06 06 08 06 06 08 06 07 06 07 06 07 ∀∀∀∀∀∀←∀∀←∀∃∀∃∀∃
00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0100 03 02 05 05 06 07 07 03 04 04 07 06 03 06 02 07 ▇▅╗╗∀∃∃▇⋁⋁∃∀▇∀▅∃
0110 06 03 06 06 06 06 06 06 06 06 02 03 05 06 05 06 ∀▇∀∀∀∀∀∀∀∀▅▇╗∀╗∀
0120 07 06 06 06 06 06 06 06 06 02 06 06 06 07 06 06 ∃∀∀∀∀∀∀∀∀▅∀∀∀∃∀∀
0130 06 06 06 06 06 06 06 07 06 06 06 04 07 04 07 06 ∀∀∀∀∀∀∀∃∀∀∀⋁∃⋁∃∀
0140 08 06 06 07 07 06 08 06 06 06 06 06 06 07 06 06 ←∀∀∃∃∀←∀∀∀∀∀∀∃∀∀
0150 06 06 06 06 06 06 07 06 06 08 06 07 06 08 06 07 ∀∀∀∀∀∀∃∀∀←∀∃∀←∀∃
сдвиг матрицы
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01A0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 ▅
01B0 02 02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 ▅▅ ▅
01C0 00 00 00 02 02 00 02 00 00 00 00 00 00 00 00 00 ▅▅ ▅
01D0 00 00 02 00 00 02 00 00 00 00 00 00 00 02 00 00 ▅ ▅ ▅
01E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0200 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ▃
0210 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 ▃
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
символы
0260 C0 C0 60 00 00 00 00 00 00 00 78 0C 7C CC 7C 00 @@ю ь╰эLэ
0270 C0 C0 F8 CC CC CC F8 00 00 00 78 C4 C0 C4 78 00 @@ЬLLLЬ ьD@Dь
0280 0C 0C 7C CC CC CC 7C 00 00 00 78 CC FC C0 78 00 ╰╰эLLLэ ьLЭ@ь
...Приложение: Шрифт ORIGINAL, выведенный с учетом сдвига матриц.