Lucrul cu Hyphenation
Uneori este necesar să folosești punctuația pentru un aranjament mai compact al textului într-un document. În același timp, este important să înțelegem că specificul separării cuvintelor poate diferi pentru fiecare limbă.
În prezent, alinierea nu este folosită la fel de des ca înainte, mai ales în textele englezești. Însă utilizarea acestei caracteristici poate avea un impact serios asupra documentelor utilizatorului – oprimarea afectează aranjamentul și, ca rezultat, aspectul fișierelor de ieșire, de exemplu în format PDF.
Pentru divizarea corectă a cuvintelor se folosesc dicționare de punctuație specifice unei limbi. Aspose.Words folosește algoritmi avansați pentru a lucra cu astfel de dicționare și permite obținerea aceluiași tip de punctuație ca în Microsoft Word.
Dicționare de punctare
Fiindcă diferite limbi folosesc norme și reguli diferiite pentru întreruperea cuvintelor, soluția optimă pentru o întrerupere corectă este folosirea dicționarelor speciale. Aspose.Words folosește dicționare OpenOffice.
Pentru verificarea ortografică, OpenOffice folosește Hunspell library, care este o generalizare a algoritmului de împerechere a lui TeX. Acest algoritm permite auto-hyphenare ne-standard folosind modele de hyphenare concurente standard și personalizate. Hunspell folosește Hyphen pentru hyphenare.
Algoritmul de punctuație
Aspose.Words implementează the TeX hyphenation algorithm și poate reutiliza dicționarele de punctuație OpenOffice.
Următoarele caracteristici ale algoritmilor Aspose.Words ar trebui luate în considerare
- Parametrii distanței de justificare (LEFTHYPHENMIN, RIGHTHYPHENMIN, COMPOundleFTHYPHENMIN, COMPOUNDRIGHTHYPHENMIN) specificate în dicționarul de justificare sunt ignorate. Aspose.Words folosește setul său propriu de parametri de distanță, în funcție de modul de compatibilitate a documentului.
- Algoritmul de legare în Aspose.Words suportă composite hyphenation. Însă, Aspose.Words împarte secvenţe de caractere care conţin caractere alfabetice şi nealfabetice în părţi alfabetice singulare (cuvinte) şi le împarte separat. Notă că logica de întrerupere a cuvântului compus Microsoft Word depinde de modul de compatibilitate al documentului.
- Algoritmul de punctuație din Aspose.Words nu implementează non-standard hyphenation. Patroane non-standard sunt ignorate.
Încărcarea dicționarelor de interpunere
Pentru a folosi caracteristica de justificare, mai întâi înregistraţi un dicţionar de justificare. Următorul exemplu de cod arată cum să încărcaţi dicționarele de justificare pentru limbile specificate dintr-un fișier:
Exemplul de cod următor arată cum se încarcă dicționarele de punctuație pentru o limbă specificată dintr-un flux:
Ca o alternativă la înregistrarea dicționarelor de separare prin preînregistrare, este posibilă și înregistrarea dicționarelor de separare “la cerere. Pentru a face asta, implementează interfața IHyphenationCallback și foloseşte callback-ul static Callback.
Exemplul următor de cod arată cum să implementați interfața IHyphenationCallback:
Impactul punctării asupra aranjamentului
Când se descompune textul în linii, Aspose.Words verifică fiecare cuvânt dacă se potrivește întreg în linia curentă. Dacă alt cuvânt este prea lung pentru a încăpea la sfârșitul liniei, în mod implicit Aspose.Words îl mută la începutul liniei următoare în loc să-l întrerupă.
Cu toate acestea, caracteristica de întrerupere poate fi folosită în Aspose.Words pentru a introduce întreruperi în cuvinte pentru a elimina spațiile din textul justificat sau pentru a menține o lungime de linie uniformă în coloane înguste. Acest lucru afectează evident numărul de linii și prin urmare numărul de pagini. În alte cuvinte, utilizarea funcției de punctuație afectează aranjamentul documentului.
Hipertonare și justificare (H&J)
Microsoft Word are logică complexă pentru alegerea unui punct de întrerupere dacă este text justificat și hiperenlegarea este activată. Pe scurt, Microsoft Word ar putea prefera să reducă sau să mărească spațiile pentru a evita întreruperea liniei. Logica probabil este bazată pe Knuth’s article.
Aspose.Words implementează algoritmul său de tip H&J, care dă același rezultat ca Microsoft Word și oferă o întrerupere a liniei identică în documentul de ieșire.