Capitolo 16 · Parte II · Il mestiere
Impaginazione araba
Come Postext compone l’arabo: direzione del testo e algoritmo bidirezionale, libri rilegati a destra, parole legate che non si dividono né si spaziano, giustificazione con kashida, segni vocalici, enfasi, cifre e stili di numerazione, ordinali in lettere, note a piè di pagina, versi classici, indice, indice analitico, citazioni e font
In breve
Questa pagina spiega come Postext impagina l’arabo. L’arabo si legge da destra a sinistra, quindi le righe, le colonne e le pagine del libro procedono in quel verso, mentre i numeri e le parole inglesi dentro il testo continuano a leggersi da sinistra a destra. Le lettere di una parola si uniscono tra loro, perciò Postext non divide mai una parola, non ne allarga mai le lettere e, per allungare una riga, allunga invece alcuni raccordi. La pagina tratta anche i segni vocalici sopra e sotto le lettere, le cifre usate in ogni regione, le note e le poesie. Si chiude con due esempi completi e con i limiti che restano.
Un libro arabo procede da destra a sinistra, dalle lettere fino alle doppie pagine, e le sue parole sono tratti legati che non si possono dividere.
Postext compone l’arabo standard moderno e l’arabo classico a partire dallo stesso Markdown e dalla stessa configurazione di qualsiasi altra lingua. Una sola impostazione, la lingua del documento, capovolge l’intero libro: le righe cominciano a destra, la prima colonna è quella di destra, il libro è rilegato sul bordo destro e le doppie pagine si leggono da destra a sinistra, mentre le parole latine e i numeri dentro una riga continuano a leggersi da sinistra a destra. Le parole vengono misurate e disegnate intere, modellate dal font, e una riga giustificata si allunga negli spazi e allungando i raccordi tra le lettere (kashida), mai spaziando le lettere. Questa pagina spiega che cosa fa il motore e quali impostazioni lo controllano. Il riferimento della configurazione elenca ogni chiave con il suo valore predefinito, e il formato del documento descrive il markup.
Le regole seguono gli Arabic & Persian Layout Requirements del W3C (alreq) e l’algoritmo bidirezionale Unicode (UAX #9) e, per le convenzioni librarie, i libri stampati al Cairo, a Beirut e dalla tipografia di Būlāq. Le fonti sono elencate in fondo.
#Iniziare un libro arabo
Imposta la lingua del documento e il carattere; tutto il resto di questa pagina ne discende o ha un valore predefinito per l’arabo:
const config: PostextConfig = {
locale: 'ar',
bodyText: { fontFamily: 'Amiri', lineHeight: { value: 1.75, unit: 'em' } },
headings: { fontFamily: 'Amiri' },
};locale accetta ar, ar-EG, ar-MA o qualsiasi altro tag arabo. La lingua dà al libro:
- la direzione, da destra a sinistra (
direction: 'auto'la ricava dalla scrittura della lingua); - la rilegatura, sul bordo destro (
page.binding: 'auto'); - le cifre dei numeri generati, ٠–٩ nel Mashriq e 0–9 nel Maghreb (
numerals: 'auto', più sotto); - niente sillabazione, niente spaziatura tra lettere né tracking delle parole arabe, e la giustificazione con kashida;
- l’enfasi in grassetto al posto del corsivo, citazioni in tondo;
- le parole predefinite: شكل e جدول per figure e tabelle, numerate per capitolo (شكل ٢-٣), الفصل e ص nei rimandi, المراجع sopra la bibliografia, انظر e انظر أيضًا nell’indice analitico, (تابع) dopo la didascalia di una tabella che continua;
- l’ordine dell’indice analitico, alfabetico (hijāʾī), ignorando l’articolo ال;
- il tag di lingua nell’HTML (
lang="ar" dir="rtl") e nel PDF (/Lang), così si applicano le forme specifiche della lingua del font. Lo ricevono anche il canvas e i contesti con cui misura l’impaginazione, in una pagina di qualsiasi lingua e in un worker di impaginazione (bodyText.shapingLanguage: 'document', il valore predefinito da postext 1.30); con'host', che un libro salvato prima della 1.30 conserva, ricevono la lingua della pagina che ospita l’impaginazione.
La Sandbox fa tutto in un passo: scegli العربية in Grafica › Sistema di scrittura e premi Predefiniti per l’arabo › Rivedi… (vedi Nella Sandbox).
#Direzione e algoritmo bidirezionale
Un paragrafo arabo procede da destra a sinistra, ma i numeri, le parole latine e le citazioni al suo interno procedono da sinistra a destra. L’algoritmo bidirezionale Unicode decide l’ordine di questi pezzi su ogni riga a partire dai caratteri stessi; Postext lo implementa per intero (UAX #9, Unicode 18, tutti i casi dei test di conformità). Il testo è memorizzato e cercato in ordine logico, l’ordine in cui viene digitato; solo il disegno viene riordinato.
#Direzione del documento, del blocco e in linea
La direzione si imposta a tre livelli:
- Il documento:
direction: 'auto' | 'ltr' | 'rtl'.'auto', il valore predefinito, è da destra a sinistra quando la scrittura dilocalesi scrive da destra a sinistra (arabo, persiano, urdu, ebraico, siriaco, thaana, N’Ko, adlam…) e da sinistra a destra negli altri casi. Impostala solo per forzarne una: un libro inglese non ne ha bisogno, e un libro arabo composto da sinistra a destra è quasi sempre un errore. - Un blocco:
{dir=ltr}o{dir=rtl}dopo un titolo, o su qualsiasi contenitore:::::::paragraphs{dir=ltr},:::callout{dir=ltr},:::columns,:::part. Tutto ciò che sta dentro il contenitore prende quella direzione, fino a un blocco annidato che ne imposti un’altra. I paragrafi semplici, le voci di elenco e le citazioni non hanno un attributo proprio: racchiudili in:::paragraphs{dir=…}. Una risorsa tabella prendetable.direction. - Un tratto di testo:
:ltr[…]e:rtl[…]isolano il loro testo, con un{lang=…}facoltativo che etichetta il tratto nell’HTML e nel PDF.
# Introduction {dir=ltr}
:::paragraphs{dir=ltr}
An English paragraph quoted in an Arabic book, set left to right with its indent on the left.
:::
نشر الكتاب في :ltr[The Arabian Nights, vol. 2]{lang=en} سنة ١٨٣٥.Un blocco composto in direzione opposta a quella del documento conserva il proprio lato d’inizio: il rientro della prima riga, i marcatori di elenco e l’estremità allineata della sua ultima riga passano al lato da cui comincia il suo testo, e le sue righe sono allineate nella colonna come il suo testo si aspetta. In un libro arabo una citazione inglese dovrebbe essere {dir=ltr}: senza, il suo punto fermo, un carattere neutro, appartiene al paragrafo da destra a sinistra e viene stampato all’estremità sinistra della riga, come lo mostrerebbe un browser. Un contenitore può anche indicare la propria lingua, :::paragraphs{dir=ltr lang=en}: gli elenchi numerati al suo interno usano le cifre di quella lingua (1. 2. in un libro arabo, ١. ٢. con lang=ar in uno inglese). I numeri delle note, delle figure, delle tabelle e dei titoli nel blocco mantengono le cifre del documento: appartengono alle sequenze del libro.
#Isolati
:ltr[…] e :rtl[…] sono isolati bidirezionali (i LRI…PDI e RLI…PDI di UAX #9): il loro testo viene ordinato al loro interno e il paragrafo vede ciascuno come un unico carattere neutro. Usane uno quando un titolo latino termina con un carattere neutro (un punto fermo, una parentesi chiusa, un punto interrogativo) che altrimenti verrebbe letto insieme all’arabo che lo circonda, o quando un tratto si apre con una cifra o una lettera latina che sbaglierebbe la stima di un algoritmo basato sul primo carattere forte. Una nota, un :ref o una formula dentro un isolato ne fanno parte. I caratteri di controllo Unicode veri e propri (U+2066–2069, U+202A–202E, U+200E e U+200F, il segno di lettera araba U+061C) sono rispettati quando la sorgente li contiene, ma le direttive sono più facili da leggere e da modificare.
#Numeri
Un numero si legge da sinistra a destra in qualsiasi sistema di cifre, con la cifra più significativa a sinistra: ١٤٤٥ e 1445 allo stesso modo. Le cifre europee dopo lettere arabe sono lette come numeri arabi (regola W2), quindi سنة 1835م e سنة ١٨٣٥م si ordinano allo stesso modo. Un numero che apre un paragrafo, senza nessuna lettera prima, viene letto nello stesso modo in un libro da destra a sinistra scritto in caratteri arabi: il numero di sezione 3-1 di un titolo e la didascalia شكل 3-1 di un’edizione maghrebina stampano entrambi il 3 a destra, come fa ٣-١. Due numeri uniti da una barra, come un volume e una pagina o una sura e un versetto (١٣/٩٠), restano un unico tratto; un intervallo scritto con un trattino (١٢-١٥) si legge da destra a sinistra, 12 a destra, come si aspettano i lettori arabi. Il segno di percentuale ٪ (U+066A) si digita dopo il numero e compare alla sua sinistra. Il testo digitato dall’autore non viene mai riscritto: solo i numeri generati dal motore prendono le cifre del documento (Cifre).
#Parentesi e virgolette
Le parentesi tonde, quadre e graffe e le virgolette caporali vengono specchiate nei tratti da destra a sinistra: una ( digitata prima di una parola araba la apre alla sua destra. Digitale in ordine logico, prima quella di apertura, come faresti in inglese; il canvas, l’HTML e il PDF disegnano il glifo specchiato (la funzione rtlm del font, o il punto di codice specchiato). « » aprono e chiudono una citazione araba allo stesso modo. Il testo dietro i glifi resta quello che hai digitato. Una parentesi specchiata viene disegnata con il glifo della parentesi opposta, e il PDF marca ogni parentesi il cui glifo il font legge già come l’altra, così (Brill, 2017) in una nota numerata (١) viene copiato, cercato e letto ad alta voce con entrambe le parentesi come sono state scritte.
Le parentesi ornate delle citazioni coraniche, ﴿ (U+FD3F) e ﴾ (U+FD3E), non vengono specchiate: da Unicode 14 ﴿ è quella di apertura e ﴾ quella di chiusura, e i loro glifi sono disegnati per il testo da destra a sinistra. Digita prima ﴿: ﴿بسم الله الرحمن الرحيم﴾ viene stampato con ﴿ a destra. Non sono nemmeno parentesi accoppiate, quindi in un paragrafo da sinistra a destra (un versetto arabo citato in un libro inglese) le parentesi accanto a una parola latina prendono la direzione del paragrafo: ﴿ finisce a sinistra del versetto e la coppia si legge invertita, come in un browser. Componi la citazione come isolato da destra a sinistra, :rtl[﴿بسم الله الرحمن الرحيم﴾], ed entrambe le parentesi seguono il versetto, ﴿ alla sua destra.
#Parole senza lettere
Una parola fatta solo di cifre, punteggiatura o simboli (46., 1367), ».) non ha una scrittura propria, e un carattere può disegnarne i segni in base alla scrittura. Amiri compone un punto fermo, le parentesi e le caporali latini nel testo latino e arabi negli altri casi: il suo punto è largo 0,20 em contro 0,32, una parentesi 0,26 contro 0,46. Se riceve una parola del genere da sola, ogni motore di shaping sceglie una scrittura con una regola propria: una versione di Chrome prende le forme predefinite del font, una successiva quelle latine, il PDF quelle predefinite. La stessa nota andava così a capo in modo diverso da un browser all’altro, e il suo PDF disegnava segni di un’altra larghezza nei punti misurati.
Postext invece decide (bodyText.scriptContext, attivo per impostazione predefinita). Una parola del genere prende la scrittura del testo che la circonda:
- disegnata da sinistra a destra, la scrittura della lettera più vicina che la precede nel suo isolato, altrimenti della più vicina che la segue:
46.alla fine di una nota inglese è latino, il1367di(1367)in una frase araba è arabo; - disegnata da destra a sinistra (una parentesi o un punto fermo a un livello da destra a sinistra), la scrittura della lettera da destra a sinistra più vicina: le parentesi di
(1367)in una frase araba restano arabe; - senza lettere vicine (un paragrafo o un isolato fatto solo di numeri), la scrittura della lingua del documento.
L’impaginazione misura la parola in quella scrittura, e il canvas, l’HTML, l’EPUB a layout fisso e il PDF disegnano quelle forme a quella larghezza, uguali in ogni browser. Una nota latina, una citazione o una voce di bibliografia in un libro arabo non hanno bisogno di uno spazio non separabile per mantenere 46. o (d. 1367) nelle loro forme latine: scrivile con spazi normali. Una parola modellata in scrittura araba non riceve spaziatura tra lettere, come le parole arabe che la circondano.
Una parola che ha una lettera è un unico tratto di scrittura, e lo sono anche i pezzi in cui viene disegnata. Un DOI o un indirizzo web può andare a capo in ciascuna delle sue giunture, e una parola più larga della riga viene tagliata dove la riga finisce; un pezzo rimasto senza lettere (10.1006/ e .2001 di 10.1006/ijhc.2001.0458) prende la scrittura che ha dentro la sua parola: quella della lettera che lo precede lì, altrimenti quella della prima lettera della parola. Viene misurato e disegnato in quella scrittura, così l’indirizzo resta compatto in un carattere le cui cifre cambiano con la scrittura (Noto Serif SC le disegna larghe 0,55 em nel testo latino e 0,47 em negli altri casi).
In un documento cinese o giapponese (locale zh o ja) un’ellissi o una lineetta doppia (……, ——, ――) è il segno proprio del documento ovunque venga citata. Una parola senza lettere che ne contiene una, come ……. alla fine di una frase inglese del colophon, compone la coppia nelle forme del testo han (sei punti centrati, una lineetta lunga due em) e ciò che le sta accanto, il punto fermo o una virgoletta, nella scrittura della frase. Non servono né :ltr[…] né uno span di un altro stile.
La regola agisce nei contesti latini, greci, cirillici, arabi ed ebraici, e solo con un carattere la cui punteggiatura o le cui cifre cambiano con la scrittura; ogni altro carattere viene impaginato come prima. Copre il testo corrente, i titoli, gli elenchi, le didascalie, le note, le celle di tabella e la riga di puntini di una voce dell’indice. Una parola da destra a sinistra viene misurata così come viene disegnata, quindi una parentesi o un punto al suo margine prende la sua larghezza in ogni browser. Una configurazione salvata da postext 1.27 o precedente viene letta con scriptContext: false e conserva le forme che le dava il suo browser. Vedi bodyText.scriptContext.
#Ordine delle pagine e rilegatura a destra
Un libro arabo è rilegato sul bordo destro. La sua prima pagina è una pagina sinistra, le doppie pagine si leggono dalla pagina destra a quella sinistra e le colonne si riempiono da destra a sinistra. Postext impagina una pagina del genere come una pagina da sinistra a destra vista allo specchio: tutto ciò che sta nel flusso del testo (colonne, righe, rientri, marcatori di elenco, elementi flottanti, note, riquadri, tabelle) viene collocato dallo stesso codice di un libro inglese, e poi la pagina viene specchiata per intero, disegnando ogni parola, immagine e formula nel verso giusto.
- Rilegatura.
page.binding: 'auto'è il bordo destro per un documento da destra a sinistra. La pagina 1 resta dispari e resta il recto, quindibreakBefore.parity,:::pagebreak{parity="odd"}e i conteggi delle pagine mantengono il loro significato; il recto è la pagina sinistra della doppia pagina, e un capitolo che si apre su un recto si apre su una pagina sinistra. Conmargins.mirror, il margine interno delle pagine dispari è alla loro destra. Il PDF chiede ai visualizzatori doppie pagine da destra a sinistra (/Direction /R2L,/PageLayout /TwoPageRight), la Sandbox mostra le doppie pagine come 3 | 2 e il suo visualizzatore HTML scorre le pagine da destra a sinistra. Vedi Rilegatura. - Colonne. In una pagina a due colonne la prima colonna è quella di destra; il filetto tra le colonne, una colonna laterale e l’intercolonna seguono. Un elemento flottante in alto si estende a partire da destra, le note a piè di pagina stanno ai piedi di ogni colonna con il filetto separatore a destra.
- Testatine e folio restano sul foglio: gli spazi dell’intestazione e del piè di pagina sono fisici, e il loro
lefterightsono i lati del foglio, come in qualsiasi libro. Impostali per il bordo destro: il titolo del capitolo sulla pagina sinistra (dispari), il titolo del libro sulla pagina destra (pari), il folio nell’angolo esterno (a sinistra delle pagine dispari) o centrato, come fa la maggior parte dei libri arabi.
#Che cosa significano left, right, start ed end
Un’impostazione che nomina un lato indica un lato del testo, non del foglio, quindi un progetto grafico pensato per un libro inglese funziona senza modifiche quando il libro passa all’arabo. start ed end sono accettati ovunque come nomi espliciti dell’inizio e della fine del testo.
| Impostazione | left / right | start / end |
|---|---|---|
Allineamento del testo: bodyText.textAlign, titoli, stili di paragrafo e di parte, note a piè di pagina, align della didascalia, corpo del riquadro | I lati del testo: left è il lato da cui comincia una riga, la destra di un paragrafo arabo. L’ultima riga di un paragrafo giustificato va lì. | Sinonimi di left e right. |
Celle di tabella (TableCell.align) | I lati del testo della cella, letti nella direzione della tabella (table.direction). | Sinonimi, letti nella direzione della tabella. |
placement.align di un elemento flottante o di una figura stretta | I lati del flusso del corpo: in un libro arabo left è la destra del foglio. | Sinonimi di left e right. |
placement.wrap di un’immagine o di un riquadro affiancato dal testo | I lati del flusso del corpo, come per align: in un libro arabo left lo colloca alla destra del foglio, con il testo alla sua sinistra. | Sinonimi di left e right. |
stripe.side, icon.cornerSide e position dell’etichetta di un riquadro | I lati del flusso del corpo, gli stessi per ogni riquadro della pagina. | La direzione propria del riquadro: l’inizio di un :::callout{dir=ltr} in un libro arabo è la sinistra del foglio. |
| Spazi dell’intestazione e del piè di pagina, elementi grafici sul foglio | I lati del foglio. | Solo elementi di testo: l’inizio e la fine della direzione propria dell’elemento. |
Gli elementi grafici disposti nel flusso, come la fascia di un’apertura di capitolo o la grafica di un titolo, vengono specchiati con esso: il loro left e right sono i suoi lati d’inizio e di fine, come nel testo corrente. Un elemento di testo accetta direction: 'ltr' | 'rtl' | 'auto' (per impostazione predefinita la direzione del documento; 'auto' legge la prima lettera forte del suo testo), e il suo align: 'start' e 'end' la seguono. placement.rotate mantiene il suo significato fisico: una figura ruotata in senso orario è ruotata in senso orario sul foglio.
#Shaping e parole intere
Le lettere di una parola araba si uniscono, e ognuna prende la forma che le chiedono le vicine: iniziale, mediana, finale o isolata, con legature come lām-alif. Postext misura e disegna una parola come un’unica stringa modellata, mai lettera per lettera. Il canvas e l’HTML lasciano lo shaping al browser; il PDF esegue lo shaping con HarfBuzz, caricato solo quando un documento contiene arabo o un’altra scrittura che ne ha bisogno, e riconduce ogni glifo ai suoi caratteri, così il testo copiato dal PDF e letto da uno screen reader è il testo digitato. Quando HarfBuzz non si può caricare il PDF viene scritto comunque, con i segni fuori posto, e renderToPdf segnala un avviso complexShapingUnavailable; la sua opzione harfbuzzWasm punta al file quando un host lo serve da una posizione propria.
Dai raccordi discendono tre regole, valide per ogni parola che contiene una lettera in scrittura araba, in un libro arabo o citata in uno inglese:
- Niente sillabazione. L’arabo non si divide a fine riga, e la sillabazione è disattivata in un documento in scrittura araba. Attivarla con una lingua di pattern latina (
hyphenation: { enabled: true, locale: 'en-us' }) sillaba le parole latine del libro e lascia intere quelle arabe. - Niente spaziatura tra lettere. Allontanare lettere legate rompe i raccordi. Il
letterSpacingdi uno stile e il tracking della giustificazione saltano le parole arabe; la compilazione segnala uno stile del corpo o di un titolo che imposta una spaziatura tra lettere su testo arabo (joiningScriptLetterSpacing). - Niente tagli. Una parola più larga della riga non viene mai tagliata tra le sue lettere. Sborda dalla giustezza, la riga viene marcata (
VDTLine.wordOverflow) e la compilazione lo segnala (unbreakableWordOverflow). Succede nelle celle di tabella strette e nelle colonne laterali; allargale o riscrivi il testo.
Un cambio di stile dentro una parola, come una lettera colorata o un segno vocalico in grassetto (كتا**ب**), non spezza la parola in due: viene misurata e modellata intera, e la parte con lo stile viene disegnata sopra. Il PDF e l’HTML colorano le lettere esatte; il canvas stima dove cade la lettera dentro la parola modellata, e un colore può sconfinare di un soffio sulla lettera vicina. Un testo grafico non taglia mai una parola araba quando va a capo o viene troncato, e un capolettera, in un testo grafico o all’inizio di un paragrafo, non viene disegnato quando la prima lettera si unisce alla successiva: un paragrafo del genere genera un avviso dropCap (vedi Capilettera). Una lettera che non si unisce alla successiva (ا, د, ر, و) e una lettera ebraica vengono composte come iniziali a destra, con le righe accorciate da quel lato.
#Giustificazione e kashida
I libri arabi sono giustificati. Una riga non si allunga spaziando le lettere; si allunga negli spazi tra le parole e con la kashida, i raccordi allungati che un calligrafo traccia tra due lettere legate (كتاب → كتـاب). Postext inserisce le kashida come tatweel interi (U+0640, ـ), che il font disegna come un unico tratto; Amiri trasforma una serie di tatweel in un raccordo curvo.
bodyText.kashida vale 'auto' in un documento in scrittura araba e 'none' in qualsiasi altro. Ogni riga giustificata, tranne l’ultima di un paragrafo, prima apre i suoi spazi tra le parole fino a un quarto della loro larghezza, poi prende il resto del suo margine di allungamento in kashida, un tatweel alla volta, cominciando dai raccordi migliori; ciò che resta, meno di un tatweel, torna agli spazi. Knuth–Plass conta il possibile allungamento di ogni parola come elasticità, quindi sceglie i punti di a capo sapendo che una riga di parole arabe può allargarsi lì. Le parole latine, le cifre, i titoli, le righe in bandiera e l’ultima riga di un paragrafo non ricevono mai kashida.
Dove può andare una kashida segue le regole di raqim-kashida: solo tra due lettere che si uniscono, mai dopo una lettera che non si unisce alla successiva (ا د ذ ر ز و ة), mai alla fine di una parola, mai dentro lām-alif. kashidaPatterns sceglie l’insieme di regole: 'naskh' per le regole classiche del naskh, 'simple' per le priorità dei caratteri moderni semplici, 'nastaliq' per il nastaʿlīq, e 'auto' lo ricava dal carattere del corpo (nessuna kashida in un carattere ruqʿa come Aref Ruqaa, il cui stile la vieta). kashidaPerWord (1 per impostazione predefinita) e kashidaMaxLength (0,6 em) limitano quanto si allunga una parola; una parola che contiene un tatweel digitato dall’autore si allunga lì. I tatweel inseriti vengono disegnati ma restano fuori dal testo semplice, dalla mappa della sorgente e dal testo copiato dal PDF. La kashida nel testo arabo descrive nel dettaglio gli insiemi di regole.
bodyText: {
textAlign: 'justify',
kashida: 'auto', // the default in an Arabic book
kashidaPatterns: 'naskh', // 'auto' reads it from the face
}#Segni vocalici
I segni vocalici (ḥarakāt: fatḥa, ḍamma, kasra, sukūn, shadda, tanwīn, l’alif soprascritta) e i segni coranici si impilano sopra e sotto le lettere, nello spazio dell’interlinea. La prosa moderna segna una shadda o una vocale qua e là; un’edizione classica vocalizza per intero i versi e poco la prosa; il Corano è sempre vocalizzato per intero. L’interlinea non cresce mai da sola per i segni, quindi sceglila per il testo più vocalizzato che il libro contiene:
| Testo | lineHeight |
|---|---|
| Prosa moderna non vocalizzata | 1,55–1,7 em |
| Prosa parzialmente vocalizzata | 1,7–1,85 em |
| Versi vocalizzati per intero, il Corano | 1,9–2,1 em |
Ogni riga che contiene segni registra fin dove arriva il loro inchiostro sopra e sotto la linea di base (VDTLine.markInk), e il ritaglio della colonna nel canvas e nel PDF 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) con l’interlinea che servirebbe. Vengono confrontate solo le parole che stanno l’una sopra l’altra, quindi una parola vocalizzata sotto una breve passa. Assegna ai passi vocalizzati, ai versi in particolare, uno stile di paragrafo con un’interlinea maggiore.
bodyText.tashkil toglie i segni dal testo che l’impaginazione compone, per un’edizione non vocalizzata ricavata da una sorgente vocalizzata: 'strip' rimuove le vocali, il tanwīn, la sukūn, la shadda, l’alif soprascritta (هٰذا viene composto هذا) e i segni coranici; 'strip-vowels' conserva la shadda, come la stampa la maggior parte dei libri moderni. Hamza e madda restano: أ إ آ sono lettere. La sorgente conserva i suoi segni; paragrafi, titoli e indice vengono composti senza.
#Enfasi
Il carattere arabo non ha corsivo, e un carattere arabo inclinato è una deformazione. In un documento in scrittura araba *…* viene composto in grassetto per impostazione predefinita (bodyText.emphasis: 'auto'); 'color' lo compone in tondo con italicColor, e 'overline' traccia un filetto sopra le parole, la sopralineatura dei libri arabi più antichi. Qualunque sia la scelta, il motore non inclina mai le lettere arabe: in un tratto composto in corsivo le parole arabe restano diritte e quelle latine mantengono il corsivo, così *Kitāb al-ʿIbar كتاب العبر* stampa la traslitterazione in corsivo e il titolo arabo in tondo. Le citazioni sono in tondo per impostazione predefinita in un libro arabo; uno stile il cui carattere è corsivo (blockquote.italic: true, un livello di titolo composto in corsivo) compone anch’esso in tondo le parole arabe, nel suo carattere senza inclinazione, e in corsivo quelle latine. Le didascalie, le celle di tabella, l’indice e l’indice analitico mantengono le proprie impostazioni di corsivo.
bodyText: { emphasis: 'overline', italicColor: { hex: '#8a1c1c', model: 'hex' } }#Cifre e stili di numerazione
L’arabo si scrive con tre serie di cifre, scelte in base alla regione:
| Regione | Cifre | numerals |
|---|---|---|
Il Mashriq: Egitto, Sudan, Levante, Iraq, penisola arabica (ar, ar-EG, ar-SA…) | ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ (indo-arabe) | 'arab' |
Il Maghreb: Marocco, Algeria, Tunisia, Libia, Mauritania (ar-MA, ar-DZ, ar-TN…) | 0 1 2 3 4 5 6 7 8 9 (europee) | 'latn' |
Persiano, pashto, urdu dell’India (fa, ps, ur-IN) | ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ (forme persiane) | 'arabext' |
numerals al livello principale imposta le cifre di ogni numero che il motore scrive: folio e numeri di pagina dell’indice e dell’indice analitico, numeri di elenco e di nota, contatori dei titoli e dei capitoli, numeri delle figure e i rimandi a esse, {totalPages}. 'auto' prende le cifre della regione da locale (ar senza regione, e ar-AE, sono del Mashriq, come le stampano i libri arabi di quelle zone); un tag può indicare le proprie (ar-MA-u-nu-arab). I numeri digitati dall’autore non vengono mai cambiati, e vengono letti in qualsiasi sistema: una voce di elenco ٣. comincia da 3, e {startAt=٥} vale 5. Vedi Cifre del documento.
Un formato indicato nella configurazione viene stampato come indicato, quindi un libro può mescolare i sistemi. Gli stili di numerazione arabi:
| Stile | 1, 2, 3 … 11, 1446 | Nome |
|---|---|---|
| Cifre indo-arabe | ١، ٢، ٣ … ١١، ١٤٤٦ | arabic-indic, ١ |
| Cifre persiane | ۱، ۲، ۳ … ۱۱، ۱۴۴۶ | persian, ۱ |
| Numerali abjad (additivi, valori del Mashriq) | ا، ب، ج … يا، غتمو | arabic-abjad |
| Numerali abjad, valori del Maghreb | ا، ب، ج … يا (ص 60، ش 1000) | arabic-abjad-maghrebi |
| Lettere in ordine abjad | أ، ب، ج، د، هـ، و … | abjad, أبجد |
| Lettere in ordine alfabetico (hijāʾī) | أ، ب، ت، ث، ج … | hijai, أبتث |
I numerali abjad sommano i valori delle loro lettere, dalla più alta, come contano i manoscritti e i cronogrammi: 11 è يا, 1446 غتمو, 2000 بغ e 1002 غب. I due stili a lettere numerano le voci di elenco e le pagine preliminari con una lettera per voce; entrambi scrivono la prima lettera con la sua hamza (أ) e una heh isolata come هـ, così nessuna delle due viene letta come le cifre ١ e ٥. Un’edizione classica numera le pagine preliminari in ordine abjad e fa partire le cifre dal testo:
:::numbering{format="abjad" startAt=1}
# المقدمة {style="front-matter"}
…
:::pagebreak{parity="odd"}
:::numbering{format="decimal" startAt=1}Gli elenchi numerati seguono gli stessi nomi. Una gerarchia araba consueta è ١- , poi أ- , poi (١):
orderedLists: {
levels: [
{ level: 1, numberFormat: 'arabic', separator: '-' },
{ level: 2, numberFormat: 'abjad', separator: '-' },
{ level: 3, numberFormat: 'arabic', prefix: '(', separator: ')' },
],
},arabic è il formato decimale, scritto con le cifre del documento.
#Ordinali e cardinali in lettere
{1:ordinal} in un modello di titolo scrive l’ordinale determinato in lettere arabe e {1:words} il cardinale. Gli ordinali arabi concordano con il nome che numerano, quindi il modello prende il genere dopo un trattino: -feminine (o -f) per un nome femminile come الليلة, il maschile per impostazione predefinita per الفصل o الباب. -classical scrive مائة al posto di مئة, come fanno le stampe di Būlāq. Una notte non ha un titolo proprio: numberPosition: 'replace' stampa il numero come titolo intero, quindi # Night (o qualsiasi titolo scritto nella sorgente) stampa الليلة الثانية, e l’indice, le testatine e i segnalibri del PDF riportano lo stesso testo.
headings: {
levels: [{ level: 1, numberingTemplate: 'الليلة {1:ordinal-feminine}', numberPosition: 'replace' }],
},Questo stampa الليلة الأولى, الليلة الحادية عشرة, الليلة الخامسة والأربعون بعد الثلاثمئة e, a 1001, الليلة الحادية بعد الألف; 'الفصل {1:ordinal}' stampa الفصل الأول, الفصل الحادي عشر. Gli ordinali si scrivono fino a 9 999 e i cardinali fino a 99 999; oltre, il numero viene stampato in cifre. I segnaposto grafici {numberWords} e {numberOrdinalWords} danno le forme maschili. Vedi Numeri in lettere.
#Note a piè di pagina
Un libro arabo segna le note con il numero tra parentesi, «(١)», in apice nel testo e sulla riga all’inizio della nota, e la maggior parte delle edizioni classiche le rinumera a ogni pagina. Il filetto separatore e i numeri delle note stanno da soli sul lato d’inizio, a destra.
footnotes: {
markerTemplate: '({n})', // «(١)» in the text and in the note
numbering: 'page', // ١ again on every page
noteNumberPosition: 'inline', // the note's own number on the line
}markerTemplate scrive allo stesso modo il richiamo nel testo e il numero che apre la nota, con le cifre del documento. Il numero di una nota dipende dalla pagina in cui finisce, quindi un libro numerato per pagina viene impaginato, numerato dove sono cadute le note e impaginato di nuovo. Metti il richiamo prima del segno di punteggiatura che segue, come fanno i libri arabi: il [^id] va subito dopo la parola, prima della virgola o del punto fermo. Vedi Note a piè di pagina.
#Versi classici
Una poesia araba classica (qaṣīda, qiṭʿa) si compone un verso, il bayt, per riga, in due metà: il primo emistichio, il ṣadr, a destra, il secondo, l’ʿajuz, a sinistra, con uno spazio tra i due. Tutti gli emistichi della poesia vengono portati a una stessa larghezza, così ogni ṣadr comincia sulla stessa verticale e ogni ʿajuz finisce su un’altra, e le lettere della rima si allineano lungo tutta la poesia.
Scrivi la poesia in un blocco :::verse, un bayt per riga, con gli emistichi separati da || (funziona anche un \\ con uno spazio per lato, come nelle trascrizioni di Wikisource). Una riga senza separatore è un emistichio singolo, centrato sulla poesia.
فأنشد يقول:
:::verse{style="verse"}
يَا حُرْقَةَ الدَّهْرِ كُفِّي || إِنْ لَمْ تَكُفِّي فَعِفِّي
فَلَا بِحَظِّيَ أُعْطِي || وَلَا بِصَنْعَةِ كَفِّي
:::- La larghezza comune è quella dell’emistichio più largo, al massimo metà della giustezza meno lo spazio;
widthla fissa. Ogni emistichio la raggiunge prima con le kashida, che i versi accettano più liberamente della prosa, poi con gli spazi tra le parole. - Lo spazio è di 2 em per impostazione predefinita (
gap);ornamentstampa un segno al suo centro, come ٭. - Un emistichio troppo lungo prima stringe i suoi spazi; se ancora non ci sta, il suo bayt viene composto sfalsato: il ṣadr allineato a destra su una riga propria, l’ʿajuz allineato a sinistra sulla successiva.
- Tenere unito. Un bayt non viene mai diviso tra colonne o pagine, una poesia segue le regole delle orfane e delle vedove dei paragrafi, e la riga che la introduce («فأنشد يقول:») resta con i suoi primi bayt.
- Carattere. La poesia prende il carattere e il corpo del testo;
styleindica uno stile di paragrafo, ed è così che una poesia vocalizzata ottiene l’interlinea di cui hanno bisogno i suoi segni. Una poesia in traslitterazione latina in un libro inglese si compone allo stesso modo, con il ṣadr a sinistra. - Numeri di riga. Con
lineNumbersattivo, una poesia conta un numero per bayt, stampato nel margine accanto; l’ʿajuz di un bayt sfalsato, su una riga propria, non riceve numero.position: 'start'mette i numeri a destra su ogni pagina di un libro arabo. Vedi Configurazione › Numeri di riga.
Il testo semplice conserva la poesia come è stata scritta, un bayt per riga, e lascia fuori le kashida e l’ornamento. Vedi :::verse nel formato del documento.
Versi liberi e poesie latine. Una poesia le cui righe non contengono || (versi liberi moderni, o una poesia latina citata in un libro arabo, :::verse{dir=ltr lang=en}) viene invece composta riga per riga: ogni riga della sorgente è un verso, le righe vuote separano le strofe, gli spazi iniziali sono un rientro misurato dal lato d’inizio della poesia, e le righe troppo lunghe vanno a capo con un rientro sporgente. Vedi :::verse › Riga per riga.
#Indice e indice analitico
Indice. Molti libri arabi, soprattutto le edizioni classiche, stampano l’indice (فهرس o فهرس المحتويات) alla fine. :::toc stampa l’indice ovunque si trovi, quindi mettilo nell’ultimo capitolo sotto un titolo escluso dall’indice stesso:
# فهرس المحتويات {toc="false"}
:::tocUna riga dell’indice è composta da destra a sinistra: il numero e il titolo a destra, la linea guida, il numero di pagina a sinistra. Un titolo latino in un libro arabo mantiene il numero di pagina a sinistra, e le sue parole si leggono da sinistra a destra.
Tabulazioni. Le tabulazioni nel testo corrente funzionano allo stesso modo (vedi Tabulazioni e punti di tabulazione): la posizione di una tabulazione si misura dal bordo destro della giustezza, una tabulazione end sta a sinistra, e una linea guida corre tra le parti in ordine visivo. Un listino prezzi o un indice digitato come paragrafi, الفصل الأول :tab 12 con uno stile la cui tabulazione è { position: 'end', align: 'end', leader: '.' }, compone il titolo a destra e il numero a sinistra, dopo i puntini.
Indice analitico. L’indice analitico di un libro arabo ordina le voci in ordine alfabetico (hijāʾī) e le raggruppa sotto la loro prima lettera. Ignora l’articolo determinativo: البصرة va sotto ب, tra بدر e بغداد, e viene stampato come è scritto (index.ignoreArticle, attivo per impostazione predefinita quando la lingua dell’indice è l’arabo; الله conserva l’articolo). Ignora anche i segni vocalici e il tatweel, classifica أ إ آ ٱ sotto ا, e ordina ة con ه e ى con ي. I numeri di pagina sono uniti dalla virgola araba (، ) e un rimando recita انظر o انظر أيضًا. Una voce con una propria chiave sort mantiene l’articolo di quella chiave. Vedi Indice analitico.
Citazioni. Una bibliografia in un libro arabo prende i termini arabi del citation style language (locale CSL ar: ص per una pagina, مج per un volume, و tra due autori, وآخرون per et al.) e le cifre del documento nei richiami numerati: [٢، ص ١٢]. Il titolo della bibliografia è المراجع. Le virgole e i punti e virgola scritti in uno stile CSL restano come li ha lo stile. Un’opera in un’altra scrittura conserva il proprio ordine: un riferimento latino in una nota o in una bibliografia araba viene composto come isolato della sua direzione, così il suo URL, le sue virgolette e il suo punto fermo restano con esso, e la nota resta un paragrafo da destra a sinistra. Vedi Citazioni.
#Font
Postext compone ogni stile in una sola famiglia e non ricorre a un’altra per un carattere mancante, quindi il carattere deve contenere ogni lettera, segno e cifra araba che il libro stampa. Caratteri liberi per libri (tutti con licenza SIL Open Font License):
| Carattere | Stile | Uso |
|---|---|---|
| Amiri | Naskh ispirato ai caratteri delle tipografie di Būlāq e Amīriyya dell’inizio del Novecento; kashida curva, vocalizzazione completa, un latino coordinato. | Edizioni classiche, testo vocalizzato, versi. Regular e bold. |
| Noto Naskh Arabic | Naskh moderno neutro. | Prosa moderna, note, tabelle. Un font variabile: includi nel pacchetto un file statico per ogni peso. |
| Scheherazade New | Naskh tradizionale semplificato con segni molto chiari, interlinea predefinita alta. | Testo vocalizzato per intero, insegnamento della lingua. |
| Reem Kufi | Kufi ispirato alle iscrizioni fatimidi. | Titoli display, titoli delle notti e dei capitoli. |
| Aref Ruqaa | Ruqʿa. | Titoli display brevi e frontespizi. Niente kashida: il ruqʿa non si allunga. |
Markazi Text e Noto Kufi Arabic servono per i libri moderni (testo e titoli), ed El Messiri per i titoli display moderni. A parità di corpo nominale un carattere naskh sembra più piccolo di uno latino: il testo dei libri arabi è comunemente di 13–15 pt dove il testo latino sarebbe di 10–11 pt.
- Nel browser e nella Sandbox, Google Fonts e Fontsource servono ogni famiglia come un file per sottoinsieme:
latin,latin-extearabic. Il browser carica il filearabicsolo quando un carattere ne ha bisogno, e un’impaginazione misurata prima del suo arrivo viene misurata con un carattere di ripiego. La Sandbox lo carica prima della prima impaginazione; un host lo verifica con un campione che contiene una lettera araba (document.fonts.load('16px Amiri', 'ب')). Il fornitore di font del PDF deve passare arenderToPdfil filearabicper il testo arabo; il fornitore descritto in Fornitore di font per il browser sceglie la porzione in base al punto di codice. - In un pacchetto, includi i caratteri interi o ridotti ai caratteri del libro, conservando le tabelle di layout OpenType (
GSUB,GPOS): lì stanno le forme di legatura, le legature, le posizioni dei segni e le parentesi specchiate. Un sottoinsieme che ne è privo stampa lettere isolate. - I glifi mancanti vengono stampati come la casella vuota del font;
renderToPdfli segnala per carattere (missingGlyph), e la Sandbox li elenca nel pannello Verifiche. - Il latino dentro il testo arabo è composto nella stessa famiglia. Amiri ha un proprio latino; con un carattere naskh dal latino povero, componi i passi latini lunghi in uno stile di paragrafo con un carattere latino.
#Nella Sandbox
In Grafica › Sistema di scrittura, il menu Lingua del documento offre العربية, العربية (مصر) e العربية (المغرب), e Direzione del testo e Cifre mostrano a che cosa si risolve Auto. Predefiniti per l’arabo › Rivedi… elenca che cosa cambia la preparazione del libro per l’arabo prima di applicarla, con una scelta di caratteri (Classico, Amiri; Moderno, Noto Naskh Arabic con titoli in Noto Kufi Arabic): la direzione e la rilegatura riportate ad Auto, testatine e folio in un carattere con lettere arabe, un’interlinea di 1,75 em, testo giustificato, le cifre della regione, شكل e جدول numerate per capitolo, didascalie composte شكل ١-١: العنوان, capitoli numerati الفصل الأول, elenchi numerati ١- أ- (١) e note numerate a ogni pagina. Ogni selettore di font elenca per prime le famiglie arabe.
L’editor dà a ogni riga la direzione della sua prima lettera: una riga di arabo parte da destra, e il cursore e i tasti freccia seguono l’ordine visivo, mentre il markup al suo interno (attributi {…}, [^id], un :ref[…], formule, destinazioni dei link) resta da sinistra a destra. Vedi Sandbox.
#Due configurazioni complete
#Un libro moderno in arabo standard moderno
Un libro di 14 × 21 cm in Noto Naskh Arabic a 13 pt, titoli in Noto Kufi Arabic, capitoli numerati الفصل الأول, note «(١)» numerate a ogni pagina, il folio centrato al piede. La direzione, la rilegatura a destra, le cifre ٠–٩, la kashida e l’enfasi in grassetto vengono da locale: 'ar-EG':
import type { PostextConfig } from 'postext';
const pt = (value: number) => ({ value, unit: 'pt' as const });
const mm = (value: number) => ({ value, unit: 'mm' as const });
const em = (value: number) => ({ value, unit: 'em' as const });
const ink = { hex: '#1a1a1a', model: 'hex' as const };
const config: PostextConfig = {
locale: 'ar-EG',
page: {
sizePreset: 'custom', width: mm(140), height: mm(210),
margins: { top: mm(18), bottom: mm(22), left: mm(16), right: mm(20), mirror: true },
},
layout: { layoutType: 'single' },
bodyText: {
fontFamily: 'Noto Naskh Arabic', fontSize: pt(13), lineHeight: em(1.7),
textAlign: 'justify', firstLineIndent: em(1.5),
color: ink, boldColor: ink, italicColor: ink,
},
headings: {
fontFamily: 'Noto Kufi Arabic', color: ink,
levels: [
{ level: 1, fontSize: pt(20), numberingTemplate: 'الفصل {1:ordinal}', numberSeparator: ': ',
breakBefore: { enabled: true, parity: 'odd' } },
{ level: 2, fontSize: pt(15) },
],
},
captionStyle: { labelSeparator: ': ' },
orderedLists: {
levels: [
{ level: 1, numberFormat: 'arabic', separator: '-' },
{ level: 2, numberFormat: 'abjad', separator: '-' },
],
},
footnotes: { markerTemplate: '({n})', numbering: 'page', noteNumberPosition: 'inline' },
header: { elements: [] },
footer: { elements: [
{ kind: 'text', id: 'folio', content: '{pageNumber}', fontFamily: 'Noto Naskh Arabic', fontSize: pt(11),
overflow: 'clip', color: ink, placement: { anchor: { to: 'container', edge: 'center' } } },
] },
};parity: 'odd' apre ogni capitolo su un recto, che in questo libro è una pagina sinistra. I due punti separano l’etichetta di una didascalia dal suo testo (شكل ١-٢: …), perché il punto fermo predefinito dopo le cifre indo-arabe si legge come separatore decimale.
#Un’edizione classica vocalizzata
Un’edizione di 17 × 24 cm di un testo classico in Amiri a 14 pt, con le notti numerate in lettere, i versi vocalizzati per intero, il folio in testa alla pagina tra trattini, le pagine preliminari numerate con lettere abjad e l’indice alla fine:
const config: PostextConfig = {
locale: 'ar',
page: {
sizePreset: 'custom', width: mm(170), height: mm(240),
margins: { top: mm(24), bottom: mm(24), left: mm(18), right: mm(24), mirror: true },
},
layout: { layoutType: 'single' },
bodyText: {
fontFamily: 'Amiri', fontSize: pt(14), lineHeight: em(1.85),
textAlign: 'justify', firstLineIndent: em(1.5),
kashida: 'auto', kashidaPatterns: 'naskh',
color: ink, boldColor: ink, italicColor: ink,
},
headings: {
fontFamily: 'Amiri', color: ink, textAlign: 'center',
levels: [
{ level: 1, fontSize: pt(18),
numberingTemplate: 'الليلة {1:ordinal-feminine}', numberSeparator: '',
breakBefore: { enabled: true, parity: 'any' } },
],
},
paragraphStyles: [
{ id: 'verse', lineHeight: em(2.1) },
],
footnotes: { markerTemplate: '({n})', numbering: 'page', noteNumberPosition: 'inline' },
header: { elements: [
{ kind: 'text', id: 'folio', content: '– {pageNumber} –', fontFamily: 'Amiri', fontSize: pt(12),
overflow: 'clip', color: ink, placement: { anchor: { to: 'container', edge: 'center' } } },
] },
footer: { elements: [] },
};I capitoli cominciano con :::numbering{format="abjad" startAt=1} prima dell’introduzione e :::numbering{format="decimal" startAt=1} prima della prima notte; le poesie sono blocchi :::verse{style="verse"}; l’ultimo capitolo è # فهرس المحتويات {toc="false"} seguito da :::toc. L’indice analitico non ha bisogno di impostazioni per ignorare l’articolo ال: index.ignoreArticle è attivo per un indice arabo. Per un’edizione di lettura non vocalizzata ricavata dalla stessa sorgente, aggiungi tashkil: 'strip' a bodyText.
#Limiti noti
- Persiano, urdu ed ebraico ricevono la direzione, le cifre, le regole delle parole intere e la rilegatura a destra, ma non hanno parole predefinite proprie (figure, tabelle e indice analitico vengono stampati in inglese) né composizione nastaʿlīq: un carattere nastaʿlīq viene composto su una linea di base piatta.
- La direzione del blocco si imposta sui titoli e sui contenitori; un paragrafo semplice ha bisogno di un
:::paragraphs{dir=…}intorno, e non esiste{dir=auto}. - Isole di direzione opposta. In un blocco composto in direzione opposta a quella del libro, le didascalie e le righe dell’indice e dell’indice analitico seguono la direzione del documento, e l’icona, la colonna del marcatore e il titolo di un riquadro restano sul lato d’inizio del flusso.
- Il testo grafico (testatine, aperture, titoli dei riquadri) risolve l’ordine bidirezionale riga per riga, e un testo che contiene una lettera araba perde per intero la spaziatura tra lettere, comprese le sue parole latine.
- Testo grafico in corsivo. Una testatina o un testo di apertura composto in corsivo inclina ancora le lettere arabe.
- I segni vocalici possono sporgere oltre il bordo di un riquadro o di una cella di tabella, il cui ritaglio non cresce per loro;
tashkillascia i segni delle didascalie, delle celle di tabella e del testo grafico. - Numeri. I numeri delle citazioni vengono stampati in cifre europee; gli ordinali in lettere sono scritti nella forma nominativa determinata che usano i titoli.
- Indice analitico: ة è classificata sotto ه, e i nomi non vengono ordinati saltando ابن o أبو; non ci sono indici per rima o per radice.
- Versi: niente versi in linea dentro la prosa, nessuna forma strofica con un ritornello centrato oltre a singole righe centrate; un emistichio più largo della giustezza va a capo dal lato d’inizio, senza rientro sporgente.
- Kashida: il testo copiato dall’output HTML contiene ancora i tatweel inseriti, e nulla impedisce che le kashida di righe vicine si impilino l’una sopra l’altra.
- I listati di codice si leggono da sinistra a destra in un libro da destra a sinistra: ogni riga è composta dal lato opposto del riquadro, come una citazione inglese, con i numeri di riga nel margine alla sua sinistra e il testo copiato in ordine logico. Vedi Listati di codice.
- Le parole senza lettere prendono la scrittura del loro contesto nel testo corrente, nei titoli, negli elenchi, nelle didascalie, nelle note e nelle celle. Un marcatore di elenco, l’etichetta di un rimando, un richiamo di nota, il testo grafico (un folio, una testatina fatta di numeri), il lettering dei fumetti e un paragrafo composto dal compositore CJK vengono modellati da soli, come li modella ciascun browser.
#Fonti
- W3C, Arabic & Persian Layout Requirements (alreq), e la Arabic script gap analysis.
- Unicode Standard Annex #9, Unicode Bidirectional Algorithm; Unicode Technical Report #53, Unicode Arabic Mark Rendering.
- W3C, Ready-made Counter Styles, per
arabic-indic,persiane le serie abjad. - aliftype, raqim-kashida (MIT), e la sua presentazione; M. Benatia, M. Elyaakoubi e A. Lazrek, “Arabic text justification”, TUGboat 27(2), 2006.
- Titus Nemeth, On Arabic justification, TypoArabic, University of Reading; Khatt Foundation, The Big Kashida Secret.
- Aḥmad Zakī Pāshā, al-Tarqīm wa-ʿalāmātuhu fī al-lugha al-ʿarabiyya, 1912 (Hindawi), sulla punteggiatura araba.
- Documentazione di Amiri e di Scheherazade New, su kashida, impilamento dei segni e set stilistici.
- Unicode CLDR, per le cifre predefinite di ogni regione.