В этом очень небольшом очерке я расскажу о нюансах, из-за которых 100% масштаб в графическом редакторе на экране может не совпадать с реальным размером.
Мне нужно было распечатать текст и графику на существующем листе бумаги.
Я решил сделать быструю адаптацию.
Выставляю масштаб 100%, подношу лист к экрану, и между тем, что на экране и на бумаге, разница в процентах 20%.
Это происходит, когда фактическое разрешение экрана (в точках на дюйм) не соответствует тому, что думает программа.
Когда перед программой стоит задача нарисовать на экране что-то длиной, например, L см, она вычисляет, сколько это будет в пикселях.
Для этого она получает DPI, а дальше примерно по следующей формуле
получает длину в пикселях.
Собственно проблема в том, как программа может получить этот DPI, и тут начинаются танцы с бубном.
В общем, монитор способен передать свои линейные размеры видеокарте, а та в свою очередь — ОС.
Для этого используются интерфейс DDC (Display Data Channel) и протокол EDID. И тут начинаются проблемы.
Проблема №1 — протокол EDID передает линейные размеры экрана с точностью до см.
Казалось бы, не проблема, но полсантиметра на маленьком экране (как у ноутбуков) — это 3-4%.
Не катастрофа, но ее можно избежать.
Проблема №2 — X.org, несмотря на то, что читает размеры по EDID, почему-то всё равно не применил их в моём случае и выставил DPI 96. Узнать это можно следующей командой в графическом терминале :
Проблема №3. Приложение может использовать другие источники для получения DPI. Это происходит с приложениями, использующими библиотеку GTK3. Почему это? Не знаю.$ xdpyinfo | grep resolution resolution: 96x96 dots per inch
Оставим это на усмотрение разработчиков GTK3. Итак, давайте подправим все это дело.
1) Измерим монитор линейкой.
В моем случае получается 347 мм на 195 мм.
2) Рассчитайте DPI. Для этого нам нужно знать разрешение монитора.
У меня 1600х900. Скорее всего, DPI одинаков для вертикального и горизонтального размеров, но это не всегда так.
.
.
3) Откройте файл конфигурации X.org /etc/X11/xorg.conf. Если такого файла нет, то от root нужно запустить: X.org -configure
и запишите полученный файл по указанному пути.
Добавьте строку DisplaySize в раздел «Монитор», у вас должно получиться что-то похожее на это:
Раздел «Монитор» Идентификатор «Монитор0» Имя поставщика «Поставщик монитора» Имя модели «Модель монитора» Размер дисплея 347 195 Конечная секцияТаким образом мы решим задачу 1 и 2. 4) Создайте файл ~/.
Xresources или добавьте к существующему параметру DPI:
Xft.dpi: 117Таким образом мы решим задачу 3. Затем перезапустите X-сессию и все должно подхватиться.
Теги: #linux #Настройка Linux #Работа с векторной графикой #Графические оболочки #приложения для определения dpi #сервер x.org #gtk3
-
Кто Такой «Системный Администратор»
19 Oct, 24 -
В Тени Большого Космоса
19 Oct, 24 -
Почему Я Боюсь Стать «Накачанным Человеком»
19 Oct, 24 -
Ieee Готовит Стандарт Ethernet 1 Тбит/С
19 Oct, 24 -
Начало Научной Карьеры (Часть 7)
19 Oct, 24