Megjegyzések
- Az API-dokumentáció elolvasásával kezdeném, amely itt található freedesktop.org/software/ fontconfig / fontconfig-devel
- @PaulH. Korábban elvontan olvastam ezt a dokumentációt. Valójában ez a dokumentum többet megmagyaráz a funkciókról és az adattípusokról, stb., De nem az egyes modulok működéséről vagy az ezekhez kapcsolódó ötletről 🙁
- OK. De ha meg akarja érteni a forráskódot, akkor ez a dokumentáció hasznos lesz, mivel az adattípusokat és a függvényeket a forráskódban használják. Mi a célja pontosan? Tudni kell, hogyan kell használni az említett parancsokat, vagy megérteni, hogy pontosan mi zajlik " alatt a motorháztető "?
- @PaulH. A fő célom mindkettő, amit említettél, de az első cél az, hogy mi történik valójában?
Válasz
TL; DR: A fontconfig megértéséhez meg kell érteni, miért hozták létre és milyen problémákat próbál megoldani. Ehhez sok megértésre van szükség az Xorg-ról.
A betűkészlet konfigurálása a UNIX gépeken különböző fázisokon ment keresztül és fontconfig egyszerűen az egyik lehetőség, amelyet használhat használja a betűtípusokat az Xorg segítségével. A fontconfig forrásának elolvasása az Xorg forrásának megfelelő megértése nélkül valószínűleg nagyon nehéz. De úgy gondolom, hogy a betűtípusok evolúciójában rejlő fogalmak megértése megfelelő kiindulópontnak bizonyulhat.
Jogi nyilatkozat: Sokat foglalkozom a Linux betűtípusaival, de soha nem kellett igazán megváltoztatnom az Xorg kódot betűtípusokhoz.
Az Arch Linux wiki erről is sok információt tartalmaz
Egy kis előzmény
Az eredeti UNIX betűtípusok egyszerűen bitképes betűtípusok voltak. Ma ezek megtalálhatók a /usr/share/fonts/misc
fájlban, a PCF (hordozható fordított formátum) ma nagyjából mindegyikhez használható. Ez egy bináris formátum. A bináris betűtípusoknak más formátumai is léteztek, de el kell ismernem, hogy soha nem kellett más, csak a PCF-et használni a bináris betűtípusokhoz. A xfontsel
használatával konfigurálhat egy Xorg karaktersorozatot, hogy meghatározza többek között a betűtípus pontjait, térközét, pixelméretét, terminál súlyát (félkövér, ferde), kódolását.
A bittérképes betűtípusok különböző fájlokkal rendelkeznek a betűkészlet különböző pixelméreteihez. A bittérképes betűtípusok már bevezetik a betűtípus-család fogalmát.
A Postscript (és bizonyos mértékben a TeX is) létrehozott 1-es típusú betűtípusokat, amelyek vektor alapú betűtípusok. Ezek a /usr/share/fonts/Type1
fájlban találhatók. A vektor betűtípusok több konfigurációs értékkel vannak konfigurálva, pl. antialias, embolden, dpi vagy méret (ezúttal nem feltétlenül pontalapú).
A vektor alapú betűtípusok méretarányúak, és nem igényelnek több fájlt.
Az Xorg mind a bitmap, mind a Type1 betűtípusokat . És létrehozta az XFT-t (az X FreeType egy interfész a FreeType-hez, amely egy GPL / BSD könyvtár, amely utánozza és kiterjeszti az Type1-et). Az XFT nem csak a Type1 és a FreeType betűtípusok használatát teszi lehetővé, hanem más formátumokat is: az OTF-et az Adobe és a Microsoft, a TTF-et az Apple. Ezenkívül az XFT lehetővé teszi a régi bitkép betűkészletek méretezését úgy, hogy azok Type1 betűtípusokhoz hasonlítsanak.
Az attribútumok meghatározásához számos más attribútumot, például hinting t vagy hintstyle t adtak hozzá. ezekből a betűtípusokból.
Mindez megtalálható a /usr/share/fonts
almappáiban. Az XFT paraméterek pedig az Xresources
fájlban konfigurálhatók.
FontConfig
És fontconfig
-nek foglalkoznia kell a fenti összes eltérésével. Más szavakkal, a fontconfig egy kísérlet a fenti betűtípusok konfigurálására oly módon, hogy kihasználhassa a különálló betűtípusok attribútumait egy közös szintaxissal.
A bittérképes betűtípusoknak problémái vannak:
- több különböző fájl egyetlen betűtípushoz
- korlátozott méret pontok és pixelméretek szerint.
De ugyanígy a vektor alapú betűtípusok is:
- a méretezés időbe telik, különösen, ha több paramétert is használnak
- nem minden betűtípusattribútum befolyásolja ugyanúgy a különböző betűtípusokat
És mindkettő az a probléma, hogy sok betűformátum létezik, és hogy a felhasználó saját fontokat szeretne telepíteni az otthonába. A Fontconfig megpróbálja megoldani ezeket a problémákat.
fc-query
elmondja, hogy a fontconfig mit ért a fontfájlban. Nevezetesen, hogy a fájl milyen attribútumokra szolgál (például bitképes betűkészletekhez) és milyen attribútumok használhatók (vektoros betűtípusokhoz).
fc-list
egy módja annak, hogy elmondja, milyen betűtípusok találhatók a fontconfig által keresett könyvtárakban, ezért azokat az alkalmazások is használhatják. Végül a fc-cache
indexeli ezeket a betűkészleteket, hogy könnyebben megtalálja őket és méretezhesse (többek között) az alkalmazás használatához.
A fontocnfig megosztott könyvtár a másik oldalon kéz a legérdekesebb rész. A konfigurációs fájlokat (/etc/fonts
, ~/.config/fontconfig
) és a betűkészlet-gyorsítótárat használja arra, hogy az előkészített betűtípusokat közvetlenül az ellene linkelt alkalmazásokhoz adja. Mivel a legtöbb alkalmazás az XFT-t (és ezért a FreeType-t) használta, a FreeType könyvtár pedig a fontconfig könyvtár hívásait használja, ezeknek a betűkészleteknek a használata mindenütt jelen van.
Ne feledje azonban, hogy összeállíthat egy olyan programot, amely az egy régi stílusú bitmap betűtípust (pl. -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u
), és a hívás nem megy át a fontconfig megosztott lib-en.
Megjegyzések
- Köszönöm a részletes választ, megértem, mit akar mondani. Valójában meghatároztad az Fc-lekérdezést és az fc-listát, de szeretnék tudni olyan dolgokat, mint amikor egy játék szintű program megpróbálja használni az FC-t és annak funkcióit, hova küldik először a kérést? mármint mi a kiindulópont? Megpróbáltam hozzáadni egy olyan állítást, mint a printf (" tesztelés ") az fc-lekérdezés fő funkciójába, és megírtam az fc-query parancsot. a terminálról, de ezt nem láttam. mégis újra összeállítottam a make paranccsal
- @AmmarUlHassan – Heh,
printf("something")
soha nem fogja használni a fontconfig könyvtárat ' mert ami a betűtípussal foglalkozik, az a terminál emulátor. A fontconfig használatához szüksége van egy programra, amely kapcsolódik az X11-hez, és önmagában meg kell rajzolnia a betűtípusokat a képernyőn. De ha ' nem tud egyprintf
fájlt a main () -ban megjeleníteni a terminálon, amely valószínűleg PATH probléma, ' mert a fontconfig már biztosan telepítve van. - rendben van. De mi van akkor, ha szeretnék egy kis szkriptet a fontconfig-be, amely valóban meghívhatja a rendszerem valamelyik másik megosztott könyvtárának valamilyen funkcióját. Ideális forgatókönyv az, hogy a fontconfig-be hozzáadom a lib egyik fejlécfájlját (néhány fájlt nem tudom, melyik 1-et), és én újrafordítom a fontconfig-t, és futtatom a fájlt úgy, hogy meghívja az adott könyvtár függvényét.
- @AmmarUlHassan – Ez ' túl sok mindent tartalmaz. A Fontconfig nem egy szkriptkörnyezet, egyszerűen megteszi azt, amire hivatott: adjon meg előre feltöltött / gyorsítótárazott betűkészleteket, amelyeket az Xorg megjeleníthet, amikor ti frissíti a képernyőt. Ha alkalmazásokra van szüksége az Ön által összeállított fontconfig megosztott könyvtárának használatához, akkor a
ldconfig
t újra kell konfigurálnia a megosztott könyvtár használatához alibfreetype2
éppen hív. Az a benyomásom, hogy ' túl sok dolgot próbál egyszerre harapni. - ha ha igen … Lehet tehát a következtetés, hogy mielőtt ásna mélyen meg kell értenem a történelmet? Xft? és mint az FC függvények és adattípusok?