<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Stängd. Denna fråga är utanför ämnet . För närvarande accepteras inte svar.

Kommentarer

  • Jag skulle börja med att läsa API-dokumentationen som finns här freedesktop.org/software/ fontconfig / fontconfig-devel
  • @PaulH. Jag läste abstrakt denna dokumentation tidigare. Egentligen förklarar detta dokument mer om funktionerna och datatyperna etc men inte hur varje modul fungerar eller någon idé relaterad till det 🙁
  • OK. Men om du vill förstå källkoden kommer den dokumentationen att vara till hjälp eftersom datatyperna och funktionerna används i källkoden. Vad är ditt mål? Är det att veta hur du använder de kommandon du nämnde eller att förstå vad som exakt händer " under huven "?
  • @PaulH. Mitt huvudmål är båda ni nämnde men det första målet är vad som faktiskt händer?

Svar

TL; DR: Förstå fontconfig kräver förståelse för varför den skapades och vilka problem den försöker lösa. Det kräver mycket förståelse för Xorg.

Konfiguration av teckensnitt på UNIX-maskiner har gått igenom olika faser och fontconfig är helt enkelt en av de möjligheter du kan använda använd teckensnitt genom Xorg. Att läsa källan till fontconfig utan en god förståelse för källan till Xorg är förmodligen mycket svårt. Men jag tror att en förståelse för begreppen bakom utvecklingen av teckensnitt kan visa sig vara en anständig utgångspunkt.

Ansvarsfriskrivning: Jag handlar mycket om teckensnitt på Linux, men jag behövde aldrig ändra Xorg-koden till teckensnitt.

Arch Linux-wiki har också mycket information om detta

Lite historik

Original UNIX-teckensnitt var helt enkelt bitmappsteckensnitt. Idag kan dessa hittas i /usr/share/fonts/misc, PCF (bärbart kompilerat format) används i stort sett alla idag. Det är ett binärt format. Det har funnits andra format av binära teckensnitt men jag måste erkänna att jag aldrig behövde använda något annat format än PCF för binära teckensnitt. Med xfontsel kan du konfigurera en Xorg-sträng för att definiera punkter, avstånd, pixelstorlek, terminalvikt (fet, sned), kodning, bland annat för teckensnittet.

Bitmappsteckensnitten har olika filer för olika pixelstorlekar för teckensnittet. Bitmappsteckensnittet introducerar redan begreppet typsnittsfamilj.

Postscript (och i viss mån TeX) skapade typ 1-typsnitt som är vektorbaserade typsnitt. Dessa finns i /usr/share/fonts/Type1. Vektortypsnitt är konfigurerade med flera konfigurationsvärden, t.ex. antialias, embolden, dpi eller storlek (inte nödvändigtvis poängbaserad den här gången).

Vektorbaserade teckensnitt skalas och kräver inte flera filer.

Xorg använde både bitmapps- och Type1-teckensnitt . Och det skapade XFT (väl X FreeType är ett gränssnitt till FreeType som är ett GPL / BSD-bibliotek som härmar och utökar Type1). XFT tillåter inte bara typ- och FreeType-teckensnitt utan också andra format: OTF av Adobe och Microsoft, TTF av Apple. Dessutom tillåter XFT skalning av gamla bitmappsteckensnitt att se ut som typ1-teckensnitt.

Flera andra attribut, som antydningar eller antydningsstilar , lades till för att definiera attribut av dessa teckensnitt.

Allt som finns i undermappar för /usr/share/fonts. Och XFT-parametrar kan konfigureras i din Xresources.

FontConfig

Och fontconfig måste hantera alla avvikelser i ovanstående . Med andra ord är fontconfig ett försök att konfigurera alla typsnitt ovan på ett sätt som kan utnyttja attributen som de olika teckensnitten har med en gemensam syntax.

Bitmappsteckensnitten har sina problem:

  • flera olika filer för ett enda typsnitt
  • begränsade storlekar med punkter och pixelstorlekar.

Men det gör också de vektorbaserade teckensnitten:

  • skalning tar tid, speciellt om flera parametrar används
  • inte alla typsnittsattribut påverkar olika typsnitt på samma sätt

Och båda har problemet att det finns många teckensnittsformat och att en användare kanske vill installera egna teckensnitt i sitt hem. Fontconfig försöker lösa dessa problem.

fc-query berättar vad fontconfig förstår om teckensnittsfilen. Framför allt vilka attribut filen är till för (t.ex. bitmappsteckensnitt) och vilka attribut som kan användas (för vektorteckensnitt).

fc-list är ett sätt att berätta vilka typsnitt som finns i katalogerna som fontconfig tittar på och därför kan användas av applikationer. Slutligen utför fc-cache en indexering av dessa teckensnitt för att hitta dem lättare och för att skala dem (bland annat) för applikationsanvändning.

Fontocnfig delade bibliotek på den andra hand är den mest intressanta delen. Den använder konfigurationsfilerna (/etc/fonts, ~/.config/fontconfig) och teckensnittscachen för att ge förberedda teckensnitt direkt till applikationer som är länkade mot den. Eftersom de flesta applikationer använde XFT (och därför FreeType) och FreeType-biblioteket använder samtal från fontconfig-biblioteket blir användningen av dessa teckensnitt allestädes närvarande.

Men observera att du kan kompilera ett program som kommer att be Xorg om ett bitmappsteckensnitt i gammal stil (t.ex. -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u) och samtalet går inte genom fontconfig shared lib.

Kommentarer

  • Tack för ditt detaljerade svar. Jag förstår vad du försöker säga. Egentligen definierade du Fc-fråga och fc-lista men jag vill veta saker som när något leksaksnivåprogram försöker använda FC och dess funktioner var skickas begäran först? jag menar vad är utgångspunkten? Jag försökte lägga till ett uttalande som printf (" testar ") i huvudfunktionen för fc-fråga och än jag skrev kommandot fc-query från terminal men jag kunde inte se det. Jag kompilerade det igen med kommandot make
  • @AmmarUlHassan – Heh, printf("something") kommer aldrig att använda fontconfig-bibliotek ' det som handlar om teckensnittet är terminalemulatorn. För att använda fontconfig behöver du ett program länkat till X11, och det måste rita teckensnitten på skärmen av sig själv. Men om du kan ' t få en printf i huvud () för att visa på terminalen som sannolikt är ett PATH-problem, ' eftersom du verkligen har fontconfig redan installerat.
  • ok bra. Men vad händer om jag vill ha ett litet skript i fontconfig som faktiskt kan kalla någon funktion i något annat delat bibliotek på mitt system. Idealiskt scenario är att jag kommer att lägga till en rubrikfil av det lib i fontconfig (någon fil jag inte vet vilken 1) och än jag kommer att kompilera fontconfig igen och köra den filen så att den kallar funktionen för det biblioteket.
  • @AmmarUlHassan – Att ' är för många saker. Fontconfig är inte en skriptmiljö, det gör helt enkelt vad den är tänkt att göra: ge förkoplade / cachade teckensnitt som Xorg kan visa när ti uppdaterar skärmen. Om du behöver applikationer för att använda det delade biblioteket för fontconfig du kompilerade måste du konfigurera om ldconfig för att använda ditt delade bibliotek istället för biblioteket som libfreetype2 ringer för närvarande. Jag har intrycket att du ' försöker bita på för mycket grejer på en gång.
  • ha ha ja kan vara … Så slutsatsen är att innan du gräver djupt måste jag förstå historien? Xft? och än FC-funktioner och datatyper?

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *