Font rendering v různých desktopových prostředích

Arthur

  • ***
  • 176
    • Zobrazit profil
    • E-mail
Font rendering v různých desktopových prostředích
« kdy: 10. 12. 2025, 14:21:56 »
Ahojte,

trvale bojuju s čitelností fontů v Gnome / KDE na starších monitorech (typicky kancelářský 22" FHD). V minulosti to určitě tak nebylo, evidentně se to od jisté doby přizpůsobuje kvalitním 150+DPI IPS panelům, zatímco na starých ~90DPI TN se na to z mého pohledu nedá dívat.

Výjimkou je XFCE, tam to kreslí krásně, zřejmě nějak postaru, protože to naopak neumí pracovat s různými variantami jako medium/condensed atd.. ale to mi nevadí, vystačím si v pohodě s regular.

Otázka zní: dá se nějak nastavit v Gnome/KDE stejné renderování fontů jako v XFCE?

Přestože mám nastaven stejně antialiasing, hinting, sub-pixel rendering, tak je tam pořád rozdíl. Ani v konfiguračních souborech

KDE
Kód: [Vybrat]
/etc/fonts/fonts.conf
~/.config/fontconfig/fonts.conf

vs. XFCE
Kód: [Vybrat]
/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
~/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml

nevidím žádný rozdíl. Stejně se to chová v Ubuntu vs Fedora, wayland vs. X11. Záleží pouze na konkrétním prostředí, každé kreslí trochu jinak, viz. obrázek v pořadí KDE, Gnome, XFCE4


Zopper

  • *****
  • 959
    • Zobrazit profil
Re:Font rendering v různých desktopových prostředích
« Odpověď #1 kdy: 10. 12. 2025, 17:15:11 »
Možná je to úplně mimo cíl, ale škálování rozlišení máš postaru celočíselné? Pokud se obraz vyrenderuje na 200% a pak převzorkuje dolů na 125%, tak to na FHD bude ošklivě vidět.

RDa

  • *****
  • 3 167
    • Zobrazit profil
    • E-mail
Re:Font rendering v různých desktopových prostředích
« Odpověď #2 kdy: 10. 12. 2025, 17:29:14 »
Vsiml jsem si toho taky... instaloval jsem pokusne Ubuntu na FHD AOI i notas s mensim rozlisenim nez FHD, a nemuzu z toho, jak je to cely rozmazany a pixelovaty.

Podle me za to cele muze snaha o nasazovani antialiasingu i tam, kde by potreba nebyl. Typicky to vidavam v terminalu.. proste clovek ceka ze tam bude dot-matrix font s 1:1 pixely nebo vetsim fontem ci 2x2 pro pixel.. ale ne, oni to tam musi rozmazat :(

Arthur

  • ***
  • 176
    • Zobrazit profil
    • E-mail
Re:Font rendering v různých desktopových prostředích
« Odpověď #3 kdy: 10. 12. 2025, 17:49:15 »
Možná je to úplně mimo cíl, ale škálování rozlišení máš postaru celočíselné? Pokud se obraz vyrenderuje na 200% a pak převzorkuje dolů na 125%, tak to na FHD bude ošklivě vidět.

Nene, všude mám nativně 100% šklálování.

On ten trend je i jinde, na Win máš staré fonty (Explorer apod. - OK) a ty nové (aka start menu) jsou na obyč monitoru pěkný hnus. Chrome OS je použitelný min. na 13" FHD, cokoliv s nižším DPI se prostě nedá. Takže si myslím, že je to stejný případ, prostě aby to vypadalo hezky na drahém notebooku, zbytek nás nezajímá ...

Ale XFCE to umí, takže řešení existuje, jen ho najít :-).  Pokud to teda není nějak svázané se starými verzemi GTK ...

Re:Font rendering v různých desktopových prostředích
« Odpověď #4 kdy: 10. 12. 2025, 19:44:37 »
Co na tom obrázku vidím je, že Gnome uprostřed používá antialiasing jen v odstínech šedé - je takové měkčí, šedivější.
KDE i XFCE jsou "barevné", ostřejší, výraznější, používají téměř totožný antialiasing, ale vypadá to, že KDE používá jiný kerning než XFCE a GNOME.
V příloze zvětšený text z obrázku výše v pořadí KDE, XFCE, Gnome (zvětšete si to naplno).


Re:Font rendering v různých desktopových prostředích
« Odpověď #5 kdy: 10. 12. 2025, 19:58:33 »
Co na tom obrázku vidím je, že Gnome uprostřed používá antialiasing jen v odstínech šedé
To by mělo jít přepnout.

[...] ale vypadá to, že KDE používá jiný kerning než XFCE a GNOME.
Na základě toho obrázku přemýšlím, jestli se tomu, co používá Xfce a GNOME dá vůbec říkat kerning...

Re:Font rendering v různých desktopových prostředích
« Odpověď #6 kdy: 10. 12. 2025, 20:46:32 »
Co na tom obrázku vidím je, že Gnome uprostřed používá antialiasing jen v odstínech šedé
To by mělo jít přepnout.

[...] ale vypadá to, že KDE používá jiný kerning než XFCE a GNOME.
Na základě toho obrázku přemýšlím, jestli se tomu, co používá Xfce a GNOME dá vůbec říkat kerning...
Typograficky vypadá správně IMHO jen ten první řádek (KDE).

Re:Font rendering v různých desktopových prostředích
« Odpověď #7 kdy: 10. 12. 2025, 22:24:28 »
To bude toto issue:

https://github.com/harfbuzz/harfbuzz/issues/2394

Harfbuzz neumí spočítat správně kerning v případě, že chce uživatel horizontální hinting, takže fonty musí být rozmázlé. V xfce to funguje asi proto, protože používá staré GTK, které používá starý harfbuzz nebo jen samostatně freetype pro kerning (ale tady jen hádám, nevím přesně jestli je to tak).

Každopádně toto je problém od r. 2020 a nikdo ho řešit nehodlá.

Ale, všechno je open-source, uživatel si to může spravit přece sám.

Re:Font rendering v různých desktopových prostředích
« Odpověď #8 kdy: Dnes v 06:37:09 »
To bude toto issue:

https://github.com/harfbuzz/harfbuzz/issues/2394

Harfbuzz neumí spočítat správně kerning v případě, že chce uživatel horizontální hinting, takže fonty musí být rozmázlé. V xfce to funguje asi proto, protože používá staré GTK, které používá starý harfbuzz nebo jen samostatně freetype pro kerning (ale tady jen hádám, nevím přesně jestli je to tak).

Každopádně toto je problém od r. 2020 a nikdo ho řešit nehodlá.

Ale, všechno je open-source, uživatel si to může spravit přece sám.
Uff. A není aspoň nějaký workaround!?

Re:Font rendering v různých desktopových prostředích
« Odpověď #9 kdy: Dnes v 09:27:25 »
Workaround je používat staré pango, co nepoužívá harfbuzz. Harfbuzz je knihovna pro text shaping - takže udělá to, co se po ní chce. Ale fonty mají i informace o tom jak dělat správně hinting popř. freetype má autohinter - ale harfbuzz to nezajímá. No a protože hinting mění metriku jednotlivých glyfů (a další věci jako kerning) tak layout co vyplivne harfbuzz neodpovídá tomu, jak by ten text měl být opravdu zobrazený.

To co dělá harfbuzz je typograficky správné, na druhou stranu, pokud někdo má starší monitor a užíval si hinting pro hezké zobrazení textu, tak toto už moderní text stack neumí.

RDa

  • *****
  • 3 167
    • Zobrazit profil
    • E-mail
Re:Font rendering v různých desktopových prostředích
« Odpověď #10 kdy: Dnes v 10:59:43 »
To co dělá harfbuzz je typograficky správné, na druhou stranu, pokud někdo má starší monitor a užíval si hinting pro hezké zobrazení textu, tak toto už moderní text stack neumí.

Otazka je, proc se tlaci "spravny" rendering, ktery se projevi treba na 600-1200-2400 dpi laserovce tedy na monitor, ktery ma radove mene DPI (72-96-150).

Co jsem pochopil, tak za hintingem byl nejaky patent / proprietarni format, takze to neslo implementovat a fonty vznikali pak i bez hintu.. ale tak dnes kdyz to jde, tak to budem ignorovat? Kam jsme to dospeli.

Re:Font rendering v různých desktopových prostředích
« Odpověď #11 kdy: Dnes v 11:00:46 »
Workaround je používat staré pango, co nepoužívá harfbuzz.
Což je ovšem dost knížecí rada protože závislosti knihoven. Dělal jsem to tak dlouho ale musel jsem to nakonec opustit protože s tím byly probléímy neustále a na tom Pangu je závislé kdeco. Musel bych kompilovat polovinu aplikací s UI.

To co dělá harfbuzz je typograficky správné, na druhou stranu, pokud někdo má starší monitor a užíval si hinting pro hezké zobrazení textu, tak toto už moderní text stack neumí.
Moderní text stack neumí hinting? No, radši to nebudu komentovat... A ten kerning v GNOME a Xfce je víc než strašný.

ja.

  • ****
  • 390
    • Zobrazit profil
    • E-mail
Re:Font rendering v různých desktopových prostředích
« Odpověď #12 kdy: Dnes v 12:15:03 »
To co dělá harfbuzz je typograficky správné, na druhou stranu, pokud někdo má starší monitor a užíval si hinting pro hezké zobrazení textu, tak toto už moderní text stack neumí.

Otazka je, proc se tlaci "spravny" rendering, ktery se projevi treba na 600-1200-2400 dpi laserovce tedy na monitor, ktery ma radove mene DPI (72-96-150).

Co jsem pochopil, tak za hintingem byl nejaky patent / proprietarni format, takze to neslo implementovat a fonty vznikali pak i bez hintu.. ale tak dnes kdyz to jde, tak to budem ignorovat? Kam jsme to dospeli.

Za poslednu dekadu sa vela displejov s 1376x768 pri 14" vela nepredalo. Mainstream 14" pri fullhd je ~157 dpi. 21" pri fullhd je ~105 dpi. Pri tychto rozliseniach je moderny font rendering v poriadku.

Za hintingom bol bajtkod. Vytvorit manualne nahintovany font nebolo trivialne, preto ich bolo tak malo, najznamejsie su Microsoftie Arial/Courier New/Times New Roman. Manualne hintovat font bolo velmi pracne (-> drahe), tak neskor rendering enginy prisli s autohintingom, ktory nebol tak dokonaly ako manualny, ale postacujuci. Navyse doslo k zluceniu TrueType a Type1 do OpenType, a Type1 nemali podporu manualneho hintingu vobec, zatial co autohinting s nimi fungoval (autohinting engine vo freetype pochadza od Adobe).

Patenty boli za rgb-aware antialiasingom ("cleartype"), dnes su uz expirovane. Ten mal okrem patentov aj dalsie problemy,  potreboval vediet layout rgb subpixelov (r-g-b a b-r-g su ok, ale pentile alebo r-g-b-w su uplne v..., spolu s klasickym rozlozenim pixelov na crt) a nefunguje celkom ok pri inverznych farbach / tmavom rezime, farebne okraje su tam vyraznejsie ako pri svetlom pozadi. Treba si pri nom davat aj velky bacha na renderovanie fontu v linear gamma a potom spravnu gamma korekciu pri blitovani do srgb surface, co je dalsia slaba cast toolkitov na linuxe.

No a do toho vliezli znakove sady daleko za WGL4, RTL (vid raison d'etre pre harfbuzz) a koniec koncov aj farebne smajliky. Toto boli dolezitejsie veci ako riesit kod pre ludi, co pouzivaju 20+ rokov stary monitor.

ja.

  • ****
  • 390
    • Zobrazit profil
    • E-mail
Re:Font rendering v různých desktopových prostředích
« Odpověď #13 kdy: Dnes v 12:16:20 »
Moderní text stack neumí hinting? No, radši to nebudu komentovat... A ten kerning v GNOME a Xfce je víc než strašný.

A ktore z aktualnych fontov su nahintovane? Mimo msttcorefonts ziadne.