CSS - hyphenate-limit-chars

概要

属性名hyphenate-limit-chars
[ auto | <integer> ] {1,3}
初期値auto
適用可能要素テキスト要素
継承継承する
サポートhttps://caniuse.com/css-hyphenate-limit-chars

説明

英単語が何文字以上の場合にハイフネーションを行うかを指定します。

引数は 1~3個で下記の様に解釈されます。<total> は全体文字数、<before> はハイフン前文字数、<after> はハイフン後文字数を示します。

hyphenate-limit-chars: <total> <before> <after>;
hyphenate-limit-chars: <total> <before>;   /* <after> = <before> */
hyphenate-limit-chars: <total>;            /* <before> = <after> = auto */

hyphenate-limit-chars を指定しない場合、多くのブラウザでは 5 2 2 が指定されたものとみなします。

hyphenate-limit-chars: 5 2 2;

英単語のハイフネーションは lang="en" が指定された要素で行われます。

<div lang="en">
  ...
</div>

英単語にはハイフン(-)を入れられる箇所と入れられない箇所があります。例えば下記の場所で入れることができます。

un-be-liev-able
com-mu-nica-tion
con-sider-ations
ac-knowl-edge-ment
mis-un-der-stand-ing

下記の様に、幅 1px の枠に hyphens: autohyphenate-limit-chars: 1 1 1; を指定してやると、単語のどの箇所で入れることができるかを調べることができます。

CSS
.my-box {
  width: 1px;
  hyphens: auto;
}
HTML
<div class="my-box" lang="en" style="hyphenate-limit-chars: 1 1 1;">misunderstanding</div>
表示
misunderstanding

使用例

全体文字数(<total>)

文字数が <total> 以上になるとハイフネーションを行います。misunderstanding は16文字なので、<total> が 17 だとまだハイフネーションしませんが、16 だとハイフネーションします。understanding の部分は13文字で16文字に達していないのでハイフネーションしません。

CSS
.my-box {
  width: 1px;
  hyphens: auto;
  margin-bottom: 1rem;
}
HTML
<div class="my-box" lang="en" style="hyphenate-limit-chars: 17;">misunderstanding</div>
<div class="my-box" lang="en" style="hyphenate-limit-chars: 16;">misunderstanding</div>
表示
misunderstanding
misunderstanding

ハイフン前文字数(<before>)

ハイフン前の文字数が最低でも <before> 文字になるように調整されます。<before> が 3 の場合、un- は2文字で条件を満たさず、under- の部分がハイフネーションしません。

HTML
<div class="my-box" lang="en" style="hyphenate-limit-chars: 1 2 1;">misunderstanding</div>
<div class="my-box" lang="en" style="hyphenate-limit-chars: 1 3 1;">misunderstanding</div>
表示
misunderstanding
misunderstanding

ハイフン後文字数(<after>)

ハイフン後の文字数が最低でも <after> 文字になるように調整されます。<after> が 4 の場合、最後の img は3文字で条件を満たさず、standing の部分がハイフネーションしません。

HTML
<div class="my-box" lang="en" style="hyphenate-limit-chars: 1 1 3;">misunderstanding</div>
<div class="my-box" lang="en" style="hyphenate-limit-chars: 1 1 4;">misunderstanding</div>
表示
misunderstanding
misunderstanding

リンク