Hanging-punctuation - Propriété CSS

hanging-punctuation

Résumé des caractéristiques de la propriété hanging-punctuation

Description rapide
Définit la ponctuation suspendue (caractères autorisés à déborder dans la marge).
Statut
Problèmes de compatibilité
S'applique à
Éléments contenant du texte.
Utilisable sur
HTML
Valeurs prédéfinies
none | allow-end | first | force-end | last
Pourcentages
Ne s'appliquent pas.
Valeur initiale
none
Héritée par défaut
Oui.
Type d'animation
Discrète : lors d'une animation, la propriété hanging-punctuation passe d'une valeur à l'autre sans transition.
Module W3C
Module CSS - Texte
Références (W3C)
 🡇  
 🡅  
Statut du document: WD (document de travail)

Statut du document: CR (document candidat à la recommandation)

Schéma syntaxique de hanging-punctuation.

Hanging-punctuation property - Syntax diagramSyntax diagram of the hanging-punctuation CSS property. See stylescss.free.fr for details. first first none none force-end force-end force-end force-end last lasthanging-punctuation:;hanging-punctuation:;
Schéma syntaxique de la propriété hanging-punctuation
Les liens du schéma donnent accès à plus de détails
Télécharger le schéma en SVG

Description de la propriété hanging-punctuation.

Cette propriété encore très peu prise en charge. Il est un peu tôt pour l'utiliser (2022).

Le "hanging" (que l'on traduit parfois par "ponctuation suspendue" ou "ponctuation flottante") consiste à positionner certains signes de ponctuation dans la marge, afin de ne pas perturber l'alignement du texte. C'est une technique qui est surtout intéressante si le texte est justifié.

Ponctuation suspendue (hanging) en début de ligne.

Les deux paragraphes ci-dessous sont entourés de guillemets. Pour le deuxième, une ponctuation suspendue a été demandée. Compte-tenu du fait que peut de navigateurs traitent la ponctuation suspendue, nous avons simulé l'effet de hanging-punctuation avec la propriété text-indent.

"La ponctuation suspendue est généralement considérée comme une technique typographique sophistiquée. Avant la typographie numérique, cette pratique était fréquemment appliquée par des typographes expérimentés."

"Dans les premiers temps de l'ère numérique et de la composition de bureau, la ponctuation suspendue est devenue moins standard, car elle devait être créée manuellement, ce qui est une opération fastidieuse."

L'esthétique du deuxième bloc de texte est en effet meilleure que celle du premier.

Ponctuation suspendue (hanging) en fin de ligne.

Certains caractères peuvent également déborder dans la marge droite s'ils se trouvent à la fin de la ligne, c'est le cas systématique du tiret de césure, et parfois d'un point ou d'une virgule. La ponctuation suspendue à droite consiste à justifier le texte sans tenir compte du caractère de ponctuation final, ce qui aura pour effet de le rejeter ce dernier dans la marge.

Comparer les deux blocs de texte ci-dessous. Sur le deuxième la marge droite parait plus harmonieuse car la virgule de la première ligne a été repoussée dans le marge. Il s'agit d'une simulation (image), en attendant que hanging-punctuation soit mieux reconnue par les navigateurs.

Exemple sans hanging-puctuation
Marge sans hanging-puctuation
Exemple avec hanging-puctuation
Marge avec hanging-puctuation

Valeurs pour hanging-punctuation.

  • hanging-punctuation: none;

    Aucun traitement particulier n'est appliqué aux signes de ponctuation.

  • hanging-punctuation: first;

    Les signes de ponctuation qui se trouvent en début de la première ligne sont décalés dans la marge. Cette valeur agit sur les guillemets ouvrants, sous toutes leurs variantes : ", , «, , etc.

  • hanging-punctuation: last;

    Les signes de ponctuation qui se trouvent à la fin de la dernière ligne sont repoussés dans la marge. Ce qui veut dire concrètement que la justification du texte ne prend pas en compte la largeur du signe de ponctuation. Ce dernier déborde donc de la ligne.

    Cette valeur agit sur les guillemets fermants : ", , », , etc.

  • hanging-punctuation: allow-end;

    Les signes de ponctuation qui se trouvent à la fin d'une ligne peuvent être repoussés dans la marge, si l'espace restant sur la ligne n'est pas suffisant pour les contenir. Les repousser dans la marge évite, dans ce cas, de rejeter le mot complet à la ligne suivante.

    Cette valeur concerne les signes de ponctuation tels que le point, la virgule, le tiret, etc.

  • hanging-punctuation: force-end;

    Les signes de ponctuation qui se trouvent à la fin d'une ligne sont systématiquement repoussés dans la marge. Ce qui veut dire concrètement que la justification du texte ne prend pas en compte la largeur du signe de ponctuation. Ce dernier déborde donc de la ligne.

    Cette valeur concerne les signes de ponctuation tels que le point, la virgule, le tiret, etc.

Valeurs globales
(communes à toutes les propriétés)

hanging-punctuation: initial (none) hanging-punctuation: inherit hanging-punctuation: revert hanging-punctuation: revertLayer hanging-punctuation: unset

Consultez les pages suivantes pour plus de détails : initial, inherit, revert, revert-layer, unset.

Animation de la propriété hanging-punctuation.

Pour l'instant la propriété hanging-punctuation n'est pas suffisamment prise en charge pour qu'une démo d'animation soit pertinente.

Manipulation de la propriété hanging-punctuation par programme.

Avec Javascript, modifier la valeur de hanging-punctuation.

Voici un exemple de code Javascript pour modifier la valeur de hanging-punctuation. Deux syntaxes sont possibles : la première avec une notation kebab-case (typique de CSS), en la deuxième en camel-case (courante en Javascript).

Javascript
let el = document.getElementById('id'); el.style['hanging-punctuation'] = 'force-end'; // ou let el = document.getElementById('id'); el.style.hangingPunctuation = 'force-end';

Avec Javascript, lire la valeur de hanging-punctuation.

Pour relire la valeur de la propriété hanging-punctuation avec le code ci-dessous, il faut que la valeur ait été affectée directement à l'élément lui-même via son attribut style, et non pas en passant par un sélecteur CSS.

Javascript
let el = document.getElementById('id'); let value = el.style['hanging-punctuation']; // ou let el = document.getElementById('id'); let value = el.style.hangingPunctuation;

Avec Javascript, lire la valeur calculée de hanging-punctuation.

La valeur calculée est celle qui résulte des valeurs héritées et des règles de priorité (vior les Les priorités). A défaut, a valeur calculée est la valeur initiale, soit none dans le cas de hanging-punctuation.

Javascript
let el = document.getElementById('id'); let value = window.getComputedStyle(el).getPropertyValue('hanging-punctuation');

Avec JQuery, modifier la valeur de hanging-punctuation.

JQuery

$('#id').css('hanging-punctuation', 'force-end');
// ou
$('#id').css('hangingPunctuation', 'force-end');

Avec JQuery, lire la valeur calculée de hanging-punctuation.

JQuery
let value = $('#id').css('hanging-punctuation');

Autres exemples de code.

Vous trouverez d'autres exemples de code Javascript et JQuery sur la page Javascript et CSS.

Testez vous-même.

Les boutons ci-dessous appliquent la valeur saisie à la propriété hanging-punctuation et affichent ensuite soit la valeur telle qu'elle a été appliquée, soit la valeur calculée, ce qui, dans le cas de hanging-punctuation sera la même chose car cette propriété n'attend pas de valeur numérique.

Exemple interactif avec la propriété hanging-punctuation.

Vous pouvez ajuster la largeur du bloc de texte ci-dessous afin de positionner une signe de ponctuation à la fin d'une ligne, et observer l'effet de la propriété hanging-punctuation.

hanging-punctuation :
"Aujourd'hui, d'énormes progrès ont été réalisés dans les capa­cités typo­gra­phi­ques des logi­ciels de mise en page. L'acti­va­tion de la fonction d'ali­gne­ment de la marge optique, non seulement suspend la ponc­tuation appro­priée à l'ex­té­rieur du cadre de texte, mais ajuste éga­le­ment d'au­tres carac­tè­res pou­vant per­tur­ber l'ali­gne­ment, notam­ment A, T, V, W, Y et, dans cer­tains cas, le chif­fre 1."

Prise en charge par les navigateurs (compatibilité).

Il y a encore beaucoup à faire pour que cette propriété soit correctement gérée par les navigateurs.

Remarques :

(1) Safari ne supporte pas la valeur force-end.

1
Propriété
hanging-punctuation
Estimation de la prise en charge globale.
15%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Opéra

Safari

Safari sur IOS

Firefox pour Androïd

Samsung Internet

Chrome

Edge

Firefox

Androïd Brower

Chrome pour Androïd

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini

Historique de la propriété hanging-punctuation.

  • Module CSS - Texte - Niveau 3

    Introduction de la propriété hanging-punctuation.
    WD
    27 Janvier 1999
    Document de travail.
    CR
    22 Décembre 2020
    Candidat à la recommandation.
    PR
    REC
  • Module CSS - Texte - Niveau 4

    Pas de changement concernant la propriété hanging-punctuation.
    WD
    22 Septembre 2015
    Document de travail.
    CR
    PR
    REC

Voir aussi, à propos de la gestion des textes.

La gestion des textes est ce qui est en rapport avec les ruptures, les césures, l'alignement des textes, etc. Ces spécifications sont regroupées dans le module CSS Text Module. Outre la propriété hanging-punctuation, vous y trouverez les définitions suivantes :

Propriétés :

hyphenate-character
Définit le caractère qui sera à utiliser comme marque de césure.
hyphenate-limit-chars
Définit le nombre minimal de caractères pour autoriser la césure d'un mot.
hyphenate-limit-last
Définit si les césures sont autorisées à la fin d'une colonne, d'une page, etc.
hyphenate-limit-lines
Définit le nombre maximal de lignes successives se terminant une césure
hyphenate-limit-zone
Définit le nombre maximal d'espaces pour autoriser ou interdire la césure.
hyphens
Définit si les mots peuvent être coupés en fin de ligne. La césure des mots donne une mise en page plus agréable mais peut être gênante dans certains cas.
letter-spacing
Espacement des lettres.
line-break
Définit les ruptures de lignes pour les langues CJK (chinois, japonais, coréen).
line-padding
Ajoute un espace au début et à la fin des lignes.
overflow-wrap
Gestion des coupures de mots pour les langues CJK et quelques autres.
tab-size
Définit la taille des caractères de tabulation.
text-align
Spécifie comment doit être aligné le texte de l'élément.
text-align-all
Définit l'alignement des lignes d'un texte (synonyme de text-align).
text-align-last
Définit l'alignement de la dernière ligne des paragraphes.
text-autospace
Définit l'espace entre les caractères adjacents (utilisable pour les langues CJK).
text-group-align
text-indent
Définit le retrait de la première ligne des paragraphe (indentation).
text-justify
Sélectionne la méthode utilisée pour justifier le texte.
text-space-collapse
Définit comment gérer les espaces et les espaces multiples dans le texte.
text-space-trim
Définit si les espaces au début et à la fin du texte de l'élément doivent être conservés ou supprimés.
text-spacing
text-spacing-trim
Definit l'espacement autour des caractères de ponctuation CJK.
text-transform
Casse du texte (minuscules, majuscules...).
text-wrap
Définit la gestion des retours à la ligne du texte.
text-wrap-mode
Définit si les retours à la ligne sont autorisés.
text-wrap-style
Définit comment les saut de ligne vont se faire.
white-space
Définit comment sont restitués les espaces multiples et les retours chariot.
white-space-collapse
Définit comment les espaces successifs et les retours à la ligne doivent être traités.
white-space-trim
Définit si comment le navigateur doit supprimer les espaces réductibles.
word-boundary-detection
Définit quelle logique le navigateur doit utilier pour identifier les limites des mots.
word-boundary-expansion
Substitue certains caractères de séparation de mots par d'autres.
word-break
Coupure des mots longs.
word-space-transform
Normalise les caractères d'espacement (écritures CJK).
word-spacing
Permet d'ajuster l'espacement des mots.
word-wrap
Coupure des mots pour les langues CJK et quelques autres.
wrap-after
Autorise ou non les sauts de lignes après la boite.
wrap-before
Autorise ou non les sauts de lignes avant la boite.
wrap-inside
Autorise ou non les sauts de lignes dans la boite.