2.5実体参照と数値文字参照
次の例外を除き、有効なHTML実体参照と数値文字参照は、対応するUnicode文字の代わりに使えます。
-
実体参照と文字参照は、コードブロックやコードスパンの中では認識されません。
-
実体参照と文字参照は、CommonMarkの構造要素を定義する特殊文字の代わりにはなりません。たとえば
*は文字としての*の代わりに使えますが、*を、強調の区切り、箇条書きのリストマーカー、主題区切りの*の代わりに使うことはできません。
仕様に適合するCommonMarkパーサーは、ある文字がソース中でUnicode文字として書かれていたか、実体参照として書かれていたかという情報を保存する必要はありません。
実体参照は、&、有効なHTML5実体名のいずれか、;を順に並べたものです。有効な実体参照と対応するコードポイントの正式な情報源として、文書https://html.spec.whatwg.org/entities.jsonを使います。
& © Æ Ď
¾ ℋ ⅆ
∲ ≧̸
<p> & © Æ Ď
¾ ℋ ⅆ
∲ ≧̸</p>
10進数値文字参照は、&#、1〜7桁のアラビア数字の並び、;からなります。数値文字参照は、対応するUnicode文字として解析されます。無効なUnicodeコードポイントは、置換文字(REPLACEMENT CHARACTER、U+FFFD)に置き換えられます。安全上の理由から、コードポイントU+0000もU+FFFDに置き換えられます。
16進数値文字参照は、&#、Xまたはx、1〜6桁の16進数字の並び、;からなります。これらも、対応するUnicode文字として解析されます。ただし、今回は10進数ではなく16進数で指定されます。
次は、実体参照にはならない例です。
  &x; &#; &#x;
�
&#abcdef0;
&ThisIsNotDefined; &hi?;
<p>&nbsp &x; &#; &#x;
&#87654321;
&#abcdef0;
&ThisIsNotDefined; &hi?;</p>
HTML5では末尾のセミコロンを省いた実体参照も一部受け付けます。たとえば©がその例です。しかし、この仕様では文法が曖昧になりすぎるため、それらは認識されません。
HTML5の名前付き実体の一覧にない文字列も、実体参照としては認識されません。
実体参照と数値文字参照は、コードスパンとコードブロックを除くあらゆる文脈で認識されます。URL、リンクのタイトル、フェンス付きコードブロックの情報文字列もその対象です。
実体参照と数値文字参照は、コードスパンとコードブロックの中では、文字列そのものとして扱われます。
実体参照と数値文字参照は、CommonMark文書の構造を示す記号の代わりには使えません。