/[pub]/suikawiki/sw4data/ids/8/748.txt
Suika

Contents of /suikawiki/sw4data/ids/8/748.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations) (download)
Tue May 8 12:53:16 2012 UTC (13 years, 1 month ago) by wakaba
Branch: MAIN
Changes since 1.2: +7 -12 lines
File MIME type: text/plain
updated by (anon)

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24