Если ваш текст выровнен по горизонтальной или вертикальной оси, то вы используете DPI для другой оси, чтобы указать высоту.Когда создается экземпляр шрифта, он принимает во внимание другое измерение.
Например, если вы хотите нормально ориентированный текст, вы вычисляете высоту пикселя в терминах вертикального DPI:
lf.lfHeight = -::MulDiv(point_size, ::GetSysMetrics(hdc, LOGPIXELSY), 72);
Если ваш текст повернут на 90 градусов, вы бы использовали LOGPIXELSX
вместо LOGPIXELSY
.
При этом я никогда не видел экран Windows, для которого не было бы DPIодинаково в обоих направлениях.Я видел их различия на некоторых принтерах, и драйверы справляются с этим непоследовательно, что привело к этому неотвеченному вопросу .