1.3.2. Структура .CPI-файлов

      Общая  структура  файлов,  хранящих  информацию  о  кодовых

 страницах устройства, такова:

 

      Заголовок библиотеки шрифтов:

                 имя библиотеки шрифтов

                 смещение до информации о шрифтах

      Информация о шрифтах:

                 информация о кодовой странице

                 указатель  на  информацию  о  следующей  кодовой

                 странице

                 тип  устройства (дисплей  или принтер)  и подтип

                 (EGA, LCD и т.п.)

                 номер кодовой страницы

                 смещение до заголовка данных о шрифте

      Заголовок данных о шрифте

                 количество шрифтов

                 шрифт 1

                   размер матрицы (строк, столбцов)

                   количество символов

                   данные - (строк x столбцов x символов)/8 байт

                 шрифт 2

                 .  .  .

                 шрифт n

 

      Ниже приведена детальная структура файла EGA.CPI:

 

 

 Смещение  Длина  Содержимое    Комментарий

 ─────────────────┬───┬─────────────────────────────────────────

  +X         1    │FFh│         идентификатор библиотеки шрифтов

                  ├───┼───┬───┬───┬───┬───┬───┐ имя библиотеки

  +1         7    │'F'│'O'│'N'│'T'│' '│' '│' '│ шрифтов

                  ├───┼───┼───┼───┼───┼───┼───┼───┐

  +8         8    │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │  резерв

                  ├───┴───┼───┴───┴───┴───┴───┴───┘

  +10h       2       1   │ количество указателей (в ДОС 3.3

                  ├───┬───┘ всегда 1)

  +12h       1    │ 1 │     тип указателя (в ДОС 3.3 всегда 1)

                  ├───┴───────────┐

  +15h       4        0017h      │ длинный указатель на

                  ├───────┬───────┘ информацию о шрифтах

  +17h       2       1   │ количество кодовых страниц

                  ├───────┤

  +19h       2      1Ch  │ размер заголовка кодовых страниц

                  ├───────┴───────┐ длинный указатель на

  +1Bh       4           0       │ следуюую кодовую страницу

                  ├───────┬───────┘ (0=последняя страница)

  +1Fh       2       1   │ тип устройства (1=дисплей, 2=принтер)

                  ├───┬───┼───┬───┬───┬───┬───┬───┐

  +21h       8    │'E'│'G'│'A'│' '│' '│' '│' '│' '│ подтип

                  ├───┴───┼───┴───┴───┴───┴───┴───┘ устройства

  +29h       2      1B5h │ номер кодовой страницы (1B5h=США)

                  ├───┬───┼───┬───┬───┬───┐

  +2Bh       6    │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ резерв

                  ├───┴───┴───┴───┼───┴───┘

  +31h       4        0035h      │длинный указатель на заголовок

                  ├───────┬───────┘данных

  +35h       2       1   │ резерв (должно быть 1)

                  ├───────┤ количество шрифтов для этой кодовой

  +37h       2       2   │ страницы

                  ├───────┤ общая длина последующих определений

  +39h       2       1   │ шрифтов

                  ├───┬───┘   Первый шрифт:

  +3Bh       1    │0Eh│  строк на символ (14 в режиме 640 x 350)

                  ├───┤

  +3Ch       1    │08 │     столбцов на символ

                  ├───┴───┐

  +38h       2       0   │ характеристическое отношение

                  ├───────┤ (не используется)

  +3Fh       2    │ 100h  │ количество символов (100h=256)

                  ├───────┴───────┐

  +41h    0E00h         ...      │ описание символов:

                  └───────────────┘

 

                  Каждый символ состоит из (строк x столбцов)

                  битов, расположенных по строкам. Для матрицы

                  14x8 описание одного символа занимает 14x8/8=14

                  байтов. Поэтому для 256 символов нужно

                  256x14=3584=0E00h байтов.

 

                             Второй шрифт:

                  ┌────┐

  +E41h      1    │ 08 │   строк на символ

                  ├────┤

  +E42h      1    │ 08 │   столбцов на символ

                  ├────┴────┐

  +E34h      2        0    │ характеристическое отношение

                  ├─────────┤ (не используется)

  +E45h      2      100h   │ количество символов (100h=256)

                  ├─────────┴──────┐

  +E47h    800h          ...      │ описание символов:

                  └────────────────┘Матрица 8x8 требует 8 байтов,

                                    поэтому 256 символов занимают

                                    256x8=2048=800h байтов

  +???   Конец файла

 

      См. также: фн 44h, подфн 0Ch.

 

 

 

Вы находитесь в разделе: 
Также вам будет интересно:

Добавить коментарий