Tout ce que vous devez savoir sur la césure automatique CSS



Récemment, j'ai été invité à donner une conférence en soirée à l' imprimerie d'Autriche . Ce fut un grand honneur pour moi de suivre les traces de sommités telles que Matthew Carter, Wim Crowell, Margaret Calvert, Eric Shpikerman et feu Freda Sack.

J'ai parlé de certaines des règles d'or de la typographie sur Internet, puis pendant la section QA, on m'a interrogé sur la situation actuelle des tirets automatiques sur le Web. C'est une bonne question, d'autant plus que la langue allemande est célèbre pour ses noms longs fréquemment utilisés (par exemple, Verbesserungsvorschlag signifie "suggestion d'amélioration"), donc la césure est largement utilisée dans la plupart des supports écrits.

La césure automatique est apparue sur le Web en 2011 et est désormais largement prise en charge . Safari, Firefox et Internet Explorer 9 les prennent en charge sur toutes les plates-formes et Chrome sur Android et MacOS ( pas encore sur Windows ou Linux ).

Comment activer les transferts automatiques


Les transferts automatiques commencent en deux étapes. La première consiste à définir la langue du texte. Cela indique au navigateur le dictionnaire à utiliser. La césure correcte nécessite un dictionnaire de césure qui correspond à la langue du texte. Si le navigateur ne connaît pas la langue du texte, les recommandations CSS vous disent de ne pas activer les tirets, même s'ils sont inclus dans la feuille de style.

Les transferts sont un sujet complexe. Les points de transfert sont généralement basés sur des syllabes qui utilisent une combinaison d'étymologie et de phonologie, mais il existe d'autres règles pour diviser les mots.

1. Réglage de la langue


La langue de la page Web est définie à l'aide de l'attribut HTML lang :

 <html lang="en"> 

C'est le meilleur moyen de définir la langue de toutes les pages Web, que les tirets y soient inclus ou non. L'installation d'une langue aidera les outils de traduction automatique, les lecteurs d'écran et d'autres programmes de support.

L'attribut lang="en" applique la balise de langue ISO , indiquant au navigateur que le texte est en anglais. Dans ce cas, le navigateur sélectionne le dictionnaire de césure anglais par défaut, qui correspond généralement à la césure en anglais américain. Bien que l'anglais américain et l'anglais britannique diffèrent sensiblement dans l'orthographe et la prononciation (et donc la césure), la différence n'est pas aussi importante qu'entre les variantes portugaises. Le problème est résolu en ajoutant une "région" afin que le navigateur sache quelle version de l'anglais est la plus appropriée en tant que dictionnaire de césure. Par exemple, pour spécifier le portugais brésilien ou l'anglais britannique:

 <html lang="pt-BR"> <html lang="en-GB"> 

2. Activation de la césure


Après avoir installé la langue, vous pouvez activer la césure automatique dans CSS. C'est extrêmement simple:

 hyphens: auto; 

Safari et IE / Edge nécessitent actuellement des préfixes, vous devez donc écrire ceci dès maintenant:

 -ms-hyphens: auto; -webkit-hyphens: auto; hyphens: auto; 

Gestion de la césure


Mais il ne suffit pas d'inclure la fonction dans CSS. Les spécifications CSS Text Module Level 4 ont désormais la possibilité de contrôler les tirets, comme dans les programmes de composition (par exemple InDesign) et certains éditeurs de texte (y compris Word). Ces commandes vous permettent de définir le nombre de tirets dans le texte de différentes manières.

Limitez la longueur des mots et le nombre de caractères avant et après la césure


Si vous portez des mots courts, ils sont plus difficiles à lire. De même, vous ne voulez pas arracher un petit morceau du mot. Une règle générale généralement acceptée consiste à ne porter que des mots d'une longueur d'au moins six lettres, en laissant au moins trois caractères avant la césure et au moins deux sur la ligne suivante.

Le Oxford Style Guide recommande un minimum de trois lettres après la césure, bien que de rares exceptions soient acceptables.

Ces restrictions sont définies à l'aide de la propriété hyphenate-limit-chars . Il prend trois valeurs, séparées par des espaces. Il s'agit de la limite minimale de caractères pour le mot entier, le nombre minimal de caractères avant et après la césure. Pour respecter la règle empirique ci-dessus, indiquez respectivement 6, 3 et 2:

 hyphenate-limit-chars: 6 3 2; 


hyphenate-limit-chars en action

Par défaut, les trois paramètres sont définis sur auto . Cela signifie que le navigateur sélectionnera les meilleurs paramètres en fonction de la langue et de la mise en page actuelles. CSS Text Module Level 4 suppose d'utiliser 5 2 2 comme point de départ (à mon avis, cela conduit à une césure inutile), mais les navigateurs peuvent modifier les paramètres comme ils le souhaitent.

Actuellement, cette propriété prend uniquement en charge IE / Edge (avec un préfixe), et Safari limite le nombre de caractères via une propriété obsolète de la version précédente du module de texte CSS3. Cela signifie que vous pouvez obtenir le même effet dans Edge et Safari (avec une planification avancée pour Firefox) avec ce code:

 /* legacy properties */ -webkit-hyphenate-limit-before: 3; -webkit-hyphenate-limit-after: 2; /* current proposal */ -moz-hyphenate-limit-chars: 6 3 2; /* not yet supported */ -webkit-hyphenate-limit-chars: 6 3 2; /* not yet supported */ -ms-hyphenate-limit-chars: 6 3 2; hyphenate-limit-chars: 6 3 2; 

Limite de césure consécutive


Pour des raisons esthétiques, vous pouvez limiter le nombre de lignes consécutives avec des tirets. Les traits d'union successifs (trois ou plus) sont appelés avec dérogation l' échelle . La règle générale pour la langue anglaise est que deux lignes consécutives sont un maximum idéal (bien que des escaliers plus longs en allemand). Par défaut, CSS ne limite pas le nombre de tirets consécutifs, mais vous pouvez définir le nombre maximal de tirets dans la propriété hyphenate-limit-lines . Actuellement, cela n'est pris en charge que par IE / Edge et Safari (avec des préfixes).

 -ms-hyphenate-limit-lines: 2; -webkit-hyphenate-limit-lines: 2; hyphenate-limit-lines: 2; 


La propriété hyphenate-limit-lines empêche une échelle

Vous pouvez supprimer la restriction en utilisant no-limit .

Interdiction de la césure dans la dernière ligne d'un paragraphe


Par défaut, le navigateur transfère calmement le dernier mot du paragraphe, de sorte que la fin du mot se trouve sur la dernière ligne, comme un orphelin solitaire. Souvent, un grand espace à la fin de l'avant-dernière ligne est préférable à un demi-mot dans la dernière ligne. Ceci est défini par la propriété hyphenate-limit-last avec une valeur de always .

 hyphenate-limit-last: always; 

Actuellement, la propriété n'est prise en charge que dans IE / Edge (préfixé).

Réduisez les tirets en définissant une zone de transfert


Par défaut, le transfert a lieu aussi souvent que possible, dans les limites des valeurs établies pour les hyphenate-limit-chars de hyphenate-limit-chars d' hyphenate-limit-chars et les hyphenate-limit-lines . Mais même avec ces restrictions, les paragraphes peuvent être saturés de traits d'union.

Considérons un paragraphe aligné à gauche. Le bord droit est inégal, ce qui est partiellement corrigé par les transferts. Par défaut, tous les mots autorisés à être encapsulés seront encapsulés, ce qui garantit un alignement maximal du bord droit. Si vous êtes prêt à accepter un léger désalignement, vous pouvez réduire le nombre de tirets.

Pour ce faire, spécifiez le nombre maximal d'espaces autorisé entre le dernier mot de la ligne et le bord du champ de texte. Si un nouveau mot commence dans cet espace, il n'est pas transféré. Cet espace est connu comme la zone de transfert . Plus la zone de transfert est grande, plus les inégalités sont importantes et moins les transferts sont importants. En ajustant la zone, vous recherchez le rapport optimal entre le nombre de tirets et le remplissage de la ligne.


Gauche: les flèches indiquent les lignes où la césure est autorisée. À droite: transfert avec une zone de transfert définie.

Pour ce faire, utilisez la propriété hyphenation-limit-zone , qui indique la taille en pixels ou en pourcentage (par rapport à la largeur du champ de texte). Dans le contexte de la conception adaptative, il est logique de définir la zone de transfert en pourcentage. Cela signifie que la zone de transfert deviendra plus petite sur des écrans plus petits, ce qui entraînera plus de césure et moins de lignes vides. Inversement, sur des écrans plus larges, la zone de transfert s'étendra, par conséquent, il y aura moins de traits d'union et plus de lignes pendantes qui ne sont pas si critiques sur les écrans larges. Sur la base des valeurs typiques des programmes de mise en page, vous pouvez commencer avec 8%.

 hyphenate-limit-zone: 8% 

Actuellement uniquement pris en charge dans IE / Edge (préfixé).

Tous ensemble


En utilisant les propriétés du module de texte CSS niveau 4, définissez le paragraphe sur les mêmes paramètres de contrôle de césure que dans les programmes de composition standard:

 p { hyphens: auto; hyphenate-limit-chars: 6 3 3; hyphenate-limit-lines: 2; hyphenate-limit-last: always; hyphenate-limit-zone: 8%; } 

Avec les préfixes et les annulations appropriés, le code ressemble à ceci:

 p { -webkit-hyphens: auto; -webkit-hyphenate-limit-before: 3; -webkit-hyphenate-limit-after: 3; -webkit-hyphenate-limit-chars: 6 3 3; -webkit-hyphenate-limit-lines: 2; -webkit-hyphenate-limit-last: always; -webkit-hyphenate-limit-zone: 8%; -moz-hyphens: auto; -moz-hyphenate-limit-chars: 6 3 3; -moz-hyphenate-limit-lines: 2; -moz-hyphenate-limit-last: always; -moz-hyphenate-limit-zone: 8%; -ms-hyphens: auto; -ms-hyphenate-limit-chars: 6 3 3; -ms-hyphenate-limit-lines: 2; -ms-hyphenate-limit-last: always; -ms-hyphenate-limit-zone: 8%; hyphens: auto; hyphenate-limit-chars: 6 3 3; hyphenate-limit-lines: 2; hyphenate-limit-last: always; hyphenate-limit-zone: 8%; } 

Le transfert est l'exemple parfait d'une amélioration progressive. Ces propriétés peuvent être activées maintenant si vous pensez que les lecteurs en bénéficieront. La prise en charge du navigateur augmentera progressivement. Si vous développez un site dans une langue avec des mots longs, comme l'allemand, les lecteurs seront certainement reconnaissants.

Source: https://habr.com/ru/post/fr445166/


All Articles