Other Unicode Blocks

So far we've accounted for a little over 300 of the more than 90,000 Unicode characters. Many thousands are still unaccounted for. Outside the ranges defined in XHTML and SGML, standard entity names don't exist. You should either use an editor that can produce the characters you need in the appropriate character set or you should use character references. Most of the 90,000-plus Unicode characters are either Han ideographs, Hangul syllables, or rarely used characters. However, we do list a few of the most useful blocks later in this chapter. Others can be found online at http://www.unicode.org/charts/ or in The Unicode Standard 4.0 by the Unicode Consortium (Addison Wesley).

In the tables that follow, the upper lefthand corner contains the character's hexadecimal Unicode value, and the upper righthand corner contains the character's decimal Unicode value. You can use either value to form a character reference so as to use these characters in element content and attribute values, even without an editor or fonts that support them.

The128 characters in the Latin Extended-A block of Unicode are used in conjunction with the normal ASCII and Latin-1 characters. They cover most European Latin letters missing from Latin-1. The block includes various characters you'll find in the upper halves of the other ISO-8859 Latin character sets, including ISO-8859-2, ISO-8859-3, ISO-8859-4, and ISO-8859-9. When combined with ASCII and Latin-1, this block lets you write Afrikaans, Basque, Breton, Catalan, Croatian, Czech, Esperanto, Estonian, French, Frisian, Greenlandic, Hungarian, Latvian, Lithuanian, Maltese, Polish, Provençal, Rhaeto-Romanic, Romanian, Romany, Sami, Slovak, Slovenian, Sorbian, Turkish, and Welsh. See Table 27-7.

The Latin Extended-B block of Unicode is used in conjunction with the normal ASCII and Latin-1 characters. It mostly contains characters used for transcription of non-European languages not traditionally written in a Roman script. For instance, it's used for the Pinyin transcription of Chinese and for many African languages. See Table 27-8.

Linguists use the International Phonetic Alphabetic (IPA) to identify uniquely and unambiguously particular sounds of various spoken languages. Besides the symbols listed in this block, the IPA requires use of ASCII, various other extended Latin characters, the combining diacritical marks in Table 27-11, and a few Greek letters. The block, shown in Table 27-9, only contains the characters not used in more traditional alphabets.

The Spacing Modifier Letters block, shown in Table 27-10, includes characters from multiple languages and scripts that modify the preceding or following character, generally by changing its pronunciation.

The Combining Diacritical Marks block contains characters that are not used on their own, such as the accent grave and circumflex. Instead, they are merged with the preceding character to form a single glyph. For example, to write the character Ñ, you could type the ASCII letter N followed by the combining tilde character, like this: Ñ. When rendered, this combination would produce the single glyph Ñ. In Table 27-11, the character to which the diacritical mark is attached is a dotted circle (Unicode code point &0x25CC;), but of course it could be any normal character.

For compatibility with legacy character sets, there is often more than one way to write accented characters. For example the letter é, e with accent acute, can either be written as the single character 0xE9 or as the letter e (0x65) followed by a combining accent acute (0x301). This can be a problem for naïve algorithms for searching, sorting, indexing, and performing other operations on text. It's also an issue for XML. For instance, the <resumé> start-tag cannot be matched with a </resumé> end-tag if one uses character 0xE9 and the other uses 0x65 followed by 0x301. Where such multiple ways of writing the same character exist, the W3C strongly recommends using the precomposed form; that is, you should use the single character instead of the base character followed by a combining diacritical mark. In XML, these marks are primarily intended for forming characters that do not have precomposed forms.

The Greek block of Unicode is used primarily for the modern Greek language. Currently, it's the only option for the Greek-derived Coptic script, but it doesn't really serve that purpose very well, and a separate Coptic block is a likely addition in the future. Extending coverage to classical and Byzantine Greek requires many more accented characters, which are available in the Greek Extended block, shown in Table 27-22, or by combining these characters with the Combining Diacritical Marks in Table 27-11. The Greek alphabet is also a fertile source of mathematical and scientific notation, although some common letters, such as and ∑, are encoded separately in the Mathematical Operators block in Table 27-27 and the Mathematical Alphanumeric Symbols block in Table 27-28 for their use as mathematical symbols. The Greek and Coptic block of Unicode is shown in Table 27-12.

While the Cyrillic script, shown in Table 27-13, is most familiar to Western readers from Russian, it's also used for other Slavic languages, including Serbian, Ukrainian, and Byelorussian, and for many non-Slavic languages of the former Soviet Union, such as Azerbaijani, Tuvan, and Ossetian. Indeed, many characters in this block are not actually found in Russian but exist only in other languages written in the Cyrillic script. Following the breakup of the Soviet Union, some non-Slavic languages, such as Moldavian and Azerbaijani, are now reverting to Latin-derived scripts.

The Armenian script, shown in Table 27-14, is used for writing the Armenian language, currently spoken by about seven million people around the world.

The Hebrew abjad, shown in Table 27-15, is used for Hebrew, Yiddish, and Judezmo. It's commonly used for Phoenician as well, but the Phoenician and Hebrew abjads are arguably different, and a separate Phoenician block is a likely addition in the future. The Hebrew script is also occasionally used for mathematical notation.

The Arabic script, shown in Table 27-16, is used for many languages besides Arabic, including Kurdish, Pashto, Persian, Sindhi, and Urdu. Turkish was also written in the Arabic script until early in the twentieth century when Turkey converted to a modified Latin alphabet.

The Devanagari script is used for many languages of the Indian subcontinent, including Awadhi, Bagheli, Bhatneri, Bhili, Bihari, Braj Bhasa, Chhattisgarhi, Garhwali, Gondi, Harauti, Hindi, Ho, Jaipuri, Kachchhi, Kanauji, Konkani, Kului, Kumaoni, Kurku, Kurukh, Marwari, Mundari, Newari, Palpa, and Santali. It's also used for the classical language Sanskrit. See Table 27-17.

The Thai script is used for Thai and several other Southeast Asian languages, including Kuy, Lavna, and Pali. See Table 27-18.

The Tibetan script is used to write the various dialects of Tibetan and Dzongkha, Bhutan's main language. Like Chinese, Tibetan is divided into mutually unintelligible spoken languages, although the written forms are identical. See Table 27-19.

The Ethiopic script is used by several languages in Ethiopia, including Amharic, Tigre, Oromo, and the liturgical language Ge'ez. See Table 27-20.

The Latin Extended Additional characters are single code-point representations of letters combined with diacritical marks. This block is particularly useful for modern Vietnamese. See Table 27-21.

The Greek Extended block, shown in Table 27-22, contains mostly archaic letters and accented letters that are used in classical and Byzantine Greek but not in modern Greek.

The General Punctuation block, shown in Table 27-23, contains punctuation characters used across a variety of languages and scripts that are not already encoded in Latin-1. Characters 0x2000 through 0x200B are all varying amounts of whitespace ranging from zero width (0x200B) to six ems (0x2007). 0x200C through 0x200F and 0x206A through 0x206F are nonprinting format characters with no graphical representation.

The Currency Symbols block includes a few monetary symbols not already encoded in other blocks, such as the Indian rupee, the Italian lira, and the Greek drachma. See Table 27-24.

The Letter-Like Symbols block covers characters that look like letters but really aren't, such as the symbol used to represent a prescription. See Table 27-25.

The Arrows block contains commonly needed arrow characters, as shown in Table 27-26.

The Mathematical Operators block, shown in Table 27-27, contains a wide variety of symbols used in higher mathematics. A few of these symbols superficially resemble letters in other blocks. For instance, in most fonts, character 2206, , is virtually identical to the Greek capital letter delta. However, using characters in this block is preferable for mathematical expressions, as it allows software to distinguish between letters and mathematical symbols. Fonts may use the same glyph to represent different code points in cases like this.

Unicode 3.1 added one more block of mathematical alphanumeric symbols in Plane 1 between 0x1D400 and 0x1D7FF, as shown in Table 27-28. Mostly these are repetitions of the ASCII and Greek letters and digits in what would normally be considered font variations. For instance, 0x1D400 is mathematical bold capital A. The justification for these is that when used in an equation, they really aren't the same characters as the equivalent glyphs in text.

The Miscellaneous Technical block, shown in Table 27-29, contains an assortment of symbols taken from electronics, quantum mechanics, the APL programming language, the ISO-9995-7 standard for language-neutral keyboard pictograms, and other sources.

The Optical Character Recognition (OCR) block, shown in Table 27-30, includes the OCR-A characters that are not already encoded as ASCII and magnetic-ink character-recognition symbols used on checks.

The Geometric Shapes block combines simple triangles, squares, circles, and other shapes found in various character sets Unicode attempts to superset. See Table 27-31.

The Miscellaneous Symbols block contains mostly pictographic symbols found in vendor and national character sets that preceded Unicode. See Table 27-32.

The Dingbats block, shown in Table 27-33, is based on characters in the popular Adobe Zapf Dingbats font.