Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.8 Менеджер Реальних та Віртуальних об'єктів (Повернутися)
Наступна сторінка: 3.10 Менеджер друку (Перейти)

3.9 Менеджер шрифтів (Font Manager)

3.9.1 Функції Менеджера шрифтів

3.9.1.1 Загальні відомості

Менеджер шрифтів (Font Manager) керує реєстрацією, вибором, масштабуванням, трансформацією (нахил, товщина, поворот) та генерацією растрових бітових карт символів для всіх системних і прикладних програм у середовищі BTRON3. Підтримуються растрові шрифти (фіксованого та змінного розміру), векторні контурні шрифти та контури TrueType.

3.9.1.2 Поняття шрифту, сімейства та набору шрифтів (Font Set)

Шрифтові дані (Font Data / FDEF)
Окремий файл або блок пам'яті, що містить гліфи та метрики для певного набору символів і розміру.
Сімейство шрифтів (Font Family)
Сукупність шрифтових даних однакового стилю (наприклад, Mincho, Gothic).
Набір шрифтів (Font Set / Font Descriptor)
Динамічно створений екземпляр шрифту із заданим розміром, стилем, кутом повороту та атрибутами. Ідентифікується цілим дескриптором шрифту (fdesc).

3.9.1.3 Типи розміщення шрифтових даних

3.9.2 Структури даних та константи

□ Заголовок визначення шрифту (FDEF)

typedef struct {
    H           fclass;         /* Клас шрифту (FTC_MINCHO, FTC_DEFAULT тощо) */
    H           attr;           /* Атрибути (нахил, напівжирний тощо) */
    TC          name[12];       /* Назва сімейства */
    UB          size;           /* Висота базового растру */
    UB          width;          /* Максимальна ширина символу */
    UB          base;           /* Базова лінія (baseline) */
    UB          leading;        /* Міжрядковий інтервал (leading) */
    TC          fullname[20];   /* Повна назва */
    TC          topcode;        /* Перший код символу */
    TC          lastcode;       /* Останній код символу */
    UB          imgform;        /* Формат растру: 0=фікс. растр, 1=варіативний, 2=вектор, 3=TrueType */
    UB          widform;        /* Формат ширини: 0=простий, 1=індексний, 2=з шириною образу */
    W           datasize;       /* Розмір даних у байтах */
    OFFSET      offimage;       /* Зсув до растрових образів */
    OFFSET      offwidth;       /* Зсув до таблиці ширини */
    OFFSET      offnote;        /* Зсув до анотації */
} FDEF;

□ Специфікація набору шрифтів (FSSPEC)

typedef struct {
    TC          name[12];       /* Назва сімейства (NULL = за замовчуванням) */
    FCLASS      fclass;         /* Клас шрифту */
    FATTR       attr;           /* Атрибути стилю */
    SIZE        size;           /* Розмір символу (ширина, висота) */
    H           angle;          /* Кут повороту (0..359 градусів) */
} FSSPEC;

□ Інформація про зображення символу (FDATA / FCDATA)

typedef struct {
    RECT    frame;      /* Межі символу */
    H       width;      /* Ширина символу */
    H       height;     /* Висота символу */
    PNT     imgofs;     /* Зсув зображення */
    UH      family;     /* Сімейство */
    UH      fid;        /* ID шрифту */
} FCDATA;

typedef struct {
    UW      attr;       /* Атрибути */
    UH      height;     /* Максимальна висота */
    UH      width;      /* Максимальна ширина */
    UH      base;       /* Базова лінія */
    UH      leading;    /* Інтервал */
    SIZE    asize;      /* Розмір символу */
    UH      aangle;     /* Кут повороту */
    UH      pixbits;    /* Глибина кольору бітової карти (1, 2, 4, 8) */
    UB      *image;     /* Адреса растрової карти символу */
    FCDATA  ch[1];      /* Дані для кожного запитаного символу */
} FDATA;

3.9.3 Системні виклики Менеджера шрифтів

fdef_fnt
Define Font
Реєстрація шрифтових даних у системі

【Синтаксис / Прототип】

WERR    fdef_fnt(FLOC loc, W spec)

【Параметри】

FLOC    loc     Розміщення шрифту (вказівник на пам'ять або посилання на файл)
W       spec    Тип розміщення (FT_MEM | FT_FILE | FT_RES | FT_SYSTEM)

【Значення, що повертається】

>= 0    ID зареєстрованого шрифту (fid)
 < 0    Помилка (Код помилки)

【Детальний опис】

Реєструє нові шрифтові дані в системному пулі шрифтів і повертає унікальний fid.

【Коди помилок】

EX_NOSPC: Нестача пам'яті.
EX_PAR  : Неприпустимий формат даних або spec.
fdel_fnt
Delete Font
Видалення шрифтових даних за ID

【Синтаксис / Прототип】

ERR fdel_fnt(W fid)

【Параметри】

W   fid     ID шрифту

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Видаляє зареєстрований шрифт із системної таблиці.

【Коди помилок】

EX_FTID : Шрифт fid не існує.
fdel_loc
Delete Font by Location
Видалення шрифту за розміщенням

【Синтаксис / Прототип】

ERR fdel_loc(FLOC loc, W spec)

【Параметри】

FLOC    loc     Розміщення шрифту
W       spec    Тип розміщення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Видаляє шрифти, пов'язані з указаним файлом або адресою пам'яті.

【Коди помилок】

EX_FTID : Шрифт не знайдено.
fget_def
Get Font Definition Header
Отримання заголовка визначення шрифту

【Синтаксис / Прототип】

ERR fget_def(W fid, FDEF *fdef)

【Параметри】

W     fid   ID шрифту
FDEF *fdef  Буфер для структури FDEF

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Зчитує структуру заголовка FDEF для зареєстрованого шрифту fid.

【Коди помилок】

EX_ADR  : Недопустима адреса fdef.
EX_FTID : Шрифт fid не існує.
fget_not
Get Font Note
Отримання текстової анотації шрифту

【Синтаксис / Прототип】

WERR    fget_not(W fid, TC *note, W size)

【Параметри】

W    fid    ID шрифту
TC  *note   Буфер для рядка анотації (TRON Code)
W    size   Розмір буфера у байтах

【Значення, що повертається】

>= 0    Довжина анотації у символах
 < 0    Помилка (Код помилки)

【Детальний опис】

Отримує текст опису/копірайту шрифту.

【Коди помилок】

EX_ADR  : Недопустима адреса note.
EX_FTID : Шрифт fid не існує.
flst_fon
List Fonts
Отримання списку доступних шрифтів

【Синтаксис / Прототип】

WERR    flst_fon(W target, FLIST *list, W size)

【Параметри】

W      target  Критерій вибірки (FT_ALL, FT_FAMILY, FT_SCALL тощо)
FLIST *list    Буфер для масиву структур FLIST
W      size    Розмір буфера у байтах

【Значення, що повертається】

>= 0    Кількість знайдених шрифтів
 < 0    Помилка (Код помилки)

【Детальний опис】

Заповнює масив list переліком зареєстрованих шрифтів відповідно до target.

【Коди помилок】

EX_ADR  : Недопустима адреса list.
fopn_fon
Open Font Set
Створення дескриптора набору шрифтів (Font Set)

【Синтаксис / Прототип】

WERR    fopn_fon(void)

【Параметри】

Немає

【Значення, що повертається】

>= 0    Дескриптор набору шрифтів (fdesc)
 < 0    Помилка (Код помилки)

【Детальний опис】

Створює новий екземпляр набору шрифтів зі значеннями за замовчуванням (16x16, кут 0).

【Коди помилок】

EX_NOMEM: Нестача пам'яті.
fcls_fon
Close Font Set
Видалення набору шрифтів

【Синтаксис / Прототип】

ERR fcls_fon(W fdesc)

【Параметри】

W   fdesc   Дескриптор набору шрифтів

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Звільняє ресурси, виділені під дескриптор шрифту fdesc.

【Коди помилок】

EX_FTD  : Дескриптор fdesc не існує.
fset_fon
Set Font Set Parameters
Налаштування параметрів набору шрифтів

【Синтаксис / Прототип】

ERR fset_fon(W fdesc, FSSPEC *spec)

【Параметри】

W       fdesc   Дескриптор набору шрифтів
FSSPEC *spec    Параметри шрифту (сімейство, атрибути, розмір)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Призначає сімейство, розміри та атрибути для дескриптора fdesc.

【Коди помилок】

EX_ADR  : Недопустима адреса spec.
EX_FTD  : Дескриптор fdesc не існує.
EX_PAR  : Некоректний розмір шрифту.
fget_fon
Get Font Set Parameters
Отримання параметрів набору шрифтів

【Синтаксис / Прототип】

ERR fget_fon(W fdesc, FSSPEC *spec)

【Параметри】

W       fdesc   Дескриптор набору шрифтів
FSSPEC *spec    Буфер для структури FSSPEC

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Зчитує поточні налаштування набору шрифтів fdesc.

【Коди помилок】

EX_ADR  : Недопустима адреса spec.
EX_FTD  : Дескриптор fdesc не існує.
fset_ang
Set Font Rotation Angle
Встановлення кута повороту шрифту

【Синтаксис / Прототип】

ERR fset_ang(W fdesc, W ang)

【Параметри】

W   fdesc   Дескриптор шрифту
W   ang     Кут повороту в градусах (0..359)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Встановлює кут повороту гліфів для дескриптора fdesc.

【Коди помилок】

EX_FTD  : Дескриптор fdesc не існує.
EX_PAR  : Неприпустимий кут ang.
fget_ang
Get Font Rotation Angle
Отримання кута повороту шрифту

【Синтаксис / Прототип】

WERR    fget_ang(W fdesc)

【Параметри】

W   fdesc   Дескриптор шрифту

【Значення, що повертається】

>= 0    Кут повороту в градусах (0..359)
 < 0    Помилка (Код помилки)

【Детальний опис】

Повертає поточний кут повороту гліфів дескриптора fdesc.

【Коди помилок】

EX_FTD  : Дескриптор fdesc не існує.
fget_fam
Get Font Family Information
Отримання метрик сімейства шрифтів

【Синтаксис / Прототип】

WERR    fget_fam(W fdesc, W script, FNTINFO *inf)

【Параметри】

W        fdesc   Дескриптор шрифту
W        script  Набір символів (скрипт)
FNTINFO *inf     Буфер для метрик сімейства

【Значення, що повертається】

>= 0    ID шрифту (fid)
 < 0    Помилка (Код помилки)

【Детальний опис】

Повертає метрики сімейства (базова лінія, інтерліньяж, максимальна ширина тощо), масштабовані відповідно до налаштувань fdesc.

【Коди помилок】

EX_ADR  : Недопустима адреса inf.
EX_FTD  : Дескриптор fdesc не існує.
EX_FTID : Шрифт для зазначеного скрипту не знайдено.
fget_img
Get Glyph Image
Отримання растрового зображення та метрик символу

【Синтаксис / Прототип】

WERR    fget_img(W fdesc, FDATA *cimg, W size, W script, TC ch, UW mode)

【Параметри】

W       fdesc   Дескриптор набору шрифтів
FDATA  *cimg    Буфер для структури FDATA та бітової карти символу
W       size    Розмір буфера cimg у байтах
W       script  Скрипт символу
TC      ch      Код символу TRON Code
UW      mode    Режим: FT_IMAGE (отримати растр), FT_SYS (у системну пам'ять)

【Значення, що повертається】

>= 0    Кількість оброблених символів (1)
 < 0    Помилка (Код помилки)

【Детальний опис】

Генерує масштабовану й трансформовану растрову бітову карту символу ch та повертає її метрики (розміри рамки, зсуви).

【Коди помилок】

EX_ADR  : Недопустима адреса cimg.
EX_FTD  : Дескриптор fdesc не існує.
EX_NOSPC: Недостатній розмір буфера size.

Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.8 Менеджер Реальних та Віртуальних об'єктів (Повернутися)
Наступна сторінка: 3.10 Менеджер друку (Перейти)