Fonturi în subsistemul de font încorporat în linux x-server

Această parte descrie redarea și redarea clasică a fonturilor în X Window System: Core X Renderer.

Modelul client-server X11 se bazează pe așa-numitul protocol de bază X Window System. care este, Protocolul de bază al X Window System. Aceștia stabilesc interacțiunea dintre diferitele componente ale sistemului. Protocolul principal permite utilizarea fonturilor pe partea X-server. Serverul X are fie acces direct la fișierele de fonturi din sistemul de fișiere, fie prin rețea, dintr-un program numit server de fonturi. Clienții X pot interoga serverul X pentru o listă de fonturi disponibile, orice atribute sau dimensiuni care vor fi afișate pe ecran cu o linie de text, desenată cu un anumit font.







X-server este dependentă foarte rigid de disponibilitatea unui set de bază de fonturi, pur și simplu nu va porni dacă în posesia sa nu este suficient de set de fonturi sau ca fișiere într-un sistem de fișiere sau ca un server de fonturi. Prin urmare, în orice pachet de sistem de operare cu un server X, depinde în mod necesar de pachetul cu fonturile de bază.

Serverul de fonturi sau serverul de fonturi X oferă un mecanism standard de distribuire a fontului pe serverul X, cel mai adesea se conectează la portul TCP 7100. În prezent, serverul de fonturi nu este recomandat.

configurație

Fișierul de configurare principal pentru serverul X.org este de obicei fișierul /etc/X11/xorg.conf. Secțiunea Fonturi este răspunsată în secțiunea Fișiere, iată cum arată:

Suntem interesați de directiva FontPath. care specifică calea completă la directorul care conține fișierele de fonturi. Dacă aceste directive nu sunt prezente sau dacă căile sunt incorecte sau dacă nu există fonturi în căile specificate, serverul X nu va porni. În directorul de fonturi, fișierele de fonturi trebuie să fie amplasate direct, precum și câteva fișiere de servicii speciale: encodings.dir, fonts.alias, fonts.dir.

Lista de nume de fonturi din acest director și fișierele în care sunt conținute. Din acest fișier, serverul X ia o listă a fonturilor care vor fi utilizate;

lista de pseudonime pentru nume de fonturi este, de asemenea, citită de serverul X;

encodings.dir de coduri de fonturi cunoscute, citite de serverul X atunci când deschideți un font cu o codificare necunoscută.

Fișierele de servicii de mai sus sunt create folosind comenzile mkfontdir și mkfontscale. mkfontdir scanează directoarele specificate, indexează fișierele de fonturi raster găsite acolo și creează fișierele fonts.dir și encodings.dir. În plus, mkfontdir adaugă conținutul fișierului fonts.scale în fișierul fonts.dir, dacă este găsit. Fișierul fonts.scale este, la rândul său, creat de comanda mkfontscale. care indexează fișierele de fonturi vectoriale.

În manualele vechi pot fi găsite recomandare ttmkfdir de a utiliza programul pentru a indexa formatul font TrueType, dar versiunile recente mkfontscale ei înșiși sunt capabili de a face treaba, astfel încât nu este nevoie să ttmkfdir nu mai mult.

Deci, pentru a pregăti un director care conține fișierele de fonturi pentru a fi utilizate în serverul X, trebuie să executați două comenzi în ordine: mkfontscale și mkfontdir. cel mai adesea acest lucru este de ajuns. Acum acest director poate fi scris în fișierul xorg.conf, iar serverul X va "vedea" noile fonturi la următoarea pornire.

Cu toate acestea, puteți face fără restart, pentru aceasta trebuie să rulați comanda xset + fp path-to-directory-with-fonts. Dacă ați modificat ceva într-un director deja adăugat sau în directorul de sistem, executați comanda xset fp rehash. astfel încât serverul X să actualizeze lista fonturilor descărcate. Rețineți că aceste programe funcționează în contextul serverului X, deci trebuie să fie executate în terminal din cadrul sesiunii X.







Puteți utiliza această metodă, de exemplu, pentru a încărca fonturi personalizate pe serverul X fără a edita fișierele de configurare a sistemului. Pentru a face acest lucru, trebuie să înregistrați comenzile corespunzătoare într-un fișier care este lansat când porniți shell-ul dvs. grafic sau serverul X.

utilizarea

Pentru a numi fonturi în Protocolul de bază, se utilizează o notație specială numită X Logical Font Description. abreviat ca XLFD. în limba rusă poate fi tradus ca o descriere logică a X-Font. Principalele obiective și cerințe ale acestei notații sunt:

  • Furnizați nume de fonturi unice, descriptive, care vă permit să căutați după model.
  • Suport pentru o varietate de producători de fonturi, seturi de caractere arbitrare și codificări.
  • Suport pentru fonturi vectoriale.
  • Suport pentru transformările și selecțiile unui subset al fontului.
  • O implementare independentă de serverul X, sistemul de operare și sistemul de fișiere.
  • Sprijin pentru căutare complexă și înlocuire fonică arbitrar.
  • Extensibilitate.

Înregistrarea XLFD despre font este de paisprezece câmpuri, separate de simbolul "-". Fiecare câmp descrie o anumită caracteristică a fontului (nume, stil, codificare etc.). Iată un exemplu de înregistrare XLFD complet definită despre un font:

Este posibil ca înregistrarea să nu fie complet definită, în acest caz, în loc de valoarea specifică a oricărei părți, există simbolul "*", de exemplu, după cum urmează:

Fiecare intrare XLFD corespunde unui set de liste cunoscute fonturilor serverului X. Pentru o înregistrare complet definită, un astfel de set poate consta cel mult dintr-un element sau complet gol. Pentru un set incomplet definit, acesta poate consta din mai multe înregistrări. Când se execută o aplicație (adică un client X), aceasta trimite o înregistrare XLFD despre fontul dorit pe serverul X. Cu cât această înregistrare este mai puțin definită (adică cu mai multe simboluri pe care le întâlnește), cu atât este mai mare probabilitatea ca un font adecvat pentru aceasta să fie detectat și furnizat. Asta este, XLFD joacă rolul de mască la alegerea unui font.

Cheia subsistemului font X-server - de redare a fonturilor a fost X-server și aplicații care rulează (de exemplu, X-client) operează exclusiv XLFD-înregistrări și rasterizarea, scalarea și alte operații grafice pe fontul nu răspunde. Avantajul acestui fapt este o cantitate mai mică de date care urmează să fie transmise de la client la X-X-server este, în esență, o aplicație transferă doar linia de text care deja atunci atrage X-Server.

Mai întâi, experimentați cu numele fonturilor. Serverul X include utilitarul xfontsel. care vă permite să prezentați vizual procesul de selectare a unui font în funcție de criteriile specificate. Doar rulați programul fără parametri și încercați să creșteți valorile diferite ale componentelor XLFD. Pe măsură ce setați valorile, numărul de fonturi care se încadrează în ele (în colțul din dreapta sus) se modifică. Pentru a copia înregistrarea XLFD în clipboard, faceți clic pe butonul "select".

Și acum câteva exemple pentru a ilustra ceea ce sa spus. Să rulați programul xterm și lăsați-l să utilizeze orice font:

Folosim o înregistrare XLFD complet nedefinită, astfel încât programul va începe cu primul nume de font sub mască. Acum încercăm să folosim numele de font inexistent, de exemplu, setând numele producătorului FAKENAME.

După cum vedem, serverul X nu a putut detecta un astfel de font și, prin urmare, xterm folosește un anumit "font implicit", în acest caz "fix".

Acum vom crea o înregistrare XLFD care selectează toate fonturile de fonturi care au codificarea "iso8859-1". Pentru a face acest lucru, rulați xfontsel și setați slant XLFD la "i", rgstry la "iso8859", încadrat la "1"; obținem aproximativ următorul rezultat:

Fonturi în subsistemul de font încorporat în linux x-server

Și rulați xterm cu fontul pe care tocmai l-ați selectat:

În plus față de xfontsel, există mai multe alte programe utile pentru lucrul cu subsistemul de fonturi încorporat în serverul X:

produce o listă de fonturi care satisfac modelul dat. Rularea fără parametri produce doar o listă a tuturor fonturilor. * xfd

restricţii

Subsistemul încorporat de fonturi al serverului X este foarte vechi și nu permite utilizarea multor caracteristici moderne de redare a fonturilor, de exemplu, anti-aliasing; De asemenea, are probleme foarte grave cu codificări unicode și multibyte, ceea ce îngreunează în continuare posibilitatea utilizării. Aproape toate programele moderne nu utilizează motorul de randare a fontului încorporat pe partea serverului X și preferă să utilizeze moduri de redare mai flexibile și mai bogate în utilizare pe partea X-client. Acesta este exact ceea ce voi vorbi și despre povestea subsistemului de fonturi încorporat în serverul X, am pus un punct și nu voi mai reveni la acest subiect.







Trimiteți-le prietenilor: