Пользовательский выбор
Большинство шрифтов создаются и выбираются с привлечением к этим операциям пользователя. Например, прикладные программы обработки текстов дают возможность пользователю выбирать уникальные шрифты для заголовков, сносок и основного текста. После того, как пользователь выберет шрифт, используя Диалоговое окно Шрифт (Font) и нажмет кнопку
OK, функция ChooseFont инициализирует члены структуры LOGFONT атрибутами требуемого шрифта. Чтобы использовать этот шрифт для операций вывода текста, приложение должно сначала создать логический шрифт, а затем выбрать этот шрифт в своем контексте устройства. Логический шрифт (logical font ) - предоставляемое приложением описание идеального шрифта. Разработчик может создавать логический шрифт путем вызова функции CreateFont или CreateFontIndirect. В последнем случае, приложение вызывает CreateFontIndirect и сообщает указатель на структуру LOGFONT, инициализированную функцией ChooseFont. В большинстве случаев более рационально вызвать функцию CreateFontIndirect, потому что CreateFont требует нескольких параметров, в то время как CreateFontIndirect требует только одного — указателя на LOGFONT.Прежде, чем приложение сможет фактически начать выводить текст логическим шрифтом, оно должно найти самое близкое соответствие шрифтам, хранимым внутри устройства и шрифтам, ресурсы которых были загружены в операционную систему. Шрифты, хранимые в устройстве или в операционной системе, называются
физические шрифты (physical fonts). Процесс поиска физического шрифта, который наиболее близко соответствует заданному логическому шрифту - называется подстановкой шрифтов. Этот процесс происходит тогда, когда программа вызывает функцию SelectObject и сообщает дескриптор, идентифицирующий логический шрифт. Подстановка шрифта выполняется при помощи использования внутреннего алгоритма, который сравнивает атрибуты требуемого логического шрифта с атрибутами доступных физических шрифтов. Когда алгоритм средства отображения шрифтов завершает свой поиск и выясняет самое близкое возможное соответствие, функция SelectObject возвращает значение, а приложение может начинать выводить текст новым шрифтом.Функция
SetMapperFlags устанавливает, действительно ли алгоритм подстановки шрифта ищет только физические шрифты с отношениями сторон изображения, которые соответствуют физическому устройству. Отношение ширины знака к его высоте для устройства - это коэффициент, сформированный шириной и высотой пикселя для этого устройства.Системный шрифт (также известный как шрифт оболочки или заданный по умолчанию) - это шрифт, используемый для текста в заголовках окна, меню и диалоговых окнах. В Windows 95/98/Me и Windows NT, это - шрифт MS Sans Serif . В Windows 2000/XP, это - Tahoma.