Kommentarer
- Jeg vil begynne med å lese API-dokumentasjonen som finnes her freedesktop.org/software/ fontconfig / fontconfig-devel
- @PaulH. Jeg leste abstrakt denne dokumentasjonen tidligere. Egentlig forklarer dette dokumentet mer om funksjonene og datatypene osv., Men ikke hvordan hver modul fungerer eller noen ideer relatert til det 🙁
- OK. Men hvis du vil forstå kildekoden, vil dokumentasjonen være nyttig siden datatypene og funksjonene brukes i kildekoden. Hva er målet ditt? Er det å vite hvordan du bruker kommandoene du nevnte, eller å forstå hva som skjer " under hetten "?
- @PaulH. Hovedmålet mitt er begge du nevnte, men det første målet er hva som faktisk skjer?
Svar
TL; DR: Forståelse av fontconfig krever forståelse av hvorfor den ble opprettet og hvilke problemer den prøver å løse. Det krever mye forståelse av Xorg.
Fontkonfigurasjon på UNIX-maskiner gikk gjennom forskjellige faser og fontconfig er ganske enkelt en av mulighetene du kan bruke til bruk skrifttyper gjennom Xorg. Å lese kilden til fontconfig uten god forståelse av kilden til Xorg er sannsynligvis veldig vanskelig. Men jeg tror at en forståelse av begrepene bak utviklingen av skrifter kan vise seg å være et anstendig utgangspunkt.
Ansvarsfraskrivelse: Jeg arbeider mye med skrifter på Linux, men jeg trengte aldri å endre Xorg-koden til skrifttyper.
Arch Linux-wiki har også mye info om dette
Litt historie
Originale UNIX-skrifter var ganske enkelt bitmap-skrifter. I dag finnes disse i /usr/share/fonts/misc
, PCF (bærbart kompilert format) brukes til stort sett alle i dag. Det er et binært format. Det har vært andre formater for binære skrifter, men jeg må innrømme at jeg aldri trengte å bruke noe annet format enn PCF for binære skrifter. Ved hjelp av xfontsel
kan du konfigurere en Xorg-streng for å definere punkter, avstand, pikselstørrelse, terminalvekt (fet, skrå), koding, blant annet for fonten.
Bitmap-skriftene har forskjellige filer for forskjellige piksler på skrift. Bitmap-skriftene introduserer allerede begrepet fontfamilie.
Postscript (og til en viss grad TeX) opprettet Type 1-skrifter som er vektorbaserte skrifter. Disse er i /usr/share/fonts/Type1
. Vektorfonter er konfigurert med flere konfigurasjonsverdier, f.eks. antialias, embolden, dpi eller størrelse (ikke nødvendigvis poengbasert denne gangen).
Vectorbaserte skrifttyper skaleres og krever ikke flere filer.
Xorg brukte både bitmap- og Type1-skrifttyper . Og det skapte XFT (vel X FreeType er et grensesnitt til FreeType som er et GPL / BSD-bibliotek som etterligner og utvider Type1). XFT tillater ikke bare bruk av Type1 og FreeType-skrifttyper, men også andre formater: OTF av Adobe og Microsoft, TTF av Apple. Videre tillater XFT at skalering av de gamle bitmap-skriftene ser ut som Type1-skrifter.
Flere andre attributter, som hinting eller hintstyle , ble lagt til for å definere attributter av disse skriftene.
Alt som finnes i undermapper til /usr/share/fonts
. Og XFT-parametere kan konfigureres i Xresources
.
FontConfig
Og fontconfig
må takle alle avvikene ovenfor . Med andre ord er fontconfig et forsøk på å konfigurere alle fonttypene ovenfor på en måte som kan utnytte attributtene som de forskjellige skriftene har med en felles syntaks.
Bitmap-fontene har sine problemer:
- flere forskjellige filer for en enkelt font
- begrenset størrelser med poeng og pikselstørrelser.
Men det gjør også de vektorbaserte skriftene:
- skalering tar tid, spesielt hvis flere parametere brukes
- ikke alle fontattributter påvirker forskjellige fonttyper på samme måte
Og begge har problemet at det er mange skriftformater, og at en bruker kan ønske å installere egne skrifter i hjemmet sitt. Fontconfig prøver å løse disse problemene.
fc-query
forteller deg hva fontconfig forstår om fontfilen. Spesielt hvilke attributter filen er for (for eksempel for bitmap-skrifttyper) og hvilke attributter som kan brukes (for vektorfonter).
fc-list
er en måte å fortelle deg hvilke skrifttyper som finnes i katalogene fontconfig ser på, og derfor kan brukes av applikasjoner. Til slutt fc-cache
utfører en indeksering av disse skriftene for å finne dem lettere og for å skalere dem (blant annet) for applikasjonsbruk.
Fontocnfig delte bibliotek på den andre hånd er den mest interessante delen. Den bruker konfigurasjonsfilene (/etc/fonts
, ~/.config/fontconfig
) og fontbufferen for å gi forberedte skrifter direkte til applikasjoner som er koblet mot den. Siden de fleste applikasjoner brukte XFT (og derfor FreeType) og FreeType-biblioteket bruker samtaler fra fontconfig-biblioteket, blir bruken av disse skriftene allestedsnærværende.
Men merk at du kan kompilere et program som vil be Xorg om en bitmappeskrift i gammel stil (f.eks. -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u
), og samtalen går ikke gjennom fontconfig delt lib.
Kommentarer
- Takk for svaret ditt. Jeg forstår hva du prøver å si. Egentlig definerte du Fc-spørring og fc-liste, men jeg vil vite ting som når et eller annet leketøyprogram prøver å bruke FC og dets funksjoner, hvor sendes forespørselen først? jeg mener hva er utgangspunktet? Jeg prøvde å legge til et utsagn som printf (" testing ") i hovedfunksjonen for fc-spørring og enn jeg skrev kommandoen fc-spørring fra terminal, men jeg kunne ikke se det. jeg kompilerte det igjen med make-kommandoen skjønt
- @AmmarUlHassan – Heh,
printf("something")
vil aldri bruke fontconfig-bibliotek ' årsaken til det som har med fonten å gjøre er terminalemulatoren. For å bruke fontconfig trenger du et program koblet til X11, og det må tegne skriftene på skjermen av seg selv. Men hvis du kan ' t få enprintf
i hoved () for å vise på terminalen som sannsynligvis er et PATH-problem, ' fordi du absolutt allerede har installert fontconfig. - ok. Men hva om jeg vil ha et lite skript i fontconfig som faktisk kan kalle en funksjon av et annet Delt bibliotek på systemet mitt. Ideelt scenario er at jeg vil legge til en overskriftsfil av den liben i fontconfig (noen filer jeg ikke vet hvilken 1) og enn jeg vil kompilere fontconfig på nytt og kjøre den filen slik at den kaller funksjonen til det biblioteket.
- @AmmarUlHassan – At ' er for mange ting. Fontconfig er ikke et skriptmiljø, det gjør ganske enkelt det det er ment å gjøre: gi forhåndspakkede / hurtigbufrede skrifter som Xorg kan vises når ti oppdaterer skjermen. Hvis du trenger applikasjoner for å bruke det delte biblioteket til fontconfig du kompilerte, må du konfigurere
ldconfig
for å bruke det delte biblioteket i stedet for biblioteket somlibfreetype2
ringer for øyeblikket. Jeg har inntrykk av at du ' prøver å bite på for mye ting på en gang. - ha ha ja kan være … Så konklusjonen er at før du graver dypt må jeg forstå historien? Xft? og enn FC-funksjoner og datatyper?