Окт 14

Подстановка шрифта

Новый логический шрифт, созданный функцией CreateFont или CreateFontlndirect, не ассоциируется ни с каким физическим шрифтом, пока он не будет выбран в контекст устройства вызовом функции SelectObject. Процесс поиска и выбора нужного физического шрифта, реализуемый системой в ходе выполнения функции SelectObject, называется подстановкой или отображением шрифта (font mapping).
Процесс отображения логического шрифта довольно сложен. GDI сравнивает параметры, заданные в структуре LOGFONT, с параметрами различных шрифтов, доступных для графического устройства, выбирая наиболее подходящий шрифт. Для сравнения используются штрафные очки, которые имеют разные весовые коэффициенты. Выбирается тот шрифт, для которого штрафная сумма будет наименьшей.
Наиболее важным фактором при подборе физического шрифта является набор символов, который задается в поле IfCharSet При несовпадении этого атрибута очень велика вероятность, что символы будут выводиться совершенно неверными глифами. Следующее по важности поле — это IfOutPrecision. Этот показатель ограничивает рассматриваемые наборы символов определенными типами шрифтов. Затем оценивается поле IfFaceName, а после него— поле IfPitch And Family. Моноширинные шрифты сильно отличаются по внешнему виду от пропорциональных, поэтому этот атрибут также является важным при подстановке. После сравнения указанных полей GDI сравнивает высоту символов, заданную в поле IfHeight, а затем поля IfWidth, Ifltalic, IfUnderline, IfStrikeOut.