Dead
[official-gcc.git] / gomp-20050608-branch / libjava / classpath / doc / unicode / UnicodeData-3.0.0.html
bloba08a25ec75328c07b2c9f4a8fdf79e4ab93ebc48
1 <html>
5 <head>
7 <meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 4.0">
9 <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
11 <link REL="stylesheet" HREF="http://www.unicode.org/unicode.css" TYPE="text/css">
13 <title>UnicodeData File Format</title>
15 </head>
19 <body>
23 <h1>UnicodeData File Format<br>
24 Version 3.0.0</h1>
28 <table BORDER="1" CELLSPACING="2" CELLPADDING="0" HEIGHT="87" WIDTH="100%">
30 <tr>
32 <td VALIGN="TOP" width="144">Revision</td>
34 <td VALIGN="TOP">3.0.0</td>
36 </tr>
38 <tr>
40 <td VALIGN="TOP" width="144">Authors</td>
42 <td VALIGN="TOP">Mark Davis and Ken Whistler</td>
44 </tr>
46 <tr>
48 <td VALIGN="TOP" width="144">Date</td>
50 <td VALIGN="TOP">1999-09-12</td>
52 </tr>
54 <tr>
56 <td VALIGN="TOP" width="144">This Version</td>
58 <td VALIGN="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td>
60 </tr>
62 <tr>
64 <td VALIGN="TOP" width="144">Previous Version</td>
66 <td VALIGN="TOP">n/a</td>
68 </tr>
70 <tr>
72 <td VALIGN="TOP" width="144">Latest Version</td>
74 <td VALIGN="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td>
76 </tr>
78 </table>
82 <p align="center">Copyright © 1995-1999 Unicode, Inc. All Rights reserved.<br>
84 <i>For more information, including Disclamer and Limitations, see <a HREF="UnicodeCharacterDatabase-3.0.0.html">UnicodeCharacterDatabase-3.0.0.html</a> </i></p>
88 <p>This document describes the format of the UnicodeData.txt file, which is one of the
90 files in the Unicode Character Database. The document is divided into the following
92 sections:
96 <ul>
98 <li><a HREF="#Field Formats">Field Formats</a> <ul>
100 <li><a HREF="#General Category">General Category</a> </li>
102 <li><a HREF="#Bidirectional Category">Bidirectional Category</a> </li>
104 <li><a HREF="#Character Decomposition">Character Decomposition Mapping</a> </li>
106 <li><a HREF="#Canonical Combining Classes">Canonical Combining Classes</a> </li>
108 <li><a HREF="#Decompositions and Normalization">Decompositions and Normalization</a> </li>
110 <li><a HREF="#Case Mappings">Case Mappings</a> </li>
112 </ul>
114 </li>
116 <li><a HREF="#Property Invariants">Property Invariants</a> </li>
118 <li><a HREF="#Modification History">Modification History</a> </li>
120 </ul>
124 <p><b>Warning: </b>the information in this file does not completely describe the use and
126 interpretation of Unicode character properties and behavior. It must be used in
128 conjunction with the data in the other files in the Unicode Character Database, and relies
130 on the notation and definitions supplied in <i><a href="http://www.unicode.org/unicode/standard/versions/Unicode3.0.html"> The Unicode
131 Standard</a></i>. All chapter references
133 are to Version 3.0 of the standard.</p>
137 <h2><a NAME="Field Formats"></a>Field Formats</h2>
141 <p>The file consists of lines containing fields terminated by semicolons. Each line
143 represents the data for one encoded character in the Unicode Standard. Every encoded
145 character has a data entry, with the exception of certain special ranges, as detailed
147 below.
151 <ul>
153 <li>There are six special ranges of characters that are represented only by their start and
155 end characters, since the properties in the file are uniform, except for code values
157 (which are all sequential and assigned). </li>
159 <li>The names of CJK ideograph characters and the names and decompositions of Hangul
161 syllable characters are algorithmically derivable. (See the Unicode Standard and <a
163 HREF="http://www.unicode.org/unicode/reports/tr15/">Unicode Technical Report #15</a> for
165 more information). </li>
167 <li>Surrogate code values and private use characters have no names. </li>
169 <li>The Private Use character outside of the BMP (U+F0000..U+FFFFD, U+100000..U+10FFFD) are
171 not listed. These correspond to surrogate pairs where the first surrogate is in the High
173 Surrogate Private Use section. </li>
175 </ul>
179 <p>The exact ranges represented by start and end characters are:
183 <ul>
185 <li>CJK Ideographs Extension A (U+3400 - U+4DB5) </li>
187 <li>CJK Ideographs (U+4E00 - U+9FA5) </li>
189 <li>Hangul Syllables (U+AC00 - U+D7A3) </li>
191 <li>Non-Private Use High Surrogates (U+D800 - U+DB7F) </li>
193 <li>Private Use High Surrogates (U+DB80 - U+DBFF) </li>
195 <li>Low Surrogates (U+DC00 - U+DFFF) </li>
197 <li>The Private Use Area (U+E000 - U+F8FF) </li>
199 </ul>
203 <p>The following table describes the format and meaning of each field in a data entry in
205 the UnicodeData file. Fields which contain normative information are so indicated.</p>
209 <table BORDER="1" CELLSPACING="2" CELLPADDING="2">
211 <tr>
213 <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Field</th>
215 <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Name</th>
217 <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Status</th>
219 <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Explanation</th>
221 </tr>
223 <tr>
225 <th VALIGN="top">0</th>
227 <td VALIGN="top">Code value</td>
229 <td VALIGN="top">normative</td>
231 <td VALIGN="top">Code value in 4-digit hexadecimal format.</td>
233 </tr>
235 <tr>
237 <th VALIGN="top">1</th>
239 <td VALIGN="top">Character name</td>
241 <td VALIGN="top">normative</td>
243 <td VALIGN="top">These names match exactly the names published in Chapter 14 of the
245 Unicode Standard, Version 3.0.</td>
247 </tr>
249 <tr>
251 <th VALIGN="top">2</th>
253 <td VALIGN="top"><a HREF="#General Category">General Category</a> </td>
255 <td VALIGN="top">normative / informative<br>
257 (see below)</td>
259 <td VALIGN="top">This is a useful breakdown into various &quot;character types&quot; which
261 can be used as a default categorization in implementations. See below for a brief
263 explanation.</td>
265 </tr>
267 <tr>
269 <th VALIGN="top">3</th>
271 <td VALIGN="top"><a HREF="#Canonical Combining Classes">Canonical Combining Classes</a> </td>
273 <td VALIGN="top">normative</td>
275 <td VALIGN="top">The classes used for the Canonical Ordering Algorithm in the Unicode
277 Standard. These classes are also printed in Chapter 4 of the Unicode Standard.</td>
279 </tr>
281 <tr>
283 <th VALIGN="top">4</th>
285 <td VALIGN="top"><a HREF="#Bidirectional Category">Bidirectional Category</a> </td>
287 <td VALIGN="top">normative</td>
289 <td VALIGN="top">See the list below for an explanation of the abbreviations used in this
291 field. These are the categories required by the Bidirectional Behavior Algorithm in the
293 Unicode Standard. These categories are summarized in Chapter 3 of the Unicode Standard.</td>
295 </tr>
297 <tr>
299 <th VALIGN="top">5</th>
301 <td VALIGN="top"><a HREF="#Character Decomposition">Character Decomposition
302 Mapping</a></td>
304 <td VALIGN="top">normative</td>
306 <td VALIGN="top">In the Unicode Standard, not all of the mappings are full (maximal)
308 decompositions. Recursive application of look-up for decompositions will, in all cases,
310 lead to a maximal decomposition. The decomposition mappings match exactly the
312 decomposition mappings published with the character names in the Unicode Standard.</td>
314 </tr>
316 <tr>
318 <th VALIGN="top">6</th>
320 <td VALIGN="top">Decimal digit value</td>
322 <td VALIGN="top">normative</td>
324 <td VALIGN="top">This is a numeric field. If the character has the decimal digit property,
326 as specified in Chapter 4 of the Unicode Standard, the value of that digit is represented
328 with an integer value in this field</td>
330 </tr>
332 <tr>
334 <th VALIGN="top">7</th>
336 <td VALIGN="top">Digit value</td>
338 <td VALIGN="top">normative</td>
340 <td VALIGN="top">This is a numeric field. If the character represents a digit, not
342 necessarily a decimal digit, the value is here. This covers digits which do not form
344 decimal radix forms, such as the compatibility superscript digits</td>
346 </tr>
348 <tr>
350 <th VALIGN="top">8</th>
352 <td VALIGN="top">Numeric value</td>
354 <td VALIGN="top">normative</td>
356 <td VALIGN="top">This is a numeric field. If the character has the numeric property, as
358 specified in Chapter 4 of the Unicode Standard, the value of that character is represented
360 with an integer or rational number in this field. This includes fractions as, e.g.,
362 &quot;1/5&quot; for U+2155 VULGAR FRACTION ONE FIFTH Also included are numerical values
364 for compatibility characters such as circled numbers.</td>
366 </tr>
368 <tr>
370 <th VALIGN="top">8</th>
372 <td VALIGN="top">Mirrored</td>
374 <td VALIGN="top">normative</td>
376 <td VALIGN="top">If the character has been identified as a &quot;mirrored&quot; character
378 in bidirectional text, this field has the value &quot;Y&quot;; otherwise &quot;N&quot;.
380 The list of mirrored characters is also printed in Chapter 4 of the Unicode Standard.</td>
382 </tr>
384 <tr>
386 <th VALIGN="top">10</th>
388 <td VALIGN="top">Unicode 1.0 Name</td>
390 <td VALIGN="top">informative</td>
392 <td VALIGN="top">This is the old name as published in Unicode 1.0. This name is only
394 provided when it is significantly different from the Unicode 3.0 name for the character.</td>
396 </tr>
398 <tr>
400 <th VALIGN="top">11</th>
402 <td VALIGN="top">10646 comment field</td>
404 <td VALIGN="top">informative</td>
406 <td VALIGN="top">This is the ISO 10646 comment field. It is in parantheses in the 10646
408 names list.</td>
410 </tr>
412 <tr>
414 <th VALIGN="top">12</th>
416 <td VALIGN="top"><a HREF="#Case Mappings">Uppercase Mapping</a></td>
418 <td VALIGN="top">informative</td>
420 <td VALIGN="top">Upper case equivalent mapping. If a character is part of an alphabet with
422 case distinctions, and has an upper case equivalent, then the upper case equivalent is in
424 this field. See the explanation below on case distinctions. These mappings are always
426 one-to-one, not one-to-many or many-to-one. This field is informative.</td>
428 </tr>
430 <tr>
432 <th VALIGN="top">13</th>
434 <td VALIGN="top"><a HREF="#Case Mappings">Lowercase Mapping</a></td>
436 <td VALIGN="top">informative</td>
438 <td VALIGN="top">Similar to Uppercase mapping</td>
440 </tr>
442 <tr>
444 <th VALIGN="top">14</th>
446 <td VALIGN="top"><a HREF="#Case Mappings">Titlecase Mapping</a></td>
448 <td VALIGN="top">informative</td>
450 <td VALIGN="top">Similar to Uppercase mapping</td>
452 </tr>
454 </table>
458 <h3><a NAME="General Category"></a>General Category</h3>
462 <p>The values in this field are abbreviations for the following. Some of the values are
464 normative, and some are informative. For more information, see the Unicode Standard.</p>
468 <p><b>Note:</b> the standard does not assign information to control characters (except for
470 certain cases in the Bidirectional Algorithm). Implementations will generally also assign
472 categories to certain control characters, notably CR and LF, according to platform
474 conventions.</p>
478 <h4>Normative Categories</h4>
482 <table BORDER="0" CELLSPACING="2" CELLPADDING="0">
484 <tr>
486 <th><p ALIGN="LEFT">Abbr.</th>
488 <th><p ALIGN="LEFT">Description</th>
490 </tr>
492 <tr>
494 <td ALIGN="CENTER">Lu</td>
496 <td>Letter, Uppercase</td>
498 </tr>
500 <tr>
502 <td ALIGN="CENTER">Ll</td>
504 <td>Letter, Lowercase</td>
506 </tr>
508 <tr>
510 <td ALIGN="CENTER">Lt</td>
512 <td>Letter, Titlecase</td>
514 </tr>
516 <tr>
518 <td ALIGN="CENTER">Mn</td>
520 <td>Mark, Non-Spacing</td>
522 </tr>
524 <tr>
526 <td ALIGN="CENTER">Mc</td>
528 <td>Mark, Spacing Combining</td>
530 </tr>
532 <tr>
534 <td ALIGN="CENTER">Me</td>
536 <td>Mark, Enclosing</td>
538 </tr>
540 <tr>
542 <td ALIGN="CENTER">Nd</td>
544 <td>Number, Decimal Digit</td>
546 </tr>
548 <tr>
550 <td ALIGN="CENTER">Nl</td>
552 <td>Number, Letter</td>
554 </tr>
556 <tr>
558 <td ALIGN="CENTER">No</td>
560 <td>Number, Other</td>
562 </tr>
564 <tr>
566 <td ALIGN="CENTER">Zs</td>
568 <td>Separator, Space</td>
570 </tr>
572 <tr>
574 <td ALIGN="CENTER">Zl</td>
576 <td>Separator, Line</td>
578 </tr>
580 <tr>
582 <td ALIGN="CENTER">Zp</td>
584 <td>Separator, Paragraph</td>
586 </tr>
588 <tr>
590 <td ALIGN="CENTER">Cc</td>
592 <td>Other, Control</td>
594 </tr>
596 <tr>
598 <td ALIGN="CENTER">Cf</td>
600 <td>Other, Format</td>
602 </tr>
604 <tr>
606 <td ALIGN="CENTER">Cs</td>
608 <td>Other, Surrogate</td>
610 </tr>
612 <tr>
614 <td ALIGN="CENTER">Co</td>
616 <td>Other, Private Use</td>
618 </tr>
620 <tr>
622 <td ALIGN="CENTER">Cn</td>
624 <td>Other, Not Assigned (no characters in the file have this property)</td>
626 </tr>
628 </table>
632 <h4>Informative Categories</h4>
636 <table BORDER="0" CELLSPACING="2" CELLPADDING="0">
638 <tr>
640 <th><p ALIGN="LEFT">Abbr.</th>
642 <th><p ALIGN="LEFT">Description</th>
644 </tr>
646 <tr>
648 <td ALIGN="CENTER">Lm</td>
650 <td>Letter, Modifier</td>
652 </tr>
654 <tr>
656 <td ALIGN="CENTER">Lo</td>
658 <td>Letter, Other</td>
660 </tr>
662 <tr>
664 <td ALIGN="CENTER">Pc</td>
666 <td>Punctuation, Connector</td>
668 </tr>
670 <tr>
672 <td ALIGN="CENTER">Pd</td>
674 <td>Punctuation, Dash</td>
676 </tr>
678 <tr>
680 <td ALIGN="CENTER">Ps</td>
682 <td>Punctuation, Open</td>
684 </tr>
686 <tr>
688 <td ALIGN="CENTER">Pe</td>
690 <td>Punctuation, Close</td>
692 </tr>
694 <tr>
696 <td ALIGN="CENTER">Pi</td>
698 <td>Punctuation, Initial quote (may behave like Ps or Pe depending on usage)</td>
700 </tr>
702 <tr>
704 <td ALIGN="CENTER">Pf</td>
706 <td>Punctuation, Final quote (may behave like Ps or Pe depending on usage)</td>
708 </tr>
710 <tr>
712 <td ALIGN="CENTER">Po</td>
714 <td>Punctuation, Other</td>
716 </tr>
718 <tr>
720 <td ALIGN="CENTER">Sm</td>
722 <td>Symbol, Math</td>
724 </tr>
726 <tr>
728 <td ALIGN="CENTER">Sc</td>
730 <td>Symbol, Currency</td>
732 </tr>
734 <tr>
736 <td ALIGN="CENTER">Sk</td>
738 <td>Symbol, Modifier</td>
740 </tr>
742 <tr>
744 <td ALIGN="CENTER">So</td>
746 <td>Symbol, Other</td>
748 </tr>
750 </table>
754 <h3><a NAME="Bidirectional Category"></a>Bidirectional Category</h3>
758 <p>Please refer to Chapter 3 for an explanation of the algorithm for Bidirectional
760 Behavior and an explanation of the significance of these categories. An up-to-date version
762 can be found on <a HREF="http://www.unicode.org/unicode/reports/tr9/">Unicode Technical
764 Report #9: The Bidirectional Algorithm</a>. These values are normative.</p>
768 <table BORDER="0" CELLPADDING="2">
770 <tr>
772 <th VALIGN="TOP" ALIGN="LEFT"><p ALIGN="LEFT">Type</th>
774 <th VALIGN="TOP" ALIGN="LEFT"><p ALIGN="LEFT">Description</th>
776 </tr>
778 <tr>
780 <td VALIGN="TOP"><b>L</b></td>
782 <td VALIGN="TOP">Left-to-Right</td>
784 </tr>
786 <tr>
788 <td VALIGN="TOP"><b>LRE</b></td>
790 <td VALIGN="TOP">Left-to-Right Embedding</td>
792 </tr>
794 <tr>
796 <td VALIGN="TOP"><b>LRO</b></td>
798 <td VALIGN="TOP">Left-to-Right Override</td>
800 </tr>
802 <tr>
804 <td VALIGN="TOP"><b>R</b></td>
806 <td VALIGN="TOP">Right-to-Left</td>
808 </tr>
810 <tr>
812 <td VALIGN="TOP"><b>AL</b></td>
814 <td VALIGN="TOP">Right-to-Left Arabic</td>
816 </tr>
818 <tr>
820 <td VALIGN="TOP"><b>RLE</b></td>
822 <td VALIGN="TOP">Right-to-Left Embedding</td>
824 </tr>
826 <tr>
828 <td VALIGN="TOP"><b>RLO</b></td>
830 <td VALIGN="TOP">Right-to-Left Override</td>
832 </tr>
834 <tr>
836 <td VALIGN="TOP"><b>PDF</b></td>
838 <td VALIGN="TOP">Pop Directional Format</td>
840 </tr>
842 <tr>
844 <td VALIGN="TOP"><b>EN</b></td>
846 <td VALIGN="TOP">European Number</td>
848 </tr>
850 <tr>
852 <td VALIGN="TOP"><b>ES</b></td>
854 <td VALIGN="TOP">European Number Separator</td>
856 </tr>
858 <tr>
860 <td VALIGN="TOP"><b>ET</b></td>
862 <td VALIGN="TOP">European Number Terminator</td>
864 </tr>
866 <tr>
868 <td VALIGN="TOP"><b>AN</b></td>
870 <td VALIGN="TOP">Arabic Number</td>
872 </tr>
874 <tr>
876 <td VALIGN="TOP"><b>CS</b></td>
878 <td VALIGN="TOP">Common Number Separator</td>
880 </tr>
882 <tr>
884 <td VALIGN="TOP"><b>NSM</b></td>
886 <td VALIGN="TOP">Non-Spacing Mark</td>
888 </tr>
890 <tr>
892 <td VALIGN="TOP"><b>BN</b></td>
894 <td VALIGN="TOP">Boundary Neutral</td>
896 </tr>
898 <tr>
900 <td VALIGN="TOP"><b>B</b></td>
902 <td VALIGN="TOP">Paragraph Separator</td>
904 </tr>
906 <tr>
908 <td VALIGN="TOP"><b>S</b></td>
910 <td VALIGN="TOP">Segment Separator</td>
912 </tr>
914 <tr>
916 <td VALIGN="TOP"><b>WS</b></td>
918 <td VALIGN="TOP">Whitespace</td>
920 </tr>
922 <tr>
924 <td VALIGN="TOP"><b>ON</b></td>
926 <td VALIGN="TOP">Other Neutrals</td>
928 </tr>
930 </table>
934 <h3><a NAME="Character Decomposition"></a>Character Decomposition Mapping</h3>
938 <p>The decomposition is a normative property of a character. The tags supplied with
940 certain decomposition mappings generally indicate formatting information. Where no such
942 tag is given, the mapping is designated as canonical. Conversely, the presence of a
944 formatting tag also indicates that the mapping is a compatibility mapping and not a
946 canonical mapping. In the absence of other formatting information in a compatibility
948 mapping, the tag is used to distinguish it from canonical mappings.</p>
952 <p>In some instances a canonical mapping or a compatibility mapping may consist of a
954 single character. For a canonical mapping, this indicates that the character is a
956 canonical equivalent of another single character. For a compatibility mapping, this
958 indicates that the character is a compatibility equivalent of another single character.
960 The compatibility formatting tags used are:</p>
964 <table BORDER="0" CELLSPACING="2" CELLPADDING="0">
966 <tr>
968 <th>Tag</th>
970 <th><p ALIGN="LEFT">Description</th>
972 </tr>
974 <tr>
976 <td ALIGN="CENTER">&lt;font&gt;&nbsp;&nbsp;</td>
978 <td>A font variant (e.g. a blackletter form).</td>
980 </tr>
982 <tr>
984 <td ALIGN="CENTER">&lt;noBreak&gt;&nbsp;&nbsp;</td>
986 <td>A no-break version of a space or hyphen.</td>
988 </tr>
990 <tr>
992 <td ALIGN="CENTER">&lt;initial&gt;&nbsp;&nbsp;</td>
994 <td>An initial presentation form (Arabic).</td>
996 </tr>
998 <tr>
1000 <td ALIGN="CENTER">&lt;medial&gt;&nbsp;&nbsp;</td>
1002 <td>A medial presentation form (Arabic).</td>
1004 </tr>
1006 <tr>
1008 <td ALIGN="CENTER">&lt;final&gt;&nbsp;&nbsp;</td>
1010 <td>A final presentation form (Arabic).</td>
1012 </tr>
1014 <tr>
1016 <td ALIGN="CENTER">&lt;isolated&gt;&nbsp;&nbsp;</td>
1018 <td>An isolated presentation form (Arabic).</td>
1020 </tr>
1022 <tr>
1024 <td ALIGN="CENTER">&lt;circle&gt;&nbsp;&nbsp;</td>
1026 <td>An encircled form.</td>
1028 </tr>
1030 <tr>
1032 <td ALIGN="CENTER">&lt;super&gt;&nbsp;&nbsp;</td>
1034 <td>A superscript form.</td>
1036 </tr>
1038 <tr>
1040 <td ALIGN="CENTER">&lt;sub&gt;&nbsp;&nbsp;</td>
1042 <td>A subscript form.</td>
1044 </tr>
1046 <tr>
1048 <td ALIGN="CENTER">&lt;vertical&gt;&nbsp;&nbsp;</td>
1050 <td>A vertical layout presentation form.</td>
1052 </tr>
1054 <tr>
1056 <td ALIGN="CENTER">&lt;wide&gt;&nbsp;&nbsp;</td>
1058 <td>A wide (or zenkaku) compatibility character.</td>
1060 </tr>
1062 <tr>
1064 <td ALIGN="CENTER">&lt;narrow&gt;&nbsp;&nbsp;</td>
1066 <td>A narrow (or hankaku) compatibility character.</td>
1068 </tr>
1070 <tr>
1072 <td ALIGN="CENTER">&lt;small&gt;&nbsp;&nbsp;</td>
1074 <td>A small variant form (CNS compatibility).</td>
1076 </tr>
1078 <tr>
1080 <td ALIGN="CENTER">&lt;square&gt;&nbsp;&nbsp;</td>
1082 <td>A CJK squared font variant.</td>
1084 </tr>
1086 <tr>
1088 <td ALIGN="CENTER">&lt;fraction&gt;&nbsp;&nbsp;</td>
1090 <td>A vulgar fraction form.</td>
1092 </tr>
1094 <tr>
1096 <td ALIGN="CENTER">&lt;compat&gt;&nbsp;&nbsp;</td>
1098 <td>Otherwise unspecified compatibility character.</td>
1100 </tr>
1102 </table>
1106 <p><b>Reminder: </b>There is a difference between decomposition and decomposition mapping.
1108 The decomposition mappings are defined in the UnicodeData, while the decomposition (also
1110 termed &quot;full decomposition&quot;) is defined in Chapter 3 to use those mappings
1111 <i>
1113 recursively.</i>
1117 <ul>
1119 <li>The canonical decomposition is formed by recursively applying the canonical mappings,
1121 then applying the canonical reordering algorithm. </li>
1123 <li>The compatibility decomposition is formed by recursively applying the canonical <em>and</em>
1125 compatibility mappings, then applying the canonical reordering algorithm. </li>
1127 </ul>
1131 <h3><a NAME="Canonical Combining Classes"></a>Canonical Combining Classes</h3>
1135 <table BORDER="0" CELLSPACING="2" CELLPADDING="0">
1137 <tr>
1139 <th><p ALIGN="LEFT">Value</th>
1141 <th><p ALIGN="LEFT">Description</th>
1143 </tr>
1145 <tr>
1147 <td ALIGN="RIGHT">0:</td>
1149 <td>Spacing, split, enclosing, reordrant, and Tibetan subjoined</td>
1151 </tr>
1153 <tr>
1155 <td ALIGN="RIGHT">1:</td>
1157 <td>Overlays and interior</td>
1159 </tr>
1161 <tr>
1163 <td ALIGN="RIGHT">7:</td>
1165 <td>Nuktas</td>
1167 </tr>
1169 <tr>
1171 <td ALIGN="RIGHT">8:</td>
1173 <td>Hiragana/Katakana voicing marks</td>
1175 </tr>
1177 <tr>
1179 <td ALIGN="RIGHT">9:</td>
1181 <td>Viramas</td>
1183 </tr>
1185 <tr>
1187 <td ALIGN="RIGHT">10:</td>
1189 <td>Start of fixed position classes</td>
1191 </tr>
1193 <tr>
1195 <td ALIGN="RIGHT">199:</td>
1197 <td>End of fixed position classes</td>
1199 </tr>
1201 <tr>
1203 <td ALIGN="RIGHT">200:</td>
1205 <td>Below left attached</td>
1207 </tr>
1209 <tr>
1211 <td ALIGN="RIGHT">202:</td>
1213 <td>Below attached</td>
1215 </tr>
1217 <tr>
1219 <td ALIGN="RIGHT">204:</td>
1221 <td>Below right attached</td>
1223 </tr>
1225 <tr>
1227 <td ALIGN="RIGHT">208:</td>
1229 <td>Left attached (reordrant around single base character)</td>
1231 </tr>
1233 <tr>
1235 <td ALIGN="RIGHT">210:</td>
1237 <td>Right attached</td>
1239 </tr>
1241 <tr>
1243 <td ALIGN="RIGHT">212:</td>
1245 <td>Above left attached</td>
1247 </tr>
1249 <tr>
1251 <td ALIGN="RIGHT">214:</td>
1253 <td>Above attached</td>
1255 </tr>
1257 <tr>
1259 <td ALIGN="RIGHT">216:</td>
1261 <td>Above right attached</td>
1263 </tr>
1265 <tr>
1267 <td ALIGN="RIGHT">218:</td>
1269 <td>Below left</td>
1271 </tr>
1273 <tr>
1275 <td ALIGN="RIGHT">220:</td>
1277 <td>Below</td>
1279 </tr>
1281 <tr>
1283 <td ALIGN="RIGHT">222:</td>
1285 <td>Below right</td>
1287 </tr>
1289 <tr>
1291 <td ALIGN="RIGHT">224:</td>
1293 <td>Left (reordrant around single base character)</td>
1295 </tr>
1297 <tr>
1299 <td ALIGN="RIGHT">226:</td>
1301 <td>Right</td>
1303 </tr>
1305 <tr>
1307 <td ALIGN="RIGHT">228:</td>
1309 <td>Above left</td>
1311 </tr>
1313 <tr>
1315 <td ALIGN="RIGHT">230:</td>
1317 <td>Above</td>
1319 </tr>
1321 <tr>
1323 <td ALIGN="RIGHT">232:</td>
1325 <td>Above right</td>
1327 </tr>
1329 <tr>
1331 <td ALIGN="RIGHT">233:</td>
1333 <td>Double below</td>
1335 </tr>
1337 <tr>
1339 <td ALIGN="RIGHT">234:</td>
1341 <td>Double above</td>
1343 </tr>
1345 <tr>
1347 <td ALIGN="RIGHT">240:</td>
1349 <td>Below (iota subscript)</td>
1351 </tr>
1353 </table>
1357 <p><strong>Note: </strong>some of the combining classes in this list do not currently have
1359 members but are specified here for completeness.</p>
1363 <h3><a NAME="Decompositions and Normalization"></a>Decompositions and Normalization</h3>
1367 <p>Decomposition is specified in Chapter 3. <a href="http://www.unicode.org/unicode/reports/tr15/"><i>Unicode Technical Report #15:
1369 Normalization Forms</i></a> specifies the interaction between decomposition and normalization. The
1371 most up-to-date version is found on <a HREF="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a>.
1373 That report specifies how the decompositions defined in UnicodeData.txt are used to derive
1375 normalized forms of Unicode text.</p>
1379 <p>Note that as of the 2.1.9 update of the Unicode Character Database, the decompositions
1381 in the UnicodeData.txt file can be used to recursively derive the full decomposition in
1383 canonical order, without the need to separately apply canonical reordering. However,
1385 canonical reordering of combining character sequences must still be applied in
1387 decomposition when normalizing source text which contains any combining marks.</p>
1391 <h3><a NAME="Case Mappings"></a>Case Mappings</h3>
1395 <p>The case mapping is an informative, default mapping. Case itself, on the other hand,
1397 has normative status. Thus, for example, 0041 LATIN CAPITAL LETTER A is normatively
1399 uppercase, but its lowercase mapping the 0061 LATIN SMALL LETTER A is informative. The
1401 reason for this is that case can be considered to be an inherent property of a particular
1403 character (and is usually, but not always, derivable from the presence of the terms
1405 &quot;CAPITAL&quot; or &quot;SMALL&quot; in the character name), but case mappings between
1407 characters are occasionally influenced by local conventions. For example, certain
1409 languages, such as Turkish, German, French, or Greek may have small deviations from the
1411 default mappings listed in UnicodeData.</p>
1415 <p>In addition to uppercase and lowercase, because of the inclusion of certain composite
1417 characters for compatibility, such as 01F1 LATIN CAPITAL LETTER DZ, there is a third case,
1419 called <i>titlecase</i>, which is used where the first letter of a word is to be
1421 capitalized (e.g. UPPERCASE, Titlecase, lowercase). An example of such a titlecase letter
1423 is 01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z.</p>
1427 <p>The uppercase, titlecase and lowercase fields are only included for characters that
1429 have a single corresponding character of that type. Composite characters (such as
1431 &quot;339D SQUARE CM&quot;) that do not have a single corresponding character of that type
1433 can be cased by decomposition.</p>
1437 <p>For compatibility with existing parsers, UnicodeData only contains case mappings for
1439 characters where they are one-to-one mappings; it also omits information about
1441 context-sensitive case mappings. Information about these special cases can be found in a
1443 separate data file, SpecialCasing.txt,
1445 which has been added starting with the 2.1.8 update to the Unicode data files.
1447 SpecialCasing.txt contains additional informative case mappings that are either not
1449 one-to-one or which are context-sensitive.</p>
1453 <h2><a NAME="Property Invariants"></a>Property Invariants</h2>
1457 <p>Values in UnicodeData.txt are subject to correction as errors are found; however, some
1459 characteristics of the categories themselves can be considered invariants. Applications
1461 may wish to take these invariants into account when choosing how to implement character
1463 properties. The following is a partial list of known invariants for the Unicode Character
1465 Database.</p>
1469 <h4>Database Fields</h4>
1473 <ul>
1475 <li>The number of fields in UnicodeData.txt is fixed. </li>
1477 <li>The order of the fields is also fixed. <ul>
1479 <li>Any additional information about character properties to be added in the future will
1481 appear in separate data tables, rather than being added on to the existing table or by
1483 subdivision or reinterpretation of existing fields. </li>
1485 </ul>
1487 </li>
1489 </ul>
1493 <h4>General Category</h4>
1497 <ul>
1499 <li>There will never be more than 32 General Category values. <ul>
1501 <li>It is very unlikely that the Unicode Technical Committee will subdivide the General
1503 Category partition any further, since that can cause implementations to misbehave. Because
1505 the General Category is limited to 32 values, 5 bits can be used to represent the
1507 information, and a 32-bit integer can be used as a bitmask to represent arbitrary sets of
1509 categories. </li>
1511 </ul>
1513 </li>
1515 </ul>
1519 <h4>Combining Classes</h4>
1523 <ul>
1525 <li>Combining classes are limited to the values 0 to 255. <ul>
1527 <li>In practice, there are far fewer than 256 values used. Implementations may take
1529 advantage of this fact for compression, since only the ordering of the non-zero values
1531 matters for the Canonical Reordering Algorithm. It is possible for up to 256 values to be
1533 used in the future; however, UTC decisions in the future may restrict the number of values
1535 to 128, since this has implementation advantages. [Signed bytes can be used without
1537 widening to ints in Java, for example.] </li>
1539 </ul>
1541 </li>
1543 <li>All characters other than those of General Category M* have the combining class 0. <ul>
1545 <li>Currently, all characters other than those of General Category Mn have the value 0.
1547 However, some characters of General Category Me or Mc may be given non-zero values in the
1549 future. </li>
1551 <li>The precise values above the value 0 are not invariant--only the relative ordering is
1553 considered normative. For example, it is not guaranteed in future versions that the class
1555 of U+05B4 will be precisely 14. </li>
1557 </ul>
1559 </li>
1561 </ul>
1565 <h4>Case</h4>
1569 <ul>
1571 <li>Characters of type Lu, Lt, or Ll are called <i>cased</i>. All characters with an Upper,
1573 Lower, or Titlecase mapping are cased characters. <ul>
1575 <li>However, characters with the General Categories of Lu, Ll, or Lt may not always have
1577 case mappings, and case mappings may vary by locale. (See
1579 ftp://ftp.unicode.org/Public/UNIDATA/SpecialCasing.txt). </li>
1581 </ul>
1583 </li>
1585 </ul>
1589 <h4>Canonical Decomposition</h4>
1593 <ul>
1595 <li>Canonical mappings are always in canonical order. </li>
1597 <li>Canonical mappings have only the first of a pair possibly further decomposing. </li>
1599 <li>Canonical decompositions are &quot;transparent&quot; to other character data: <ul>
1601 <li><tt>BIDI(a) = BIDI(principal(canonicalDecomposition(a))</tt> </li>
1603 <li><tt>Category(a) = Category(principal(canonicalDecomposition(a))</tt> </li>
1605 <li><tt>CombiningClass(a) = CombiningClass(principal(canonicalDecomposition(a))</tt><br>
1607 where principal(a) is the first character not of type Mn, or the first character if all
1609 characters are of type Mn. </li>
1611 </ul>
1613 </li>
1615 <li>However, because there are sometimes missing case pairs, and because of some legacy
1617 characters, it is only generally true that: <ul>
1619 <li><tt>upper(canonicalDecomposition(a)) = canonicalDecomposition(upper(a))</tt> </li>
1621 <li><tt>lower(canonicalDecomposition(a)) = canonicalDecomposition(lower(a))</tt> </li>
1623 <li><tt>title(canonicalDecomposition(a)) = canonicalDecomposition(title(a))</tt> </li>
1625 </ul>
1627 </li>
1629 </ul>
1633 <h2><a NAME="Modification History"></a>Modification History</h2>
1637 <p>This section provides a summary of the changes between update versions of the Unicode
1639 Standard.</p>
1643 <h3><a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 3.0.0"> Unicode 3.0.0</a></h3>
1647 <p>Modifications made for Version 3.0.0 of UnicodeData.txt include many new characters and
1649 a number of property changes. These are summarized in Appendex D of <em>The Unicode
1651 Standard, Version 3.0.</em></p>
1655 <h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.9">Unicode 2.1.9</a> </h3>
1659 <p>Modifications made for Version 2.1.9 of UnicodeData.txt include:
1663 <ul>
1665 <li>Corrected combining class for U+05AE HEBREW ACCENT ZINOR. </li>
1667 <li>Corrected combining class for U+20E1 COMBINING LEFT RIGHT ARROW ABOVE </li>
1669 <li>Corrected combining class for U+0F35 and U+0F37 to 220. </li>
1671 <li>Corrected combining class for U+0F71 to 129. </li>
1673 <li>Added a decomposition for U+0F0C TIBETAN MARK DELIMITER TSHEG BSTAR. </li>
1675 <li>Added&nbsp; decompositions for several Greek symbol letters: U+03D0..U+03D2, U+03D5,
1677 U+03D6, U+03F0..U+03F2. </li>
1679 <li>Removed&nbsp; decompositions from the conjoining jamo block: U+1100..U+11F8. </li>
1681 <li>Changes to decomposition mappings for some Tibetan vowels for consistency in
1683 normalization. (U+0F71, U+0F73, U+0F77, U+0F79, U+0F81) </li>
1685 <li>Updated the decomposition mappings for several Vietnamese characters with two diacritics
1687 (U+1EAC, U+1EAD, U+1EB6, U+1EB7, U+1EC6, U+1EC7, U+1ED8, U+1ED9), so that the recursive
1689 decomposition can be generated directly in canonically reordered form (not a normative
1691 change). </li>
1693 <li>Updated the decomposition mappings for several Arabic compatibility characters involving
1695 shadda (U+FC5E..U+FC62, U+FCF2..U+FCF4), and two Latin characters (U+1E1C, U+1E1D), so
1697 that the decompositions are generated directly in canonically reordered form (not a
1699 normative change). </li>
1701 <li>Changed BIDI category for: U+00A0 NO-BREAK SPACE, U+2007 FIGURE SPACE, U+2028 LINE
1703 SEPARATOR. </li>
1705 <li>Changed BIDI category for extenders of General Category Lm: U+3005, U+3021..U+3035,
1707 U+FF9E, U+FF9F. </li>
1709 <li>Changed General Category and BIDI category for the Greek numeral signs: U+0374, U+0375. </li>
1711 <li>Corrected General Category for U+FFE8 HALFWIDTH FORMS LIGHT VERTICAL. </li>
1713 <li>Added Unicode 1.0 names for many Tibetan characters (informative). </li>
1715 </ul>
1719 <h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.8">Unicode 2.1.8</a> </h3>
1723 <p>Modifications made for Version 2.1.8 of UnicodeData.txt include:
1727 <ul>
1729 <li>Added combining class 240 for U+0345 COMBINING GREEK YPOGEGRAMMENI so that
1731 decompositions involving iota subscript are derivable directly in canonically reordered
1733 form; this also has a bearing on simplification of casing of polytonic Greek. </li>
1735 <li>Changes in decompositions related to Greek tonos. These result from the clarification
1737 that monotonic Greek &quot;tonos&quot; should be equated with U+0301 COMBINING ACUTE,
1739 rather than with U+030D COMBINING VERTICAL LINE ABOVE. (All Greek characters in the Greek
1741 block involving &quot;tonos&quot;; some Greek characters in the polytonic Greek in the
1743 1FXX block.) </li>
1745 <li>Changed decompositions involving dialytika tonos. (U+0390, U+03B0) </li>
1747 <li>Changed ternary decompositions to binary. (U+0CCB, U+FB2C, U+FB2D) These changes
1749 simplify normalization. </li>
1751 <li>Removed canonical decomposition for Latin Candrabindu. (U+0310) </li>
1753 <li>Corrected error in canonical decomposition for U+1FF4. </li>
1755 <li>Added compatibility decompositions to clarify collation tables. (U+2100, U+2101, U+2105,
1757 U+2106, U+1E9A) </li>
1759 <li>A series of general category changes to assist the convergence of of Unicode definition
1761 of identifier with ISO TR 10176: <ul>
1763 <li>So &gt; Lo: U+0950, U+0AD0, U+0F00, U+0F88..U+0F8B </li>
1765 <li>Po &gt; Lo: U+0E2F, U+0EAF, U+3006 </li>
1767 <li>Lm &gt; Sk: U+309B, U+309C </li>
1769 <li>Po &gt; Pc: U+30FB, U+FF65 </li>
1771 <li>Ps/Pe &gt; Mn: U+0F3E, U+0F3F </li>
1773 </ul>
1775 </li>
1777 <li>A series of bidi property changes for consistency. <ul>
1779 <li>L &gt; ET: U+09F2, U+09F3 </li>
1781 <li>ON &gt; L: U+3007 </li>
1783 <li>L &gt; ON: U+0F3A..U+0F3D, U+037E, U+0387 </li>
1785 </ul>
1787 </li>
1789 <li>Add case mapping: U+01A6 &lt;-&gt; U+0280 </li>
1791 <li>Updated symmetric swapping value for guillemets: U+00AB, U+00BB, U+2039, U+203A. </li>
1793 <li>Changes to combining class values. Most Indic fixed position class non-spacing marks
1795 were changed to combining class 0. This fixes some inconsistencies in how canonical
1797 reordering would apply to Indic scripts, including Tibetan. Indic interacting top/bottom
1799 fixed position classes were merged into single (non-zero) classes as part of this change.
1801 Tibetan subjoined consonants are changed from combining class 6 to combining class 0. Thai
1803 pinthu (U+0E3A) moved to combining class 9. Moved two Devanagari stress marks into generic
1805 above and below combining classes (U+0951, U+0952). </li>
1807 <li>Corrected placement of semicolon near symmetric swapping field. (U+FA0E, etc., scattered
1809 positions to U+FA29) </li>
1811 </ul>
1815 <h3>Version 2.1.7</h3>
1819 <p><i>This version was for internal change tracking only, and never publicly released.</i></p>
1823 <h3>Version 2.1.6</h3>
1827 <p><i>This version was for internal change tracking only, and never publicly released.</i></p>
1831 <h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.5">Unicode 2.1.5</a> </h3>
1835 <p>Modifications made for Version 2.1.5 of UnicodeData.txt include:
1839 <ul>
1841 <li>Changed decomposition for U+FF9E and U+FF9F so that correct collation weighting will
1843 automatically result from the canonical equivalences. </li>
1845 <li>Removed canonical decompositions for U+04D4, U+04D5, U+04D8, U+04D9, U+04E0, U+04E1,
1847 U+04E8, U+04E9 (the implication being that no canonical equivalence is claimed between
1849 these 8 characters and similar Latin letters), and updated 4 canonical decompositions for
1851 U+04DB, U+04DC, U+04EA, U+04EB to reflect the implied difference in the base character. </li>
1853 <li>Added Pi, and Pf categories and assigned the relevant quotation marks to those
1855 categories, based on the Unicode Technical Corrigendum on Quotation Characters. </li>
1857 <li>Updating of many bidi properties, following the advice of the ad hoc committee on bidi,
1859 and to make the bidi properties of compatibility characters more consistent. </li>
1861 <li>Changed category of several Tibetan characters: U+0F3E, U+0F3F, U+0F88..U+0F8B to make
1863 them non-combining, reflecting the combined opinion of Tibetan experts. </li>
1865 <li>Added case mapping for U+03F2. </li>
1867 <li>Corrected case mapping for U+0275. </li>
1869 <li>Added titlecase mappings for U+03D0, U+03D1, U+03D5, U+03D6, U+03F0.. U+03F2. </li>
1871 <li>Corrected compatibility label for U+2121. </li>
1873 <li>Add specific entries for all the CJK compatibility ideographs, U+F900..U+FA2D, so the
1875 canonical decomposition for each (the URO character it is equivalent to) can be carried in
1877 the database. </li>
1879 </ul>
1883 <h3>Version 2.1.4</h3>
1887 <p><i>This version was for internal change tracking only, and never publicly released.</i></p>
1891 <h3>Version 2.1.3</h3>
1895 <p><i>This version was for internal change tracking only, and never publicly released.</i></p>
1899 <h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.2">Unicode 2.1.2</a> </h3>
1903 <p>Modifications made in updating UnicodeData.txt to Version 2.1.2 for the Unicode
1905 Standard, Version 2.1 (from Version 2.0) include:
1909 <ul>
1911 <li>Added two characters (U+20AC and U+FFFC). </li>
1913 <li>Amended bidi properties for U+0026, U+002E, U+0040, U+2007. </li>
1915 <li>Corrected case mappings for U+018E, U+019F, U+01DD, U+0258, U+0275, U+03C2, U+1E9B. </li>
1917 <li>Changed combining order class for U+0F71. </li>
1919 <li>Corrected canonical decompositions for U+0F73, U+1FBE. </li>
1921 <li>Changed decomposition for U+FB1F from compatibility to canonical. </li>
1923 <li>Added compatibility decompositions for U+FBE8, U+FBE9, U+FBF9..U+FBFB. </li>
1925 <li>Corrected compatibility decompositions for U+2469, U+246A, U+3358. </li>
1927 </ul>
1931 <h3>Version 2.1.1</h3>
1935 <p><i>This version was for internal change tracking only, and never publicly released.</i></p>
1939 <h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.0.0">Unicode 2.0.0</a> </h3>
1943 <p>The modifications made in updating UnicodeData.txt for the Unicode
1945 Standard, Version 2.0 include:
1949 <ul>
1951 <li>Fixed decompositions with TONOS to use correct NSM: 030D. </li>
1953 <li>Removed old Hangul Syllables; mapping to new characters are in a separate table. </li>
1955 <li>Marked compatibility decompositions with additional tags. </li>
1957 <li>Changed old tag names for clarity. </li>
1959 <li>Revision of decompositions to use first-level decomposition, instead of maximal
1961 decomposition. </li>
1963 <li>Correction of all known errors in decompositions from earlier versions. </li>
1965 <li>Added control code names (as old Unicode names). </li>
1967 <li>Added Hangul Jamo decompositions. </li>
1969 <li>Added Number category to match properties list in book. </li>
1971 <li>Fixed categories of Koranic Arabic marks. </li>
1973 <li>Fixed categories of precomposed characters to match decomposition where possible. </li>
1975 <li>Added Hebrew cantillation marks and the Tibetan script. </li>
1977 <li>Added place holders for ranges such as CJK Ideographic Area and the Private Use Area. </li>
1979 <li>Added categories Me, Sk, Pc, Nl, Cs, Cf, and rectified a number of mistakes in the
1981 database. </li>
1983 </ul>
1985 </body>
1987 </html>