Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Приступив основательно к обустройству своей Арч-флешки, я столкнулся в числе прочего с дикой багофичей то ли Xorg, то ли драйверов к нему. Заключается она в том, что если в xorg.conf или xorg.conf.d/* НЕ заданы принудительно размеры экрана в мм или DPI, то xorg, судя по логу, сначала определяет ПРАВИЛЬНЫЕ физические размеры экрана, а потом вдруг меняет их на совершенно левые “96dpi”, которые разумеется не соответствуют действительности, и приводят искажению масштаба шрифтов. Если на стационарно установленном на определённую машину арче размеры можно тупо задать в конфиге и забыть о проблеме, то от переносной системы, от которой требуется работа на разном железе и разных экранах, требуется бОльшее. Пока я пилю временное решение – скрипт, который по выводу xrandr и логам Xorg пытается найти указания на истинные размеры экрана, после чего восстанавливает их через xrandr –fbmm Препирательства с разработчиками Xorg планируются, но пока не до них. Если кто-то уже сталкивался с такой проблемой, было бы очень интересно узнать, что из этого вышло :) |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
к моей радости не сталкивался. Все шрифты прямые, разрешение верное. Но в теории готов к таким вариантам. По своей философии я считаю, что главное увидеть хоть чтото, а потом временно допилить. Странно, когда я планировал перенос системы на флешку, для работы с нее, я просто был уверен, что у меня всегда будут такие проблемы, подобные описанной, однако я их не встречаю. Юзаю “открытки”(открытые дрова). Может это ксорг, я просто давно не обновлял свою, надо бы посмотреть.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
lampslave |
|
Темы:
32
Сообщения:
4801
Участник с: 05 июля 2011
|
По всей видимости, xorg устанавливает 96dpi по той же причине, по которой это делает, например, firefox - чтобы не сыпались интерфейсы. Картинки через dpi не изменяются, соответственно при различных dpi будут различные пропорции в интерфейсах. С точки зрения дизайна это не есть хорошо (стандартные иконки но маленький шрифт или стандартные иконки и огромный шрифт), поэтому приняли, так сказать, точку отсчёта в 96dpi. Лечить это лучше не стоит, надо просто выставить размеры шрифтов с учётом этого dpi и радоваться жизни. |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
По всей видимости, xorg устанавливает 96dpi …Что-то не понял, где это xorg устанавливает эти 96? У меня не устанавливает и не устанавливал. Вот то, что он лажает с определением физического размера дисплея - факт и, как следствие, начинается лажа со шрифтами. Хотя, если говорить о Nouveau, так это вообще, вещь в себе, не менее чем блоб. Она и ставит, хоть тресни, эти пресловутые 96dpi. Блоб хоть верно ставит 90х88 (мои), но благодаря xorg-у, неверно определяется размер дисплея. Или xorg преднамеренно искажает размер, чтобы втиснуть в него эти свои 96 точек? Вобщем, начинаются всякие ухищрения, типа “UseEdidDpi” “False”, “DisplaySize 473.7 296.0” и подтягивание разрешения до “красивых” 90х90dpi - но это, конечно, не в случае с флешкой и случаев, когда размер и разрешение дисплея заранее неизвестны. Это просто в кач-ве иллюстрации “корректной” работы xorg-а. |
lampslave |
|
Темы:
32
Сообщения:
4801
Участник с: 05 июля 2011
|
Кто ставит я понятия не имею, просто рассказал о возможной причине такого поведения. |
nafanja |
|
![]()
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
Может я не в тему, размеры экрана в пикселях вроде бы. А xorg не может определить какое разрешение нужно пользователю и выставляет самое большое какое возможно…
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
Дело в том, что пикселы у экранов бывают разные, а xorg, по всей вероятности, знает какой-то пиксел, “средний по больнице” и лепит, исходя из этого. Вот, например, откуда xdpyinfo берёт инфу? (это уже с подправленным размером, ну, в данном случае, из 20-monitor.conf) xdpyinfo | grep -B1 dot dimensions: 1680x1050 pixels (474x296 millimeters) resolution: 90x90 dots per inch На всякий: xdpyinfo > extra/xorg-xdpyinfo |
cucullus |
|
![]()
Темы:
257
Сообщения:
3438
Участник с: 06 июня 2007
|
nafanja, что-то Вы совсем тему не сечёте…
такие дела.
|
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Вот у меня драйвер intel, греп из Xorg.0.log : [ 602.028] (II) intel(0): clock: 108.0 MHz Image Size: 376 x 301 mm [ 602.070] (**) intel(0): DPI set to (85, 86) [ 602.245] (II) intel(0): Setting screen physical size to 338 x 270 Image Size: 376 x 301 mm и правильный физический DPI его экрана, то есть числи его физических пикселей на физический дюйм поверхности по вертикали и горизонтали: DPI set to (85, 86) А потом вдруг, безо всякого требования в каких-либо конфигах, неотключаемо и неуловимо, вдруг ни с того ни с сего xorg делает Setting screen physical size to 338 x 270 и эти фиктивные размеры экрана задаются с тем, чтобы обмануть программы, и заставить их считать, что dpi равен не 86, как это физически у монитора, и это нельзя никакими силами изменить, а якобы 96, как это по традиции делается в форточках. В результате программы считают, что экран МЕНЬШЕ, чем на самом деле, и делают шрифты БОЛЬШЕ, чем надо. Ещё раз напоминаю, что речь идёт о СИСТЕМЕ НА ФЛЕШКЕ, которая должна работать на разных машинах с разными экранами и разными DPI, и у меня нет никакой возможности ни задать размеры принудительно в xorg.conf.d/ , ни подогнать шрифты, потому что на другой машине всё опять будет иначе, и подгонять всё придётся иначе. К примеру, если физическое разрешение будет БОЛЬШЕ, чем эти липовые 96dpi, и дурацкая багофича приведёт к тому, что все шрифты на этот раз станут слишком мелкими. Собственно, меня НЕ интересует вопрос сермяжной правды в действиях разработчиков xorg и драйверов к нему по попытках виртуально изменить физичесий DPI ЖК-экрана, который на самом деле изменить невозможно, и не интерфейсы, которые якобы посыплются. Меня интересует вот что – я не нахожу ШТАТНОГО средства, позволяющего НЕ ДОПУСТИТЬ этого безобразия, когда размеры с самого начала определяются корректно, но потом без моего разрешения изменяются на неправильные. Я не нахожу опции, которая бы позволяла сохранить изначально правильно определённые размеры, а не задавать их принудительно от фонаря. Ну, а пока я сделал вот такой костыль: #!/bin/bash sethwdpi() { if [[ -n $RES && $RES != "0x0" ]] ; then echo "Set size: $RES" xrandr --fbmm $RES exit fi } RES=`xrandr|grep -m 1 ' connected'|sed -n 's/^.* \([0-9]\+\)mm x \([0-9]\+\)mm.*$/\1x\2/p'` sethwdpi RES=`sed -n 's/^.*Image Size:\s\+\([0-9]\+\) x \([0-9]\+\).*$/\1x\2/p' /var/log/Xorg.0.log` sethwdpi echo 1 |
nafanja |
|
![]()
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
cucullusага я в этом полный ноль, поэтому и настраиваю только так /etc/X11/xorg.conf.d/10-monitor.conf Section "Monitor" Identifier "Monitor0" VendorName "Unknown" EndSection Section "Device" Identifier "Device0" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x1024" EndSubSection EndSection
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |