1 |
wakaba |
1.2 |
|
2 |
wakaba |
1.4 |
* 適合性
|
3 |
|
|
|
4 |
|
|
- ○: 適合
|
5 |
|
|
- ×: 不適合
|
6 |
|
|
|
7 |
|
|
, ,[[XML 1.0]] (文字),[[XML 1.1]] (文字),[[HTML]] (文字),[[XML 1.0]] (文字参照),[[XML 1.1]] (文字参照),[[HTML]] (文字参照)
|
8 |
|
|
,[CODE(char)[[[U+0000]]]] ([CODE(charname)@en[[[NULL]]]]),×
|
9 |
|
|
,[CODE(char)[[[U+0001]]]]-[CODE(char)[[[U+0008]]]],×
|
10 |
|
|
,[CODE(char)[[[U+0009]]]] (タブ),○
|
11 |
|
|
,[CODE(char)[[[U+000A]]]] ([CODE(charname)@en[[[LF]]]]),○
|
12 |
|
|
,[CODE(char)[[[U+000B]]]],×
|
13 |
|
|
,[CODE(char)[[[U+000C]]]] ([CODE(charname)@en[[[FF]]]]),×
|
14 |
|
|
,[CODE(char)[[[U+000D]]]] ([CODE(charname)@en[[[CR]]]]),○ (正規化される)
|
15 |
|
|
,[CODE(char)[[[U+000E]]]]-[CODE(char)[[[U+001F]]]],×
|
16 |
|
|
,[CODE(char)[[[U+007F]]]] ([CODE(charname)@en[[[DEL]]]]),○ (非推奨)
|
17 |
|
|
,[CODE(char)[[[U+0080]]]]-[CODE(char)[[[U+009F]]]],○ (非推奨)
|
18 |
|
|
,[CODE(char)[[[U+D800]]]]-[CODE(char)[[[U+DFFF]]]] ([[surrogate]]),×
|
19 |
|
|
,[CODE(char)[[[U+FDD0]]]]-[CODE(char)[[[U+FDEF]]]] ([[非文字]]),○ (非推奨)
|
20 |
|
|
,[CODE(char)[[[U+FFFE]]]]-[CODE(char)[[[U+FFFF]]]] ([[非文字]]),×
|
21 |
|
|
,[CODE(char)[U+[VAR[???]]FE]]-[CODE(char)[U+[VAR[???]]FF]] ([[非文字]]),○ (非推奨)
|
22 |
|
|
,[CODE(char)[[[U+10FFFE]]]]-[CODE(char)[[[U+10FFFF]]]] ([[非文字]]),○ (非推奨)
|
23 |
|
|
|
24 |
wakaba |
1.3 |
* Unicoder によるところの XML における文字の好ましい扱い
|
25 |
|
|
|
26 |
wakaba |
1.2 |
[1] 『Unicode in XML and other Markup Languages』
|
27 |
|
|
という [[W3C]] [[Note]]
|
28 |
|
|
<http://www.w3.org/TR/unicode-xml/>
|
29 |
|
|
/ [[UTR]] #20
|
30 |
|
|
<http://www.unicode.org/reports/tr20/>
|
31 |
|
|
は、[[マーク付け言語]]で使うべきではない[[文字]]などを解説しています。
|
32 |
|
|
マーク付け言語としては主として [[XML]]、
|
33 |
|
|
ある程度は [[HTML]] を対象としています。
|
34 |
|
|
|
35 |
wakaba |
1.3 |
** マーク付け言語で不適切な文字
|
36 |
wakaba |
1.2 |
|
37 |
|
|
[2] 次の文字はマーク付け言語と一緒に使用するのは不適当です。
|
38 |
|
|
行分離子 [CODE(char)[[[LS]]]], 段落分離子 [CODE(char)[[[PS]]]], バイト順印 [CODE(char)[[[BOM]]]]
|
39 |
|
|
を除いては、 [[UA]] は無視するのもよし。
|
40 |
|
|
適当なマークに変換するのは[[著述工具]]の責任だそうです。
|
41 |
|
|
|
42 |
|
|
,[[符号位置]] ,[[名前]] ,HTML での代替 ,メモ
|
43 |
|
|
,[CODE(char)[[[U+2028]]]] ,[CODE(char)[[[LINE SEPARATOR]]]] ,[CODE(HTMLe)[[[br]]]] ,>>4
|
44 |
|
|
,[CODE(char)[[[U+2029]]]] ,[CODE(char)[[[PARAGRAPH SEPARATOR]]]] ,[CODE(HTMLe)[[[p]]]] ,>.4
|
45 |
|
|
,[CODE(char)[[[U+202A]]]] ,[CODE(char)[[[LEFT-TO-RIGHT EMBEDDING]]]] ,[CODE(HTML)[[CODE(HTMLa)[[[dir]]]]=[[ltr]]]] ,>>3
|
46 |
|
|
,[CODE(char)[[[U+202B]]]] ,[CODE(char)[[[RIGHT-TO-LEFT EMBEDDING]]]] ,[CODE(HTML)[[CODE(HTMLa)[dir]]=[[rtl]]]] ,>>3
|
47 |
|
|
,[CODE(char)[[[U+202C]]]] ,[CODE(char)[[[POP DIRECTIONAL FORMATTING]]]] ,[CODE(HTML)[</[CODE(HTMLe)[[[bdo]]]]>]] ,>>3
|
48 |
|
|
,[CODE(char)[[[U+202D]]]] ,[CODE(char)[[[LEFT-TO-RIGHT OVERRIDE]]]] ,[CODE(HTML)[<[CODE(HTMLe)[bdo]] [CODE(HTMLa)[dir]]=ltr>]] ,>>3
|
49 |
|
|
,[CODE(char)[[[U+202E]]]] ,[CODE(char)[[[RIGHT-TO-LEFT-OVERRIDE]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[bdo]]]] [CODE(HTMLa)[dir]]=rtl>]] ,>>3
|
50 |
|
|
,[CODE(char)[[[U+206A]]]] ,[CODE(char)[[[INHIBIT SYMMETRIC SWAPPING]]]] , ,Unicode で非推奨 >>5
|
51 |
|
|
,[CODE(char)[[[U+206B]]]] ,[CODE(char)[[[ACTIVATE SYMMETRIC SWAPPING]]]] , ,Unicode で非推奨 >>5
|
52 |
|
|
,[CODE(char)[[[U+206C]]]] ,[CODE(char)[[[INHIBIT ARABIC FORM SHAPING]]]] , ,Unicode で非推奨 >>5
|
53 |
|
|
,[CODE(char)[[[U+206D]]]] ,[CODE(char)[[[ACTIVATE ARABIC FORM SHAPING]]]] , ,Unicode で非推奨 >>5
|
54 |
|
|
,[CODE(char)[[[U+206E]]]] ,[CODE(char)[[[NATIONAL DIGIT SHAPES]]]] ,[CODE(char)[[[U+0660]]]]〜[CODE(char)[[[U+0669]]]] ,Unicode で非推奨 >>5
|
55 |
|
|
,[CODE(char)[[[U+206F]]]] ,[CODE(char)[[[NOMINAL DIGIT SHAPES]]]] ,[CODE(char)[[[U+0030]]]]〜[CODE(char)[[[U+0039]]]] ,Unicode で非推奨 >>5
|
56 |
|
|
,[CODE(char)[[[U+FEFF]]]] ,[CODE(char)[[[ZERO WIDTH NO-BREAK SPACE]]]] ,[CODE(char)[[[U+2060]]]] ,Unicode で非推奨 >>6
|
57 |
|
|
,[CODE(char)[[[U+FFF9]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION ANCHOR]]]] ,[CODE(HTML)[<[CODE(HTMLe)[[[ruby]]]]><[CODE(HTMLe)[[[rb]]]]>]] ,>>7
|
58 |
|
|
,[CODE(char)[[[U+FFFA]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION SEPARATOR]]]] ,[CODE(HTML)[</[CODE(HTMLe)[rb]]><[CODE(HTMLe)[[[rt]]]]>]] ,>>7
|
59 |
|
|
,[CODE(char)[[[U+FFFB]]]] ,[CODE(char)[[[INTERLINEAR ANNOTATION TERMINATOR]]]] ,[CODE(HTML)[</[CODE(HTMLe)[rt]]></[CODE(HTMLe)[ruby]]>]] ,>7
|
60 |
|
|
,[CODE(char)[[[U+FFFC]]]] ,[CODE(char)[[[OBJECT REPLACEMENT CHARACTER]]]] ,[CODE(HTMLe)[[[object]]]] など ,>>8
|
61 |
|
|
,[CODE(char)[[[U+1D173]]]]〜[CODE(char)[[[U+1D17A]]]] ,"[[タイ]], [[スラー]]など" , ,>>9
|
62 |
|
|
,[CODE(char)[[[U+E0000]]]]〜[CODE(char)[[[U+E007F]]]] ,[CODE(char)[Tags]] ,"[CODE(XML)[[[xml]]:[[lang]]]], [CODE(HTMLa)[lang]]" ,>>9
|
63 |
|
|
|
64 |
|
|
参考: <http://www.w3.org/TR/unicode-xml/#Suitable>
|
65 |
|
|
|
66 |
|
|
[4] [CODE(char)[[[LS]]]] と [CODE(char)[[[PS]]]] は、
|
67 |
|
|
ブラウザは[[空白]]とし、編集時は適当なマークに置き換えるのが適切です。
|
68 |
|
|
|
69 |
|
|
[3] [[BIDI]] 系は [Q[Strongly discouraged in [HTML 4.0] ]]
|
70 |
|
|
などと書かれていますが、 HTML 4 が激しく非推奨しているように読めて紛らわしい。
|
71 |
|
|
(<IW:HTML4:"struct/dirlang.html#h-8.2.4"> にはそんなことは書かれていません。)
|
72 |
|
|
|
73 |
|
|
<http://www.w3.org/TR/unicode-xml/#Bidi> で、
|
74 |
|
|
HTML 4 は文字コードによる[[書字方向]]指定と
|
75 |
|
|
HTML のマークによる指定のいずれかだけを使うように求めているが、
|
76 |
|
|
文字コードによる指定は処理が複雑になってよくないのでマークを使えと言っています。
|
77 |
|
|
|
78 |
|
|
ブラウザは無視し、編集時はマークに変換するのがいいそうです。
|
79 |
|
|
|
80 |
|
|
[5] [[DIS10646]] の遺産。ブラウザは無視したらよく、
|
81 |
|
|
編集時は警告でもして削除するのがよいですが、
|
82 |
|
|
適当に変換してもいいでしょう。ということです。
|
83 |
|
|
|
84 |
|
|
[6] [CODE(char)[U+FEFF]] は、 [CODE(char)[ZERO WIDTH NO-BREAK SPACE]] と [CODE(char)[[[BYTE ORDER MARK]]]]
|
85 |
|
|
の二つの機能を一つの符号位置に押し込んで、
|
86 |
|
|
あとから都合が悪くなったので [CODE(char)[[[ZWNBSP]]]]
|
87 |
|
|
の機能を [CODE(char)[U+2026]] [CODE(char)[WORD JOINER]]
|
88 |
|
|
として分離したという恥ずかしい前歴があります。
|
89 |
|
|
|
90 |
|
|
従って今では [CODE(char)[U+FEFF]] を
|
91 |
|
|
[CODE(char)[ZWNBSP]] として使用することは Unicode
|
92 |
|
|
が非推奨としています。
|
93 |
|
|
|
94 |
|
|
ブラウザは文中の [CODE(char)[U+FEFF]] は
|
95 |
|
|
[CODE(char)[ZWNBSP]] として扱い、編集時は
|
96 |
|
|
[CODE(char)[[[ZWJ]]]] に置き換えてしまう[[及び/又は]]警告を発してよいとされています。
|
97 |
|
|
|
98 |
|
|
[7] Unicode に通称 ruby tag が入った経緯は
|
99 |
|
|
<http://www.kobysh.com/tlk/digitalculture/1998-ruby.html>
|
100 |
|
|
でも見てください。阿呆らしい。
|
101 |
|
|
|
102 |
|
|
ブラウザは無視してかまいません。
|
103 |
|
|
編集時は次のひとつ以上の動作を取ってかまいません。
|
104 |
|
|
- [CODE(char)[U+FFF9]] および [CODE(char)[U+FFFA]]〜[CODE(char)[U+FFFB]] の部分を削除
|
105 |
|
|
- [CODE(char)[U+FFF9]] を削除、
|
106 |
|
|
[CODE(char)[U+FFFA]] と [CODE(char)[U+FFFB]] をそれぞれ
|
107 |
|
|
[CODE(char)[ [ ]] と [CODE(char)[ ] ]] に置換
|
108 |
|
|
- 適当なマークに置換
|
109 |
|
|
|
110 |
|
|
(ブラウザも完全に無視したら駄目だと思うのだけどなあ。
|
111 |
|
|
[CODE(HTMLe)[rt]] 部分を削除しないと。)
|
112 |
|
|
|
113 |
|
|
[8] ブラウザは無視してかまいません。
|
114 |
|
|
編集時は適当なマークに置換可能ならそうしてもいいし、
|
115 |
|
|
警告を出せるなら出して、削除してしまってかまいません。
|
116 |
|
|
|
117 |
|
|
[9] ブラウザは無視してかまいません。
|
118 |
|
|
編集時には削除しても適当なマークに置換してもかまいません。
|
119 |
|
|
|
120 |
wakaba |
1.3 |
** マーク付け言語で適当な書式文字
|
121 |
wakaba |
1.2 |
|
122 |
|
|
[10] <http://www.w3.org/TR/unicode-xml/#Format>
|
123 |
|
|
がマーク付け言語で使うのは適切だと言っている文字と、
|
124 |
|
|
その説明をどうぞ:
|
125 |
|
|
|
126 |
|
|
,符号位置 ,名前 ,メモ
|
127 |
|
|
,[CODE(char)[[[U+00A0]]]] ,[CODE(char)[[[NO-BREAK SPACE]]]]
|
128 |
|
|
,[CODE(char)[[[U+00AD]]]] ,[CODE(char)[[[SOFT HYPHEN]]]]
|
129 |
|
|
,[CODE(char)[[[U+034F]]]] ,[CODE(char)[[[COMBINING GRAPHEME JOINER]]]] ,>>11
|
130 |
|
|
,[CODE(char)[[[U+0600]]]] ,[CODE(char)[[[ARABIC NUMBER SIGN]]]]
|
131 |
|
|
,[CODE(char)[[[U+0601]]]] ,[CODE(char)[[[ARABIC SIGN SANAH]]]]
|
132 |
|
|
,[CODE(char)[[[U+0602]]]] ,[CODE(char)[[[ARABIC FOOTNOTE MARKER]]]]
|
133 |
|
|
,[CODE(char)[[[U+0603]]]] ,[CODE(char)[[[ARABIC SIGN SAFHA]]]]
|
134 |
|
|
,[CODE(char)[[[U+06DD]]]] ,[CODE(char)[[[ARABIC END OF AYAH]]]]
|
135 |
|
|
,[CODE(char)[[[U+070C]]]] ,[CODE(char)[[[SYRIAC HARKLEAN METOBELUS]]]]
|
136 |
|
|
,[CODE(char)[[[U+0F0C]]]] ,[CODE(char)[[[TIBETAN MARK DELIMITER TSHEG BSTAR]]]]
|
137 |
|
|
,[CODE(char)[[[U+180B]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR ONE]]]]
|
138 |
|
|
,[CODE(char)[[[U+180C]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR TWO]]]]
|
139 |
|
|
,[CODE(char)[[[U+180D]]]] ,[CODE(char)[[[MONGOLIAN FREE VARIATION SELECTOR THREE]]]]
|
140 |
|
|
,[CODE(char)[[[U+180E]]]] ,[CODE(char)[[[MONGOLIAN VOWEL SEPARATOR]]]]
|
141 |
|
|
,[CODE(char)[[[U+200C]]]] ,[CODE(char)[[[ZERO WIDTH NON-JOINER]]]]
|
142 |
|
|
,[CODE(char)[[[U+200D]]]] ,[CODE(char)[[[ZERO WIDTH JOINER]]]]
|
143 |
|
|
,[CODE(char)[[[U+200E]]]] ,[CODE(char)[[[LEFT-TO-RIGHT MARK]]]]
|
144 |
|
|
,[CODE(char)[[[U+200F]]]] ,[CODE(char)[[[RIGHT-TO-LEFT MARK]]]]
|
145 |
|
|
,[CODE(char)[[[U+2011]]]] ,[CODE(char)[[[NON-BREAKING HYPHEN]]]]
|
146 |
|
|
,[CODE(char)[[[U+202F]]]] ,[CODE(char)[[[NARROW NO-BREAK SPACE]]]]
|
147 |
|
|
,[CODE(char)[[[U+2044]]]] ,[CODE(char)[[[FRACTION SLASH]]]]
|
148 |
|
|
,[CODE(char)[[[U+2060]]]] ,[CODE(char)[[[WORD JOINER]]]]
|
149 |
|
|
,[CODE(char)[[[U+2061]]]] ,[CODE(char)[[[FUNCTION APPLICATION]]]]
|
150 |
|
|
,[CODE(char)[[[U+2062]]]] ,[CODE(char)[[[INVISIBLE TIMES]]]]
|
151 |
|
|
,[CODE(char)[[[U+2063]]]] ,[CODE(char)[[[INVISIBLE SEPARATOR]]]]
|
152 |
|
|
,[CODE(char)[[[U+2FF0]]]]〜[CODE(char)[[[U+2FFB]]]] ,Ideographic Description Characters
|
153 |
|
|
,[CODE(char)[[[U+303E]]]] ,[CODE(char)[[[IDEOGRAPHIC VARIATION INDICATOR]]]]
|
154 |
|
|
,"[CODE(char)[[[U+FE00]]]]〜[CODE(char)[[[U+FE0F]]]], [CODE(char)[[[U+E0100]]]]〜[CODE(char)[[[U+E01DF]]]]" ,Variation Selectors
|
155 |
|
|
|
156 |
|
|
[11] <http://www.w3.org/TR/2003/NOTE-unicode-xml-20030613/#Format>
|
157 |
|
|
では [Q[Combining Grapheme Joiner]]
|
158 |
|
|
が [CODE(char)[[[U+0363]]]] になっていますが、
|
159 |
|
|
[CODE(char)[U+0363]] は [CODE(char)[[[COMBINING LATIN SMALL LETTER A]]]] だったりします。
|
160 |
|
|
|
161 |
|
|
[12] ここに挙がっている文字は、大体は、純粋(謎)な文字としての表現と書式 (極端に言えば飾り) との区別が難しい表現を実現するためのものです。
|
162 |
|
|
[[ハイフン付け]]関係などは本来マーク + スタイル言語で実現するべきだとは思いますが、
|
163 |
|
|
スタイル言語の規格および実装が完成していない現状ではマーク付け言語で使っても仕方がないでしょう。
|
164 |
|
|
(といっても文字としても実装されている例はさほどないのだけど。)
|
165 |
|
|
|
166 |
|
|
ただし、 [CODE(char)[FRACTION SLASH]] などは、
|
167 |
|
|
[[MathML]] で実現できると書いているくらいですから、
|
168 |
|
|
不適当に分類するべきではないですか。
|
169 |
|
|
|
170 |
wakaba |
1.3 |
** 互換写像を持つ文字
|
171 |
wakaba |
1.2 |
|
172 |
|
|
[13] [[互換写像]]を持つ文字を含む文章をマークするときの処遇が
|
173 |
|
|
<http://www.w3.org/TR/unicode-xml/#Compatibility>
|
174 |
|
|
に書かれています。
|
175 |
|
|
|
176 |
|
|
互換写像を持つ文字には、丸付き文字、片仮名の組み文字、
|
177 |
|
|
全角文字、半角文字などが含まれます。
|
178 |
|
|
いずれも、本来は組版の機能により実現されるべきものですが、
|
179 |
|
|
文字コードの闇歴史で次々と実用化(wされてきました
|
180 |
|
|
(そして Unicode はそれを貪欲に取込んでいます)。
|
181 |
|
|
|
182 |
|
|
互換写像を持つ文字は、一般には機械的にマークに置き換えることはできません。
|
183 |
|
|
([[不思議マーク付け]]を機械的に [[Strict]] 化できないのと同じ理由。)
|
184 |
|
|
<http://www.w3.org/TR/unicode-xml/#Compatibility>
|
185 |
|
|
はどれは機械的に変換できて、どれはとりあえず残すべきかをまとめています。
|
186 |
|
|
|
187 |
|
|
互換写像を持つ文字は、マーク付けとスタイル指定で置き換えることができます。
|
188 |
|
|
ただし、 [[CSS]] ですべてを表現できるわけではありません。
|
189 |
|
|
たとえば丸付きは CSS では実現できません。
|
190 |
|
|
組み文字のように CSS 3 で実現しそうなものもあります。
|
191 |
|
|
|
192 |
wakaba |
1.3 |
*** 表現情報付きの文字
|
193 |
wakaba |
1.2 |
|
194 |
|
|
[14] <http://www.w3.org/TR/unicode-xml/#Generating>
|
195 |
|
|
によれば、「斜体の [Q[hello]]」はマークで実現するべきだが、
|
196 |
|
|
プランク定数 (斜体の [Q[h]]) は [CODE(char)[[[U+210E]]]]
|
197 |
|
|
を使うべきだと言っています。
|
198 |
|
|
|
199 |
|
|
[15] しかし >>14 のようなやり方には批判的な意見もあります。
|
200 |
|
|
文字コードが深い意味まで介入した結果が
|
201 |
|
|
[CODE(char)[U+1D400]]〜[CODE(char)[U+1D7FF]]
|
202 |
|
|
([Q[Mathematical Alphanumeric Symbols]]) です。
|
203 |
|
|
(数式では普通の [Q[a]] と太字の [Q[a]] と 斜体の
|
204 |
|
|
[Q[a]] と・・・は意味が違うかもしれないから云々の結果、
|
205 |
|
|
数学用と称して太字だの斜体だの sans serif だの、
|
206 |
|
|
沢山の [Q[a]] が符号化されています。)
|
207 |
|
|
|
208 |
wakaba |
1.3 |
** 非文字
|
209 |
wakaba |
1.2 |
|
210 |
|
|
[16] [[非文字]]符号位置は、応用が内部で使ってもかまいませんが、情報交換に用いるべきではありません。
|
211 |
|
|
<http://www.w3.org/TR/unicode-xml/#Noncharacters>
|
212 |
|
|
|
213 |
|
|
[[XML1.1]] では非文字は除外されていますが、
|
214 |
|
|
[[XML1.0]] は制定時期の関係から多くの非文字は除外されていません。
|