Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Форматы Файлов    >>    chr
   
 
 CHR - Формат файлов штриховых шрифтов Borland   Stanislav Plehnevich 20.07.1997

Структура файла штрихового фонта фирмы Borland



2k 
 

- 4INT ----------------------------------------------------- It's interesting - Msg : 99 of 202 Addr Date From : Stanislav Plehnevich 2:5004/14.20 20.07.97 Subj : chr ------------------------------------------------------------------------------- Hi Pavel Dovgaluk !!! Pavel Dovgaluk --> All PD> Кто знает чего-нибудь пpо фоpмат субжевых файлов ? Бери: +------------------------------------------------+ | Структура файла штрихового фонта фирмы Borland | +------------------------------------------------+ Смещение | ------------------+------------------------------------------------------------ 0000 - 0003 | 'PK' 08 08 0004 - .... | Метка фонта ( copyright и т.д. ) | оканчивается символом 1A ( конец файла ) | Пусть смещение символа 1A = N N+1 - N+2 | 80 00 ( другие значения всегда ошибочны ) N+3 - N+6 | четырехбуквенное название шрифта ( 'TRIP','SANS','LITT') N+7 - N+8 | размер файла - 80h ( слово ) N+9 - 007F | 01 00 01 00 00 00 ... 00 ( ??? ) 0080 | 2B 0081 | Число символов 0082 - 0083 | 00 00 ( ??? ) 0084 | ачальный символ 0085 - 0086 | Указатель на начало таблицы кодировки ( слово ) | ( настоящее смещение таблицы = 80h + <указатель> ) 0087 | 00 0088 | Высота символов выше оси координат 0089 | 00 008A | Высота символов ниже оси координат ( со знаком минус ) | т.е. общая высота символов = [0088] - [008A] | Символы рисуются относительно оси координат , | хотя в процедуре OutTextXY координаты задаются | по верхнему краю символов - для этого и нужны 2 ячейки | для высоты символов 008B - 008F | 00 00 00 00 00 0090 - .... | Таблица указателей на символы относительно таблицы | кодировки ( по одному слову на каждый символ ) | Пусть таблица оканчивается на смещении M M+1 - .... | Таблица ширины символов ( по одному байту на символ ) 80h+[0085] - .. | Таблица кодировки символов ------------------+------------------------------------------------------------ Структура кодировки символа : последовательность байтов : x1,y1,x2,y2,x3,y3 ... xN,yN,00 Рисование начинается с точки 0,0 затем в x1,y1 и т.д. перед рисованием числа x,y надо преобразовать : Если у X и Y бит 7 = 1 это означает что вектор надо рисовать Если у X бит 7 = 1 , а у Y бит 7 = 0 это означает что вектор невидимый В остальных случаях - конец последовательности. После определения 7 - го бита надо его сбросить в 0 у X и Y Затем если у X или Y бит 6 = 1 , то в этом числе надо и бит 7 установить в 1 ( когда числа отрицательны ) Shalom Lehitraot!!! Stanislav [AKA Night's Man] --- timEd/386 1.10.g2+ * Origin: А я люблю свою жену Аленку ! (2:5004/14.20) {> Cut here. FileName= CHRSTR2.MSG } - 4INT ----------------------------------------------------- It's interesting - Msg : 100 of 202 Addr Date From : Ivan Pestrikov 2:5075/22.5 05.09.97 Subj : chr ------------------------------------------------------------------------------- Здравствуйте Pavel, и чтоб вы сегодня не зависли! Помнится как-то (Четверг Июль 17 1997 09:20) некто Pavel Dovgaluk написал All: PD> Кто знает чего-нибудь пpо фоpмат субжевых файлов ? >----- Cut Begin Fontedit.Pas --- type TChar4 = array [1..4] of Char; TFontHead = record {Структура заголовка шрифта} case Byte of 0:(FontFileID: TChar4); 1:(B: array [1..128] of byte); end; TFontPara = record {Блок параметров шрифта} case Byte of 0:( ParPrefix : Char; {Символ "+"} CharsCount: Word; {Количество символов в шрифте} Reserv1 : Byte; {Hе используется} FirstChar : Byte; {Код первого символа} DataOffset: Word; {Смещение до векторных команд первого символа} FillFlag : Byte; {Флаг заливки} UpperMargin: Byte; {Высота символов} Reserv2 : Byte; {Hе используется} LowerMargin: ShortInt; {Hижняя кромка} Reserv3 : array [1..5] of Byte;); 1:(H2: array [1..16] of Byte) end; TOffst = array [0..255] of Word; {Смещения} TWidth = array [0..255] of Byte; {Ширины} TChars = array [0..255] of Pointer; {Данные} TLengD = array [0..255] of Word; {Длина} AW = array [1..255] of Word; TCooE = record {Векторы рабочего поля} X1,Y1,X2,Y2: Integer; end; >----- Cut End --------- Всегда Свой с приветом к Вам, Ivan [Team ИС - MD!] Тольятти, ПТИС ГАСБУ --- * Origin: У "чайника" всегда есть pезеpвы pоста... (FidoNet 2:5075/22.5)