`text-wrap: pretty`でより良いタイポグラフィを実現する
(webkit.org)- Webタイポグラフィをより美しくする
text-wrap: prettyの紹介 - Safari Technology Preview 216 に新たに導入された機能で、Webタイポグラフィをより精密で読みやすく改善する
- 従来のWebテキスト配置は1行ずつ処理する方式だったが、
prettyは段落全体を考慮して改行位置を調整する - この機能は可読性とアクセシビリティを向上させ、伝統的な活字組版の手法に着想を得て実装されている
伝統的なタイポグラフィに学ぶ、良い改行のあり方
- 短すぎる最終行を避ける: 最終行に単語が1つだけ残るのは見た目として好ましくない
- 段落末尾の粗い見た目を改善する: 行末がギザギザだと可読性が下がるため、可能な限りバランスよく調整すべき
- 好ましくないハイフンの使用を避ける: ハイフンが2行連続で使われたり、単語を過度に分割したりすると読みにくい
- タイポグラフィのリバーを防ぐ: 行間の空白が縦に連なって視線を散らす現象は避けるべき
Webにおける改行方式の歴史
- Web は 1991 年から「先頭行から1行ずつ処理する」方式を使ってきた
- この方式では各行のテキスト長を個別に計算し、行同士の調和は考慮しない
- InDesign や LaTeX のようなツールは段落全体を見て行を整えるが、Web では最近までそれができなかった
- Safari Technology Preview 216 では初めて、段落全体を考慮した改行方式が導入された
text-wrap: pretty が解決する問題
- 段落全体を評価して最適な改行位置を決める
- 短い最終行を防ぎ、行末の形状(rag)を改善し、不要なハイフンを減らす
- Chromium 系ブラウザは段落の最後の4行だけを改善するが、WebKit は段落全体に適用する
- リバー現象まではまだ改善しないが、今後導入する計画がある
各ブラウザの実装の違い
prettyは CSS Working Group が定義したとおり、ブラウザごとに異なる動作をしうる- WebKit は段落全体に適用し、Chromium は最後の4行だけに適用する
- そのため開発者は、単に最終行の改善だけでなく、タイポグラフィ全体の向上のために使える
デモを確認する
- CodePen デモ で
pretty、balance、ハイフン、整列などの組み合わせを試せる - 「show guides」と「show ghosts」を有効にして、変更前後を比較できる
- さまざまな言語(英語、アラビア語、ドイツ語、中国語、日本語)で効果を確認できる
パフォーマンスへの懸念を払拭
- 行数の多いコンテンツでは性能に影響する可能性はあるが、一般的な段落では性能上の問題はない
- 数百〜数千行の段落でない限り、自由に使える
- 必要に応じて WebKit は長い段落を分割して処理し、性能を保証する予定
pretty と balance の違い
prettyはテキストがコンテナ幅をしっかり満たす状態を保ちながら、改行をより自然にするbalanceはすべての行の長さを揃えることに重点を置くため、コンテナを埋めにくくなる- 一般に
prettyは本文テキストに適しており、balanceは見出し、キャプション、ティーザーテキストに適している - どちらも短いテキストに使えるが、長い本文では
balanceを避けたほうがよい
ほかの text-wrap プロパティ値の説明
text-wrap: avoid-short-last-lines
- 新たに追加された値で、短い最終行を避けることだけに集中する
- まだどのブラウザにも実装されていない
text-wrap: auto
- デフォルト値で、1991 年から使われてきた行単位の「貪欲な改行」アルゴリズムを使う
- 今後はブラウザ側でデフォルト値そのものが改善される可能性もある
text-wrap: stable
- 現在は
autoと同じように動作するが、編集可能なテキストに適した安定した改行を提供する - アニメーション中やテキスト入力中でも改行が変わらないことを保証する
text-wrap の詳細プロパティ
-
text-wrapは実際にはtext-wrap-modeとtext-wrap-styleの2つのプロパティのショートハンドである -
text-wrap-mode: 改行を許可するかどうかを設定する (wrap/nowrap) -
text-wrap-style: 改行アルゴリズムを選ぶ (auto,stable,balance,pretty,avoid-short-last-lines)text-wrap-style: pretty; text-wrap-mode: wrap; -
white-spaceプロパティと併用する場合は、空白処理の方式も確認が必要
要点まとめ
text-wrap: prettyは従来よりはるかに精密な Web テキストの改行を可能にする- Safari Technology Preview 216 で、段落全体を評価する方式として実装された
- 長い本文に適用しても性能問題はほとんどなく、可読性と美観の両面で大きな向上をもたらす
balanceとの違いを理解し、コンテンツの種類に応じて適切に選ぶ必要がある
1件のコメント
Hacker Newsの意見