воскресенье, 10 мая 2009 г.

Как определить включение "больших шрифтов"?

Это перевод How do you detect "Large Fonts"? Автор: Реймонд Чен.

Когда люди спрашивают "Как мне определить, что включены большие шрифты?", они на самом деле спрашивают не именно о больших шрифтах. Скорее, большие шрифты - это просто обобщение для "необычное DPI".

По-умолчанию Windows использует DPI равное 96 пикслей на дюйм (pixels per inch). Другими словами, если Windows хочет нарисовать линию длиной 1 дюйм, она рисует 96 пикселей. Конечно же, реальный физический размер этой линии зависит от вашего разрешения экрана и размера вашего монитора. Значение 96 - это просто формальность.

Вы можете изменить это значение DPI в настройках экрана в Панели управления, либо выбором опции Большие Шрифты, либо выбором пользовательского размера шрифта. Стандартный размер - это 96 dpi, Большой - это 120 dpi, пользовательский - это, ну, пользовательский.

DPI выше 96 будут становиться всё более частым выбором с улучшением технологии LCD. Программы могут запросить настройки DPI с помощью вызова GetDeviceCaps с LOGPIXELSX экранного DC.
function GetScreenDPI: Integer;
var
hdcScreen: HDC;
begin
hdcScreen := GetDC(0);
if hdcScreen = 0 then
RaiseLastOSError;
try
Result := GetDeviceCaps(hdcScreen, LOGPIXELSX);
finally
ReleaseDC(0, hdcScreen);
end;
end;
Код выше предполагает, что пиксели являются квадратными, что имеет место для большинства современных устройств (вы можете устанавливать необычные экранные разрешения, при которых пиксели не будут квадратными, но большинство людей избегают таких разрешений).

В старые дни было много устройств с не-квадратными пикселями. Например, у видео-адаптера EGA были пиксели, высота которых в 1.33 раза больше их ширины.

Для устройств с не-квадратными пикселями, значения LOGPIXELSX и LOGPIXELSY будут различными. На EGA, если значение метрики LOGPIXELSX было 96, тогда метрика LOGPIXELSY было бы 72, т.к. в одном дюйме было бы 72 пикселей по вертикали. Аналогично, значения ASPECTX, ASPECTY и ASPECTXY для не-квадратных пикселей тоже выглядят достаточно интересно, как показано на этой диаграмме:




36
27
45


Значение ASPECTX равно 27, а ASPECTY - 36, показывая соотношение 4:3 вертикали к горизонтали, а ASPECTXY равно 45, представляя гипотенузу.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

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