Csúnya MS fontok linuxon - megoldva

Észre vettem, hogy a Microsoft (Vista?) fontok (Corbel, Cambria, Candara, stb.) közül néhány elég fosul néz ki linux alatt, hát azért, mert a MS a legutóbbi verziókba tett bitmapeket néhány mérethez (8-12 között valahol biztosan) és ezért a freetype azokat jelenítette meg, nagyon csúnya módon.

A /etc/fonts/conf.d alatti xml-ek közül (azt hiszem) az embedded fontokat egy sem tiltja le, hát itt a megfelelő konfigfájl:


<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

És szépek lesznek azok a betűk is.

Már csak egy font related issue van, Chrome+bekapcsolt hardware 2D rendering mellett a cufón fontok nagyon csúnyák (pl qt.nokia.com, stb.)

Hozzászólások

https://gist.github.com/974439

Ha nekem a fenti config .fonts.conf néven nincs a homeban, a böngésző által renderelt fontok (Firefox, Chrome) borzalmasak (nem nekem tetsző szép "karcsúak"). Mindez Ubuntu 11.04, friss telepítéssel is.

Ez gyakran vita tárgya.

Én szeretem, ha a font úgy próbál megjelenni, ahogy azt a tervezője kitalálta - véleményem szerint, ha nem úgy jelenik meg, mi értelme a sok betűtípusnak? A full hinting teljesen átrajzolja a betűt, és az igaz, hogy az egyenes vonalak pont egész pixelekre esnek, de a görbületek (amiből betűk esetén elég sok van) széttöredeznek, pont ugyanemiatt a pixelre kényszerítő hatás miatt. A túl vékony betű ezen felül terheli a szemet is, nem véletlen, hogy a "friss", azaz default telepítésben nem full hinting van beállítva, ma már elég sok disztribúciónál, Windowsnál, és az ergonómiára kínosan ügyelő OSX-nél sem.

De amiről a topikot nyitottam, az most más téma, és hintingtől független. Konkrétan antialias nincs azokon az említett embedded bitmapolt fontokon. Illetve most már van.

mivel egy perc azzal együtt, hogy elcseszed a root jelszavad háromszor, így talán érdemes most, mintha két hónap múlva, amikor szükséged lenne rá, úgy kelljen rámköszönnöd, hogy mi is volt a blog címe, mert arra a keresésre, hogy "Calibri szőrös betűk", nem jön le a topik :)

A hinting info az a font része, az autohinter pedig explicite ki van kapcsolva.
Kis méretnél a betű úgyis torzul, tehát a készítőnek elvileg gondolnia kellene rá, hogy ebben az esetben hogy nézzen ki a font.

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Az ideális tulajdonképpen az lenne, ha emellett a beágyazott bitmapek is használhatóak lennének, némi élsimítással – néztem, hogy hogy kell egy betűtípust hintelni, elég nehéz. Figyelembe véve, hogy a tipográfus gyakran sokkal inkább művész, mint mérnök feltehetőleg jobban járnánk azzal, ha bizonyos kisebb méretekben lehetősége lenne szürkeárnyalatos bitmappel definiálni a betűformákat.

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Amely bitmapes változatokat láttam, azok nem voltak élsimítottak, egyébként meg ha mondjuk 3×3-asan túlmintavételezve tároljuk, akkor az alapján előállítható a szürkeárnyalatos is, de az LCD kijelzők is örülnek.

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Na hát ezaz, hogy a bitmapesek nem élsimítottak, a hint info meg nem mindig van benne. Szóval akkor mégiscsak valhol oda lyukadunk ki, hogy valami slight hinting jó lehet... De erre már az Oprendszergyártók is rájöttek, szóval talán mi sem vagyunk hülyék :)

Közben rájöttem, igazad van, a szürkeárnyalatosság OK, hiszen nem konkrétan a színeket kell tárolnunk, csak úgy jelenik meg, azt elég kiszámolni megjelenítéskor a túlmintavételezett mintákból (ha jól értem). Jogos. Erről még százéve a fontconfig levlistán volt is szó, akkoriban (~2002 táján) nagyon követtem az eseményeket. :)

Szerk.: igen, nem fontconfig, hanem freetype :)