[1] 『Unicode in XML and other Markup Languages』 という [[W3C]] [[Note]] / [[UTR]] #20 は、[[マーク付け言語]]で使うべきではない[[文字]]などを解説しています。 マーク付け言語としては主として [[XML]]、 ある程度は [[HTML]] を対象としています。 [[#comment]] * マーク付け言語で不適切な文字 [2] 次の文字はマーク付け言語と一緒に使用するのは不適当です。 行分離子 [CODE(char)[[[LS]]]], 段落分離子 [CODE(char)[[[PS]]]], バイト順印 [CODE(char)[[[BOM]]]] を除いては、 [[UA]] は無視するのもよし。 適当なマークに変換するのは[[著述工具]]の責任だそうです。 ,[[符号位置]] ,[[名前]] ,HTML での代替 ,メモ ,[CODE(char)[[[U+2028]]]] ,[CODE(char)[[[LINE SEPARATOR]]]] ,[CODE(HTMLe)[[[br]]]] ,>>4 ,[CODE(char)[[[U+2029]]]] ,[CODE(char)[[[PARAGRAPH SEPARATOR]]]] ,[CODE(HTMLe)[[[p]]]] ,>.4 ,[CODE(char)[[[U+202A]]]] ,[CODE(char)[[[LEFT-TO-RIGHT EMBEDDING]]]] ,[CODE(HTML)[[CODE(HTMLa)[[[dir]]]]=[[ltr]]]] ,>>3 ,[CODE(char)[[[U+202B]]]] ,[CODE(char)[[[RIGHT-TO-LEFT EMBEDDING]]]] ,[CODE(HTML)[[CODE(HTMLa)[dir]]=[[rtl]]]] ,>>3 ,[CODE(char)[[[U+202C]]]] ,[CODE(char)[[[POP DIRECTIONAL FORMATTING]]]] ,[CODE(HTML)[]] ,>>3 ,[CODE(char)[[[U+202D]]]] ,[CODE(char)[[[LEFT-TO-RIGHT OVERRIDE]]]] ,[CODE(HTML)[<[CODE(HTMLe)[bdo]] [CODE(HTMLa)[dir]]=ltr>]] ,>>3 ,[CODE(char)[[[U+202E]]]] ,[CODE(char)[[[RIGHT-TO-LEFT-OVERRIDE]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[bdo]]]] [CODE(HTMLa)[dir]]=rtl>]] ,>>3 ,[CODE(char)[[[U+206A]]]] ,[CODE(char)[[[INHIBIT SYMMETRIC SWAPPING]]]] , ,Unicode で非推奨 >>5 ,[CODE(char)[[[U+206B]]]] ,[CODE(char)[[[ACTIVATE SYMMETRIC SWAPPING]]]] , ,Unicode で非推奨 >>5 ,[CODE(char)[[[U+206C]]]] ,[CODE(char)[[[INHIBIT ARABIC FORM SHAPING]]]] , ,Unicode で非推奨 >>5 ,[CODE(char)[[[U+206D]]]] ,[CODE(char)[[[ACTIVATE ARABIC FORM SHAPING]]]] , ,Unicode で非推奨 >>5 ,[CODE(char)[[[U+206E]]]] ,[CODE(char)[[[NATIONAL DIGIT SHAPES]]]] ,[CODE(char)[[[U+0660]]]]〜[CODE(char)[[[U+0669]]]] ,Unicode で非推奨 >>5 ,[CODE(char)[[[U+206F]]]] ,[CODE(char)[[[NOMINAL DIGIT SHAPES]]]] ,[CODE(char)[[[U+0030]]]]〜[CODE(char)[[[U+0039]]]] ,Unicode で非推奨 >>5 ,[CODE(char)[[[U+FEFF]]]] ,[CODE(char)[[[ZERO WIDTH NO-BREAK SPACE]]]] ,[CODE(char)[[[U+2060]]]] ,Unicode で非推奨 >>6 ,[CODE(char)[[[U+FFF9]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION ANCHOR]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[ruby]]]]><[CODE(HTMLe)[[[rb]]]]>]] ,>>7 ,[CODE(char)[[[U+FFFA]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION SEPARATOR]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[rt]]]]>]] ,>>7 ,[CODE(char)[[[U+FFFB]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION TERMINATOR]]]] ,[CODE(HTML)[]] ,>7 ,[CODE(char)[[[U+FFFC]]]] ,[CODE(char)[[[OBJECT REPLACEMENT CHARACTER]]]] ,[CODE(HTMLe)[[[object]]]] など ,>>8 ,[CODE(char)[[[U+1D173]]]]〜[CODE(char)[[[U+1D17A]]]] ,"[[タイ]], [[スラー]]など" , ,>>9 ,[CODE(char)[[[U+E0000]]]]〜[CODE(char)[[[U+E007F]]]] ,[CODE(char)[Tags]] ,"[CODE(XML)[[[xml]]:[[lang]]]], [CODE(HTMLa)[lang]]" ,>>9 参考: [4] [CODE(char)[[[LS]]]] と [CODE(char)[[[PS]]]] は、 ブラウザは[[空白]]とし、編集時は適当なマークに置き換えるのが適切です。 [3] [[BIDI]] 系は [Q[Strongly discouraged in [HTML 4.0] ]] などと書かれていますが、 HTML 4 が激しく非推奨しているように読めて紛らわしい。 ( にはそんなことは書かれていません。) で、 HTML 4 は文字コードによる[[書字方向]]指定と HTML のマークによる指定のいずれかだけを使うように求めているが、 文字コードによる指定は処理が複雑になってよくないのでマークを使えと言っています。 ブラウザは無視し、編集時はマークに変換するのがいいそうです。 [5] [[DIS10646]] の遺産。ブラウザは無視したらよく、 編集時は警告でもして削除するのがよいですが、 適当に変換してもいいでしょう。ということです。 [6] [CODE(char)[U+FEFF]] は、 [CODE(char)[ZERO WIDTH NO-BREAK SPACE]] と [CODE(char)[[[BYTE ORDER MARK]]]] の二つの機能を一つの符号位置に押し込んで、 あとから都合が悪くなったので [CODE(char)[[[ZWNBSP]]]] の機能を [CODE(char)[U+2026]] [CODE(char)[WORD JOINER]] として分離したという恥ずかしい前歴があります。 従って今では [CODE(char)[U+FEFF]] を [CODE(char)[ZWNBSP]] として使用することは Unicode が非推奨としています。 ブラウザは文中の [CODE(char)[U+FEFF]] は [CODE(char)[ZWNBSP]] として扱い、編集時は [CODE(char)[[[ZWJ]]]] に置き換えてしまう[[及び/又は]]警告を発してよいとされています。 [7] Unicode に通称 ruby tag が入った経緯は でも見てください。阿呆らしい。 ブラウザは無視してかまいません。 編集時は次のひとつ以上の動作を取ってかまいません。 - [CODE(char)[U+FFF9]] および [CODE(char)[U+FFFA]]〜[CODE(char)[U+FFFB]] の部分を削除 - [CODE(char)[U+FFF9]] を削除、 [CODE(char)[U+FFFA]] と [CODE(char)[U+FFFB]] をそれぞれ [CODE(char)[ [ ]] と [CODE(char)[ ] ]] に置換 - 適当なマークに置換 (ブラウザも完全に無視したら駄目だと思うのだけどなあ。 [CODE(HTMLe)[rt]] 部分を削除しないと。) [8] ブラウザは無視してかまいません。 編集時は適当なマークに置換可能ならそうしてもいいし、 警告を出せるなら出して、削除してしまってかまいません。 [9] ブラウザは無視してかまいません。 編集時には削除しても適当なマークに置換してもかまいません。 [[#comment]] * マーク付け言語で適当な書式文字 [10] がマーク付け言語で使うのは適切だと言っている文字と、 その説明をどうぞ: ,符号位置 ,名前 ,メモ ,[CODE(char)[[[U+00A0]]]] ,[CODE(char)[[[NO-BREAK SPACE]]]] ,[CODE(char)[[[U+00AD]]]] ,[CODE(char)[[[SOFT HYPHEN]]]] ,[CODE(char)[[[U+034F]]]] ,[CODE(char)[[[COMBINING GRAPHEME JOINER]]]] ,>>11 ,[CODE(char)[[[U+0600]]]] ,[CODE(char)[[[ARABIC NUMBER SIGN]]]] ,[CODE(char)[[[U+0601]]]] ,[CODE(char)[[[ARABIC SIGN SANAH]]]] ,[CODE(char)[[[U+0602]]]] ,[CODE(char)[[[ARABIC FOOTNOTE MARKER]]]] ,[CODE(char)[[[U+0603]]]] ,[CODE(char)[[[ARABIC SIGN SAFHA]]]] ,[CODE(char)[[[U+06DD]]]] ,[CODE(char)[[[ARABIC END OF AYAH]]]] ,[CODE(char)[[[U+070C]]]] ,[CODE(char)[[[SYRIAC HARKLEAN METOBELUS]]]] ,[CODE(char)[[[U+0F0C]]]] ,[CODE(char)[[[TIBETAN MARK DELIMITER TSHEG BSTAR]]]] ,[CODE(char)[[[U+180B]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR ONE]]]] ,[CODE(char)[[[U+180C]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR TWO]]]] ,[CODE(char)[[[U+180D]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR THREE]]]] ,[CODE(char)[[[U+180E]]]] ,[CODE(char)[[[MONGOLIAN VOWEL SEPARATOR]]]] ,[CODE(char)[[[U+200C]]]] ,[CODE(char)[[[ZERO WIDTH NON-JOINER]]]] ,[CODE(char)[[[U+200D]]]] ,[CODE(char)[[[ZERO WIDTH JOINER]]]] ,[CODE(char)[[[U+200E]]]] ,[CODE(char)[[[LEFT-TO-RIGHT MARK]]]] ,[CODE(char)[[[U+200F]]]] ,[CODE(char)[[[RIGHT-TO-LEFT MARK]]]] ,[CODE(char)[[[U+2011]]]] ,[CODE(char)[[[NON-BREAKING HYPHEN]]]] ,[CODE(char)[[[U+202F]]]] ,[CODE(char)[[[NARROW NO-BREAK SPACE]]]] ,[CODE(char)[[[U+2044]]]] ,[CODE(char)[[[FRACTION SLASH]]]] ,[CODE(char)[[[U+2060]]]] ,[CODE(char)[[[WORD JOINER]]]] ,[CODE(char)[[[U+2061]]]] ,[CODE(char)[[[FUNCTION APPLICATION]]]] ,[CODE(char)[[[U+2062]]]] ,[CODE(char)[[[INVISIBLE TIMES]]]] ,[CODE(char)[[[U+2063]]]] ,[CODE(char)[[[INVISIBLE SEPARATOR]]]] ,[CODE(char)[[[U+2FF0]]]]〜[CODE(char)[[[U+2FFB]]]] ,Ideographic Description Characters ,[CODE(char)[[[U+303E]]]] ,[CODE(char)[[[IDEOGRAPHIC VARIATION INDICATOR]]]] ,"[CODE(char)[[[U+FE00]]]]〜[CODE(char)[[[U+FE0F]]]], [CODE(char)[[[U+E0100]]]]〜[CODE(char)[[[U+E01DF]]]]" ,Variation Selectors [11] では [Q[Combining Grapheme Joiner]] が [CODE(char)[[[U+0363]]]] になっていますが、 [CODE(char)[U+0363]] は [CODE(char)[[[COMBINING LATIN SMALL LETTER A]]]] だったりします。 [12] ここに挙がっている文字は、大体は、純粋(謎)な文字としての表現と書式 (極端に言えば飾り) との区別が難しい表現を実現するためのものです。 [[ハイフン付け]]関係などは本来マーク + スタイル言語で実現するべきだとは思いますが、 スタイル言語の規格および実装が完成していない現状ではマーク付け言語で使っても仕方がないでしょう。 (といっても文字としても実装されている例はさほどないのだけど。) ただし、 [CODE(char)[FRACTION SLASH]] などは、 [[MathML]] で実現できると書いているくらいですから、 不適当に分類するべきではないですか。 [17] ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... ( ([[Mr.Anonymous]]) [18] ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... ( ([[Mr.Anonymous]]) [[#comment]] * 互換写像を持つ文字 [13] [[互換写像]]を持つ文字を含む文章をマークするときの処遇が に書かれています。 互換写像を持つ文字には、丸付き文字、片仮名の組み文字、 全角文字、半角文字などが含まれます。 いずれも、本来は組版の機能により実現されるべきものですが、 文字コードの闇歴史で次々と実用化(wされてきました (そして Unicode はそれを貪欲に取込んでいます)。 互換写像を持つ文字は、一般には機械的にマークに置き換えることはできません。 ([[不思議マーク付け]]を機械的に [[Strict]] 化できないのと同じ理由。) はどれは機械的に変換できて、どれはとりあえず残すべきかをまとめています。 互換写像を持つ文字は、マーク付けとスタイル指定で置き換えることができます。 ただし、 [[CSS]] ですべてを表現できるわけではありません。 たとえば丸付きは CSS では実現できません。 組み文字のように CSS 3 で実現しそうなものもあります。 [22] ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... ( ([[ikae47k@mail.ru]]) [[#comment]] ** 表現情報付きの文字 [14] によれば、「斜体の [Q[hello]]」はマークで実現するべきだが、 プランク定数 (斜体の [Q[h]]) は [CODE(char)[[[U+210E]]]] を使うべきだと言っています。 [15] しかし >>14 のようなやり方には批判的な意見もあります。 文字コードが深い意味まで介入した結果が [CODE(char)[U+1D400]]〜[CODE(char)[U+1D7FF]] ([Q[Mathematical Alphanumeric Symbols]]) です。 (数式では普通の [Q[a]] と太字の [Q[a]] と 斜体の [Q[a]] と・・・は意味が違うかもしれないから云々の結果、 数学用と称して太字だの斜体だの sans serif だの、 沢山の [Q[a]] が符号化されています。) [19] ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... ( ([[ujy60hf@email.com]]) [20] ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... ( ([[Mr.Anonymous]]) [[#comment]] * 非文字 [16] [[非文字]]符号位置は、応用が内部で使ってもかまいませんが、情報交換に用いるべきではありません。 [[XML1.1]] では非文字は除外されていますが、 [[XML1.0]] は制定時期の関係から多くの非文字は除外されていません。 [21] ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... ( ([[Mr.Anonymous]]) [[#comment]] * メモ