Учебное пособие: Семейства шрифтов в Windows

// обычно функция LibMain() разблокирует сегмент данных

// если он имеет динамический heap.

// if ( cbHeapSize ) UnlockData( 0 );

// так как мы вообще не имеем данных (и heap тоже)

// то можем этого не делать.

return 1;}

int CALLBACK WEP( int bSystemExit ) {

return TRUE;}}

Этот файл содержит две процедуры - LibMain() - которая заменяет обычный WinMain() и вызывается при инициализации библиотеки - и процедуру WEP(), которая вызывается при удалении ненужной библиотеки.

В этом файле надо обратить внимание на то, что функция LibMain описана как CALLBACK (PASCAL FAR), в отличие от WinMain. К сожалению, некоторые компиляторы предполагают, что она должна быть NEAR для моделей памяти с одним сегментом кода. В качестве выхода можно изменить имя, например, написать его только большими буквами. Тогда компилятор не распознает эту функцию как стандартную и не сделает ошибки, а сборщик осуществит правильное связывание, так как функция декларирована как CALLBACK (PASCAL FAR).

Вторая особенность - указание, что имена функций не должны кодироваться как C++ имена ( extern "C" ). Это опять–же связано с особенностями некоторых компиляторов, которые не распознают функцию WEP() (Windows Exit Procedure) как стандартную, и осуществляют для нее C++ кодирование имени - при этом сборщик не может правильно построить задачу.

В остальном построение шрифтового файла не отличается от рассмотренного, конечно кроме компиляции исходного текста, которая выполняется как для обычного Windows-приложения:

bcc -ms -W file.c file.def

2.3 Особенности TrueType шрифтов

Сейчас мы рассмотрим некоторые особенности применения собственных TrueType шрифтов. Эти особенности связаны с тем, что TrueType шрифт представлен в совершенно иной форме, чем растровые шрифты. Если Вы с помощью какого-либо инструментального средства (например, FontoGrapher) создадите TrueType шрифт, то обнаружите, что он представлен в виде файла с расширением .TTF.

Однако применять .TTF файл непосредственно нельзя. Для того, что бы можно было использовать TrueType шрифт надо построить промежуточный файл, обычно с расширением .FOT, который можно использовать вместо файла .FON для добавления шрифта в таблицу ресурсов. Для построения этого файла Вы должны воспользоваться функцией

BOOL CreateScalableFontResource(

nHidden, lpszResourceFile, lpszFontFile, lpszPath);

Эта функция создает файл с именем lpszResourceFile для доступа к .TTF файлу, заданному параметром lpszFontFile, параметр lpszPath указывает путь до .TTF файла. Последний оставшийся параметр nHidden указывает возможность использования шрифта другими приложениями. Если он 0, то другие приложения имеют доступ к этому шрифту, а если 1, то доступ запрещен и этот шрифт не перечисляется при переборе шрифтов (EnumFonts(), EnumFontFamilies()).

2.4 Настройка приложений

Заканчивая разговор о шрифтах, удобно рассмотреть еще один компонент Windows - средства для настройки приложений. Под настройкой (иногда "профилированием") понимается задание характеристик приложения и их сохранение для использования при следующем запуске.

Обычно такие задачи решаются с помощью создания конфигурационных файлов. Однако конфигурация описывается каждой задачей по-своему, что не всегда удобно. Windows предлагает общий для всех приложений механизм описания их характеристик, с использованием файлов настройки.

Такие файлы (обычно имеющие расширение .INI) являются обычными ASCII–файлами, разделенными на секции, начинающиеся с имени секции, заключенного в квадратные скобки. Далее следует список параметров в виде ‘параметр=значение’, каждый параметр размещается в отдельной строке. В этот файл можно вставлять комментарии - строки начинающиеся с ‘;’.

Пример взят из файла WORKSHOP.INI:

[User Controls]

BorShade=E:\BORLANDC\WORKSHOP\BWCC.DLL

[RWS_Bitmap]

PercentLeft=50

ZoomLeft=1

К-во Просмотров: 439
Бесплатно скачать Учебное пособие: Семейства шрифтов в Windows