Unicode code pointからのリンクはUnicode utilities, character propertiesの該当文字のページ。
Unicodeへの参照以外にも、いくつかのカテゴリが定義されており置換(読み替え)で利用される。
空白関係で利用される文字参照のリスト、展開先のコードポイントとCSSプロパティーによる置換などをコメントで含めて。全リストはNamed character referencesにある。文字参照名に貼ってあるリンクはこのリストのページ内の該当業へのリンク。
以下、この文書記述時点での最新ドラフト準拠。
CSSの空白処理で影響する対象は、各仕様で明記がない限りdocument white space characters (css-text-3 4.1)となる U+0020, U+0009, U+000A の文字。UCD General_Category=ZsのU+0020, U+00A0以外の15文字はother space separatorsとされる。
またこのセクションの定義により、U+000Aや言語ごとにunicodeで定義された改行文字はsegment breakとなり、プロパティーの設定によっては表示に反映される。
U+0009, U+000A, segment breakの表現に当てはまらないControl characters, General_Category=Ccの文字は、フォント上で不可視の場合でも何らかの形で可視表示せねばならず、`Other Symbols’ (General_Category=So)として扱う。
推奨される(結果が同じであれば必須ではない)文字列処理の順序はAppendix Aにあり、以下の順になる。
ざっくりいうと、preエレメント的な扱いの拡張の設定と、畳み込み規則の詳細定義
normal: infra specの畳み込みに準拠、soft wrap opportunitiesも適用pre: 空白の畳み込みを一切行わず、segment breakは強制改行位置として扱い、soft wrapは適用しない (htmlのpreエレメントの扱い)norwap: 空白の畳み込みを行うが、soft wrapは適用しないpre-wrap: 空白の畳み込みは一切行わないが、soft wrapは適用するbreak-spaces: 以下の2点以外はpre-wrapと同じ。行末を含め空白やother space separatorsによる空白のサイズを維持する、それらの空白の間を含めすべての空白文字の直後にsoft wrapを許可する (その分行末に余計なサイズが付く)pre-line: 空白の畳み込みもsoft wrapも行うが、segment breakを強制改行位置として扱う (強制改行以外はnormalと同じ)これらの処理で保持された(畳み込まれなかった)空白はpreserved white spaceと呼ぶ。
white-spaceがnormal, nowrap, pre-lineの場合、空白の畳み込みを行う
space, tabの並びは削除するsegment breakの変換規則により、畳み込み可能なsegment breakを変換するtabはU+0020 (space)に置換するspaceの2つ目以降をゼロ幅に置換する (soft wrap可能な不可視文字)white-spaceがpre, pre-wrap, break-spacesの場合、すべてのspaceをU+00A0と扱う
soft wrapの位置について、pre-wrapの場合は空白の連続の最後のみに、break-spacesの場合はすべての空白の直後に許されるtab-sizeが0に設定されていれば保持されたタブは表示されない、それ以外の場合は通常のタブの表示の処理で空白をあけるspaceやother space separatorsが行末にある場合は以下の処理を行う (ぶら下げ処理を行われた空白は文字選択時に選択可能になる)
white-spaceがnormal, norwap, pre-lineの場合、ぶら下げ処理を行う (領域外に出られる)white-spaceがpre-wrapの場合、forced line breakが続いていない場合に限りぶら下げ処理を行い、続く場合はconditional hang (文字揃えを行う前に収まらない場合のみぶら下げる)を行うwhite-spaceがbreak-spacesの場合、行末でのぶら下げ・畳み込みは禁止され、行送りされるsegment break変換処理
white-spaceがpre, pre-wrap, break-spaces, pre-lineの場合、segment breakは畳みこまれず、すべてpreserved line feedとして扱うsegment breakは畳み込み可能になる。2つ目以降は除去され、残ったものはU+0020に置換されるか前後の状況により除去される
zero width space character (U+200B)がある場合は除去し、U+200Bのみ残すEast Asian WidthがFullwidth, Wide, HalfwidthでAmbiguousでない場合、かつ、ハングルでなければsegment breakは除去するsegment breakに適用されるlangが中国語、日本語、Yiの場合、かつ、前後のどちらかが約物か記号(Unicode General Category PかS)でEast Asian WidthがAmbiguousであり、もう一方のEast Asian WidthがFullwidth, Wide, Halfwidthでハングルでない場合、segment breakは除去するEast Asian WidthがWideかNeutralの文字はAmbiguousとして扱う検討点
forced line break: preserved newline characterなどの明示的改行指示や、ブロックの先頭・最後soft wrap break: 表示幅に合わせて表示上で改行する場所、soft wrap opportunityである許可された場所でのみ可能
orthographic syllable boundaryでの改行になるline-break: 改行規則の厳密さの選択word-break: 改行不可な単語として扱う文字種の定義hyphens: ハイフンを利用する言語でのハイフン規則の制御overflow-wrap: 改行不可な文字列以外のどこでも改行可能で、不可なものは行送りする概要
preserved forced breakで改行する、UAX #14のBK, NLも考慮するline-breakの値などによる改行可能優先度は定義しないが、word-break: break-allでは単語区切りの優先扱いは想定されておらず、line-break: anywhereの場合は優先扱いは禁止される。forced line breakやsoft wrap opportunityとしては扱わないsoft wrap opportunityを置くsoft wrap opportunityはその文字を含む要素の属性による。連続する2文字間については最下位の共通要素のwhite-space属性により、line-break, word-break, overflow-wrap属性に関してはLevel 3では未定義soft wrap opportunityはボックスの端と中身の間でなく、直前・直後(margin edge)で行うsoft wrap opportunityを置く定義されている属性
soft wrap opportunityの制御であり、white spaceや約物によるものには影響しないnormal: 前出の言語による一般規則に従うbreak-all 基本的にはどこでも改行可能にする。UAX #14 NU, AL, SAをIDとして扱う。約物には影響しないkepp-all: 単語中での改行を禁止する。辞書ベースの改行位置以外の、NU, AL, AI, IDや表示の塊の間のsoft wrap opportunityは無視される。auto: UAによる判断、行長などに依存して選択されるloose, normal, strict, anywhereが選べるanywhereではUAX #14のGL, WJ, ZWJなどを含めた禁止規則が無視され、ハイフネーションも行わない。またwhite-spaceによる行末の空白処理も変更される。strictで禁止、normal, looseで許可normal, looseで許可され、それ以外では禁止looseの場合のみ許可East Asian WidthがAmbiguous, Fullwidth, Wideの後置文字の前、UAX #14 PRかつEast Asian WidthがAmbiguous, Fullwidth, Wideの前置文字の後での改行は、中国語・日本語でlooseの場合のみ許可shyのハイフネーション可能点の制御none (行わない), manual (事前定義のみ), auto (単語解析で挿入可能)があるnormal: 許可された点でのみ可能だが、word-break: kepp-allの場合はnormalに読み替え可能anywhere: どこでも改行挿入可能break-word: anywhereと同等だが、break-wordで追加されるsoft wrap opportunityは表示幅を計算する際には考慮しない両端揃えなどの設定と、揃えにした場合の空白挿入の扱いについて
text-align: start, endなどの揃え方の指定 (text-align-allとtext-align-last2つの短縮版)
justifyの場合で空白がcollapsableでない場合は、文字列を揃えに利用せずjustification opportunitiesなしとみなす。もし文字列を揃える場合は、tabを空白処理基準に従って並べる。end側を外に伸ばすtext-justify: 空白挿入の方法
auto: (既定値) 速度と品質を考慮してUAが決定する、記述方式・言語によって処理を変えるべきであるとされているnone: justification opportunitiesなしとみなす (user stylesheetでの設定が主目的)inter-word: word separatorで空きを調整する (word-spacingの設定に依存)inter-character: 全てのtypographic character units間で空きを調整する (letter-spacingの設定に依存)justification opportunity: 調整可能な位置の定義で、word separatorなどの単一typographic character unitもしくはその並びで、text-justifyの値により決定される
letter-spacing, word-spacingでの空き量に加算される。justrification opportunityが存在する場合、揃えは設定されていれば必ず適用される。S*, P*)はその文字の属する言語、もしくはCommonの場合は文章で主要な言語に従って行う。ただし、言語ごとに要求される処理は別途適用する。text-align-lastによって処理するjustification opportunity非存在として扱う。autoに対する要求は明示されていないが、最低要件は提示されている
block scriptの塊・clustered scriptの塊と他の塊の間、にjustification opportunityが存在するblock scriptのすべての文字、clustered scriptのすべての文字は同等に扱う (異言語交じりの場合など)単語間(word-spacing)、文字間(letter-spacing)の空き量の指定
word-spacing: normalは0とし、値はフォント指定の単語間空き量に追加する値(両側に半分ずつ)となる
letter-spacing: typographic character units間の追加空き量で、bidi処理後にカーニングやword-spacingに追加して挿入され、揃えの指定によっては増減が加えられる
normalがgetComputedStyle()から戻るtypographic character unitとして扱うtypographic character unitsが属する最内の要素に属するfont-feature-settingsで上書きされうる
typographic character unitsを分割し、かつ以下の条件を満たすインラインボックスの端ではshapingは解除される
vertical-alignがbaselineでないtext-indent: 行頭空き指定、each-lineやhangingがない限り先頭行のみで、絶対量指定かブロック要素全幅に対する割合
each-line: forced line breakの直後全てに挿入するhanging: 適用行頭の反転min-contentには入らないがmax-contentには入るhanging-punctuation: 約物のぶら下げ処理を行うかどうか
none: 行わないfirst, last: 要素の先頭・最終行で行う、Ps, Pf, Pi, U+0027, U+0022が対象force-end (強制), allow-end (許可): 行末のstop or commaを対象に行う
stop or comma: U+002C, U+002E, U+060C, U+06D4, U+3001, U+3002, U+FF0C, U+FF0E, U+FE50, U+FE51, U+FE52, U+FF61, U+FF64空白処理以外では
分かち書きなどのために利用できる設定の導入で、wbrやU+200Bを挿入することで位置を定義する。
word-boundary-detection: 単語間区切りの検出方法、検出された位置にvirtual word boundaryが挿入される
manual: virtual word boundaryの挿入はしない、SAはAL属性も持つとして扱う (line-breakがanywhere以外の場合にsoft wrap opportunityが存在しなくなる)normal: 東南アジア諸言語以外においてはvirtual word boundaryの挿入はしない、SAはAL属性も持つとして扱うがvirtual word boundaryを解析して必要なら挿入しなければならないauto(lang): 指定の言語での仕様に沿った解析を行うvirtual word boundaryの挿入は空白文字処理 Phase 1 (Lv3 4.1.1)の前、かつ、word-boundary-expansionの処理前に行う。virtual word boundary挿入位置で複数のインラインボックス境界がある場合は、最外の境界に入れる。virtual word boundaryを挿入禁止
manualがある場合の先頭・最後typographic character unit内の文字間vitual word boundaryを挿入すべきではない
word-boundary-expansion: 単語間文字の置き換えの指定
none: 行わないspace: U+200BをU+0020に置き換えideographic-space: U+200BをU+3000に置き換えforced line breakの直前直後のU+200Bは置き換え禁止virtual word boundaryであるwbrはU+200Bとして扱うtext-space-collapse: 空白文字を畳みこむかどうかの選択
collapse: 既定の動作で、連続の空白文字を1文字に置き換えるpreserve: 畳みこまない、segment breakはforced line breakになるpreserve-breaks: 畳みこむが、segment breakはforced line breakになるpreserve-spaces: 空白を畳み込まないが、タブやsegment breakを空白に置き換えるdiscard: 全て除去するtext-space-trim: 先頭・最後での除去のオプション、既定はnone (行わない)
trim-inner: ブロックコンテナにおいて先頭・最後を除去するdiscard-before: 先頭の空白を要素の直前の空白に畳み込むdiscard-after: 最後の空白を要素の直後の空白に畳み込むline-padding: 先頭・末尾の追加padding量text-spacing: 文字種による空き量処理の設定
auto: 自動処理normal: 現状ではspace-start, allow-end, trim-adjacentnone: 行わないideograph-alpha: ideographs, non-ideographic lettes間に1/4emを追加ideograph-numeric: ideographs, non-ideographic numerals間に1/4emを追加punctuation: 言語で定義された約物周りの分割禁止空白を入れるspace-start: fullwidth opening punctuationを行頭で全角として扱うtrim-start: fullwidth opening punctuationを行頭で半角として扱うspace-first: 改行の行分割直後のみspace-startとするallow-end: fullwidth closing punctuationを追い出しの代わりに行末で半角として扱うspace-end: fullwidth closing punctuationを行末で全角として扱うtrim-end: fullwidth closing punctuationを行末で半角として扱うspace-adjacent: 行頭でないfullwidth opening punctuationと行末でないfullwidth closing punctuationを全角として扱うtrim-adjacent: 連続した約物の空き量を調整するno-compress: 揃えの時にtext-spacingを圧縮しないtrim-adjacentでの処理
fullwidth opening punctuationが、fullwidth opening punctuation, fullwidth middle dot punctuation, U+3000に続く場合と、同じかより大きなサイズのfullwidth closing punctuationに続く場合に半角にするfullwidth closing punctuationの後に、fullwidth closing punctuation, fullwidth middle dot punctuation, U+3000が続く場合と、同じ課より大きなサイズのfullwidth opening punctuationが続く場合に、半角にするideographs: U+3041からU+30FFでP*でないもの、CJKストローク (U+31C0からU+31EF)、カタカナ発音 (U+31F0からU+31FF)、Han属性を持つ文字non-ideographic letters: ideograph, EAW=F, 縦書き中の縦中横の文字、でないL*とM*の文字non-ideographic numerals: EAW=F, 縦書き中の縦中横の文字、でないNdの文字fullwidth opening punctuation: Ps中、CJK (U+3000からU+303F)かEAW=Fの文字、またU+2018, U+201Cで、半角にする場合は左半分もしくは上半分を消すfullwidth closing punctuation: Pe中、CJK (U+3000からU+303F)かEAW=Fの文字、またU+2019, U+201Dで、もしくはfullwidth colon punctuationとfullwidth dot punctuationも含むことがある。半角にする場合は右半分かう下半分を消すfullwidth middle dot punctuation: U+00B7, U+2027, U+30FBで、fullwidth colon punctuationとfullwidth dot punctuationを含むことがあるfullwidth colon punctuation: U+FF1A, U+FF1Bfullwidth dot punctuation: U+3001, U+3002, U+FF0C, U+FF0E