Betűtípusok a linux beépített x-szerver betűtípus alrendszeren
Ez a rész leírja a klasszikus renderelést és a fontok megjelenítését az X Window rendszerben: Core X renderer.
Az X11 ügyfél-kiszolgáló modell az úgynevezett X Window System alap protokollon alapul. vagyis az X Window System alap protokollját. Ők szabályozzák a rendszer különböző összetevőinek kölcsönhatását. A fő protokoll lehetővé teszi betűkészletek használatát az X-kiszolgáló oldalán. Az X kiszolgáló közvetlen hozzáférést biztosít a fájlrendszer betűkészletfájljaihoz vagy a hálózaton keresztül egy betűtípus-kiszolgáló nevû programból. Az X ügyfelek lekérdezhetik az X kiszolgálót az elérhető betűkészletek, minden olyan attribútum vagy méret méretére, amelyet a képernyőn megjelenít egy adott betűtípus által húzott szövegsorral.
X-szerver nagyon mereven függ a rendelkezésre álló alap betűkészletek, csak nem indul el, ha a birtokában nem elég betűkészlet vagy fájlokat a fájlrendszerben, vagy egy font szerver. Ezért bármely X-kiszolgálóval rendelkező operációsrendszer-csomagban szükségszerűen függ az alapbetűt tartalmazó csomagtól.
A betűtípus-kiszolgáló vagy az X Font Server szabványos betűtípus-szállítási mechanizmust biztosít az X kiszolgálónak, leggyakrabban a 7100 TCP porthoz. Mostantól a betűtípus-kiszolgáló nem ajánlott.
konfiguráció
Az X.org Server fő konfigurációs fájlja általában az /etc/X11/xorg.conf fájl. A Betűkészletek rész a Fájlok részben válaszol, így néz ki:
Érdeklik a FontPath irányelv. amely meghatározza a betűkészleteket tartalmazó könyvtár teljes elérési útját. Ha ezek az irányelvek nincsenek jelen, vagy az utak helytelenek, vagy nincsenek betűk a megadott útvonalon, az X kiszolgáló nem indul el. A betűkészlet-könyvtáron belül a betűtípus-fájloknak közvetlenül meg kell találniuk, valamint számos speciális szolgáltatásfájlt: encodings.dir, fonts.alias, fonts.dir.
A könyvtárban szereplő betűtípusok listája és azok a fájlok, amelyekben vannak. Ebből a fájlból az X kiszolgáló felsorolja a használni kívánt betűkészleteket;
a betűnevek álnevek listáját az X kiszolgáló is elolvassa;
encodings.dir az ismert betûkódolások listáját, amelyet az X kiszolgáló olvasható, amikor egy ismeretlen kódolású betût nyit meg.
A fenti szolgáltatásfájlok az mkfontdir és az mkfontscale parancsok segítségével hozhatók létre. Az mkfontdir megkeresi a megadott könyvtárakat, indexeli az ott található raszterfájlokat, és létrehozza a fonts.dir és encodings.dir fájlokat. Ezenkívül az mkfontdir hozzáadja a fonts.scale fájl tartalmát a fonts.dir fájlhoz, ha megtalálható. A fonts.scale fájlt viszont az mkfontscale parancs adja. amely a vektoros betűtípus-fájlokat indexeli.
A régi kézikönyvek megtalálható ttmkfdir ajánlást kell használni a programot, hogy indexet TrueType betűkészlet-formátum, de a legújabb verzió mkfontscale maguk is képesek elvégezni a munkát, így nem kell ttmkfdir többé.
Tehát az X kiszolgálón használt betűtípus-fájlokat tartalmazó könyvtár előkészítéséhez két parancsot kell végrehajtani: mkfontscale és mkfontdir. leggyakrabban ez elég. Most ez a könyvtár írható az xorg.conf fájlba, és az X kiszolgáló "új" betűtípusokat fog látni a következő indításkor.
Az újraindítás nélkül azonban megteheti, hogy futtassa az xset + fp útvonal-to-directory-with-fonts parancsot. Ha megváltoztott valamit egy már hozzáadott könyvtárban vagy a rendszer könyvtárában, futtassa az xset fp rehash parancsot. hogy az X kiszolgáló frissítse a letöltött betűkészletek listáját. Ne feledje, hogy ezek a programok az X kiszolgáló kontextusában működnek, így azokat a terminálon kell futtatni az X munkamenetből.
Ezt a módszert használhatja például az egyedi betűtípusok feltöltésére az X kiszolgálóra a rendszerkonfigurációs fájlok szerkesztése nélkül. Ehhez be kell jegyeznie a megfelelő parancsokat a grafikus shell vagy X-kiszolgáló indításakor indított fájlban.
használata
A Core Protocol-ban használt betűkészletek elnevezése esetén az X logikai betűtípus-leírást használják. rövidítve XLFD-ként. az orosz nyelvre nagyjából lefordíthatók az X-betűk logikai leírásaként. A jelölés fő célkitűzései és követelményei a következők:
- Adjon egyedi, leíró betűtípusneveket, amelyek lehetővé teszik, hogy minta szerint keressen.
- Támogatás a különböző betűtípus-gyártóknak, tetszőleges karakterkészleteknek és kódolásoknak.
- Támogatás vektoros betűtípusokhoz.
- Támogatja a betűtípus alcsoportjának átalakítását és kiválasztását.
- Olyan megvalósítás, amely független az X kiszolgálótól, az operációs rendszertől és a fájlrendszertől.
- Támogatás az önkényesen összetett kereséshez és betűtípus-helyettesítéshez.
- Bővíthetőség.
A fontra vonatkozó XLFD-rekord tizennégy mező, a "-" szimbólummal elválasztva. Minden mező leírja a betű néhány jellemzőjét (név, stílus, kódolás stb.). Íme egy példa egy teljesen definiált XLFD rekordra a betűkészletről:
A rekord nem teljesen definiálható, ebben az esetben az egyes részek egyedi értéke helyett a "*" szimbólum például így van:
Minden egyes XLFD bejegyzés megfelel az X-kiszolgáló betűkészletek által ismert listáknak. Egy teljesen meghatározott rekord esetében egy ilyen készlet legfeljebb egy elemből állhat, vagy teljesen üres lehet. Egy hiányosan definiált készlet esetében több rekordból is állhat. Ha valamilyen alkalmazás fut (azaz egy X kliens), XLFD rekordot küld a kívánt betűtípusról az X kiszolgálóra. Minél kevésbé egyértelmű ez a rekord (vagyis annál több "*" szimbólum találkozik), annál nagyobb a valószínűsége annak, hogy egy megfelelő betűtípust észlel és biztosít. Vagyis az XLFD a maszk szerepét játssza le, amikor betűt választ.
A lényeg font alrendszer X-szerver - betűmegjelenítő már az X-szerver és alkalmazás fut (azaz X-kliens) működik kizárólag XLFD-felvételek és raszterizációs, méretezés és egyéb grafikai műveleteket a betűtípus nem válaszol. Ennek az az előnye, hogy az X kliensről az X kiszolgálóra továbbítandó kisebb mennyiségű adat, valójában az alkalmazás csak olyan szöveget küld, amelyet az X kiszolgáló majd térképez.
Először kísérletezzen a betűtípusok nevével. Az X kiszolgáló tartalmazza az xfontsel segédprogramot. amely lehetővé teszi, hogy vizuálisan bemutassa a betűtípus kiválasztásának folyamatát a megadott kritériumok szerint. Csak futtassa a programot paraméter nélkül, és próbáljon növelni az XLFD komponensek különböző értékeit. Az értékek beállításánál a jobb alsó sarokban lévő betűkészletek száma változik. Az XLFD rekord vágólapra másolásához kattintson a "select" gombra.
És most néhány példát illusztrálhat, amit mondtak. Futtassuk az xterm programot, és hagyjuk használni bármely betűtípust:
Teljesen meg nem határozott XLFD rekordot használunk, így a program az első betűtípusnévvel kezdődik a maszk alatt. Most megpróbáljuk használni a nyilvánvalóan nem létező betűtípusnevet, például állítsuk be a gyártó FAKENAME nevét.
Amint láthatjuk, az X kiszolgáló nem tud ilyen típusú betűtípust felismerni, ezért az xterm egy bizonyos "alapértelmezett betűtípust" használ, ebben az esetben "fix".
Most létrehozunk egy XLFD rekordot, amely kiválasztja az összes olyan betűtípus-típust, amelyek kódolása "iso8859-1". Ehhez futtassa xfontsel, és állítsa az XLFD ferde "i" -re, rgstry a "iso8859" -ra, encdng "1" -re; körülbelül az alábbi eredményt kapjuk:
És futtassa az xterm-ot a kiválasztott betűtípussal:
Az xfontsel mellett számos más hasznos program létezik az X-kiszolgálóba beépített betűtípus alrendszerrel való együttműködésre:
az adott mintát kielégítő betűkészletek listáját állítja elő. Paraméter nélkül történő futtatás csak egy listát tartalmaz az összes betűtípusról. * xfd
korlátozások
Az X-kiszolgáló beépített betűtípus-alrendszere nagyon régi, és nem teszi lehetővé a betűtípus-megjelenítés számos modern funkciójának használatát, például az anti-aliasing; Ugyanakkor nagyon komoly problémákat okoz az unicode és multibyte kódolással, ami tovább szűkíti a használat lehetőségét. Gyakorlatilag az összes modern programok ne használja a beépített renderelés betűtípus oldalán az X-kiszolgáló és szívesebben használják rugalmasabb és gazdag lehetőségeket tegyék eljárás az X-kliens. Pontosan ez az, amiről beszélni fogok, és az X-szerverbe épített betűtípus alrendszerének történetére pontot adtam, és nem fogok többé visszatérni erre a témára.