Особенности 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()).

 

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

 

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

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

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

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

[User Controls]

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

[RWS_Bitmap]

PercentLeft=50

ZoomLeft=1

ZoomRight=1

bVert=0

[RWS_Font]

PercentLeft=50

ZoomLeft=4

ZoomRight=1

bVert=1

Для работы с такими файлами Windows предоставляет набор функций, осуществляющих запись и чтение параметров:

int GetProfileInt(lpszSection, lpszEntry, nDefault);

int GetProfileString(lpszSection, lpszEntry, lpszDefault, lpsBuffer, nMaxBuffer);

BOOL WriteProfileString(lpszSection, lpszEntry, lpszString);

Параметр lpszSection задает имя секции (скобок в имени указывать не надо), lpszEntry - имя параметра. Если мы получаем значение параметра, то можем указать значение по умолчанию, которое возвращается, если данный параметр не найден.

С помощью функции GetProfileString() можно получить список имен всех параметров в секции, указав lpszEntry= NULL. При этом имена параметров секции будут скопированы в буфер последовательно друг за другом, каждое имя будет заканчиваться 0 и после последнего имени будут стоять два 0.

Функция WriteProfileString() позволяет не только записывать параметры, но и удалять, для чего надо указать lpszString=NULL. Можно удалить целиком всю секцию, указав lpszEntry=NULL.

Все три рассмотренных функции используют файл WIN.INI. При этом имя секции часто ассоциируется с именем приложения. (Поэтому в документации имя секции часто называется именем приложения).

Конечно, часто бывает неудобно использовать общий файл настройки для всех существующих приложений (при этом, в частности, трудно организовать удаление приложений). Windows предоставляет возможность использовать собственный файл настройки (и даже несколько). Для работы с собственными файлами настройки предусмотрены еще три функции:

int GetPrivateProfileInt( lpszSection, lpszEntry, nDefault, lpszIniFile );

int GetPrivateProfileString(

lpszSection, lpszEntry, lpszDefault, lpsBuffer, nMaxBuffer, lpszIniFile);

BOOL WritePrivateProfileString(

lpszSection, lpszEntry, lpszString, lpszIniFile);

Последний параметр этих функций задает имя файла настройки. Если Вы не указываете путь к файлу, то он размещается в каталоге Windows.

Дата: 2019-07-25, просмотров: 167.