Ansi шрифты для windows

Графический интерфейс GDI в Microsoft Windows

5.2. Выбор шрифта в контекст отображения

Для того чтобы написать строку текста заданным шрифтом, этот шрифт следует, подобно остальным объектам GDI, выбрать в контекст отображения. После этого функции TextOut, DrawText и аналогичные будут использовать для вывода текста нужный вам шрифт.

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

Обратим ваше внимание на одно важное обстоятельство.

Приложение заказывает шрифт, описывая его параметры. GDI анализирует запрошенные параметры и подбирает наиболее подходящий шрифт. При этом приложение не может «заставить» GDI выделить ему какой-то конкретный шрифт, указав его название или путь к файлу. Однако приложение может определить параметры шрифта, выбранного пользователем из состава установленных шрифтов, и запросить у GDI шрифт с этими параметрами. В последнем случае будет выделен шрифт, выбранный пользователем.

Выбор встроенного шрифта

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

В качестве единственного параметра этой макрокоманде следует передать идентификатор одного из встроенных шрифтов:

Идентификатор Описание
SYSTEM_FONT Системный шрифт в кодировке ANSI с переменной шириной букв, используется операционной системой Windows для отображения текста в меню, заголовках окон и диалоговых панелях
SYSTEM_FIXED_FONT Шрифт в кодировке ANSI с фиксированной шириной букв. Использовался в старых версиях операционной системой Windows (до версии 3.0) как системный шрифт
ANSI_VAR_FONT Шрифт в кодировке ANSI с переменной шириной букв
ANSI_FIXED_FONT Шрифт в кодировке ANSI с фиксированной шириной букв
OEM_FIXED_FONT Шрифт в кодировке OEM с фиксированной шириной букв
DEVICE_DEFAULT_FONT Шрифт, который используется для данного устройства по умолчанию. Если устройство не имеет своих шрифтов, используется системный шрифт SYSTEM_FONT

После того как вы получили идентификатор шрифта, этот шрифт можно выбрать в контекст отображения макрокомандой SelectFont :

Первый параметр этой макрокоманды определяет идентификатор контекста отображения, в который выбирается шрифт с идентификатором hfont. Она возвращает идентификатор шрифта, который был выбран в контекст отображения раньше, до вызова SelectFont.

Вам не нужно удалять встроенные шрифты, так же как не нужно удалять встроенные кисти и перья.

Определение логического шрифта

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

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

Перед вызовом функции CreateFontIndirect вы должны заполнить структуру LOGFONT нужными значениями, определяющими параметры шрифта. В неиспользованные поля следует записать нулевые значения. Можно записать нулевые значения во все поля, однако это едва ли имеет смысл.

Опишем назначение отдельных полей структуры LOGFONT. При этом мы будем пользоваться метриками шрифта, описанными в 11 томе «Библиотеки системного программиста» (стр. 144).

lfHeight

Высота шрифта в логических единицах (зависят от установленного режима отображения).

Можно указывать положительные и отрицательные значения, а также нуль. Если указано нулевое значение, выбирается шрифт размером в 12 пунктов (значение по умолчанию).

Читайте также:  Mkv codecs for windows 7

Положительные значения определяют высоту ячеек, в которых располагается буква, что соответствует содержимому поля tmHeight структуры TEXTMETRICS.

lfWidth

Ширина символов в логических единицах.

Если указано нулевое значение, используется значение по умолчанию, которое зависит от высоты шрифта и отношения масштабов по осям координат (aspect ratio) для шрифта и устройства вывода.

lfEscapement

Угол между базовой линией шрифта и координатной осью X в десятых долях градуса (угол отсчитывается в направлении против часовой стрелки).

Если в процессе отображения логического шрифта на физический будет выбран растровый или векторный шрифт, текст будет выведен в горизонтальном направлении, так как вращать можно только шрифты True Type и векторные шрифты.

lfOrientation

Это поле определяет ориентацию символов шрифта. К сожалению, операционная система Windows версии 3.1 игнорирует поле lfOrientation.

lfWeight

Вес шрифта. Определяет жирность символов шрифта и может находиться в пределах от 0 до 1000. Файл windows.h содержит определение символических констант для этого поля:

Константа Значение
FW_DONTCARE
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_BLACK 900
FW_HEAVY 900

Вы можете использовать любое из указанных значений, однако следует иметь в виду, что многие шрифты содержат описания символов только для веса FW_NORMAL, FW_REGULAR и FW_BOLD.

lfItalic

Если содержимое этого поля не равно нулю, запрашивается шрифт с наклонными буквами.

lfUnderline

Если содержимое этого поля не равно нулю, запрашивается шрифт с подчеркиванием букв.

lfStrikeOut

Если содержимое этого поля не равно нулю, запрашивается шрифт с перечеркнутыми буквами.

lfCharSet

Можно использовать одну из следующих констант, определенных в файле windows.h:

Константа Значение Описание
ANSI_CHARSET Набор символов в кодировке ANSI
DEFAULT_CHARSET 1 Не используется при отображении шрифтов. Определяется при необходимости запросить шрифт с заданным именем и размером шрифта. Следует использовать с осторожностью, так как если указанного шрифта нет, GDI может выделить шрифт с любым набором символов
SYMBOL_CHARSET 2 Символьный шрифт, такой как, например, Wingdings
SHIFTJIS_CHARSET 128 Шрифт, в котором для представления символов используется двухбайтовая кодировка. Нужен для работы с японской версией Windows
OEM_CHARSET 255 Набор символов в кодировке OEM

lfOutPrecision

Требуемая степень соответствия параметров шрифта.

Это поле используется для того, чтобы указать GDI способ выбора между двумя шрифтами, имеющими одинаковое название, но разный тип. Например, для удовлетворения запроса можно использовать растровый или масштабируемый шрифт с названием OddType. Если в поле lfOutPrecision указать константу OUT_TT_PRECIS, будет выбран масштабируемый шрифт.

Можно указывать одну из следующих констант:

Константа Значение Описание
OUT_DEFAULT_PRECIS Используется точность, заданная по умолчанию
OUT_STRING_PRECIS 1 Выбирается шрифт, для которого соблюдается наибольшее соответствие в размерах символов
OUT_CHARACTER_PRECIS 2 Аналогично OUT_STRING_PRECIS
OUT_STROKE_PRECIS 3 Требуется точное соответствие между запрошенными атрибутами и атрибутами полученного шрифта
OUT_TT_PRECIS 4 Выбирается масштабируемый шрифт True Type, даже если есть подходящий растровый или векторный шрифт
OUT_DEVICE_PRECIS 5 Выбирается шрифт устройства вывода
OUT_RASTER_PRECIS 6 Выбирается растровый шрифт
OUT_TT_ONLY_PRECIS 7 Используются только шрифты True Type

lfClipPrecision

Поле используется для определения способа, при помощи которого обрезается изображение символа, частично попавшего за пределы области ограничения вывода (clipping region), выбранную в контекст отображения.

lfQuality

Качество шрифта, полученного при отображении.

Можно указывать одну из следующих констант:

Константа Описание
DEFAULT_QUALITY Качество не имеет значения
DRAFT_QUALITY Низкое качество. Допустимо масштабирование шрифтов, синтезирование наклонных, жирных, перечеркнутых и подчеркнутых символов
PROOF_QUALITY Высокое качество. Масштабирование шрифтов не допускается. При этом могут быть получены символы, имеющие размер, немного меньший запрошенного

lfPitchAndFamily

С помощью этого поля можно определить, нужна ли фиксированная или переменна ширина символов. Кроме этого, можно определить семейство, к которому должен принадлежать полученный шрифт.

Фиксированная или переменная ширина символов задается при помощи следующих констант:

Константа Описание
DEFAULT_PITCH Не имеет значения, будет ли шрифт иметь фиксированную или переменную ширину символов
FIXED_PITCH Нужен шрифт с фиксированной шириной символов
VARIABLE_PITCH Нужен шрифт с переменной шириной символов

Вы можете объединить при помощи логической операции ИЛИ эти константы с константами, соответствующими семейству шрифта:

Читайте также:  Samsung flow for windows 10
Константа Описание
FF_DECORATIVE Шрифт, содержащий маленькие рисунки (пиктограммы). Примером такого шрифта может послужить шрифт Wingdings, поставляемый в составе Windows
FF_DONTCARE Семейство шрифта не имеет значения
FF_MODERN Семейство Modern. Фиксированная ширина символов, могут быть засечки (но могут и не быть)
FF_ROMAN Семейство Roman. Переменная ширина букв, есть засечки
FF_SCRIPT Семейство Script. Рукописный шрифт
FF_SWISS Семейство Swiss. Переменная ширина букв, нет засечек

lfFaceName

Строка, закрытая двоичным нулем, которая служит названием внешнего вида шрифта. Размер строки (включая закрывающий строку нуль) не должен превышать LF_FACESIZE байт.

Вы можете указать, что вам нужен, например, шрифт «Arial», однако это вовсе не гарантирует, что именно этот шрифт будет предоставлен в распоряжение приложения.

Выбор созданного шрифта в контекст отображения

Если вы заполнили все нужные поля в структуре LOGFONT и затем передали адрес структуры функции CreateFontIndirect, эта функция вернет идентификатор шрифта. Вы должны выбрать шрифт с этим идентификатором в контекст отображения с помощью макрокоманды SelectFont (точно так же, как для встроенных шрифтов):

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

Учтите, что растровые шрифты семейств Modern, Roman и Script, которые пришли из Windows версии 3.0, отмечены как имеющие кодировку OEM, хотя в действительности для этих шрифтов используется кодировка ANSI. Это сделано для того, чтобы в процессе выбора GDI вначале использовал масштабируемые шрифты перечисленных семейств, и только в крайнем случае остановил свой выбор на растровых шрифтах.

После сравнения всех описанных полей GDI сравнивает высоту букв шрифта (поле lfHeight), затем в сравнении принимают участие поля lfWidth, lfItalic, lfUnderline, lfStrikeOut.

Функция ChooseFont

Только что мы приближенно описали алгоритм, который используется GDI для отображения логического шрифта на физический. Нетрудно заметить, что приложение может получить от GDI совсем не тот шрифт, который ему нужен. Поэтому лучше всего предоставить пользователю возможность выбрать шрифт самостоятельно.

Рис. 5.2. Диалоговая панель «Font»

Из списка «Font», который расположен в левой верхней части этой диалоговой панели, пользователь может выбрать название шрифта. Список «Font Style» позволяет выбрать один из доступных стилей, например, наклонный или жирный шрифт. Список «Size» предназначен для выбора размера шрифта. С помощью переключателей «Strikeout» и «Underline», расположенных в поле «Effects», можно создать, соответственно, перечеркнутый и подчеркнутый шрифт. И, наконец, из меню «Color» можно выбрать цвет букв.

Образец выбранного шрифта отображается в поле «Sample».

Обратите внимание на то, что в списке «Font» некоторые шрифты отмечены двойной буквой «T». Это масштабируемые шрифты True Type.

Приведем прототип функции ChooseFont:

Единственный параметр функции является указателем на структуру типа CHOOSEFONT. Эта структура, а также сама функция ChooseFont, определены в файле commdlg.h. Структура определена следующим образом:

Перед вызовом функции ChooseFont вы должны проинициализировать нужные поля структуры CHOOSEFONT, записав в остальные поля нулевые значения.

Опишем назначение отдельных полей структуры CHOOSEFONT:

Источник

Список стандартных шрифтов Windows

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

Например, большинство типографий не примут документ, сверстанный с использованием системных шрифтов. Это связано с тем, что стандартные шрифты могут несколько отличаться в разных версиях Windows.

А вот при разработке веб-страницы, напротив, следует выбирать шрифт из набора стандартных. Ниже приведена таблица присутствия базовых шрифтов в стандартной поставке разных версий Windows.

Название шрифта Win95 WinNT Win98 Win2000 WinMe WinXP
Abadi MT Condensed Light ° ° + ° ° °
Arial + + + + + +
Arial Alternative Regular ° ° ° ° + °
Arial Alternative Symbol ° ° ° ° + °
Arial Black ° ° + + + +
Arial Bold + + + + + +
Arial Bold Italic + + + + + +
Arial Italic + + + + + +
Book Antiqua ° ° + ° ° °
Calisto MT +
Century Gothic ° ° + ° ° °
Century Gothic Bold ° ° + ° ° °
Century Gothic Bold Italic ° ° + ° ° °
Century Gothic Italic ° ° + ° ° °
Comic Sans MS ° ° + + + °
Comic Sans MS Bold ° ° + + + +
Copperplate Gothic Bold ° ° + ° ° °
Copperplate Gothic Light ° ° + ° ° °
Courier + + + + + +
Courier New + + + + + +
Courier New Bold + + + + + +
Courier New Bold Italic + + + + + +
Courier New Italic + + + + + +
Estrangelo Edessa ° ° ° ° ° +
Franklin Gothic Medium ° ° ° ° ° +
Franklin Gothic Medium Italic ° ° ° ° + °
Gautami ° ° ° ° ° +
Georgia ° ° ° + ° +
Georgia Bold ° ° ° + ° +
Georgia Bold Italic ° ° ° + ° +
Georgia Italic ° ° ° + ° +
Georgia Italic Impact ° ° ° ° ° +
Impact ° ° + + + °
Latha ° ° ° ° ° +
Lucida Console ° + + + + +
Lucida Handwriting Italic ° ° + ° ° °
Lucida Sans Italic ° ° + ° ° °
Lucida Sans Unicode ° ° + + ° +
Marlett ° ° + ° + °
Matisse ITC ° ° + ° ° °
Modern + + + + ° °
Modern MS Sans Serif ° ° ° ° ° +
MS Sans Serif + + + + + +
MS Serif + + + + + °
Mv Boli ° ° ° ° ° +
News Gothic MT ° ° + ° ° °
News Gothic MT Bold ° ° + ° ° °
News Gothic MT Italic ° ° + ° ° °
OCR A E+tended ° ° + ° ° °
Palatino Linotype ° ° ° + ° +
Palatino Linotype Bold ° ° ° + ° +
Palatino Linotype Bold Italic ° ° + ° + °
Palatino Linotype Italic ° ° ° + ° +
Roman ° + ° + ° +
Script ° + ° + ° +
Small Fonts ° + ° + ° +
Smallfonts + ° + ° + °
Symbol + + + + + +
Tahoma ° ° + + + +
Tahoma Bold ° ° + + + +
Tempus Sans ITC ° ° + + ° °
Times New Roman + + + + + +
Times New Roman Bold + + + + + +
Times New Roman Bold Italic + + + + + +
Times New Roman Italic + + + + + +
Trebuchet ° ° ° ° + °
Trebuchet Bold ° ° ° ° + °
Trebuchet Bold Italic ° ° ° ° + °
Trebuchet Italic ° ° ° ° + °
Trebuchet MS ° ° ° + ° +
Trebuchet MS Bold ° ° ° + ° +
Trebuchet MS Bold Italic ° ° ° + ° +
Trebuchet MS Italic ° ° ° + ° +
Tunga ° ° ° ° ° +
Verdana ° ° + + + +
Verdana Bold ° ° + + + +
Verdana Bold Italic ° ° + + + +
Verdana Italic ° ° + + + +
Webdings ° ° + + + +
Westminster ° ° + ° + +
Wingdings + + ° + ° +
WST_Czech ° ° ° ° ° +
WST_Engl ° ° ° ° ° +
WST_Fren ° ° ° ° ° +
WST_Germ ° ° ° ° ° +
WST_Ital ° ° ° ° ° +
WST_Span ° ° ° ° ° +
WST_Swedм ° ° ° ° ° +

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

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

Безопасные шрифты: Arial, Courier, Courier New, MS Sans Serif, MS Serif, Symbol, Times New Roman.

Существуют шрифты, которые не входят в поставку Windows ранних версий, однако почти обязательно присутствуют в системе (устанавливаются с дополнительным программным обеспечением, например, Microsoft Office). Безопасные шрифты: Arial, Courier, Courier New, MS Sans Serif, MS Serif, Symbol, Times New Roman.

Читайте также:  Gadget for windows 7 weather

Источник

Поделиться с друзьями
Советы экспертов и специалистов
Adblock
detector