Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / photon_old.doc
Скачиваний:
40
Добавлен:
02.04.2015
Размер:
7.88 Mб
Скачать
  1. Глава 19. Шрифты

Хотя библиотеки Photon'а и предлагают ряд функций по работе с шрифтами (см. главу "Pf – сервер шрифта" в "Справочнике библиотечных функций Photon'а"), большинство из них являются подпрограммами низкого уровня и, вероятно, Вам не понадобится их использовать. Эта глава описывает основы использования шрифтов.

Эта глава включает:

  • Метрики символа

  • Имена шрифтов

  • Написание текста в прямоугольной области

  • Пропорциональный текст, приводящий к ошибкам восстановления повреждений.

    1. Метрики символа

Давайте начнём с некоторых определений:

              1. Рис. 19-1. Метрики символа

Advance

Продвижение. Величина, на которую продвигается по оси x перо после прорисовки литеры. Это может быть не полная ширина литеры (особенно для курсивного шрифта) для обеспечения кернинга (т.е. создания выносного элемента литеры).

Ascender

Верхний элемент литеры. Высота от базовой линии до вершины литеры.

Bearing x or left bearing

Выноска по х или левая выноска. Размер литеры слева оттуда, где символ считается начинающимся.

Descender

Подстрочный элемент литеры. Высота от низа литеры до базовой линии.

Extent

Протяжённость литеры. Ширина литеры. Зависит от шрифта, она может включать определённое чистое пространство.

Origin

Начало. Нижний левый угол литеры.

X Max

Ширина символа, не включая выноски по х.

 Для экономии времени и памяти, кернинг не поддерживается.

    1. Имена шрифтов

Шрифт идентифицируется по своему имени, которое может иметь одну из следующих форм:

Имя лигатуры (foundry name)

Имя, задаваемое именем лигатуры для идентификации семейства шрифтов, такие как Helvetica, Comic Sans MS или Prima Sans BT. Обратите внимание на использование заглавных букв. Имя лигатуры не включает информацию о стиле (напр., жирный, наклонный) или размере. Это имя является универсальным для всего операционного окружения (напр., X, Photon).

Имя основы

Уникальный идентификатор, включающий сокращение от имени лигатуры, а также стиль (напр., b, i) и размер. Например, helv12 является именем основы 12-пунктного шрифта Helvetica, а helv12b – имя основы 12-пунктного жирного шрифта Helvetica.

Чтобы задать шрифт в API Photon'а, обычно используется имя основы. Вы должны рассматривать имена основы как постоянные идентификаторы, а не как модифицируемые строки.

Вы можете жёстко прописать все ссылки на шрифты в приложении Photon'а. Но Ваше приложение может быть более гибким, если Вы используете лигатурное имя, чтобы иметь возможность выбора наилучшего совпадения из всех доступных шрифтов. При таком подходе нет проблемы, если какой-то конкретный шрифт со временем окажется переименован, удалён или перемещён. Например, в следующем вызове функции PtAlert() используется жёстко прописанное имя основы helv14, задающее 14-точечный шрифт Helvetica:

answer = PtAlert(base_wgt, NULL, "File Not Saved", NULL,

"File has not been saved.\nSave it?",

"helv14", 3, btns, NULL, 1, 3, Pt_MODAL );

Доступные имена основы Вы можете получить из имён файлов в ${PHOTON_PATH}/font – просто удалите имеющееся расширение файла (напр., .phf).

Иной способ заключается в том, что если у Вас есть директория $HOME/.ph, просмотреть директорию $HOME/.ph/font/. МикроGUI Photon'а создаёт этот локальный файл только при необходимости, как скажем, когда Вы запускаете утилиту fontadmin (см. "Справочник утилит QNX 6") для создания Вашей собственной персональной конфигурации. Пока локальный файл не создан, микроGUI использует глобальный файл.

Соседние файлы в папке Литература