Uzavřeno. Tato otázka je mimo téma . Momentálně nepřijímá odpovědi.

Komentáře

  • Začal bych čtením dokumentace API, kterou naleznete zde freedesktop.org/software/ fontconfig / fontconfig-devel
  • @PaulH. Tuto dokumentaci jsem abstraktně četl dříve. Ve skutečnosti tento dokument vysvětluje více o funkcích a datových typech atd., Ale ne o tom, jak jednotlivé moduly fungují, ani jakýkoli nápad s tím související 🙁
  • OK. Ale Pokud chcete porozumět zdrojovému kódu, bude tato dokumentace užitečná, protože datové typy a funkce se používají ve zdrojovém kódu. Co přesně je vaším cílem? Je to vědět, jak používat uvedené příkazy, nebo pochopit, o co přesně jde " pod kapuce "?
  • @PaulH. Mým hlavním cílem je to, co jste zmínili, ale prvním cílem je to, co se vlastně děje?

Odpověď

TL; DR: Porozumění fontconfig vyžaduje pochopení, proč byl vytvořen a jaké problémy se snaží vyřešit. To vyžaduje hodně pochopení Xorg.

Konfigurace písma na počítačích UNIX prošla různými fázemi a fontconfig je prostě jedna z možností, kterou můžete použít používat písma prostřednictvím Xorg. Čtení zdroje fontconfig bez dobrého pochopení zdroje Xorg je pravděpodobně velmi obtížné. Věřím však, že pochopení konceptů, které stojí za vývojem písem, se může ukázat jako slušný výchozí bod.

Zřeknutí se odpovědnosti: Hodně se zabývám fonty v Linuxu, ale nikdy jsem opravdu nemusel měnit související kód Xorg do písem.

Arch Linux wiki má také mnoho informací o tomto

Trochu historie

Původní písma systému UNIX byla jednoduše bitmapová písma. Dnes je lze najít v /usr/share/fonts/misc, PCF (přenosný kompilovaný formát) se dnes používá téměř pro všechny. Je to binární formát. Existovaly i jiné formáty binárních písem, ale musím přiznat, že jsem pro binární písma nikdy nemusel používat jiný formát než PCF. Pomocí xfontsel můžete nakonfigurovat řetězec Xorg, který mimo jiné definuje body, mezery, velikost pixelu, váhu terminálu (tučně, šikmo), kódování.

Bitmapová písma mají různé soubory pro různé velikosti pixelů písma. Bitmapová písma již zavádějí koncept rodiny písem.

Postskript (do jisté míry i TeX) vytvořil písma typu 1, která jsou vektorovými písmy. Ty jsou v /usr/share/fonts/Type1. Vektorová písma jsou konfigurována s několika hodnotami konfigurace, např. antialias, embolden, dpi nebo velikost (tentokrát nemusí nutně vycházet z bodu).

Vektorová písma jsou zmenšena a nevyžadují několik souborů.

Xorg použil jak bitmapová, tak písma Type1 . A vytvořil XFT (dobře X FreeType je rozhraní k FreeType, což je knihovna GPL / BSD, která napodobuje a rozšiřuje Type1). XFT umožňuje nejen použití písem Type1 a FreeType, ale také další formáty: OTF od Adobe a Microsoft, TTF od Apple. XFT navíc umožňuje, aby škálování starých bitmapových písem vypadalo jako písma Type1.

K definování atributů bylo přidáno několik dalších atributů, například hinting nebo hintstyle těchto písem.

Vše, co najdete v podsložkách /usr/share/fonts. A parametry XFT lze konfigurovat ve vašem Xresources.

FontConfig

And fontconfig se musí vypořádat se všemi nesrovnalostmi výše uvedeného . Jinými slovy fontconfig je pokus o konfiguraci všech výše uvedených typů písma způsobem, který dokáže zneužít atributy, které mají odlišná písma se společnou syntaxí.

Bitmapová písma mají své problémy:

  • několik různých souborů pro jedno písmo
  • omezené velikosti podle bodů a velikostí pixelů.

Ale stejně tak i vektorová písma:

  • změna měřítka nějakou dobu trvá, zvláště je-li použito několik parametrů
  • ne všechny atributy písma ovlivňují různé typy písem stejným způsobem

A oba mají problém, že existuje mnoho formátů písem a že si uživatel může přát nainstalovat vlastní písma do svého domova. Fontconfig se pokouší tyto problémy vyřešit.

fc-query vám řekne, co fontconfig rozumí souboru písem. Zejména jaké atributy má soubor (například pro bitmapová písma) a jaké atributy lze použít (pro vektorová písma).

fc-list je způsob, jak vám sdělit, jaká písma lze najít v adresářích, na které se fontconfig dívá, a proto je aplikace mohou používat. Nakonec fc-cache provede indexování těchto písem, aby je snáze našel a aby je (mimo jiné) škáloval pro použití aplikací.

Sdílená knihovna fontocnfig na straně druhé ruka je ta nejzajímavější část. Využívá konfigurační soubory (/etc/fonts, ~/.config/fontconfig) a mezipaměť písem, aby poskytla předem připravená písma přímo aplikacím, které jsou proti němu propojeny. Protože většina aplikací používá XFT (a tedy FreeType) a knihovna FreeType používá volání z knihovny fontconfig, používání těchto fontů se stává všudypřítomným.

Nezapomeňte však, že můžete zkompilovat program, který vás Xorg požádá o bitmapové písmo ve starém stylu (např. -*-terminus-medium-r-normal-*-*-200-*-*-c-*-*-u) a hovor neprojde sdíleným knihovnou fontconfig.

Komentáře

  • Děkuji za vaši podrobnou odpověď, chápu, co se snažíte říct. Ve skutečnosti jste definovali Fc-dotaz a fc-seznam, ale chci vědět věci, jako když se nějaký program na úrovni hraček pokusí použít FC a jeho funkce, kde je nejprve odeslán požadavek? Myslím tím, co je výchozím bodem? Snažil jsem se přidat prohlášení jako printf (" testování ") do hlavní funkce fc-query a pak jsem napsal příkaz fc-query z terminálu, ale neviděl jsem to. Zkompiloval jsem to znovu pomocí příkazu make
  • @AmmarUlHassan – Heh, printf("something") nikdy nepoužije knihovnu fontconfig ' protože to, co se zabývá písmem, je emulátor terminálu. Chcete-li použít fontconfig, potřebujete program propojený s X11 a ten sám musí kreslit písma na obrazovku. Pokud ale ' nedostanete printf v main (), aby se na terminálu zobrazilo, že je to pravděpodobně PATH problém, ' protože určitě už máte fontconfig nainstalovaný.
  • ok fajn. Ale co když chci nějaký malý skript v fontconfig, který může skutečně volat nějakou funkci nějaké jiné sdílené knihovny v mém systému. Ideální scénář je, že do fontconfig přidám jeden soubor záhlaví tohoto lib (nějaký soubor nevím, který 1) a pak znovu zkompiluji fontconfig a spustím tento soubor tak, že volá funkci této knihovny.
  • @AmmarUlHassan – To je ' příliš mnoho věcí. Fontconfig není skriptovací prostředí, jednoduše dělá to, co má dělat: poskytuje předkopírovaná / uložená písma pro Xorg, aby se zobrazila, když ti obnovuje obrazovku. Pokud potřebujete aplikace, aby používaly sdílenou knihovnu fontconfig, kterou jste kompilovali, musíte překonfigurovat ldconfig tak, aby používala vaši sdílenou knihovnu místo knihovny, která libfreetype2 právě volá. Mám dojem, že se ' pokoušíte kousat příliš mnoho věcí najednou.
  • ha ha ano, může to být … Takže závěr je takový, že před kopáním hluboko potřebuji pochopit historii? Xft? a než funkce FC a datové typy?

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *