Aller au contenu principal

Chapitre 3.4 · Partie II · Le métier

Configuration : césure et langue

Les motifs de césure et les exceptions, le texte en drapeau, la langue du document avec ses chiffres et son sens d’écriture, et les écritures que compose Postext

Mis à jour 2026-10-1622 minDans le chapitre 3 Configurationenescadefritptzhjaar

En bref

Cette page explique comment les mots sont coupés en fin de ligne et comment Postext connaît la langue d’un livre. Vous activez ou désactivez la césure, et vous listez les mots qui ne doivent jamais être coupés. Vous pouvez laisser le bord droit du texte irrégulier au lieu de l’aligner. La langue du document décide des règles de césure, du nom des figures et des tableaux, des chiffres et du sens du texte. Les dernières sections indiquent les systèmes d’écriture que Postext sait composer et la façon dont il traite l’arabe.

#Césure

Quand l’alignement du texte vaut 'justify', la césure évite un espacement excessif entre les mots en coupant les mots longs aux limites de syllabes. Le moteur utilise les motifs TeX/Liang pour trouver les points de coupure naturels aux limites de syllabes. Voir Césure et justification pour une explication détaillée. Le texte en drapeau ne reçoit de césure que si vous la demandez : voir Texte en drapeau plus bas.

PropriétéTypeDéfautDescription
enabledbooleantrueAutorise ou non la césure.
localeLocaleTaglocale de premier niveau, sinon 'en-us'Règles de la langue pour les limites de syllabes : l’une des langues prises en charge ci-dessous, ou toute étiquette BCP 47 ('es-ES', 'pt-BR').
raggedbooleanfalseApplique aussi la césure au texte en drapeau (aligné à gauche, à droite ou centré), dans la limite de la zone. Voir Texte en drapeau.
zoneDimension3emZone de césure du texte en drapeau : un mot qui ne tient pas n’est coupé que si l’envoyer entier à la ligne suivante laisserait un blanc plus large que cette valeur. em se rapporte au corps propre du texte. Ignorée pour le texte justifié.
compoundsbooleantruePermet au dictionnaire de couper les mots d’un composé, un mot avec un trait d’union entre deux lettres (af-ter-dinner). false garde un tel mot entier, sauf à son propre trait d’union, où la ligne peut toujours se terminer (after- · dinner), comme le fait TeX. Un trait d’union conditionnel saisi dans le mot coupe toujours, et un composé plus large que toute la ligne est toujours coupé. S’applique au texte courant, aux titres, aux listes, aux citations et aux encadrés ; les légendes, les notes, les cellules de tableau et la table des matières continuent de couper les composés. Voir Mots composés.
exceptionsstring[]aucuneMots que le dictionnaire ne doit pas couper, ou seulement là où l’entrée l’indique : 'Alice' n’est jamais coupé, 'You-Tube' seulement à son trait d’union. Voir Mots gardés entiers.
capitalizedbooleantrueCoupe les mots à majuscule initiale comme les autres. false garde entier tout mot qui commence par une capitale (Alice, Ámsterdam, UNESCO), y compris le premier mot d’une phrase. Voir Mots gardés entiers.

Langues prises en charge : 'en-us' (anglais), 'es' (espagnol), 'fr' (français), 'de' (allemand), 'it' (italien), 'pt' (portugais), 'ca' (catalan), 'nl' (néerlandais).

Les sous-étiquettes de région, d’écriture et de variante sont ignorées au moment de choisir les motifs, de même que la casse et les séparateurs _ : 'es-ES', 'es-MX' et 'es_419' coupent avec 'es', 'pt-BR' avec 'pt', et toute étiquette anglaise ('en', 'en-GB') avec 'en-us', les seuls motifs anglais fournis : un texte britannique reçoit donc des coupures américaines. Une langue sans motifs fournis ('sv', 'pl', 'fi'…) est coupée avec les motifs 'en-us', ce qui donne de mauvaises coupures plutôt qu’aucune ; le moteur le signale une fois par étiquette avec un console.warn, et le Sandbox l’affiche dans son panneau Vérifications. Réglez enabled: false pour un tel document ; cela fait aussi taire l’avertissement. Le chinois, le japonais et le coréen (zh, ja, ko, quelles que soient la région ou l’écriture) n’ont pas besoin de motifs et n’affichent aucun avertissement : un document dans l’une de ces langues est composé sans césure. Pour couper les mots latins qui y sont cités, réglez enabled: true et nommez leur langue dans locale ('en-us' pour l’anglais). enabled: true sans locale, ou avec une locale chinoise, japonaise ou coréenne, laisse la césure désactivée et l’indique une fois dans la console. matchHyphenationLocale(tag) renvoie la langue fournie qui correspond à une étiquette (undefined s’il n’y en a aucune), et HYPHENATION_LOCALES énumère les langues fournies. La configuration résolue (doc.config.bodyText.hyphenation) nomme dans locale les motifs réellement utilisés, et garde dans tag l’étiquette que vous avez donnée quand elle diffère. Le moteur PDF déclare la langue du document d’après la locale de premier niveau, et d’après cette étiquette seulement quand locale n’est pas définie (voir Langue du document).

import { matchHyphenationLocale } from 'postext';
 
matchHyphenationLocale('es-MX'); // 'es'
matchHyphenationLocale('en-GB'); // 'en-us'
matchHyphenationLocale('sv');    // undefined: hyphenated with 'en-us', with a console warning

Les mots de moins de 5 caractères ne sont jamais coupés. Le moteur exige au moins 2 caractères avant et 3 caractères après un point de coupure.

#Mots gardés entiers

Un dictionnaire coupe un nom comme n’importe quel mot : Al-ice, Áms-ter-dam, You-Tu-be. Trois réglages gardent des mots entiers, et tous trois valent par défaut ce que fait le dictionnaire.

hyphenation.exceptions est une liste de mots, comme le \hyphenation{…} de TeX. Une entrée écrite sans trait d’union n’est jamais coupée ; une entrée écrite avec des traits d’union n’est coupée qu’à ces endroits : 'You-Tube' donne You- · Tube et rien d’autre. Une entrée correspond à une suite de lettres, quoi qui l’entoure : 'Alice' couvre (Alice, et Alice’s, et un composé est comparé partie par partie (Blender-based correspond à 'Blender'). Une forme fléchie est un autre mot et demande sa propre entrée. Une entrée en minuscules correspond au mot quelle que soit sa casse ('blender' couvre Blender et BLENDER) ; une entrée à capitale initiale ne correspond qu’aux occurrences qui commencent par une capitale : 'Rose' garde le nom entier et laisse rose au dictionnaire. Les entrées ne contiennent que des lettres et des traits d’union ; tout le reste est supprimé.

hyphenation.capitalized: false garde entier tout mot qui commence par une capitale : les noms, les sigles, et aussi le premier mot de chaque phrase. C’est l’option « Césure des mots en majuscules » d’InDesign désactivée, et le \uchyph=0 de TeX. Une entrée de exceptions avec des traits d’union coupe toujours son mot à ces endroits. L’allemand met une capitale à tous les noms : l’option laisserait à un texte allemand à peine un mot à couper. Nommez-y plutôt les mots dans exceptions, ou utilisez citations.hyphenateNames.

citations.hyphenateNames: false garde entiers les noms de famille des auteurs que le document cite, où qu’ils se trouvent : dans une citation, dans le texte courant et dans la liste des références. Voir Citations.

const config: PostextConfig = {
  locale: 'es',
  bodyText: {
    hyphenation: { exceptions: ['Ámsterdam', 'Blender', 'You-Tube'] },
  },
};

Les trois atteignent tout texte que coupe le dictionnaire : texte courant, titres, listes, encadrés, légendes, cellules de tableau, notes, titres courants et les autres textes de maquette. C’est plus large que compounds, que les légendes, les notes, les cellules et la table des matières ignorent. Deux choses restent telles quelles. Un trait d’union conditionnel saisi dans une occurrence d’un mot décide toujours de cette occurrence, et un trait d’union conditionnel placé avant la première lettre garde une occurrence entière sans liste (voir Là où une ligne ne se coupe jamais). Et un mot plus large que toute sa ligne est toujours coupé : aux points de son entrée s’il en a, sinon aux syllabes du dictionnaire. Moins de mots coupés laissent à une colonne justifiée étroite moins de façons de remplir ses lignes : examinez l’espacement des mots après avoir désactivé capitalized sur une page à trois colonnes. L’EPUB recomposable laisse la césure au système de lecture, qui ignore tout de ces règles.

#Texte en drapeau

Par défaut, seul le texte justifié reçoit la césure : avec textAlign: 'left', et dans les styles de paragraphe alignés à gauche, centrés ou à droite, chaque mot reste entier, aussi irrégulier que devienne le bord, sauf à un trait d’union conditionnel (U+00AD) saisi dans le texte. Réglez hyphenation.ragged: true pour appliquer aussi la césure au texte en drapeau.

Une ligne en drapeau n’est jamais étirée : couper chaque mot qui ne tient pas frangerait le bord de traits d’union. La zone de césure le limite, comme le fait le compositeur ligne à ligne d’un logiciel de PAO. Quand un mot ne tient pas en fin de ligne, le moteur regarde le blanc que laisserait son envoi entier à la ligne suivante. Si ce blanc est plus large que zone, le mot est coupé à la dernière syllabe qui tient ; sinon il descend entier. Une zone en em se rapporte au corps propre du texte. La valeur par défaut, 3em, ne coupe que les mots qui laisseraient une ligne nettement courte. Une zone plus large donne moins de traits d’union et un bord plus irrégulier ; 0 coupe tout mot qui ne tient pas. En composition ligne par ligne, pas plus de deux lignes consécutives ne se terminent sur une syllabe. Les traits d’union durs (enseñanza-aprendizaje), les jointures d’URL, les traits d’union conditionnels saisis dans le texte et les mots plus larges que toute la ligne se coupent comme toujours : la zone et la limite de deux lignes ne régissent que les syllabes du dictionnaire.

Le réglage vaut pour tout le document. Il s’applique au texte courant et aux citations quand ils sont en drapeau, et à tout style de paragraphe et corps d’encadré en drapeau dont la propre hyphenation est activée (elle vaut par défaut le hyphenation.enabled du texte courant) : hyphenation: false garde donc entiers les mots d’un style. Les titres, les légendes, les notes, les cellules de tableau et la table des matières ne reçoivent pas de césure ; là, comme partout, seul un mot plus large que toute la ligne est coupé. Le texte de maquette (titres courants, ouvertures, pages de partie) suit l’option hyphenate propre à chaque élément de texte, que règlent les ouvertures pleine page et les pages de partie intégrées, et utilise aussi le dictionnaire du document. Le texte justifié ignore ragged et 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' } },
  },
};

Avec optimalRagged (la valeur par défaut), le texte courant en drapeau est coupé avec Knuth-Plass, et la zone y garde son sens : un mot n’est coupé que s’il ne tient pas dans le reste de la ligne et que l’envoyer entier à la ligne suivante laisserait vide plus que la zone. Deux syllabes consécutives ne sont pas refusées, mais coûtent ce que coûtent deux traits d’union consécutifs dans le texte justifié : une troisième est donc rare. Avec optimalRagged: false, ou optimalLineBreaking: false, chaque ligne est remplie avant la suivante, comme jusqu’à postext 1.4.

La césure en drapeau met les paragraphes en page avec le moteur de coupure qu’utilisent toujours les paragraphes à mise en forme en ligne (gras, italique, liens, mathématiques) : l’activer peut donc déplacer quelques coupures autres que des traits d’union. Sur une ligne en drapeau, outre les espaces et les syllabes du dictionnaire, ce moteur coupe après un trait d’union dur ou un tiret entre deux mots (largas—separadas ; avec breakAfterDashes, tout tiret collé entre deux mots, riddles.—I et riddles—*and* aussi), aux jointures d’URL et entre idéogrammes, et il garde ensemble un mot composé en plusieurs passages (**Nota**:, (*véase*). Sans césure en drapeau, un paragraphe en drapeau sans mise en forme est coupé par Knuth-Plass quand optimalRagged est activé (la valeur par défaut) : aux espaces entre les mots, après un trait d’union dur entre deux lettres (meta- · analyses), comme le fait l’autre moteur, et, avec breakAfterDashes, après les tirets collés. Composé ligne par ligne, il passe par le moteur de coupure de pretext, qui diffère sur trois points : il peut aussi couper avant un tiret qui ferme une incise ou après un tiret qui l’ouvre (él · — y), après une barre oblique quand il applique la césure (km/ · h), et il coupe un mot plus large que la ligne à n’importe quel caractère sans trait d’union, là où l’autre moteur le coupe d’abord à une syllabe.

Dans le Sandbox, l’option s’appelle Césure du texte en drapeau ; elle se trouve sous l’alignement des paragraphes de la section Texte courant, avec la zone en dessous. Quand le texte courant est justifié, la même option se trouve avec les réglages de justification, pour les styles de paragraphe et les encadrés en drapeau.

#Langue du document

La locale de premier niveau est la langue du document dans son ensemble. Elle prend les mêmes valeurs que hyphenation.locale et sert de valeur de repli quand ce champ n’est pas défini : un livre espagnol n’a besoin que de locale: 'es' pour recevoir une césure espagnole. Elle choisit aussi la langue des chaînes de continuation intégrées des tableaux et des encadrés coupés ((cont.) / Continued contre Continúa, voir Tableaux plus hauts que la page et Marques sur un encadré coupé) et des numéros de titre écrits en toutes lettres (Chapter One contre Capítulo uno, voir Numéros en toutes lettres), et c’est la langue balisée dans un PDF accessible. Non définie, le moteur suppose 'en-us' ; le Sandbox se replie sur la langue de l’interface et règle le champ sous Maquette › Système d’écriture.

Elle choisit aussi les types de ressources intégrés. Quand resourceTypes n’est pas défini, buildDocument numérote et légende avec defaultResourceTypes(locale) : locale: 'de' seul donne Abbildung 1.1 et Tabelle 1.1. Quand locale n’est pas définie, la langue de césure la remplace, pour les types de ressources comme pour les chaînes des tableaux. Une liste resourceTypes explicite l’emporte toujours. Les versions antérieures utilisaient les types anglais quelle que soit la locale, sauf si vous passiez vous-même defaultResourceTypes(locale) ; un document qui définit locale et veut garder les étiquettes anglaises passe resourceTypes: defaultResourceTypes('en'). Les livres du Sandbox et les paquets portent leur propre liste : ils ne sont pas concernés.

Toute étiquette BCP 47 fonctionne ici comme dans hyphenation.locale : 'de-AT' reçoit les chaînes allemandes. Les chaînes intégrées existent dans les huit langues que la césure prend en charge, en chinois (en caractères simplifiés et en caractères traditionnels), en japonais et en arabe ; toute autre langue reçoit les chaînes anglaises.

Le chinois accepte zh, zh-Hans, zh-Hant, zh-CN, zh-SG, zh-TW, zh-HK, zh-MO et les formes longues (zh-Hant-TW), quelle que soit la casse et avec - ou _. Les chaînes suivent l’écriture, lue avec Intl.Locale(tag).maximize() : zh, zh-CN et zh-SG sont en caractères simplifiés, zh-TW, zh-HK et zh-MO en caractères traditionnels. Les valeurs typographiques par défaut qui dépendent de la langue suivent plutôt la région, comme le recommande clreq §1.2 : CN, SG et MY comptent comme la Chine continentale, TW comme Taïwan, HK et MO comme Hong Kong, et une étiquette sans région se règle sur son écriture (zh-Hant est Taïwan, zh et zh-Hans la Chine continentale). Le japonais accepte ja, ja-JP, ja-Jpan et toute autre étiquette ja (isJapaneseLanguage(tag)) ; depuis postext 1.16, il a ses propres chaînes et sa propre région, japan, dont les valeurs typographiques par défaut suivent la JLReq (voir Mise en page japonaise). Une table de chaînes sans entrée japonaise donne l’anglais, jamais le chinois. localeScript(tag), cjkRegionOf(tag), stringsKeyOf(tag) et sameContentLocale(a, b) donnent ces lectures, et DOCUMENT_LANGUAGES énumère les langues qui ont des chaînes intégrées, chacune nommée dans sa propre langue (日本語 entre les entrées chinoises et العربية), telles que les affiche le sélecteur Langue du document du Sandbox.

LangueFigure : nom, pluriel, étiquette courteTableau : nom, pluriel, étiquette courteContinuation de tableau : continuedSuffix, continuesMarker
Anglais (en)Figure, Figures, Fig.Table, Tables, Tab.(cont.), Continued
Espagnol (es)Figura, Figuras, Fig.Tabla, Tablas, Tabla(cont.), Continúa
Français (fr)Figure, Figures, Fig.Tableau, Tableaux, Tabl.(suite), À suivre
Allemand (de)Abbildung, Abbildungen, Abb.Tabelle, Tabellen, Tab.(Forts.), Wird fortgesetzt
Italien (it)Figura, Figure, Fig.Tabella, Tabelle, Tab.(segue), Continua
Portugais (pt)Figura, Figuras, Fig.Tabela, Tabelas, Tab.(cont.), Continua
Catalan (ca)Figura, Figures, Fig.Taula, Taules, Taula(cont.), Continua
Néerlandais (nl)Figuur, Figuren, Fig.Tabel, Tabellen, Tab.(vervolg), Wordt vervolgd
Chinois simplifié (zh-Hans, zh, zh-CN)图, 图, 图表, 表, 表(续), 接下页
Chinois traditionnel (zh-Hant, zh-TW, zh-HK)圖, 圖, 圖表, 表, 表(續), 接下頁
Japonais (ja, ja-JP)図, 図, 図表, 表, 表(続き), 次ページへ続く
Arabe (ar, ar-EG, ar-MA…)شكل, أشكال, شكلجدول, جداول, جدول(تابع), يتبع

Le préfixe de légende est le nom du type (Figure 1.1.). Les types chinois numérotent dans le chapitre avec un trait d’union, {h1}-{n} (图 1-1) ; avec les réglages de légende labelNumberGap: '' et labelSeparator: ' ', la légende se lit 图1-1 标题 (voir Style de légende). L’index suit lui aussi la langue : 见 et 另见 devant un renvoi, 符号 et 数字 au-dessus des symboles et des nombres en chinois simplifié ; 見, 另見, 符號 et 數字 en chinois traditionnel. Le japonais numérote ses types de la même façon et compose ses légendes 図1-1 題 sans ces deux réglages, écrit les renvois 第3章, 2.3節 et 12ページ, intitule la bibliographie 参考文献, et son index imprime 記号 et 数字 au-dessus des symboles et des nombres et écrit ses renvois avec une flèche, →夏目漱石 pour voir et →夏目漱石、森鷗外も見よ après les pages pour voir aussi, les étiquettes en romain. L’arabe numérote ses types de la même façon, {h1}-{n} (شكل 2-3), écrit les renvois الفصل 3, القسم 2-1 et ص 12, intitule la bibliographie المراجع, et son index imprime انظر / انظر أيضًا, رموز et أرقام, avec la virgule et le point-virgule arabes (، ؛).

Un document chinois, japonais ou coréen déclare sa langue dans la sortie HTML (lang sur la racine .pt-doc, zh-Hant-TW gardé entier) et sur le canvas qu’il peint (ctx.lang, dans Chrome 136 et ultérieur) : le navigateur dessine ainsi les formes de glyphes de la région. Unicode unifie les caractères han, et un même point de code n’a pas le même aspect dans une police taïwanaise et dans une police japonaise. Depuis postext 1.30, tous les autres documents le font aussi, dans la langue dans laquelle leur texte est mis en forme (bodyText.shapingLanguage: 'document', la valeur par défaut) ; avec 'host', les autres documents ne portent pas de lang, et chaque canvas peint dans la langue de la page qui l’héberge. Le PDF déclare /Lang d’après locale pour tout document, balisé ou non, avec son écriture et sa région. Un document dans une langue écrite de droite à gauche (arabe, persan, ourdou, hébreu…) déclare aussi sa langue : les formes propres à la langue de la police (locl) et la police de repli la suivent.

const config: PostextConfig = {
  locale: 'es',
  bodyText: { textAlign: 'justify', hyphenation: { enabled: true } }, // hyphenates in Spanish
};

#Chiffres du document

Le numerals de premier niveau règle les chiffres de chaque nombre que le moteur écrit : numéros de page et étiquettes de page de la table des matières, de l’index et des renvois de page ; numéros des listes ordonnées et des notes de bas de page ; compteurs de titres et de chapitres, {chapterNumber} ; le {h1} et le {n} d’un numéro de figure et d’un renvoi vers elle ; {totalPages}, {bookTotalPages} et {numberDecimal}. 'latn' écrit 0–9, 'arab' les chiffres arabes orientaux ٠–٩ et 'arabext' les chiffres persans ۰–۹. Seul le format décimal change (decimal, le arabic des listes, ou un réglage laissé à sa valeur par défaut) : un format que l’auteur nomme s’imprime tel qu’il est nommé. lower-roman reste i, ii, iii, et arabic-indic dans un document latin écrit toujours ١, ٢, ٣. Le texte du document n’est jamais réécrit.

La valeur par défaut, 'auto', prend les chiffres de locale (defaultNumeralsFor(tag)) : 'arab' pour l’arabe sans région ou avec toute région hors du Maghreb (ar, ar-EG, ar-SA, ar-AE…), 'latn' pour ar-MA, ar-DZ, ar-TN, ar-LY, ar-MR et ar-EH, 'arabext' pour le persan (fa), le pachto (ps) et l’ourdou de l’Inde (ur-IN), et 'latn' pour tout le reste, y compris l’ourdou du Pakistan. Le CLDR donne latn pour un ar seul et pour ar-AE ; les livres arabes du Machrek et du Golfe impriment ٠–٩, et c’est ce que suit Postext. Une étiquette qui nomme ses chiffres les garde : ar-MA-u-nu-arab. Une page numérotée avec les chiffres du document enregistre arabic-indic ou persian comme pageNumberFormat : les étiquettes de page du PDF montrent les mêmes chiffres. Une valeur inconnue suit la langue et est signalée comme unknownNumerals.

Les nombres que l’auteur saisit sont lus dans n’importe lequel des trois systèmes : un élément de liste ٣. commence à 3, et {startAt=٥}, :::numbering{startAt=٥}, :::space{lines=٢} et :::part{number="٣"} (pour {numberDecimal}) lisent la valeur.

const config: PostextConfig = { locale: 'ar' };                     // ١، ٢، ٣
const maghreb: PostextConfig = { locale: 'ar-MA' };                 // 1, 2, 3
const forced: PostextConfig = { locale: 'ar', numerals: 'latn' };   // 1, 2, 3

#Sens du texte

La direction de premier niveau règle le sens de base du document : 'ltr', 'rtl', ou 'auto' (la valeur par défaut), qui vaut 'rtl' quand l’écriture de locale s’écrit de droite à gauche (arabe, persan, ourdou, hébreu, syriaque, thâna, n’ko, adlam…, lu par directionOf(tag)) et 'ltr' sinon. Un document de droite à gauche est mis en page dans un cadre en miroir : ses lignes commencent à droite, sa première colonne est celle de droite, ses retraits, marques de liste, flottants, notes de bas de page et encadrés se placent à droite, et page.binding: 'auto' le relie à droite. La configuration résolue ne porte direction: 'rtl' que pour un tel document : un document de gauche à droite se résout comme avant. Une valeur inconnue est lue comme 'auto' et signalée comme unknownConfigValue. L’algorithme bidirectionnel Unicode (UAX #9) ordonne les passages de chaque ligne dans les deux sens : une citation arabe dans un livre anglais se lit de droite à gauche à sa place.

Dans le document, un titre ou un conteneur ::: prend {dir=ltr} ou {dir=rtl}, et les isolats en ligne :ltr[…] et :rtl[…] isolent un passage de texte (voir Le sens du texte dans le balisage) ; une ressource de tableau prend table.direction. Un bloc composé à contresens du document garde son propre côté de début : son retrait, ses marques de liste et l’extrémité de sa dernière ligne passent du côté où commence son texte.

Un réglage qui nomme un côté désigne un côté du texte ou du flux du texte courant, jamais de la feuille : une maquette conçue pour un livre anglais fonctionne quand le livre passe à l’arabe. 'start' et 'end' sont acceptés comme noms explicites :

Réglage'left' / 'right''start' / 'end'
textAlign du texte courant, des titres, des styles de paragraphe, des parties, des notes de bas de page et des corps d’encadrés ; align des légendes et des notes de légendeLes côtés du texte : 'left' est le côté où commence une ligne, la droite d’un paragraphe arabe, où va la dernière ligne d’un paragraphe justifié.Synonymes de 'left' et 'right'. Les configurations résolues portent 'left' / 'right' ; les configurations enregistrées gardent ce qui a été écrit.
align des cellules de tableauLes côtés du texte de la cellule, lus dans le sens du tableau (table.direction).Synonymes, lus dans le sens du tableau.
placement.align (flottants, figures étroites)Les côtés du flux du texte courant : dans un livre de droite à gauche, 'left' est la droite de la feuille.Synonymes.
stripe.side, icon.cornerSide, labelTab.position des encadrés ('top-start', 'top-end')Les côtés du flux du texte courant, les mêmes pour tous les encadrés de la page.Le sens propre de l’encadré (un :::callout{dir=ltr} dans un livre arabe commence à gauche de la feuille).
Emplacements d’en-tête et de pied de page ; éléments de maquette ancrés à la feuilleLes côtés de la feuille.Éléments de texte seulement : le début et la fin de la direction propre de l’élément.

placement.rotate garde son sens physique sur une page en miroir : une figure tournée dans le sens horaire est tournée dans le sens horaire sur la feuille. Un hôte qui lit la mise en page trouve le cadre en miroir sur chaque page (VDTPage.flow avec direction: 'rtl', pageIsMirrored(page)) et l’ordre visuel des segments de chaque ligne dans VDTLine.order ; flowToPage et pageToFlow font la correspondance entre le flux et la feuille. Voir Mise en page arabe.

const arabic: PostextConfig = { locale: 'ar' };                        // right to left, bound on the right
const english: PostextConfig = { locale: 'en', direction: 'rtl' };     // forced; rarely what you want

#Langues et écritures

Postext compose les écritures alphabétiques de gauche à droite, ainsi que le chinois et le japonais horizontalement et verticalement. Mise en page chinoise et Mise en page japonaise expliquent comment ils sont composés et quels réglages les contrôlent ; les clés se trouvent sous Typographie d’Asie de l’Est, Écriture verticale et Reliure. Ce que reçoit chaque écriture :

  • Le chinois est composé par le compositeur CJC quand un paragraphe contient plus de caractères CJC que d’espaces entre les mots : ses lignes se coupent entre les caractères selon les règles de début et de fin de ligne de cjk.lineBreak (aucune ligne ne commence par 。、」 ou ー, aucune ne se termine par 「 ou (), gardent entiers —— et ……, un nombre avec ses signes et un mot latin, et une ligne justifiée est étirée entre ses caractères jusqu’à la largeur de ligne. Les largeurs de ponctuation, la ponctuation suspendue, l’espace entre han et latin, la grille de caractères, les points d’emphase, les marques de nom propre et de titre d’ouvrage, les ruby et les notes warichu suivent la région de locale, à l’horizontale comme à la verticale (layout.writingMode: 'vertical-rl'). Un paragraphe latin qui cite quelques mots CJC garde la coupure optimale des lignes et peut couper à côté d’eux ; un crochet CJC, le point médian ou un signe pleine chasse cité dans un texte latin (〈h〉, %) ne change rien.
  • Le japonais passe par le même compositeur avec ses propres règles depuis postext 1.16, celles des Requirements for Japanese Text Layout du W3C (JLReq) et de la JIS X 4051 : une locale ja donne la région japan, dont les valeurs automatiques règlent les niveaux de kinsoku de la JLReq (les petits kana et ー n’ouvrent jamais une ligne), la ponctuation pleine chasse avec compression des paires, un cadratin après ?!, le crochet qui ouvre un paragraphe dans la seconde moitié du retrait, les points d’emphase en sésame au-dessus du texte, les titres d’ouvrage en 『』, les furigana espacés en 1:2:1, les compteurs japonais, les notes et un index trié par lecture. Les versions antérieures composaient le japonais avec les valeurs par défaut de la Chine continentale.
  • Le coréen passe par le même compositeur et est composé sans césure, mais avec les valeurs par défaut de la Chine continentale : ses propres règles (KLREQ) ne sont pas implémentées. Le texte coréen se coupe entre les syllabes ainsi qu’à ses espaces.
  • L’arabe et les autres écritures de droite à gauche (persan, ourdou, hébreu…) sont composés de droite à gauche : Mise en page arabe explique comment. La direction du document vient de l’écriture de locale, l’algorithme bidirectionnel Unicode ordonne les mots latins et les nombres à l’intérieur de chaque ligne, le livre est relié à droite avec sa première colonne à droite, et chaque nombre que le moteur écrit prend les chiffres de la région. Un mot qui contient une lettre d’écriture arabe n’est jamais coupé en fin de ligne, interlettré ni tronqué, et une ligne arabe justifiée est étirée à ses espaces et par des kachidas. Les signes vocaliques, l’emphase, les notes de bas de page et les chaînes de l’arabe se trouvent sous Texte arabe. Le persan, l’ourdou et l’hébreu reçoivent le sens, les chiffres et les règles des mots entiers, mais aucune chaîne intégrée qui leur soit propre.

Les motifs de césure sont fournis pour huit langues (en-us, es, fr, de, it, pt, ca, nl) ; les types de ressources intégrés et les chaînes de continuation existent dans ces huit langues, en chinois, en japonais et en arabe. Le chinois, le japonais, le coréen et les langues écrites de droite à gauche sont composés sans césure. Toute autre langue est coupée avec les motifs de l’anglais américain, avec un avertissement dans la console, et reçoit les chaînes anglaises. Pour un tel document, réglez hyphenation.enabled: false et passez resourceTypes et les chaînes de continuation de tableStyle dans sa langue.

#Texte arabe

Ces réglages servent le texte en écriture arabe ; aucun ne change un document écrit dans une autre écriture. Mise en page arabe les explique avec le reste d’un livre arabe : sens, reliure, chiffres, vers, table des matières et index.

  • Signes vocaliques et interlignage. Les signes vocaliques d’un texte vocalisé (fatḥa, kasra, chadda, tanwīn, l’alif suscrit, les signes coraniques) s’empilent au-dessus et au-dessous des lettres, dans l’interlignage, qui ne grandit jamais pour eux. Chaque ligne qui contient des signes enregistre jusqu’où va leur encre (VDTLine.markInk), et le détourage de colonne des moteurs de rendu englobe les signes des première et dernière lignes d’une colonne. Quand un signe au-dessus d’un mot rencontre les lettres ou les signes qui pendent sous le mot du dessus, la construction signale le paragraphe (arabicMarksExceedLeading, dans le panneau Vérifications du Sandbox). Seuls les mots placés l’un au-dessus de l’autre sont comparés. Un texte partiellement vocalisé demande environ 1,7–1,85 em de lineHeight, des vers entièrement vocalisés 1,9–2,1 em.
  • Emphase. Le caractère arabe n’a pas d’italique : dans un document dont la locale s’écrit en écriture arabe, *…* est composé en gras par défaut (bodyText.emphasis: 'auto'). 'color' le compose en romain dans la couleur italicColor, et 'overline' trace un filet au-dessus des mots, le khaṭṭ fawqī des livres arabes. Le réglage atteint tout texte composé dans les caractères du texte courant : paragraphes, listes, citations, styles de paragraphe, corps d’encadrés, notes et titres. Les légendes, les cellules de tableau, la table des matières et l’index gardent leurs propres réglages d’italique. Quel que soit le choix, le moteur n’incline jamais les lettres arabes : les mots arabes d’un passage composé en italique restent droits et ses mots latins gardent leur italique. Une citation est en romain par défaut dans un tel document.
  • Tashkīl. bodyText.tashkil: 'strip' retire les signes vocaliques et coraniques du texte que compose la mise en page, pour une édition non vocalisée tirée d’une source vocalisée : fatḥa, ḍamma, kasra et leurs tanwīn, sukūn, chadda, l’alif suscrit (هٰذا devient هذا) et les signes U+0656–U+065F et U+06D6–U+06ED. 'strip-vowels' garde la chadda, comme l’impriment la plupart des livres modernes. La hamza et la madda restent (أ إ آ sont des lettres, y compris quand elles sont saisies avec des signes combinants). La source garde ses signes ; les lignes, les titres et la table des matières sont composés sans eux, et chaque caractère composé renvoie toujours à sa place dans la source.
  • Notes de bas de page. footnotes.markerTemplate: '({n})' écrit les appels « (١) » dans les chiffres du document, numbering: 'page' les fait repartir à chaque page, et noteNumberPosition: 'inline' place le numéro de la note sur la ligne. Le filet de séparation et les numéros des notes se placent au début de la colonne, à droite dans un livre de droite à gauche.
  • Mots entiers. Un mot qui contient une lettre d’écriture arabe n’est jamais coupé en fin de ligne, tronqué ni interlettré, dans un livre arabe comme cité dans un autre. Un style qui applique un letterSpacing à du texte arabe est signalé (joiningScriptLetterSpacing), et un mot plus large que sa ligne en déborde et est signalé (unbreakableWordOverflow). Voir Mise en page arabe.
  • Kachida et vers. Une ligne arabe justifiée est étirée par des kachidas en plus de ses espaces (bodyText.kashida, voir La kachida dans le texte arabe), et un poème classique est composé à raison d’un bayt par ligne, en deux hémistiches de même largeur, avec :::verse (voir :::verse).
  • Index. Un index en arabe trie dans l’ordre alphabétique et ignore l’article ال (index.ignoreArticle), les signes vocaliques et les supports de la hamza ; voir Index.