LINUX.ORG.RU

Не получается сменить DPI

 ,


0

1

Собственно, сабж.

Ноутбук 12,1", встроенное видео HD3000, разрешение 1366х768. Т.е. стандартный DPI для такого экрана - 130. По умолчанию же установлен 96. Никаких дикективы конфига иксов и параметров их запуска не меняют ситуации.

Xorg.conf:

$ cat /etc/X11/xorg.conf.d/10-intel.conf 
#Option "AccelMethod" "sna"
Section "Module"
    Load  "ddc"
EndSection

Section "Device"
    Identifier "video"
    Driver "intel"
    Option "AccelMethod" "sna"
    Option "DPI" "130 x 130"
    Option "UseEdidDpi" "false"
    Option "NoDDC" "true"
EndSection

Section "Monitor"
    Identifier "Monitor0"
    DisplaySize		268 151
EndSection

Логи:

[    21.250] (II) intel(0): Output LVDS1 using initial mode 1366x768
[    21.250] (II) intel(0): Using default gamma of (1.0, 1.0, 1.0) unless otherwise stated.
[    21.250] (**) intel(0): Display dimensions: (270, 150) mm
[    21.250] (**) intel(0): DPI set to (128, 130)
[    21.250] (II) Loading sub module "dri2"
[    21.250] (II) LoadModule: "dri2"
[    21.250] (II) Loading /usr/lib/xorg/modules/extensions/libdri2.so
...
[    21.645] (==) intel(0): DPMS enabled
[    21.674] (II) intel(0): [DRI2] Setup complete
[    21.674] (II) intel(0): [DRI2]   DRI driver: i965
[    21.674] (II) intel(0): direct rendering: DRI2 Enabled
[    21.674] (WW) intel(0): Option "DPI" is not used
[    21.674] (WW) intel(0): Option "UseEdidDpi" is not used
[    21.674] (WW) intel(0): Option "NoDDC" is not used

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

В итоге получается:

$ xdpyinfo | grep -B2 resolution
screen #0:
  dimensions:    1366x768 pixels (361x203 millimeters)
  resolution:    96x96 dots per inch

Как можно эту хрень победить? Кто-нибудь сталкивался?

Единственный вариант, при котором получается:

$ xdpyinfo | grep -B2 resolution
screen #0:
  dimensions:    1366x768 pixels (266x150 millimeters)
  resolution:    130x130 dots per inch

Это xrand --dpi 130 в ~/.xinitrc.

Но при этом шрифты остаются такими же гигантскими, если им в ~/.Xdefaults прописать Xft.dpi: 130

mega_venik ★★★
() автор топика

Я-бы закомментировал секцию DisplaySize, и попробовал изменить секцию DPI следующим образом:

Option «DPI» «128x128» # убрать пробелы между цифрами и разделителем!

anonymous
()

Или попробовать воткнуть Option «DPI» в Section «Monitor»

muzenbaher
()

У меня Option «DPI» «96x96», ну в смысле без пробелов писал, работает

Noname
()
Ответ на: комментарий от ValdikSS

Так а в чем проблема? Они и должны быть гигантскими.

Проблема в том, что не должны. Величина кегля измеряется в пунктах, т.е. в физической величине, которая должна быть постоянна независимо от разрешающей способности устройства отображения; при изменении разрешения должно изменятся только количество точек на единицу площади, т.е. чёткость рисунка, но никак не размер объекта. Если у меня задан шрифт размером 8pt (~3мм), то он должен быть 3mm хоть на экране размером с почтовую марку и разрешением 60х40px, хоть на транспаранте размером 100х10 метров и разрешением 10000dpi. А если при изменении разрешения начинает изменятся величина шрифта заданная в пунктах, и на экране скажем 96dpi он действительно соответствует ~3мм, а при 192dpi превращается в буквицу размером 1см, то это означает только одно — программист который написал такой алгоритм полный кретин.

anonymous
()
Ответ на: комментарий от anonymous

Я не очень вас понял. Мне кажется, у меня именно так, как вы описали: изменяется только кол-во точек на единицу площади.

ValdikSS ★★★★★
()
Ответ на: комментарий от anonymous

К сожалению, не помогло.

И DPI в секции «Monitor» тоже

mega_venik ★★★
() автор топика
Ответ на: комментарий от ValdikSS

Нет. не должны, как там ниже описал анонимус) должна чёткость повыситься. Но вместо этого просто увеличивается размер.

У меня с убунтовыми патчами шрифты. Если не удастся DPI победить, может infinality попробую - вдруг там рендеринг лучше.

mega_venik ★★★
() автор топика

Вот ещё очень интересный кусок лога иксов, идущий сразу после указанного выше:

[    14.765] (II) GLX: Initialized DRI2 GL provider for screen 0
[    14.766] (II) intel(0): switch to mode 1366x768 on crtc 3 (pipe 0)
[    14.786] (II) intel(0): Setting screen physical size to 361 x 203

Хотя размер экрана должен быть 270х150, он его устанавливает в 361х203.

Связано ли это как-то с DRI2, выяснить не удалось. Но бага, судя по треккерам, очень древняя и тянется минимум с 2009 года.

https://bugs.freedesktop.org/show_bug.cgi?id=25615

https://bugzilla.redhat.com/show_bug.cgi?id=540783

mega_venik ★★★
() автор топика

по-умолчанию?
это как?
иксы используют EDID и от него пляшут
в логе видно, что далеко не 96 там

Option «UseEdidDpi» «false»

за это надо убивать

megabaks ★★★★
()
Ответ на: комментарий от megabaks

А как насчёт

[ 21.674] (WW) intel(0): Option «UseEdidDpi» is not used

?

mega_venik ★★★
() автор топика
Ответ на: комментарий от megabaks

за это надо убивать

Было бы за что. А) Опция игнорится, как можно видеть по логу. Б) Даже если её убрать, ни чёрта не меняется.

mega_venik ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.