Wpf, înlocuirea și încorporarea fonturilor

Înlocuirea fonturilor

Când specificați fonturi, trebuie să selectați cu atenție fontul care ar trebui să fie prezent pe computerul utilizatorului. WPF poate ajuta într-o oarecare măsură în această problemă grație sistemului de fonturi alternative. Acesta vă permite să specificați în proprietatea FontFamily o listă de fonturi separate prin virgule. După aceea, WPF va încerca să selecteze un font din lista specificată.







Următorul exemplu încearcă să utilizeze fontul Italic tehnic și, în caz de absență, este selectată opțiunea de backup - Comic Sans MS sau Arial:

Dacă o familie de fonturi conține brusc o virgulă în numele ei, trebuie să fie scrisă de două ori.

Apropo, este posibil să obțineți o listă a tuturor fonturilor instalate pe calculatorul curent - utilizând colecția statică SystemFontFamilies din clasa System.Windows.Media.Fonts. Următorul exemplu este un exemplu în care această colecție este utilizată pentru a adăuga fonturi în caseta listă:

Obiectul FontFamily vă permite să aflați alte detalii, cum ar fi distanța dintre linii și căștile aferente.

Unul din ingredientele care nu sunt disponibile în WPF este dialogul pentru selectarea fontului. Grupul WPF Textul propus înseamnă doi dezvoltatori mai atractive pentru a selecta un font: versiune fără a unui cod care utilizează date cu caracter obligatoriu și versiunea mai complexă care acceptă opțiuni de design opționale găsite în unele fonturi OrenType.

Încorporați fonturi

O altă posibilitate atunci când lucrați cu fonturi neobișnuite este să le încorporați în aplicație. Apoi, aplicația nu va avea niciodată probleme cu găsirea fontului necesar.

Procesul de încorporare este foarte simplu. Mai întâi trebuie să adăugați aplicația fișierul de font (de obicei cu extensia .ttf) și să atribuiți parametrul Resource parametrului Build Action. (Acest lucru se poate face în Visual Studio prin selectarea fișierului font din Solution Explorer și schimbarea valorii Build Action în fereastra Properties.)

Atunci când utilizați un font, trebuie să adăugați o secvență de caractere înaintea numelui de familie ./#:

Wpf, înlocuirea și încorporarea fonturilor

WPF interpretează ./ simbolurile ca indicație a dosarului curent. Pentru a înțelege ce înseamnă acest lucru, trebuie să înțelegeți sistemul de ambalare XAML.

Aveți posibilitatea să rulați fișierele stand-alone (așa-numitele necorelate) XAML direct în browser, fără a le compila. Singura condiție este că fișierul XAML nu poate utiliza un fișier de cod separat. Dosarele actuale sunt valide, astfel încât WPF caută fișierele de fonturi care se află în același director ca și fișierul XAML și le pune la dispoziția aplicației.







Acest URI este disponibil în mai multe locuri, inclusiv în proprietatea FontFamily.BaseUri. WPF folosește acest URI ca locație de bază atunci când caută fonturi. Astfel, atunci când este utilizat în sintaxa compilate ./ WPF-cererea de a fi căutat fonturile care sunt construite într-o resursă cu XAML compilat.

După simbolurile ./, puteți specifica pur și simplu numele fișierului, dar în mod obișnuit sunt adăugate caracterul numeric (#) și numele familiei fontului. În exemplul de mai sus, fontul încorporat este numit Vivaldi.

Embedding fonts are propriile sale subtilități. Trebuie să specificați numele exact al familiei de fonturi și să selectați acțiunea de asamblare corectă pentru fișierul de fonturi. Embedding fonts afectează și problemele legate de licențiere. Din păcate, cele mai multe vânzătorii de fonturi sunt permise pentru a încorpora fonturile în documente (cum ar fi fișierele PDF), dar nu și în cerere (de exemplu, WPF de asamblare), chiar dacă fontul WPF încorporat nu este accesibil direct utilizatorului final. WPF nu încearcă să licențieze fonturi și totuși, înainte de distribuirea fontului, asigurați-vă că nu încălcați termenii licenței.

În special, uitați-vă la fila Embedding, dacă este permisă încorporarea acestui font. Fonturile marcate ca Embedding Installed Allowed sunt potrivite pentru utilizarea în aplicațiile WPF, iar fonturile marcate ca Editable Embedding Permitted pot să nu fie potrivite pentru acest lucru. Pentru informații privind acordarea licențelor pentru utilizarea unui font, contactați distribuitorul pentru acest font.

Modul de formatare a textului

Desenarea textului în WPF este ușor diferită de desenarea în aplicațiile mai vechi bazate pe GDI. Acest lucru se datorează în principal diferenței în aplicarea WPF independentă a dispozitivului de afișare a sistemului, dar au existat, de asemenea, îmbunătățiri semnificative care permit textul să arate mai clar și mai clar, mai ales pe monitoarele LCD.

Cu toate acestea, desenarea unui text în WPF are un dezavantaj cunoscut. Cu dimensiuni mici, textul devine murdar și conține artefacte nedorite (cum ar fi un halo de culoare în jurul marginilor caracterelor). Astfel de probleme nu apar atunci când textul este ieșit folosind GDI, deoarece această interfață utilizează mai multe tehnici menite să îmbunătățească claritatea textului mic.

De exemplu, GDI poate schimba formele literelor mici, își schimbă pozițiile și le aliniază de-a lungul limitelor pixelilor. Aceste măsuri conduc la pierderea anumitor caracteristici ale setului cu cască, dar ele măresc confortul citirii de pe ecran în cazul afișării unui text mic.

Și cum să rezolve sarcina de afișare a textului fin în WPF? Este mai bine să crească pur și simplu dimensiunea sa (la 96 Monitor dpi acest defect dispare atunci când dimensiunea textului aproximativ 15 unități independente de dispozitiv), sau folosind un monitor cu o dpi valoare mare, care este suficient pentru permis de un display clar de text dimensiunea dorită. Dar, din moment ce aceste opțiuni nu sunt de multe ori se aplică în practică în WPF 4 a introdus o nouă caracteristică: utilizarea selectivă a redare de text în stil GDI.

Pentru a afișa textul în stilul GDI pentru a adăuga la elementul afișat pe text (de exemplu, TextBlock sau eticheta), proprietatea TextOptions.TextFormattingMode atașat și schimba valoarea sa Display (cu Ideal Standard).

Rețineți că proprietatea TextFormattingMode este potrivită numai pentru un font mic. Dacă o aplicați pentru mărimi mai mari (mai mult de 15 puncte), atunci textul nu va fi atât de clar, spațiile dintre simboluri nu sunt la fel de bune și personajele nu vor arăta foarte bine.

Și dacă utilizați și o transformare care se rotește, mărește dimensiunea, sau altfel modifică cumva aspectul textului, trebuie să utilizați întotdeauna modul de afișare a textului standard în WPF. La urma urmei, optimizarea stilului GDI este aplicată textului înainte de astfel de transformări. După conversie, rezultatul nu va mai fi aliniat limitelor pixelilor, iar textul va părea neclar.







Trimiteți-le prietenilor: