{"id":3388,"date":"2013-03-15T16:45:36","date_gmt":"2013-03-15T15:45:36","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=3388"},"modified":"2013-03-16T15:03:05","modified_gmt":"2013-03-16T14:03:05","slug":"controles-fin-des-cesures-css4-text","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/css-css3\/controles-fin-des-cesures-css4-text","title":{"rendered":"Un contr\u00f4le plus fin des c\u00e9sures avec CSS4 Text"},"content":{"rendered":"<p>On va parler un peu mise en page et typographie aujourd&rsquo;hui, avec une traduction de l&rsquo;<a href=\"http:\/\/generatedcontent.org\/post\/44751461516\/finer-grained-control-of-hyphenation-with-css4-text\" hreflang=\"en\">article de David Storey (en)<\/a> sur le contr\u00f4le des c\u00e9sures gr\u00e2ce aux apports de CSS level 4. Rien de compl\u00e8tement utilisable encore, mais l&rsquo;article me semblait suffisamment int\u00e9ressant.<!--more--><\/p>\n<h2><abbr title=\"Note du Traducteur\">NdT<\/abbr><\/h2>\n<p>Pour ceux qui se demandent encore \u00e0 quoi correspondent les c\u00e9sures, rendez-vous sur <a href=\"http:\/\/typographisme.net\/post\/De-la-cesure-et-du-Web\">cet article de typographisme<\/a>.<br \/>\nIl est important de noter que l&rsquo;article a pu \u00eatre l\u00e9g\u00e8rement adapt\u00e9 pour une meilleure compr\u00e9hension de certains passages, mais \u00e9galement que je ne suis pas expert en r\u00e8gles typographiques, n&rsquo;h\u00e9sitez donc pas \u00e0 apporter des corrections sur les termes techniques si vous les connaissez. Merci&nbsp;!<\/p>\n<p>Les expressions suivantes reprennent celles de l&rsquo;auteur, ainsi lorsque des pronoms possessifs apparaissent, il s&rsquo;agit bien du travail de l&rsquo;auteur, non du mien.<\/p>\n<hr>\n<p>CSS3 Text offre la possibilit\u00e9 de mettre en place une c\u00e9sure du texte par le biais de la propri\u00e9t\u00e9 <code>hyphens<\/code>. Bien nous en fasse, il ne fournit pas le contr\u00f4le suffisamment fin dont vous auriez besoin pour obtenir des r\u00e9sultats professionnels. Pour cela, laissez-moi vous pr\u00e9senter CSS4 Text.<\/p>\n<h2>Application classique de la c\u00e9sure<\/h2>\n<p>Beaucoup d&rsquo;entre vous \u00eates probablement inform\u00e9s de l&rsquo;utilit\u00e9 de la propri\u00e9t\u00e9 <code>hyphens<\/code>. Il a longtemps \u00e9t\u00e9 consid\u00e9r\u00e9e comme une mauvaise pratique le fait de justifier (<code>text-align: justify<\/code>) du texte sur le Web \u00e0 cause des <a href=\"http:\/\/fr.wikipedia.org\/wiki\/L%C3%A9zarde_%28imprimerie%29\">l\u00e9zardes<\/a> qu&rsquo;elle a tendance \u00e0 laisser entre les mots. La c\u00e9sure r\u00e9sout en grande partie ce probl\u00e8me, ou le r\u00e9duit tout du moins. Elle est \u00e9galement facile \u00e0 appliquer&nbsp;:<\/p>\n<pre class=\"code\"><code class=\"css boc-nogutter boc-nocontrols\">p {\r\n   text-align: justify;\r\n\t\t\t\r\n   -webkit-hyphens: auto;\r\n   -moz-hyphens: auto;\r\n   -ms-hyphens: auto;\r\n   hyphens: auto;\r\n}<\/code><\/pre>\n<p>Aussi, n&rsquo;oubliez pas de choisir la langue (en utilisant l&rsquo;attribut <code>lang<\/code> ou <code>xml:lang<\/code>) de sorte que le navigateur sache quelles sont les r\u00e8gles de c\u00e9sure \u00e0 utiliser.<\/p>\n<p>Vous pouvez \u00e9galement utiliser la \u00ab\u00a0m\u00e9thode manuelle\u00a0\u00bb, qui s\u00e9parera un mot uniquement lorsque vous le pr\u00e9ciserez en utilisant le trait d&rsquo;union doux (<code>&amp;shy;<\/code>) ou un tiret normal <em >(\u00ab\u00a0tiret du 6\u00a0\u00bb)<\/em>.<\/p>\n<p>Le support navigateurs est mitig\u00e9&nbsp;: Firefox, Internet Explorer 10, et Safari comprennent la c\u00e9sure, tandis que Chrome et Opera ne la supporte pas. Un point de plus pour les diff\u00e9rences entre les navigateurs WebKit.<\/p>\n<h2>Les probl\u00e8mes avec la c\u00e9sure<\/h2>\n<p>Alors que la c\u00e9sure r\u00e9duit les l\u00e9zardes qui traversent votre texte, elles conduisent \u00e0 une autre probl\u00e9matique. Celle des \u00e9chelles. En typographie, les \u00e9chelles surgissent quand plus de deux tirets de fin de ligne apparaissent sur des lignes successives. Cela devient visuellement g\u00eanant, et rend le texte plus difficile \u00e0 lire. C&rsquo;est particuli\u00e8rement le cas lors de l&rsquo;utilisation de courtes longueurs de ligne, par exemple avec une mise en page en multi-colonnes.<\/p>\n<h2>Un plus fort contr\u00f4le avec CSS4 Text<\/h2>\n<p>Le <a href=\"http:\/\/dev.w3.org\/csswg\/css4-text\/\">cahier des charges de CSS4 Text<\/a> (attention, travaux en cours) fournit un certain nombre de fa\u00e7ons dont vous pouvez optimiser l&rsquo;application des c\u00e9sures. Bien qu&rsquo;elles ne remplacent pas la cr\u00e9ation \u00ab\u00a0manuelle\u00a0\u00bb des c\u00e9sure dans votre texte, elle vous donne un contr\u00f4le beaucoup plus fin, et peut am\u00e9liorer la lisibilit\u00e9 de votre texte justifi\u00e9 et c\u00e9sur\u00e9.<\/p>\n<h2>Limiter le nombre de c\u00e9sures dans une ligne avec <code>hyphenate-limit-lines<\/code><\/h2>\n<p>La propri\u00e9t\u00e9 <code>hyphenate-limit-lines<\/code> vous permet de sp\u00e9cifier le nombre maximal de lignes dans une rang\u00e9e pour qu&rsquo;un mot puisse subir une c\u00e9sure. La r\u00e8gle g\u00e9n\u00e9rale accepterait deux lignes cons\u00e9cutives maximum, en th\u00e9orie&nbsp;:<\/p>\n<pre class=\"code\"><code class=\"css boc-nogutter boc-nocontrols\">hyphenate-limit-lines: 2;<\/code><\/pre>\n<p class=\"message note\">Cette propri\u00e9t\u00e9 est actuellement prise en charge par IE10 et Safari, utilisez les pr\u00e9fixes <code>-ms-<\/code> et <code>-webkit-<\/code> respectivement.<\/p>\n<p>Vous pouvez consulter <a href=\"https:\/\/dl.dropbox.com\/u\/444684\/css4text\/hyphenate-limit-lines.html\">ma d\u00e9mo de <code>hyphenate-limit-lines<\/code><\/a> pour le voir en action. Vous aurez besoin d&rsquo;utiliser l&rsquo;un des navigateurs mentionn\u00e9s ci-dessus pour voir la diff\u00e9rence entre les deux blocs de texte. Si vous ne voyez pas trois ou plusieurs traits d&rsquo;union dans une rang\u00e9e pour le premier exemple, vous pouvez redimensionner la largeur de la fen\u00eatre du navigateur. Vous devriez voir que le second exemple n&rsquo;a jamais plus de deux traits d&rsquo;union dans une rang\u00e9e.<\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-ladder.jpg\" alt=\"Une \u00e9chelle provoqu\u00e9e par des tirets\" width=\"500\" height=\"252\" class=\"aligncenter size-full wp-image-3392\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-ladder.jpg 500w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-ladder-300x151.jpg 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<h2>Limitation de la longueur des mots et du nombre de caract\u00e8res avant et apr\u00e8s le tiret.<\/h2>\n<p>En g\u00e9n\u00e9ral, vous ne voulez pas que des mots trop courts soient c\u00e9sur\u00e9s car ils deviennent plus difficiles \u00e0 lire. De m\u00eame, souvent, vous ne souhaitez pas que trop peu de caract\u00e8res soient laiss\u00e9s sur une ligne avant la c\u00e9sure, ou que trop peu soient pouss\u00e9s \u00e0 la ligne suivante apr\u00e8s le tiret. Je ne pense pas qu&rsquo;il y est une r\u00e8gle strict pour les limites id\u00e9ales, c&rsquo;est davantage bas\u00e9 sur ce qui semble \u00eatre le mieux pour votre contenu. J&rsquo;ai vu une recommandation d&rsquo;une limite \u00e0 six caract\u00e8res de texte, avec trois caract\u00e8res minimum avant la pause, et deux apr\u00e8s. J&rsquo;ai vu de bons r\u00e9sultats avec cela, mais votre mesure peut varier.<\/p>\n<p>Vous pouvez d\u00e9finir ces limites avec la propri\u00e9t\u00e9 <code>hyphenate-limit-chars<\/code>. Elle accepte trois valeurs s\u00e9par\u00e9es par des espaces. Si toutes sont r\u00e9gl\u00e9es, la premi\u00e8re correspond \u00e0 la limite minimale des caract\u00e8res que le mot doit avoir avant c\u00e9sure, la seconde est le nombre de caract\u00e8res minimal avant le tiret, et la derni\u00e8re correspond aux caract\u00e8res minimum apr\u00e8s le tiret. Si la derni\u00e8re valeur est manquante, elle est r\u00e9gl\u00e9e sur la m\u00eame que la seconde. Si une seule valeur est fournie, les deux derni\u00e8res sont mises \u00e0 <code>auto<\/code>. Si le mot-cl\u00e9 <code>auto<\/code> est utilis\u00e9 (ou implicite), le moteur du navigateur choisit le meilleur ajustement bas\u00e9 sur le mod\u00e8le courant. (d\u00e9pend de la langue)<\/p>\n<p>L&rsquo;exemple suivant d\u00e9finit une limite \u00e0 six caract\u00e8res de texte, avec trois caract\u00e8res avant le tiret et deux apr\u00e8s&nbsp;: <\/p>\n<pre class=\"code\"><code class=\"css boc-nogutter boc-nocontrols\">hyphenate-limit-chars: 6 3 2;<\/code><\/pre>\n<p class=\"message note\">La prise en charge est actuellement limit\u00e9e \u00e0 IE10 avec le pr\u00e9fixe <code>-ms-<\/code><\/p>\n<p>Vous pouvez le voir en action dans IE10 dans <a href=\"https:\/\/dl.dropbox.com\/u\/444684\/css4text\/hyphenate-limit-chars.html\">ma d\u00e9mo <code>hyphenate-limit-chars<\/code><\/a>. Encore une fois, redimensionnez la largeur de la fen\u00eatre pour voir les diff\u00e9rents comportements. J&rsquo;ai soulign\u00e9 manuellement dans le second exemple les mots qui peuvent potentiellement subir une c\u00e9sure (six caract\u00e8res ou plus). Ils ne seront pas toujours c\u00e9sur\u00e9s, comme elle ne peut s&rsquo;appliquer que dans le cas qui vous laissera suffisamment de caract\u00e8res avant ou apr\u00e8s le tiret.<\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-car-limit.png\" alt=\"\" width=\"500\" height=\"299\" class=\"aligncenter size-full wp-image-3395\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-car-limit.png 500w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-car-limit-300x179.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<h2>R\u00e9glage de la zone de c\u00e9sure<\/h2>\n<p>Lors de l&rsquo;utilisation de la c\u00e9sure, il y a une zone sp\u00e9cifique, \u00e0 la fin d&rsquo;une ligne, dans laquelle un mot \u00e0 besoin de tomber avant qu&rsquo;il soit consid\u00e9r\u00e9 par la c\u00e9sure. Avec la propri\u00e9t\u00e9 <code>hyphenate-limit-zone<\/code>, vous pouvez sp\u00e9cifier manuellement la largeur de cette zone.<\/p>\n<p>Pour qu&rsquo;un mot soit consid\u00e9r\u00e9 comme tombant, ou non, dans la limite, il faut l&rsquo;imaginer avant la c\u00e9sure (ex: comme si <code>text-align:left<\/code> est appliqu\u00e9 lorsque vous utilisez une langue qui se lit de gauche \u00e0 droite). Si un mot tombe dans la zone de c\u00e9sure, aucune c\u00e9sure ne sera appliqu\u00e9e. Par contre si le dernier mot de la ligne tombe en dehors de la zone, s&rsquo;il d\u00e9passe, le mot est coup\u00e9 et port\u00e9 \u00e0 la ligne suivant, et la ligne actuelle se munie d&rsquo;un trait d&rsquo;union (sauf si d&rsquo;autres limites de c\u00e9sure emp\u00eachent de le faire).<\/p>\n<p>La zone de c\u00e9sure est sp\u00e9cifi\u00e9e en utilisant une valeur de longueur ou un pourcentage. Dans l&rsquo;exemple suivant, il est mis \u00e0 40px&nbsp;:<\/p>\n<pre class=\"code\"><code class=\"css boc-nogutter boc-nocontrols\">hyphenate-limit-zone: 40px;<\/code><\/pre>\n<p class=\"message note\">La prise en charge est actuellement limit\u00e9e \u00e0 IE10<\/code><\/p>\n<p>Ouvrez la <a href=\"https:\/\/dl.dropbox.com\/u\/444684\/css4text\/hyphenate-limit-zone.html\">d\u00e9mo de hyphenate-limit-zone<\/a> dans ce navigateur pour le voir en action. J&rsquo;ai mis en \u00e9vidence l&#8217;emplacement de la zone dans chaque exemple. Dans les premier, troisi\u00e8me et cinqui\u00e8me exemples aucune zone de coupure n&rsquo;est r\u00e9gl\u00e9e, mais il est clairement montr\u00e9 quels mots tombent dans ou en dehors de la zone avant que la justification et la c\u00e9sure ne soient appliqu\u00e9es.<\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-limit-zone.png\" alt=\"\" width=\"500\" height=\"425\" class=\"aligncenter size-full wp-image-3397\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-limit-zone.png 500w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2013\/03\/hyphen-limit-zone-300x255.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<h2>D&rsquo;autres fonctionnalit\u00e9s non support\u00e9es<\/h2>\n<p>Il y a deux propri\u00e9t\u00e9s suppl\u00e9mentaires qui ne sont prises en charge dans aucun des navigateurs actuels.<\/p>\n<p>Le premier est <code>hyphenate-character<\/code>. Cette propri\u00e9t\u00e9 accepte une cha\u00eene qui sp\u00e9cifie le caract\u00e8re utilis\u00e9 pour couper les mots. Par exemple, le trait d&rsquo;union r\u00e9gulier (qui est la valeur par d\u00e9faut et n&rsquo;a donc pas besoin d&rsquo;\u00eatre pr\u00e9cis\u00e9) peut \u00eatre r\u00e9gl\u00e9e \u00e0 l&rsquo;aide de&nbsp;:<\/p>\n<pre class=\"code\"><code class=\"css boc-nogutter boc-nocontrols\">hyphenate-character: \"\\2010\";<\/code><\/pre>\n<p>Je ne sais pas pourquoi vous voudriez pr\u00e9ciser un autre caract\u00e8re \u00e0 utiliser que celui par d\u00e9faut pour la langue en question, mais j&rsquo;imagine qu&rsquo;il doit y avoir des cas d&rsquo;utilisation si vous \u00eates cr\u00e9atif.<\/p>\n<p>L&rsquo;autre propri\u00e9t\u00e9 non prise en charge est <code>hyphenate-limit-last<\/code>. Elle indique si la c\u00e9sure est appliqu\u00e9e sur la derni\u00e8re ligne d&rsquo;un \u00e9l\u00e9ment, d&rsquo;une colonne, d&rsquo;une page ou d&rsquo;une propagation. Le mot-cl\u00e9 <code>none<\/code> n&rsquo;applique aucune restriction, le mot-cl\u00e9 <code>always<\/code> n&rsquo;applique pas de c\u00e9sure sur la derni\u00e8re ligne de tous les cas mentionn\u00e9s ci-dessus. Le mot-cl\u00e9 <code>spread<\/code> n&rsquo;applique pas de c\u00e9sure \u00e0 la derni\u00e8re ligne avant une propagation, <code>page<\/code> la restreint aux propagations et aux sauts de page, tandis que le mot-cl\u00e9 <code>column<\/code> ajoute encore \u00e0 la restriction les sauts de colonne.<\/p>\n<pre class=\"code\"><code class=\"css boc-nogutter boc-nocontrols\">hyphenate-limit-last: column;<\/code><\/pre>\n<h2>Mettez tout ensemble<\/h2>\n<p>Bien que chacun des exemples ci-dessus n&rsquo;utilisait que l&rsquo;une des propri\u00e9t\u00e9s <code>hyphenate-limit-*<\/code>, elles peuvent \u00eatre combin\u00e9es pour appliquer un plus grand contr\u00f4le. \u00c0 moins d&rsquo;\u00eatre un expert des c\u00e9sures (que je ne suis pas), vous pouvez obtenir de meilleurs r\u00e9sultats en jouant avec les diff\u00e9rentes propri\u00e9t\u00e9s pour que cela convienne \u00e0 votre propre contenu. Diff\u00e9rents styles tels que la longueur des lignes, la justification, les colonnes, l&rsquo;espacement entre les mots, espacement entre les lettres, la taille du texte, etc. peuvent avoir une influence sur la fa\u00e7on dont le texte va \u00eatre c\u00e9sur\u00e9. Rappelez-vous juste de ne pas abuser avec les restrictions de c\u00e9sure, ou vous allez vous retrouver avec le m\u00eame probl\u00e8me qu&rsquo;initialement lorsque vous vouliez \u00e9viter la c\u00e9sure&nbsp;: de grandes l\u00e9zardes d&rsquo;espaces blancs entre les mots.<\/p>\n<div class=\"sources\">\n<h2>Sources et liens utiles<\/h2>\n<ul>\n<li><a href=\"http:\/\/dev.w3.org\/csswg\/css4-text\/\">CSS4 Text &#8211; W3C<\/a><\/li>\n<li><a href=\"http:\/\/generatedcontent.org\/post\/44751461516\/finer-grained-control-of-hyphenation-with-css4-text\">L&rsquo;article original par David Storey<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>On va parler un peu mise en page et typographie aujourd&rsquo;hui, avec une traduction de l&rsquo;article de David Storey (en) sur le contr\u00f4le des c\u00e9sures gr\u00e2ce aux apports de CSS level 4. Rien de compl\u00e8tement utilisable encore, mais l&rsquo;article me semblait suffisamment int\u00e9ressant.<\/p>\n","protected":false},"author":4,"featured_media":3409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[17],"tags":[544,523,81],"coauthors":[],"class_list":["post-3388","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-css3","tag-cesure","tag-css4","tag-typographie"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/3388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=3388"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/3388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/3409"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=3388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=3388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=3388"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=3388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}