Menu Chiudi

Migliorare la qualita’ della resa dei caratteri con “DisplaySize”

di felipe

5/11/06: aggiunta riferimento al commento di nikk (grazie!)

I soliti problemi con i caratteri in X?

Questa guida vi servira’ se vi siete mai posti una delle seguenti domande:

  1. Perche’ se non uso l’antialiasing i caratteri fanno schifo e sono illeggibili?
  2. Perche’ se invece uso l’antialiasing vedo sempre “sbavature” (es. grassetto)?
  3. Perche’ i caratteri predefiniti delle app GTK o Qt sono troppo grandi?
  4. Perche’ i caratteri predefiniti delle app GTK o Qt sono troppo piccoli?
  5. Perche’ l’unico carattere che rende bene sul mio desktop e’ Bitstream Vera?

…e posso continuare all’infinito!

C’e’ da dire tutti i “problemi” trattati in questo piccolo articolo sono ben poca cosa rispetto ai problemi che avevamo coi caratteri soltanto un paio d’anni fa, quando i desktop “free” facevano abbastanza schifo dal punto di vista strettamente estetico. Eppure quel “poca cosa” puo’ fare la differenza, quindi armiamoci di shell e di 10 minuti di pazienza.

NOTA: Questa guida presuppone che stiate usando un OS recente, con XFree 4.3 o superiore (meglio Xorg) e con fontconfig installato e funzionante. Non risolveremo nessun problema, semmai andremo a perfezionare la resa visiva di un sistema che gia’ funziona correttamente.

Individuare il problema

Vista la modularita’ INTRINSECA (wow) dei sistemi GNU e’ normale che chi li impacchetta cerchi di fare delle “approssimazioni” sull’hardware tipico sul quale andranno installati. Una delle approssimazioni piu’ banali e comuni, ma allo stesso tempo piu’ complicate da aggirare con soluzioni automatizzate, e’ quella della configurazione del monitor.

Ogni monitor ha dimensioni peculiari, e questo e’ specialmente vero per gli LCD o alcuni monitor ultrawide o cose del genere. Quello che viene approssimato da X e’ appunto la dimensione, per cui i pixel non risultano quadrati e di questo ne soffre l’allineamento delle linee sul display. Di conseguenza i caratteri possono apparire distorti o sbavati.

Vi propongo una piccola prova per verificare se il vostro monitor e’ configurato bene al 100%. Aprite una shell e date questo comando:

felipe@fuzzy:~$ xdpyinfo | grep resolution
   resolution:    94x98 dots per inch

Sono quasi sicuro che nessuno ha una cifra “regolare”, nel senso che i valori di X e Y non sono uguali. Adesso provate questo altro comando:

felipe@fuzzy:~$ xdpyinfo | grep dimensions
  dimensions:    1280x1024 pixels (342x274 millimeters)

NOTA: questi numeri sono solo degli esempi… non li copiate e usate i comandi descritti per ottenere queste info dai vostri monitor.

Il fatto e’ che, pur avendo molti monitor dei valori DPI (dots per inch) specifici, tutte le installazioni di X livellano le impostazioni, appundo approssimando. Quei valori tra parentesi sono le dimensioni del nostro monitor, facciamo un po’ di calcoli e mettiamoli direttamente dentro il file di configurazione di X.

Prendiamo il secondo valore tra parentesi: 274, e facciamo delle prove finche’ non arriviamo ad ottenere un numero intero:

1280 / 1024 * 274 = 342,5
1280 / 1024 * 275 = 344,75
1280 / 1024 * 276 = 345

Quindi 345 276 sarebbero perfetti per la nostra risoluzione. Notare che non sono gli unici valori ammissibili, visto che anche 1280/1024*272 da’ 340, ossia un numero intero… Quale sia la coppia di valori da preferire, tra 340 272 e 345 276, e’ una informazione che non sono riuscito a trovare in rete. Credo vadano bene entrambe.

Risolvere il problema

“Apriamo” il file di configurazione di Xfree o Xorg con un editor qualsiasi, tipo nano, vim, gedit, kwrite… insomma uno qualsiasi. Il file e’ /etc/X11/xorg.conf, oppure /etc/X11/XF86Config.

Cerchiamo dentro quel file la sezione Monitor e aggiungiamo i valori cosi’ trovati, ecco la mia:

Section "Monitor"
        Identifier      "F-417"
        Option          "DPMS"
        DisplaySize     345 276  #

Se avete Ubuntu Edgy o cmq una distro con Xorg 7 dovete seguire le istruzioni che trovate nel commento #7, più in basso in questa pagina (grazie nikk!)

Salvate il file. Finito! A questo punto riavviamo X, ma dobbiamo essere sicuri che sia riavviato “da zero”, per cui se non sapete esattamente come comportarvi potete pure riavviare, invece per i piu’ smaliziati basta un Ctrl Alt BackSpace.

Verifica

Rieccoci, una volta riavviato X torniamo a dare i comandi di prima:

felipe@fuzzy:~$ xdpyinfo | grep dots
  resolution:    96x96 dots per inch

felipe@fuzzy:~$ xdpyinfo | grep dimensions
  dimensions:    1280x1024 pixels (342x274 millimeters)

Come vedete adesso i valori sono regolari! Se doveste notare un nuovo valore nelle dimensioni tra parentesi potreste tornare a sistemare xorg.conf, dopo non dovrebbe cambiare piu’.

Adesso i caratteri in Firefox e nelle app GTK dovrebbero apparire piu’ chiari e definiti e (se si vuole, io preferisco di no) si puo’ anche disabilitare l’antialiasing e avere dei caratteri comunque leggibili. Questo risolve – si spera – le piccole imperfezioni a cui accennavo in apertura, e di cui soffrono tutte le installazioni predefinite.

Se non avete esigenze particolari la guida finisce qui, se invece avete la noia dei caratteri troppo grandi o troppo piccoli… continuate a leggere

Ancora oltre

In realta’ io volevo anche ottenere un ingrandimento dei caratteri senza dover ritoccare la configurazione di tutte le app, quindi ho aumentato i DPI da 96 a 100; se avessi avuto il problema opposto avrei fatto il contrario, usando un valore DPI minore.

Questo non e’ un passaggio obbligato, ma se anche voi volete fare una cosa del genere vi consiglio, per ottenere i giusti valori, di uscire da X, disattivare temporaneamente il vostro login grafico e avviare X con il valore DPI che desiderate, tipo:

startx -- -dpi 100

e’ il comando che ho dato io, ma dipende ovviamente dal valore che intendete voi. In questo modo xdpyinfo restituisce valori gia’ ottimizzati per la risoluzione che abbiamo in mente di ottenere e possiamo evitare di provarne diversi e vederli cambiare ad ogni riavvio di X.

felipe@fuzzy:~$ xdpyinfo | grep resolution
  resolution:    100x100 dots per inch
felipe@fuzzy:~$ xdpyinfo | grep dimensions
  dimensions:    1280x1024 pixels (325x260 millimeters)

Una volta ottenuti i valori procediamo come descritto sopra, ma dobbiamo anche aver cura di cambiare il valore dpi predefinito di X. Per fare questo bisogna cambiare alcuni file di configurazione e aggiungere nel mio caso l’opzione “-dpi 100”.

Questi file sono:

/etc/X11/xinit/xserverrc
/etc/gdm/gdm.conf
/etc/kdm/kdm.conf

I nomi dei file possono cambiare in base alla distro e possono ovviamente essercene anche altri dipende da che login grafico si usa.

Ultimo consiglio e’ quello di sistemare il valore di DPI in GNOME dall’apposito dialogo della scelta dei “Tipi di Carattere” e cliccando sul pulsante “Dettagli”

Potete lasciare dei commenti su per consigli e/o critiche, oppure venirci a trovare in canale: #linux-help @ irc.azzurra.org

Riferimenti:

http://ed.asisaid.com/

27 commenti

  1. Pliniux

    Grande Felipe, stavo impazzendo con i caratteri e mi sono imbattuto nel tuo BLOG: complimenti per una guida veramente fantastica!!!

    Grazie e..buone vacanze!!!

  2. Davide

    Ciao!

    Nonostante la tua ottima guida, non sono riuscito a risolvere il mio problema di antialiasing, che mi sta facendo diventare strabico.

    Al posto della mia URL ho messo una foto png della mia schermata. Se la guardi attentamente nelle sue dimensioni originali, ti accorgerai che il carattere ARIAL che ho impostato come predefinito sbava dappertutto.

    Anzi (ed è la che mi fa innervosire) NON DAPPERTUTTO: nella finestra del pannello di controllo java tutto è perfetto, fuori è tutto sfocato.

    Sai mica dirmi che succede?

    ciao e grazie
    Davide

  3. felipe

    succede che java non rende con l’antialiasing, per cui non potrebbe sbavare nemmeno volendo… invece gnome sbava :)

    prova con altri font e controlla il risultato, in particolare consiglio “Bitstream Vera Sans”

  4. Davide

    Ciao Felipe. Grazie per la risposta veloce.
    Ho provato Bitstream Vera Sans, ma il risultato non cambia.

    Guarda questa schermata che ho salvato mentre avevo ancora Arial:
    http://www.onedrop.it/Davide/immagini/Schermata-1.png
    Ebbene, come vedi Synaptic non sbava, e le altre cose sì.

    In pratica ho fatto la prova modificando le opzioni di Sistema>Preferenze>Tipi di carattere mentre tenevo le finestre in quella posizione, ed ho visto che l’unico che “risponde” è synaptic. Gli altri restano “insensibili”.

    Ps: anche se imposto i dpi a 100 dappertutto (file di configurazione che hai indicato tu e “tipi di carattere” ), i comandi che hai suggerito
    danno:
    davide@LucyVanPelt:~$ xdpyinfo | grep resolution
    resolution: 74×74 dots per inch.

    ciao
    Davide

  5. Zerri

    Grande felipe, un grazie di cuore, questo era uno dei difetti più fastidiosi della mia Ubuntu e che mi facevano ancora pensare a Windows…

  6. eugenio

    dopo che il mio pc hp pavilion ze 4900 è stato riinstallato i caratteri non sono più belli com prima.
    Si presentano più sbiaditi prima erano di color nero come fossero scritti con l’inchiostro china.
    Ho fatto tanti tentativi, chiesto informazioni, portato il pc da un esperto ma il problema non è stato risolto .
    Che mi consiglite ?

    Grazie
    Eugenio

  7. nikk

    Porto la mia testimonianza: con edgy e una nvidia 6600 go sono riuscito ad affinare la resa dei caratteri impostando delle opzioni di xorg che se non erro sono state introdotte con la versione 7. In particolare nella sezione Device:

    Section “Device”

    Option “UseEditDpi” “FALSE”

    Senza questa opzione, veniva ignorato il cambiamento di valore di DisplaySize.
    Inoltre è stata introdotta la possibilità (non sono sicuro che questo valga anche per le ATI) di impostare l’opzione DPI:

    Section “Device”

    Option “DPI” “96 x 96”

    Dalle mie prove posso dire che le due modalità sono alternative, ovvero impostando manualmente l’opzione DPI non c’è bisogno di impostare DisplaySize, che in ogni caso non da problemi, ma anche senza impostare l’opzione DPI, ma inserendo DisplaySize l’opzione “xdpyinfo | grep dots” dà due valori regolari.

    Spero di essere stato utile a qualcuno e ringrazio felipe per le ottime guide.

  8. SkY`

    Caro felipe, anzitutto grazie per la guida. Il problema è che (Kubuntu Edgy, scheda grafica SiS962 – una di quelle integrate sulla madre) una volta modificato il file xorg.conf), seguendo quanto indicato da te e da nick solo l’opzione “UseEditDPI”, una volta riavviato il server grafico, ottengo solo una schermata nera. Come potrei risolvere?

  9. Gamby

    Sono nuovo del mondo linux e probabilmente il mio problema è dovuto a qualche mio errore: ho provato a inserire nel file xorg.conf sia opzione DisplaySize, sia l’opzione DPI, sia entrambe. La resa dei caratteri sembra leggermente migliorata (forse grazie anche all’altra guida su questo tema che ho trovato su questo forum) ma con il comando “grep resolution” mi restituisce ancora un valore di 95×96 pixel.
    Sto utilizzando Kubuntu edgy con una ATI 9800 e un LCD Acer AL1721…
    Cosa sbaglio?

    Grazie dell’aiuto!
    Gamby

  10. ilgufo

    ciao!

    > Sono quasi sicuro che nessuno ha una cifra “regolare”, nel senso che i valori > di X e Y non sono uguali

    matteo@ubuntubox:~/Fonts$ xdpyinfo | grep resolution
    resolution: 75×75 dots per inch

    lol! :D

  11. Ferny

    A me non funziona :-(
    Ora sto a 94×94, ho impostato lo stesso dpi in gnome-font-properties. ma i caratteri senza antialias appaiono ancora “sporchi”. Più tardi provo con la guida per cambiare le librerie. Speriamo bene.

  12. damidalla

    Sono su ATi (Radeon 9600) con Edgy Eft.
    Cercando sulle specifiche del driver Radeon, ho trovato una opzione molto simile alla EdidDPI di nVidia:

    Section "Device"
    ...
    Driver "ati"
    ...
    Option "IgnoreEDID" "true"
    ...

    Gli effetti sembrano essere ottimi… font molto più chiari e puliti, la risoluzione passa a 75×75 dpi.

  13. felipe

    @damidalla:
    C’è una piccola differenza tra le due opzioni… la tua comincia con “Ignore” :)

    Ossia: “ignora EDID”

  14. damidalla

    @felipe:
    beh, la differenza tra “useEdid” “false” e “ignoreEdid” “true” è molto sottile…
    in logica formale, una sarebbe la contronominale dell’altra, quindi sono tautologicamente equivalenti…
    Cmq, a parte differenze sottili, la cosa funziona, e ciò mi basta e avanza…

  15. Pingback:links for 2007-03-13 -- A Tempest of Thoughts

  16. Pingback:MythTV su Ubuntu 7.04 Feisty Fawn « farrebyc’s block notes

  17. Pingback:MythTV su Ubuntu Feisty - Parte 4 « farrebyc’s block notes

  18. brigante

    ragazzi , innanzitutto ciao a tutti , é la prima volta che posto , ma vi leggo da mesi ormai.

    sono da poco migrato a Kubuntu da Mandriva , ho la 7.04 Feasty , e ho un problemone…
    …si un problemone perché con la mia scheda grafica “IntelMediaAccelerator-950″ integrata su chipset”ConRoe-945G”
    il mio unico modo per ottenere una risoluzione adeguata alle mie esigenze é usare il desktop Gnome , ed infatti dopo averne installato tutti i pacchetti , da Kubuntu sono passato a Kubuntu con Gnome:)
    il mio monitor é un Acer”AL1916W” con risoluzione a 1440×900@75 e vedo i caratteri nel modo poco carino descritto più volte nei post precedenti.
    la patch per la mia scheda video é la “915resolution” , ma mentre in Mandriva riuscuvo ad ottenere la risoluzione desiderata , in ubuntu , essendo poco esperto davvero , ancora sto sbattendo la testa e niente da fare.
    adesso addirittura sono obbligato(per modo di dire) , ad entrare esclusivamente in Gnome , perché se provo ad entrare in KDE il monitor mi dà il segnale “Input not Supported” , con relativo schermo nero.
    nonostante però in Gnome io possa ottener la risoluzione desiderata , e con la giusta frequenza”@75″ , i caratteri sono da modificare con la guida descritta sopra , che però a me non é usufruibile perché il mio “section monitor” , é il seguente:

    Section “Monitor”
    identifier “AL1916W”
    vendorname “Generic”
    modelname “Flat Panel 1440×900”
    HorizSync 31.5-90
    VertRefresh 60
    modeline “640×480@60” 25.2 640 656 752 800 480 490 492 525 -vsync -hsync
    modeline “800×600@60” 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
    modeline “1024×768@60” 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsync
    modeline “1280×960@60” 102.1 1280 1360 1496 1712 960 961 964 994 -hsync +vsync
    modeline “1280×1024@60” 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
    modeline “1400×1050@60” 122.61 1400 1488 1640 1880 1050 1051 1054 1087 -hsync +vsync
    modeline “1600×1200@60” 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
    modeline “1792×1344@60” 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync
    modeline “1856×1392@60” 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync
    modeline “1920×1440@60” 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync
    gamma 1.0
    EndSection

    ho fatto il conto come descritto nella guida ed il risultato del moltiplicatore é “265 – 424″……
    …..qualcuno può darmi una mano a risolvere la situazione?

    in ogni caso grazie a tutti e a questo stupendo sito…

    …di cui ho già preso i repository.:)

    ciao.

  19. alex

    a me non si reimpostano i pixel come gli specifico nel xorg.conf
    ho aggiunto il DisplaySize

    Section “Monitor”
    Identifier “Generic Monitor”
    Option “DPMS”
    HorizSync 28-51
    VertRefresh 43-60
    DisplaySize 328 205
    EndSection

    e ignoreEDID (ho provato anche con Option “UseEdidDpi” “FALSE”)
    Section “Device”
    Identifier “ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]”
    Driver “ati”
    BusID “PCI:1:0:0”
    Option “IgnoreEDID” “true”
    EndSection

    il problema è che quando riavvio $ xdpyinfo | grep dimensions
    mi restituisce sempre
    dimensions: 1280×800 pixels (325×203 millimeters)
    dei nuovi millimetri che gli imposto io non li prende!
    qualche suggerimento?
    thx

  20. Domenico

    Ciao! Intanto grazie per lo splendido sito e per le ottime guide!

    Tuttavia, anche a me ignora le impostazioni:
    Section “Device”
    Identifier “Intel Corporation 82945G/GZ Integrated Graphics Controller”
    Driver “i810”
    BusID “PCI:0:2:0”
    Option “UseEdidDpi” “FALSE”
    Option “DPI” “100 x 100” #Che non dovrebbe servire
    EndSection
    Section “Monitor”
    Identifier “SyncMaster”
    Option “DPMS”
    DisplaySize 432 270 #
    EndSection
    $ xdpyinfo | grep resolution
    resolution: 99×99 dots per inch
    $ xdpyinfo | grep dimensions
    dimensions: 1680×1050 pixels (431×270 millimeters)

    pur avendo 99 x 99 già di mio… però avevo già seguito il anche l’altro tuo tutorial “Migliorare la leggibilità dei font su Ubuntu Feisty” che siano in conflitto

    Oppure il problema è il driver intel (con relativa i915)?

    Ciao e grazie cmq

  21. b3orn

    Salve a tutti, è da un po’ che seguo il blog ma non ho mai partecipato. Per coloro che non riescono ad ottenere risultati con il driver i810 sembra sia un baco del driver stesso che ignora il DisplaySize. Sono riuscito ad ottenere risultati sotituendo il driver i810 con il driver intel (sempre presente nel repository di ubuntu).

    Ciao

  22. Pingback:MythTV su Ubuntu - Parte 2 « farrebyc’s block notes

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo:
Vai alla barra degli strumenti