Borland С + +. Необходимость анализа очевидна — ведь стандартные шрифты фирмы Borland не содержат символов кириллицы, и поэтому отечественные программисты либо вообще отказываются от использования векторных шрифтов, либо переводят сообщения на английский язык, что, согласитесь, не всегда удобно. Познакомившись с несложными соглашениями, по которым конструируются CHR— файлы, Вы затем сможете создать собственную версию генератора (редактора) векторных шрифтов или воспользоваться программой, приводимой в прил.ПЗ, чтобы вставить в стандартные шрифты кириллицу. Существует профессиональный пакет Borland BGI Toolkit, в состав которого включен более мощный редактор FE.EXE.
Любой CHR—файл. состоит из пяти частей: заголовка, блока параметров, таблицы смещений, таблицы ширин, блока векторных команд. Структура файла показана в таблице 1.1.
Таблица 1.1 Структура CHR-файла
Название поля |
Смещение |
Размер поля |
Содержимое |
FontPileID |
о |
4 |
'РК'#8#8 |
Copyright |
2 |
0...253 |
Любое (кроме $1А) |
CopyrightEnd |
? |
1 |
$1А |
HeaderOffset |
CopyrightEnd +1 |
2 |
HeaderSize |
FontName |
CopyrightEnd + 3 |
4 |
Название шрифта |
FontSize |
CopyrightEnd + 7 |
2 |
Длина загружаемой части шрифта |
FontVersion |
CopyrightEnd + 9 |
3 |
1 |
ParPrefix |
? (Обычно 128) |
1 |
'+' |
CharsCount |
ParPrefix+1 |
2 |
Количество символов в шрифте |
Reservl |
ParPrefix+3 |
1 |
Не используется |
FirstChar |
ParPrefix + 4 |
1 |
Код первого символа |
DataOffset |
ParPrefix + 5 |
2 |
FontStart— ParPrefix |
FillFlag |
ParPrefix+7 |
1 |
Флаг заполнения |
UpperMargin |
ParPrefix+8 |
1 |
Верхняя граница символа |
Reserv2 |
ParPrefix+9 |
1 |
Не используется |
LowerMargin |
ParPrefix+10 |
1 |
Нижняя граница символа |
Reserv3 |
ParPrefix +11 |
5 |
Не используется |
Offsets |
ParPrefix+16 |
2'[CharsCount] |
Таблица смещений |
Widths |
ParPrefix+16+ 2'[CharsCount] |
[CharsCount] |
Таблица ширин |
FirstData |
ParPrefix+16+ 3'[CharsCount] |
? |
Образы символов |
FontEnd |
|
|
|
Поле FontFileID открывает любой CHR—файл и всегда содержит символы 'РК'#8#8, которые служат для определения корректности файла. Символы ' РК' — это инициалы Филиппа Кана (Philip Kahn) — основателя фирмы Borland. Два следующих за ними символа #8 («Забой») стирают эти инициалы при выводе содержимого файла на экран командой Type, поэтому на экране будет видна только последовательность символов из массива Copyright, в котором содержатся название шрифта и объявление авторских прав фирмы Borland. Д^ина массива Copyright в принципе