Linux И Wysiwyg

В этом очень небольшом очерке я расскажу о нюансах, из-за которых 100% масштаб в графическом редакторе на экране может не совпадать с реальным размером.

Мне нужно было распечатать текст и графику на существующем листе бумаги.

Я решил сделать быструю адаптацию.

Выставляю масштаб 100%, подношу лист к экрану, и между тем, что на экране и на бумаге, разница в процентах 20%.

Это происходит, когда фактическое разрешение экрана (в точках на дюйм) не соответствует тому, что думает программа.

Когда перед программой стоит задача нарисовать на экране что-то длиной, например, L см, она вычисляет, сколько это будет в пикселях.

Для этого она получает DPI, а дальше примерно по следующей формуле

Linux и WYSIWYG

получает длину в пикселях.

Собственно проблема в том, как программа может получить этот DPI, и тут начинаются танцы с бубном.

В общем, монитор способен передать свои линейные размеры видеокарте, а та в свою очередь — ОС.

Для этого используются интерфейс DDC (Display Data Channel) и протокол EDID. И тут начинаются проблемы.

Проблема №1 — протокол EDID передает линейные размеры экрана с точностью до см.

Казалось бы, не проблема, но полсантиметра на маленьком экране (как у ноутбуков) — это 3-4%.

Не катастрофа, но ее можно избежать.

Проблема №2 — X.org, несмотря на то, что читает размеры по EDID, почему-то всё равно не применил их в моём случае и выставил DPI 96. Узнать это можно следующей командой в графическом терминале :

  
   

$ xdpyinfo | grep resolution resolution: 96x96 dots per inch

Проблема №3. Приложение может использовать другие источники для получения DPI. Это происходит с приложениями, использующими библиотеку GTK3. Почему это? Не знаю.

Оставим это на усмотрение разработчиков GTK3. Итак, давайте подправим все это дело.

1) Измерим монитор линейкой.

В моем случае получается 347 мм на 195 мм.

2) Рассчитайте DPI. Для этого нам нужно знать разрешение монитора.

У меня 1600х900. Скорее всего, DPI одинаков для вертикального и горизонтального размеров, но это не всегда так.



Linux и WYSIWYG

.



Linux и WYSIWYG

.

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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.