Kommentit
- Aloitan lukemalla API-dokumentaation, joka löytyy täältä freedesktop.org/software/ fontconfig / fontconfig-devel
- @PaulH. Luin abstraktisti tämän asiakirjan aikaisemmin. Itse asiassa tässä asiakirjassa kerrotaan enemmän toiminnoista ja tietotyypeistä jne., Mutta ei siitä, miten kukin moduuli toimii tai mihin tahansa siihen liittyvään ajatukseen 🙁
- OK. Mutta jos haluat ymmärtää lähdekoodin, tämä dokumentaatio on hyödyllinen, koska tietotyyppejä ja toimintoja käytetään lähdekoodissa. Mikä on tavoitteesi tarkalleen? Onko osata käyttää mainitsemiasi komentoja vai ymmärtää, mitä " alla tapahtuu huppu "?
- @PaulH. Päätavoitteeni ovat molemmat mainitsit, mutta ensimmäinen tavoite on, mitä todella tapahtuu?
vastaus
TL; DR: Fontconfigin ymmärtäminen edellyttää ymmärtämistä, miksi se luotiin ja mitä ongelmia se yrittää ratkaista. Se vaatii paljon ymmärrystä Xorgista.
UNIX-koneiden kirjasinkokoonpano kävi läpi eri vaiheet ja fontconfig on yksinkertaisesti yksi mahdollisuuksista, joihin voit käyttää käytä kirjasimia Xorgin kautta. Fontconfig-lähteen lukeminen ilman Xorg-lähteen ymmärtämistä on todennäköisesti erittäin vaikeaa. Mutta uskon, että fonttien kehityksen taustalla olevien käsitteiden ymmärtäminen voi osoittautua kunnolliseksi lähtökohdaksi.
Vastuuvapauslauseke: Käsittelen paljon fontteja Linuxissa, mutta minun ei koskaan tarvinnut muuttaa Xorg-koodia kirjasimiin.
Arch Linux -wikillä on paljon tietoa myös tästä
Hieman historiaa
Alkuperäiset UNIX-fontit olivat yksinkertaisesti bittikarttakirjasimia. Nykyään nämä löytyvät tiedostosta /usr/share/fonts/misc
, PCF: ää (kannettava käännetty muoto) käytetään melkein kaikkiin nykyään. Se on binaarimuoto. Binaarifontteja on ollut muitakin muotoja, mutta minun on myönnettävä, että minun ei koskaan tarvinnut käyttää muuta formaattia kuin PCF binaarifonteihin. xfontsel
-toiminnon avulla voit määrittää Xorg-merkkijonon määrittelemään muun muassa fontin pisteet, välin, pikselikoon, päätteen painon (lihavoitu, vino) ja koodauksen.
Bittikarttakirjasimissa on eri tiedostot fontin eri pikselikokoille. Bittikarttakirjasimet esittävät jo kirjasinperheen käsitteen.
Postscript (ja jossain määrin myös TeX) loi tyypin 1 fontit, jotka ovat vektoripohjaisia fontteja. Nämä ovat /usr/share/fonts/Type1
. Vektorifontit on määritetty useilla kokoonpanoarvoilla, esim. antialiat, embolden, dpi tai koko (ei välttämättä tällä hetkellä pistekohtaisesti).
Vektoripohjaiset fontit ovat skaalattuja eivätkä vaadi useita tiedostoja.
Xorg käytti sekä bittikartta- että Type1-fontteja . Ja se loi XFT: n (hyvin X FreeType on rajapinta FreeType: lle, joka on GPL / BSD-kirjasto, joka jäljittelee ja laajentaa Type1: tä). XFT sallii paitsi Type1- ja FreeType-fonttien käytön myös muut muodot: Adoben ja Microsoftin OTF, Applen TTF. Lisäksi XFT sallii vanhojen bittikarttakirjasinten skaalaamisen näyttämään Type1-kirjasimilta.
Määritteiden määrittelemiseksi lisättiin useita muita määritteitä, kuten vihjeitä tai vihjeitä . näistä kirjasimista.
Kaikki, jotka löytyvät /usr/share/fonts
-alikansioista. Ja XFT-parametrit voidaan määrittää kohdassa Xresources
.
FontConfig
Ja fontconfig
on käsiteltävä kaikkia yllä olevien -tietojen ristiriitoja. Toisin sanoen fontconfig on yritys määrittää kaikki yllä olevat kirjasintyypit tavalla, joka voi hyödyntää erillisten kirjasinten määritteitä yhteisellä syntaksilla.
Bittikartan kirjasimilla on ongelmia:
- useita eri tiedostoja yhdelle kirjasimelle
- rajoitetut koot pisteiden ja pikselikokojen mukaan.
Mutta niin tekevät myös vektoripohjaiset fontit:
- skaalaus vie aikaa, varsinkin jos käytetään useita parametreja
- kaikki fontin attribuutit eivät vaikuta eri kirjasintyyppeihin samalla tavalla
Ja molemmilla on ongelma, että fonttimuotoja on paljon ja että käyttäjä saattaa haluta asentaa omat kirjasimet kotiinsa. Fontconfig yrittää ratkaista nämä ongelmat.
fc-query
kertoo, mitä fontconfig ymmärtää fonttitiedostosta. Erityisesti mitä attribuutteja tiedosto on tarkoitettu (esimerkiksi bittikarttakirjasimille) ja mitä attribuutteja voidaan käyttää (vektorifontteihin).
fc-list
on tapa kertoa sinulle, mitä fontteja löytyy fontconfig-hakemistoista, joten sovellukset voivat käyttää niitä. Lopuksi fc-cache
indeksoi nämä kirjasimet löytääkseen ne helpommin ja skaalaten ne (muun muassa) sovelluskäyttöä varten.
Jaettu fontocnfig-kirjasto toisella käsi on mielenkiintoisin osa. Se antaa määritystiedostot (/etc/fonts
, ~/.config/fontconfig
) ja kirjasimen välimuistin antaa valmiiksi valmistetut fontit suoraan sovelluksiin, jotka on linkitetty siihen. Koska useimmat sovellukset käyttivät XFT: tä (ja siten FreeTypeä) ja FreeType-kirjasto käyttää puheluja fontconfig-kirjastosta, näiden kirjasinten käytöstä tulee kaikkialla.
Huomaa kuitenkin, että voit koota ohjelman, joka pyytää bittikarttafontti vanhalla tyylillä (esim. -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u
), eikä puhelu mene läpi fontconfig-jaetun lib: n.
Kommentit
- Kiitos yksityiskohtaisesta vastauksestasi, ymmärrän mitä yrität sanoa. Itse asiassa määritit Fc-kyselyn ja fc-listan, mutta haluan tietää asioita, kuten kun joku lelutaso-ohjelma yrittää käyttää FC: tä ja sen toimintoja, mihin pyyntö lähetetään ensimmäisen kerran? tarkoitan mikä on lähtökohta? Yritin lisätä lauseen kuten printf (" testaus ") fc-kyselyn pääfunktioon ja kirjoitin fc-kyselykomennon terminaalista, mutta en voinut nähdä sitä. olen koonnut sen taas make-komennolla
- @AmmarUlHassan – Heh,
printf("something")
ei koskaan käytä fontconfig-kirjastoa ' koska kirjasimella on pääteemulaattori. Fontconfig-sovelluksen käyttämiseen tarvitaan ohjelma, joka on linkitetty X11: een, ja sen on piirrettävä kirjasimet itse näytölle. Mutta jos voit ' t saadaprintf
pääkohteessa () näyttämään päätelaitteessa, joka on todennäköisesti PATH-ongelma, ' koska fontconfig on varmasti jo asennettu. - ok. Mutta entä jos haluan pienen komentosarjan fontconfig-tiedostoon, joka todella voi kutsua jonkin järjestelmän muiden jaettujen kirjastojen toimintoja. Ihanteellinen skenaario on, että lisätään yksi libin otsikkotiedosto fontconfig-tiedostoon (jotakin tiedostoa en tiedä mikä 1) ja kuin minä kääntän fontconfig uudelleen ja suoritan tiedoston niin, että se kutsuu kyseisen kirjaston toimintoa.
- @AmmarUlHassan – Se ' on liian monta asiaa. Fontconfig ei ole komentosarjaympäristö, se yksinkertaisesti tekee sen, mitä sen on tarkoitus tehdä: antaa esitäytetyt / välimuistissa olevat fontit Xorgille näytettäväksi, kun ti päivittää näyttöä. Jos tarvitset sovelluksia käyttämään kokoamasi fontconfig-tiedoston jaettua kirjastoa, sinun on määritettävä uudelleen
ldconfig
, jotta voit käyttää jaettua kirjastoa sen kirjaston sijaan, jokalibfreetype2
soittaa parhaillaan. Minusta tuntuu, että ' yrität purra liikaa tavaraa kerralla. - ha ha joo voi olla … Joten johtopäätös on, että ennen kaivamista syvä minun täytyy ymmärtää historiaa? Xft? kuin FC-toiminnot ja tietotyypit?