Capitolo 3.4 · Parte II · Il mestiere
Configurazione: sillabazione e lingua
Pattern ed eccezioni di sillabazione, testo in bandiera, la lingua del documento con le sue cifre e la sua direzione, e le scritture che Postext compone
In breve
Questa pagina spiega come si dividono le parole a fine riga e come Postext sa in che lingua è scritto un libro. Attivi o disattivi la sillabazione ed elenchi le parole che non vanno mai divise. Puoi lasciare irregolare il margine destro del testo invece che dritto. La lingua del documento decide le regole di sillabazione, i nomi delle figure e delle tabelle, le cifre e la direzione del testo. Le ultime sezioni dicono quali sistemi di scrittura Postext sa comporre e come tratta il testo arabo.
#Sillabazione
Quando l’allineamento del testo è impostato a 'justify', la sillabazione evita una spaziatura eccessiva tra le parole dividendo le parole lunghe tra le sillabe. Il motore usa i pattern TeX/Liang per trovare i punti di divisione naturali tra le sillabe. Vedi Sillabazione e giustificazione per una spiegazione dettagliata. Il testo in bandiera viene sillabato solo se lo chiedi: vedi Testo in bandiera più sotto.
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
enabled | boolean | true | Se consentire la sillabazione. |
locale | LocaleTag | locale di primo livello, altrimenti 'en-us' | Regole della lingua per la divisione in sillabe: una delle lingue supportate elencate più sotto, o qualsiasi tag BCP 47 ('es-ES', 'pt-BR'). |
ragged | boolean | false | Sillaba anche il testo in bandiera (allineato a sinistra, a destra o centrato), entro la zone. Vedi Testo in bandiera. |
zone | Dimension | 3em | Zona di sillabazione del testo in bandiera: una parola che non ci sta viene divisa solo quando mandarla intera alla riga successiva lascerebbe un vuoto più largo di questo valore. em è relativo al corpo del testo stesso. Ignorata nel testo giustificato. |
compounds | boolean | true | Lascia che il dizionario divida le parole di un composto, una parola con un trattino tra due lettere (af-ter-dinner). false tiene intera una parola del genere tranne che al suo trattino, dove la riga può ancora terminare (after- · dinner), come fa TeX. Un trattino facoltativo digitato nella parola continua a dividerla, e un composto più largo dell’intera riga viene comunque diviso. Si applica al testo corrente, ai titoli, agli elenchi, alle citazioni e ai riquadri; le didascalie, le note, le celle di tabella e l’indice continuano a dividere i composti. Vedi Parole composte. |
exceptions | string[] | nessuna | Parole che il dizionario non deve dividere, o può dividere solo dove indica la voce: 'Alice' non viene mai divisa, 'You-Tube' solo al suo trattino. Vedi Parole tenute intere. |
capitalized | boolean | true | Divide le parole con l’iniziale maiuscola come tutte le altre. false tiene intera ogni parola che comincia con una maiuscola (Alice, Ámsterdam, UNESCO), compresa la prima parola di una frase. Vedi Parole tenute intere. |
Lingue supportate: 'en-us' (inglese), 'es' (spagnolo), 'fr' (francese), 'de' (tedesco), 'it' (italiano), 'pt' (portoghese), 'ca' (catalano), 'nl' (olandese).
Le sottoparti di regione, scrittura e variante vengono ignorate nella scelta dei pattern, e così le maiuscole e i separatori _: 'es-ES', 'es-MX' ed 'es_419' sillabano con 'es', 'pt-BR' con 'pt', e ogni tag inglese ('en', 'en-GB') con 'en-us', gli unici pattern inglesi inclusi, quindi il testo britannico riceve divisioni americane. Una lingua senza pattern inclusi ('sv', 'pl', 'fi'…) viene sillabata con i pattern 'en-us', il che dà divisioni sbagliate invece di nessuna; il motore lo segnala una volta per tag con un console.warn, e la Sandbox lo elenca nel pannello Verifiche. Imposta enabled: false per un documento del genere; così sparisce anche l’avviso. Cinese, giapponese e coreano (zh, ja, ko, qualunque sia la regione o la scrittura) non hanno bisogno di pattern e non stampano avvisi: un documento in una di queste lingue viene composto senza sillabazione. Per dividere le parole latine citate al suo interno, imposta enabled: true e indica la loro lingua in locale ('en-us' per l’inglese). enabled: true senza locale, o con una lingua cinese, giapponese o coreana, lascia la sillabazione disattivata e lo dice una volta nella console. matchHyphenationLocale(tag) restituisce la lingua inclusa a cui corrisponde un tag (undefined quando non ce n’è nessuna), e HYPHENATION_LOCALES elenca quelle incluse. La configurazione risolta (doc.config.bodyText.hyphenation) indica in locale i pattern effettivamente usati, e conserva in tag il tag che hai dato quando è diverso. Il backend PDF dichiara la lingua del documento dal locale di primo livello, e da questo tag solo quando locale non è impostato (vedi Lingua del documento).
import { matchHyphenationLocale } from 'postext';
matchHyphenationLocale('es-MX'); // 'es'
matchHyphenationLocale('en-GB'); // 'en-us'
matchHyphenationLocale('sv'); // undefined: hyphenated with 'en-us', with a console warningLe parole di meno di 5 caratteri non vengono mai sillabate. Il motore richiede almeno 2 caratteri prima e 3 caratteri dopo un punto di divisione.
#Parole tenute intere
Un dizionario divide un nome come divide qualsiasi parola: Al-ice, Áms-ter-dam, You-Tu-be. Tre impostazioni tengono intere le parole, e per tutte e tre il valore predefinito è quello che fa il dizionario.
hyphenation.exceptions è un elenco di parole, come il \hyphenation{…} di TeX. Una voce scritta senza trattino non viene mai divisa; una voce scritta con trattini viene divisa solo lì, quindi 'You-Tube' dà You- · Tube e nient’altro. Una voce corrisponde a una sequenza di lettere, qualunque cosa la circondi: 'Alice' copre (Alice, e Alice’s, e un composto viene confrontato parte per parte (Blender-based corrisponde a 'Blender'). Una forma flessa è un’altra parola e ha bisogno di una voce propria. Una voce in minuscolo corrisponde alla parola in qualsiasi combinazione di maiuscole ('blender' copre Blender e BLENDER); una voce con l’iniziale maiuscola corrisponde solo alle occorrenze che cominciano con una maiuscola, quindi 'Rose' tiene intero il nome e lascia rose al dizionario. Le voci contengono solo lettere e trattini; tutto il resto viene scartato.
hyphenation.capitalized: false tiene intera ogni parola che comincia con una maiuscola: nomi propri, sigle, e anche la prima parola di ogni frase. Corrisponde all’opzione «Sillaba parole in maiuscolo» di InDesign disattivata, e al \uchyph=0 di TeX. Una voce di exceptions con trattini continua a dividere la sua parola in quei punti. Il tedesco scrive in maiuscolo ogni sostantivo, quindi l’opzione lascerebbe a un testo tedesco quasi nessuna parola da dividere: lì indica le parole in exceptions, oppure usa citations.hyphenateNames.
citations.hyphenateNames: false tiene interi i cognomi degli autori che il documento cita, ovunque si trovino: in una citazione, nel testo corrente e nell’elenco dei riferimenti. Vedi Citazioni.
const config: PostextConfig = {
locale: 'es',
bodyText: {
hyphenation: { exceptions: ['Ámsterdam', 'Blender', 'You-Tube'] },
},
};Le tre impostazioni raggiungono ogni testo che il dizionario divide: testo corrente, titoli, elenchi, riquadri, didascalie, celle di tabella, note, testatine e gli altri testi grafici. È un ambito più ampio di quello di compounds, che le didascalie, le note, le celle e l’indice ignorano. Due cose restano come sono. Un trattino facoltativo digitato in un’occorrenza di una parola decide ancora quell’occorrenza, e un trattino facoltativo prima della prima lettera tiene intera un’occorrenza senza bisogno di un elenco (vedi Dove una riga non va mai a capo). E una parola più larga della sua intera giustezza viene comunque divisa: nei punti della sua voce quando ne ha, altrimenti nelle sillabe del dizionario. Meno parole divise lasciano a una colonna giustificata stretta meno modi di riempire le righe, quindi controlla la spaziatura tra le parole dopo aver disattivato capitalized in una pagina a tre colonne. L’EPUB a layout fluido lascia la sillabazione al sistema di lettura, che non sa nulla di queste regole.
#Testo in bandiera
Per impostazione predefinita viene sillabato solo il testo giustificato: con textAlign: 'left', e negli stili di paragrafo allineati a sinistra, centrati o a destra, ogni parola resta intera per quanto il margine diventi irregolare, tranne dove c’è un trattino facoltativo (U+00AD) digitato nel testo. Imposta hyphenation.ragged: true per sillabare anche il testo in bandiera.
Una riga in bandiera non viene mai allargata, quindi dividere ogni parola che non ci sta frangerebbe il margine di trattini. La zona di sillabazione lo limita, come fa il compositore a riga singola di un programma di impaginazione. Quando una parola non ci sta alla fine di una riga, il motore guarda il vuoto che lascerebbe mandandola intera alla riga successiva. Se quel vuoto è più largo di zone, la parola viene divisa all’ultima sillaba che ci sta; altrimenti scende intera. Una zona in em è relativa al corpo del testo stesso. Il valore predefinito, 3em, divide solo le parole che lascerebbero una riga visibilmente corta. Una zona più ampia dà meno trattini e un margine più irregolare; 0 divide ogni parola che non ci sta. Nella composizione riga per riga, non più di due righe consecutive terminano con una sillaba. I trattini fissi (enseñanza-aprendizaje), le giunture degli URL, i trattini facoltativi digitati nel testo e le parole più larghe dell’intera riga vanno a capo come sempre: la zona e il limite delle due righe governano solo le sillabe del dizionario.
L’impostazione vale per tutto il documento. Si applica al testo corrente e alle citazioni quando sono in bandiera, e a ogni stile di paragrafo e corpo di riquadro in bandiera la cui hyphenation propria è attiva (per impostazione predefinita vale l’hyphenation.enabled del testo corrente), quindi hyphenation: false tiene intere le parole di uno stile. Titoli, didascalie, note, celle di tabella e indice non vengono sillabati; lì, come ovunque, viene divisa solo una parola più larga dell’intera giustezza. Il testo grafico (testatine, aperture, pagine di parte) segue il flag hyphenate di ciascun elemento di testo, che le aperture a pagina intera e le pagine di parte predefinite impostano, e usa anch’esso il dizionario del documento. Il testo giustificato ignora ragged e zone.
const config: PostextConfig = {
locale: 'es',
bodyText: {
textAlign: 'left',
// A little more hyphenation than the 3 em default.
hyphenation: { ragged: true, zone: { value: 2, unit: 'em' } },
},
};Con optimalRagged (il valore predefinito) il testo corrente in bandiera viene diviso in righe con Knuth-Plass, e la zona mantiene lì il suo significato: una parola viene divisa solo quando non ci sta nel resto della riga e mandarla giù intera lascerebbe vuoto più della zona. Due sillabe consecutive non vengono rifiutate ma costano quanto due trattini consecutivi nel testo giustificato, quindi una terza è rara. Con optimalRagged: false, o optimalLineBreaking: false, ogni riga viene riempita prima della successiva, come fino a postext 1.4.
La sillabazione in bandiera impagina i paragrafi con l’algoritmo di divisione in righe che usano sempre i paragrafi con formattazione in linea (grassetto, corsivo, link, formule), quindi attivarla può spostare qualche a capo oltre a quelli con trattino. Su una riga in bandiera, oltre agli spazi e alle sillabe del dizionario, quell’algoritmo va a capo dopo un trattino fisso o una lineetta tra due parole (largas—separadas; con breakAfterDashes, qualsiasi lineetta unita alle parole, anche riddles.—I e riddles—*and*), alle giunture degli URL e tra gli ideogrammi, e tiene unita una parola composta in più tratti (**Nota**:, (*véase*). Senza sillabazione in bandiera, un paragrafo in bandiera senza formattazione viene diviso da Knuth-Plass quando optimalRagged è attivo (il valore predefinito): agli spazi tra le parole, dopo un trattino fisso tra due lettere (meta- · analyses), come fa l’altro algoritmo, e, con breakAfterDashes, dopo le lineette unite. Nella composizione riga per riga passa dall’algoritmo di pretext, che differisce in tre punti: può anche andare a capo prima di una lineetta che chiude un inciso o dopo una che lo apre (él · — y), dopo una barra quando sillaba (km/ · h), e taglia una parola più larga della riga in un carattere qualsiasi senza trattino, dove l’altro algoritmo la divide prima in una sillaba.
Nella Sandbox l’interruttore è Sillaba il testo in bandiera, sotto l’allineamento dei paragrafi della sezione Testo corrente, con la zona sotto di esso. Con un testo corrente giustificato lo stesso interruttore si trova tra le impostazioni della giustificazione, per gli stili di paragrafo e i riquadri in bandiera.
#Lingua del documento
Il locale di primo livello è la lingua del documento nel suo insieme. Accetta gli stessi valori di hyphenation.locale ed è il ripiego quando quel campo non è impostato, quindi a un libro spagnolo basta locale: 'es' per sillabare in spagnolo. Sceglie anche la lingua delle diciture predefinite di continuazione delle tabelle e dei riquadri divisi ((cont.) / Continued contro Continúa, vedi Tabelle più alte della pagina e Segni su un riquadro diviso) e dei numeri dei titoli scritti in lettere (Chapter One contro Capítulo uno, vedi Numeri in lettere), ed è la lingua marcata in un PDF accessibile. Se non è impostato, il motore assume 'en-us'; la Sandbox ripiega sulla lingua dell’interfaccia e imposta il campo in Grafica › Sistema di scrittura.
Sceglie anche i tipi di risorsa predefiniti. Quando resourceTypes non è impostato, buildDocument numera e intitola le didascalie con defaultResourceTypes(locale), quindi locale: 'de' da solo dà Abbildung 1.1 e Tabelle 1.1. Quando locale non è impostato, lo sostituisce la lingua della sillabazione, sia per i tipi di risorsa sia per le diciture delle tabelle. Un elenco resourceTypes esplicito vince sempre. Le versioni precedenti usavano i tipi inglesi qualunque fosse il locale, a meno che non passassi tu stesso defaultResourceTypes(locale); un documento che imposta locale e vuole mantenere le etichette inglesi passa resourceTypes: defaultResourceTypes('en'). I libri e i pacchetti della Sandbox hanno il proprio elenco, quindi non ne sono toccati.
Qui funziona qualsiasi tag BCP 47, come in hyphenation.locale: 'de-AT' riceve le diciture tedesche. Le diciture predefinite esistono nelle otto lingue supportate dalla sillabazione, in cinese (in caratteri semplificati e tradizionali), in giapponese e in arabo; qualsiasi altra lingua riceve quelle inglesi.
Il cinese accetta zh, zh-Hans, zh-Hant, zh-CN, zh-SG, zh-TW, zh-HK, zh-MO e le forme lunghe (zh-Hant-TW), con qualsiasi combinazione di maiuscole e con - o _. Le diciture seguono la scrittura, letta con Intl.Locale(tag).maximize(): zh, zh-CN e zh-SG sono semplificati, zh-TW, zh-HK e zh-MO tradizionali. I valori tipografici predefiniti che dipendono dalla lingua seguono invece la regione, come raccomanda clreq §1.2: CN, SG e MY contano come Cina continentale, TW come Taiwan, HK e MO come Hong Kong, e un tag senza regione segue la sua scrittura (zh-Hant è Taiwan, zh e zh-Hans la Cina continentale). Il giapponese accetta ja, ja-JP, ja-Jpan e qualsiasi altro tag ja (isJapaneseLanguage(tag)); da postext 1.16 ha diciture proprie e una regione propria, japan, i cui valori tipografici predefiniti seguono JLReq (vedi Impaginazione giapponese). Una tabella di diciture senza voce giapponese dà l’inglese, mai il cinese. localeScript(tag), cjkRegionOf(tag), stringsKeyOf(tag) e sameContentLocale(a, b) danno queste letture, e DOCUMENT_LANGUAGES elenca le lingue con diciture predefinite, ciascuna con il nome nella propria lingua (日本語 tra le voci cinesi e العربية), come le mostra il menu Lingua del documento della Sandbox.
| Lingua | Figura: nome, plurale, etichetta breve | Tabella: nome, plurale, etichetta breve | Continuazione della tabella: continuedSuffix, continuesMarker |
|---|---|---|---|
Inglese (en) | Figure, Figures, Fig. | Table, Tables, Tab. | (cont.), Continued |
Spagnolo (es) | Figura, Figuras, Fig. | Tabla, Tablas, Tabla | (cont.), Continúa |
Francese (fr) | Figure, Figures, Fig. | Tableau, Tableaux, Tabl. | (suite), À suivre |
Tedesco (de) | Abbildung, Abbildungen, Abb. | Tabelle, Tabellen, Tab. | (Forts.), Wird fortgesetzt |
Italiano (it) | Figura, Figure, Fig. | Tabella, Tabelle, Tab. | (segue), Continua |
Portoghese (pt) | Figura, Figuras, Fig. | Tabela, Tabelas, Tab. | (cont.), Continua |
Catalano (ca) | Figura, Figures, Fig. | Taula, Taules, Taula | (cont.), Continua |
Olandese (nl) | Figuur, Figuren, Fig. | Tabel, Tabellen, Tab. | (vervolg), Wordt vervolgd |
Cinese semplificato (zh-Hans, zh, zh-CN) | 图, 图, 图 | 表, 表, 表 | (续), 接下页 |
Cinese tradizionale (zh-Hant, zh-TW, zh-HK) | 圖, 圖, 圖 | 表, 表, 表 | (續), 接下頁 |
Giapponese (ja, ja-JP) | 図, 図, 図 | 表, 表, 表 | (続き), 次ページへ続く |
Arabo (ar, ar-EG, ar-MA…) | شكل, أشكال, شكل | جدول, جداول, جدول | (تابع), يتبع |
Il prefisso della didascalia è il nome del tipo (Figure 1.1.). I tipi cinesi numerano all’interno del capitolo con un trattino, {h1}-{n} (图 1-1); con le impostazioni della didascalia labelNumberGap: '' e labelSeparator: ' ' la didascalia si legge 图1-1 标题 (vedi Stile delle didascalie). Anche l’indice analitico segue la lingua: 见 e 另见 prima di un rimando, 符号 e 数字 sopra i simboli e i numeri in cinese semplificato; 見, 另見, 符號 e 數字 in cinese tradizionale. Il giapponese numera i suoi tipi allo stesso modo e compone le didascalie 図1-1 題 senza le due impostazioni, scrive i rimandi come 第3章, 2.3節 e 12ページ, intitola la bibliografia 参考文献, e il suo indice analitico stampa 記号 e 数字 sopra simboli e numeri e scrive i rimandi con una freccia, →夏目漱石 per vedi e →夏目漱石、森鷗外も見よ dopo le pagine per vedi anche, con le etichette in tondo. L’arabo numera i suoi tipi allo stesso modo, {h1}-{n} (شكل 2-3), scrive i rimandi come الفصل 3, القسم 2-1 e ص 12, intitola la bibliografia المراجع, e il suo indice analitico stampa انظر / انظر أيضًا, رموز e أرقام, con la virgola e il punto e virgola arabi (، ؛).
Un documento cinese, giapponese o coreano dichiara la sua lingua nell’output HTML (lang sulla radice .pt-doc, zh-Hant-TW conservato intero) e sul canvas che disegna (ctx.lang, in Chrome 136 e successivi), così il browser disegna le forme dei glifi della regione: Unicode unifica i caratteri han, e uno stesso punto di codice ha un aspetto diverso in un font taiwanese e in uno giapponese. Da postext 1.30 lo fa anche ogni altro documento, nella lingua in cui viene eseguito lo shaping del suo testo (bodyText.shapingLanguage: 'document', il valore predefinito); con 'host' gli altri documenti non hanno lang, e ogni canvas disegna nella lingua della pagina che lo ospita. Il PDF dichiara /Lang da locale per ogni documento, marcato o no, con la sua scrittura e la sua regione. Anche un documento in una lingua scritta da destra a sinistra (arabo, persiano, urdu, ebraico…) dichiara la sua lingua: le forme specifiche della lingua del font (locl) e il font di ripiego la seguono.
const config: PostextConfig = {
locale: 'es',
bodyText: { textAlign: 'justify', hyphenation: { enabled: true } }, // hyphenates in Spanish
};#Cifre del documento
numerals di primo livello imposta le cifre di ogni numero che il motore scrive: i numeri di pagina e le etichette di pagina dell’indice, dell’indice analitico e dei rimandi alle pagine; i numeri degli elenchi numerati e delle note; i contatori dei titoli e dei capitoli, {chapterNumber}; i {h1} e {n} del numero di una figura e di un rimando a essa; {totalPages}, {bookTotalPages} e {numberDecimal}. 'latn' scrive 0–9, 'arab' le cifre indo-arabe ٠–٩ e 'arabext' le cifre persiane ۰–۹. Cambia solo il formato decimale (decimal, l’arabic degli elenchi, o un’impostazione lasciata al suo valore predefinito), quindi un formato indicato dall’autore viene stampato come indicato: lower-roman resta i, ii, iii, e arabic-indic in un documento latino scrive comunque ١, ٢, ٣. Il testo del documento non viene mai riscritto.
Il valore predefinito, 'auto', prende le cifre di locale (defaultNumeralsFor(tag)): 'arab' per l’arabo senza regione o con qualsiasi regione fuori dal Maghreb (ar, ar-EG, ar-SA, ar-AE…), 'latn' per ar-MA, ar-DZ, ar-TN, ar-LY, ar-MR e ar-EH, 'arabext' per il persiano (fa), il pashto (ps) e l’urdu dell’India (ur-IN), e 'latn' per tutto il resto, compreso l’urdu del Pakistan. CLDR dà latn per un ar semplice e per ar-AE; i libri arabi del Mashriq e del Golfo stampano ٠–٩, ed è questo che segue Postext. Un tag che indica le proprie cifre le conserva: ar-MA-u-nu-arab. Una pagina numerata con le cifre del documento registra arabic-indic o persian come suo pageNumberFormat, così le etichette di pagina del PDF mostrano le stesse cifre. Un valore sconosciuto segue la lingua e viene segnalato come unknownNumerals.
I numeri digitati dall’autore vengono letti in uno qualsiasi dei tre sistemi: una voce di elenco ٣. comincia da 3, e {startAt=٥}, :::numbering{startAt=٥}, :::space{lines=٢} e :::part{number="٣"} (per {numberDecimal}) leggono il valore.
const config: PostextConfig = { locale: 'ar' }; // ١، ٢، ٣
const maghreb: PostextConfig = { locale: 'ar-MA' }; // 1, 2, 3
const forced: PostextConfig = { locale: 'ar', numerals: 'latn' }; // 1, 2, 3#Direzione del testo
direction di primo livello imposta la direzione di base del documento: 'ltr', 'rtl', o 'auto' (il valore predefinito), che vale 'rtl' quando la scrittura di locale si scrive da destra a sinistra (arabo, persiano, urdu, ebraico, siriaco, thaana, N’Ko, adlam…, letta da directionOf(tag)) e 'ltr' negli altri casi. Un documento da destra a sinistra viene impaginato in una cornice specchiata: le righe cominciano a destra, la prima colonna è quella di destra, i rientri, i marcatori di elenco, gli elementi flottanti, le note a piè di pagina e i riquadri stanno a destra, e page.binding: 'auto' lo rilega a destra. La configurazione risolta contiene direction: 'rtl' solo per un documento del genere, quindi un documento da sinistra a destra si risolve come prima. Un valore sconosciuto viene letto come 'auto' e segnalato come unknownConfigValue. L’algoritmo bidirezionale Unicode (UAX #9) ordina i tratti di ogni riga in entrambe le direzioni: una citazione araba in un libro inglese si legge da destra a sinistra al suo posto.
All’interno del documento, un titolo o un contenitore ::: accetta {dir=ltr} o {dir=rtl}, e :ltr[…] e :rtl[…] in linea isolano un tratto di testo (vedi La direzione del testo nel markup); una risorsa tabella accetta table.direction. Un blocco composto in direzione opposta a quella del documento conserva il proprio lato d’inizio: il rientro, i marcatori di elenco e l’estremità allineata della sua ultima riga passano al lato da cui comincia il suo testo.
Un’impostazione che nomina un lato indica un lato del testo o del flusso del corpo, mai del foglio, quindi un progetto grafico pensato per un libro inglese funziona quando il libro passa all’arabo. 'start' ed 'end' sono accettati come nomi espliciti:
| Impostazione | 'left' / 'right' | 'start' / 'end' |
|---|---|---|
textAlign del testo corrente, dei titoli, degli stili di paragrafo, delle parti, delle note a piè di pagina e dei corpi dei riquadri; align della didascalia e della nota della didascalia | I lati del testo: 'left' è il lato da cui comincia una riga, la destra di un paragrafo arabo, dove va l’ultima riga di un paragrafo giustificato. | Sinonimi di 'left' e 'right'. Le configurazioni risolte contengono 'left' / 'right'; quelle salvate conservano ciò che è stato scritto. |
align della cella di tabella | I lati del testo della cella, letti nella direzione della tabella (table.direction). | Sinonimi, letti nella direzione della tabella. |
placement.align (elementi flottanti, figure strette) | I lati del flusso del corpo: in un libro da destra a sinistra 'left' è la destra del foglio. | Sinonimi. |
stripe.side, icon.cornerSide, labelTab.position ('top-start', 'top-end') di un riquadro | I lati del flusso del corpo, gli stessi per ogni riquadro della pagina. | La direzione propria del riquadro (un :::callout{dir=ltr} in un libro arabo comincia dalla sinistra del foglio). |
| Spazi dell’intestazione e del piè di pagina; elementi grafici ancorati al foglio | I lati del foglio. | Solo elementi di testo: l’inizio e la fine della direction propria dell’elemento. |
placement.rotate mantiene il suo significato fisico su una pagina specchiata: una figura ruotata in senso orario è ruotata in senso orario sul foglio. Un host che legge l’impaginazione trova la cornice specchiata su ogni pagina (VDTPage.flow con direction: 'rtl', pageIsMirrored(page)) e l’ordine visivo dei segmenti di ogni riga in VDTLine.order; flowToPage e pageToFlow convertono tra il flusso e il foglio. Vedi Impaginazione araba.
const arabic: PostextConfig = { locale: 'ar' }; // right to left, bound on the right
const english: PostextConfig = { locale: 'en', direction: 'rtl' }; // forced; rarely what you want#Lingue e scritture
Postext compone le scritture alfabetiche da sinistra a destra, e il cinese e il giapponese in orizzontale e in verticale. Impaginazione cinese e Impaginazione giapponese spiegano come vengono composti e quali impostazioni li controllano; le chiavi sono in Tipografia dell’Asia orientale, Scrittura verticale e Rilegatura. Che cosa riceve ogni scrittura:
- Il cinese viene composto dal compositore CJK quando un paragrafo contiene più caratteri CJK che spazi tra parole: le sue righe vanno a capo tra i caratteri secondo le regole di inizio e fine riga di
cjk.lineBreak(nessuna riga comincia con 。、」 o ー, nessuna termina con 「 o (), tengono interi —— e ……, un numero con i suoi segni e una parola latina, e una riga giustificata viene distribuita tra i suoi caratteri fino alla giustezza. Le larghezze della punteggiatura, la punteggiatura sporgente, lo spazio tra han e latino, la griglia dei caratteri, i punti di enfasi, i segni dei nomi propri e dei titoli di libri, il ruby e le note warichu seguono la regione dilocale, in orizzontale o in verticale (layout.writingMode: 'vertical-rl'). Un paragrafo latino che cita qualche parola CJK mantiene la divisione in righe ottimale e può andare a capo accanto a esse; una parentesi CJK, il punto mediano o un segno a larghezza piena citati in un testo latino (〈h〉, %) non cambiano nulla. - Il giapponese passa dallo stesso compositore con regole proprie da postext 1.16, quelle dei Requirements for Japanese Text Layout (JLReq) del W3C e di JIS X 4051: un locale
jadà la regionejapan, i cui valori automatici impostano i livelli di kinsoku di JLReq (i kana piccoli e ー non aprono mai una riga), la punteggiatura a larghezza piena con compressione delle coppie, un em dopo ?!, la parentesi che apre un paragrafo nella seconda metà del rientro, i segni di enfasi a sesamo sopra il testo, i titoli di libri tra 『』, i furigana spaziati 1:2:1, i classificatori giapponesi, le note e un indice analitico ordinato per lettura. Le versioni precedenti componevano il giapponese con i valori predefiniti del cinese continentale. - Il coreano passa dallo stesso compositore e viene composto senza sillabazione, ma con i valori predefiniti del cinese continentale: le sue regole proprie (KLREQ) non sono implementate. Il testo coreano va a capo tra le sillabe oltre che ai suoi spazi.
- L’arabo e le altre scritture da destra a sinistra (persiano, urdu, ebraico…) vengono composti da destra a sinistra: Impaginazione araba spiega come. La
directiondel documento viene dalla scrittura dilocale, l’algoritmo bidirezionale Unicode ordina le parole latine e i numeri dentro ogni riga, il libro è rilegato a destra con la prima colonna a destra, e ogni numero che il motore scrive prende le cifre della regione. Una parola che contiene una lettera in scrittura araba non viene mai sillabata, spaziata o tagliata, e una riga araba giustificata si allunga negli spazi e con le kashida. I segni vocalici, l’enfasi, le note a piè di pagina e le diciture dell’arabo sono in Testo arabo. Persiano, urdu ed ebraico ricevono la direzione, le cifre e le regole delle parole intere, ma non hanno diciture predefinite proprie.
I pattern di sillabazione sono inclusi per otto lingue (en-us, es, fr, de, it, pt, ca, nl); i tipi di risorsa predefiniti e le diciture di continuazione esistono in queste otto, in cinese, in giapponese e in arabo. Il cinese, il giapponese, il coreano e le lingue scritte da destra a sinistra vengono composti senza sillabazione. Qualsiasi altra lingua viene sillabata con i pattern dell’inglese americano, con un avviso nella console, e riceve le diciture inglesi. Per un documento del genere, imposta hyphenation.enabled: false e passa resourceTypes e le diciture di continuazione di tableStyle nella sua lingua.
#Testo arabo
Queste impostazioni servono al testo in scrittura araba; nessuna cambia un documento scritto in un’altra scrittura. Impaginazione araba le spiega insieme al resto di un libro arabo: direzione, rilegatura, cifre, versi, indice e indice analitico.
- Segni vocalici e interlinea. I segni vocalici di un testo vocalizzato (fatḥa, kasra, shadda, tanwīn, l’alif soprascritta, i segni coranici) si impilano sopra e sotto le lettere, nello spazio dell’interlinea, che non cresce mai per loro. Ogni riga che contiene segni registra fin dove arriva il loro inchiostro (
VDTLine.markInk), e il ritaglio della colonna dei renderer include i segni della prima e dell’ultima riga di una colonna. Quando un segno sopra una parola tocca le lettere o i segni che pendono sotto la parola soprastante, la compilazione segnala il paragrafo (arabicMarksExceedLeading, nel pannello Verifiche della Sandbox). Vengono confrontate solo le parole che stanno l’una sopra l’altra. Il testo parzialmente vocalizzato richiede circa 1,7–1,85 em dilineHeight, i versi vocalizzati per intero 1,9–2,1 em. - Enfasi. Il carattere arabo non ha corsivo, quindi in un documento il cui
localesi scrive in caratteri arabi*…*viene composto in grassetto per impostazione predefinita (bodyText.emphasis: 'auto').'color'lo compone in tondo conitalicColor, e'overline'traccia un filetto sopra le parole, il khaṭṭ fawqī dei libri arabi. L’impostazione raggiunge ogni testo composto nei caratteri del testo corrente: paragrafi, elenchi, citazioni, stili di paragrafo, corpi dei riquadri, note e titoli. Le didascalie, le celle di tabella, l’indice e l’indice analitico mantengono le proprie impostazioni di corsivo. Qualunque sia la scelta, il motore non inclina mai le lettere arabe: le parole arabe di un tratto composto in corsivo restano diritte e le sue parole latine mantengono il corsivo. In un documento del genere una citazione è in tondo per impostazione predefinita. - Tashkīl.
bodyText.tashkil: 'strip'toglie i segni vocalici e coranici dal testo che l’impaginazione compone, per un’edizione non vocalizzata ricavata da una sorgente vocalizzata: fatḥa, ḍamma, kasra e i loro tanwīn, sukūn, shadda, l’alif soprascritta (هٰذا diventa هذا) e i segni U+0656–U+065F e U+06D6–U+06ED.'strip-vowels'conserva la shadda, come la stampa la maggior parte dei libri moderni. Hamza e madda restano (أ إ آ sono lettere, anche quando sono digitate con segni combinanti). La sorgente conserva i suoi segni; le righe, i titoli e l’indice vengono composti senza, e ogni carattere composto continua a corrispondere alla sua posizione nella sorgente. - Note a piè di pagina.
footnotes.markerTemplate: '({n})'scrive i richiami «(١)» con le cifre del documento,numbering: 'page'li fa ricominciare a ogni pagina, enoteNumberPosition: 'inline'mette il numero proprio della nota sulla riga. Il filetto separatore e i numeri delle note stanno all’inizio della colonna, a destra in un libro da destra a sinistra. - Parole intere. Una parola che contiene una lettera in scrittura araba non viene mai sillabata, tagliata o spaziata, in un libro arabo o citata in un altro. Uno stile che imposta
letterSpacingsu testo arabo viene segnalato (joiningScriptLetterSpacing), e una parola più larga della sua riga sborda e viene segnalata (unbreakableWordOverflow). Vedi Impaginazione araba. - Kashida e versi. Una riga araba giustificata si allunga con le kashida oltre che negli spazi (
bodyText.kashida, vedi La kashida nel testo arabo), e una poesia classica viene composta un bayt per riga in due emistichi di uguale larghezza con:::verse(vedi:::verse). - Indice analitico. Un indice analitico in arabo ordina in ordine alfabetico e ignora l’articolo ال (
index.ignoreArticle), i segni vocalici e i supporti della hamza; vedi Indice analitico.