2前提事項
2.1文字と行
どのような文字の並びも、有効なCommonMark文書です。
文字とはUnicodeのコードポイントです。直感的な意味での文字に対応しないコードポイントもあります。たとえば結合アクセント記号がその例です。しかし、この仕様ではすべてのコードポイントを文字として数えます。
この仕様は文字エンコーディングを定めません。行を構成するものは、バイトではなく文字だと考えます。仕様に適合するパーサーであっても、特定のエンコーディングだけを扱うように制限されていてかまいません。
行とは、ラインフィード(U+000A)とキャリッジリターン(U+000D)以外の、0個以上の文字の並びで、その後に行末またはファイルの終端が続くものです。
行末とは、ラインフィード(U+000A)、後ろにラインフィードが続かないキャリッジリターン(U+000D)、またはキャリッジリターンとそれに続くラインフィードの組です。
文字を1つも含まない行、またはスペース(U+0020)とタブ(U+0009)だけを含む行を、空行と呼びます。
この仕様では、次の文字クラスの定義を使います。
Unicode空白文字とは、Unicodeの一般カテゴリZsに属する文字、またはタブ(U+0009)、ラインフィード(U+000A)、フォームフィード(U+000C)、キャリッジリターン(U+000D)です。
Unicode空白類とは、1個以上のUnicode空白文字の並びです。
タブはU+0009です。
スペースはU+0020です。
ASCII制御文字とは、U+0000–1Fの範囲内の文字(両端を含む)、またはU+007Fです。
ASCII句読記号文字とは、!、"、#、$、%、&、'、(、)、*、+、,、-、.、/(U+0021–2F)、:、;、<、=、>、?、@(U+003A–0040)、[、\、]、^、_、`(U+005B–0060)、{、|、}、~(U+007B–007E)のいずれかです。
Unicode句読記号文字とは、Unicodeの一般カテゴリP(句読記号)またはS(記号)に属する文字です。