Hlavní navigace

Když se vám zblázní DPI

12. 10. 2012 10:37 (aktualizováno) | Petr Krčmář

Zajímavá historka s dobrým koncem. O tom, jak se mi pomátlo DPI a aplikace se rozhodly, že fonty přizpůsobí mému dvoumetrovému displeji.

Poznámka: Tohle je pro mou děravou hlavu a pro všechny, kteří budou mít stejný problém. Pokud máte v některých aplikacích miniaturní písmo, jste tu správně.

Před pár dny jsem potřeboval kvůli něčemu spustit VirtualBox a po spuštění na mě vyskočila zajímavá obrazovka.

Fonty byly mikroskopické a prakticky nečitelné. Začal jsem zjišťovat, proč to dělá jen ve VirtualBoxu a zjistil jsem, že problémem jsou aplikace používající knihovnu Qt. Těch mám v počítači jen pár, ale u všech se projevoval stejný problém: miniaturní fonty.

Nechal jsem to být a druhý den jsem začal zkoumat, co se děje. V nastavení to nebylo, protože v qtconfig (ve kterém byla legrace něco naklikat) změna nastavení nepomohla. Až postupným pátráním jsem přišel na to, kde je problém.

$ xdpyinfo | grep -B1 dot
  dimensions:    1440x900 pixels (1912x1195 millimeters)
  resolution:    19x19 dots per inch

Můj Debian si myslí, že mám displej o velikosti dva krát jeden metr. To je na notebook poměrně dost. Zároveň samozřejmě spočítal, že se mi na palec vejde 19 bodů a tomu přizpůsobil i velikosti písma. Jedinou záhadou zatím zůstává, proč to neovlivnilo GTK aplikace, ale jen Qt.

Řešení pak bylo prosté, vzal jsem svinovací metr, změřil jsem si velikost displeje v milimetrech a připsal ji do konfiguračního souboru /etc/X11/xorg.conf do sekce  Monitor.

Section "Monitor"
        Identifier      "Obecný monitor"
        Option          "DPMS"
        DisplaySize     332 210
EndSection

Po restartu X serveru už bylo všechno v pořádku.

$ xdpyinfo | grep -B1 dot
  dimensions:    1440x900 pixels (335x209 millimeters)
  resolution:    109x109 dots per inch

Qt aplikace vypadají normálně, u GTK se mírně měnila velikost fontů, ale nijak zásadně. V každém případě už systém správně ví, jak má velkou obrazovku a kolik bodíků se na ni vejde.