Showing posts with label unicode. Show all posts
Showing posts with label unicode. Show all posts

2006-11-12

An annoying ambiguity about which nothing can be done now

The phrase "COMBINING DOUBLE" in a Unicode character can mean either of two things. Sometimes the diacritical mark is doubled with respect to some other mark:

  • U+030B COMBINING DOUBLE ACUTE ACCENT  ̋
  • U+030E COMBINING DOUBLE VERTICAL LINE ABOVE  ̎
  • U+030F COMBINING DOUBLE GRAVE ACCENT  ̏
  • U+0333 COMBINING DOUBLE LOW LINE  ̳
  • U+033F COMBINING DOUBLE OVERLINE  ̿
  • U+0348 COMBINING DOUBLE VERTICAL LINE BELOW  ͈
  • U+035A COMBINING DOUBLE RING BELOW  ͚
  • U+20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY  ⃦

But sometimes it means that the mark extends over two characters, the one it applies to and the following one:

  • U+035D COMBINING DOUBLE BREVE  ͝ 
  • U+035C COMBINING DOUBLE BREVE BELOW  ͜ 
  • U+035E COMBINING DOUBLE MACRON  ͞ 
  • U+035F COMBINING DOUBLE MACRON BELOW  ͟ 
  • U+0360 COMBINING DOUBLE TILDE  ͠ 
  • U+0361 COMBINING DOUBLE INVERTED BREVE  ͡ 
  • U+0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW  ͢ 

Of course U+1D18A MUSICAL SYMBOL COMBINING DOUBLE TONGUE  𝆊 is something else again.

Thank you. I feel much better now.

2006-05-09

Changing names

The names of Unicode characters, once published, can't ever be changed again, not even when they are obviously wrong. In this case, stability is considered to trump correctness.

A participant in the Unicode development process once complained: "If biologists had insisted that names once assigned could not be changed because of advances in knowledge, or even to correct errors, then surely the system would have broken down centuries ago."

But in fact, the international Linnaean names of plants and animals are not changed for either of those reasons, nor for any other reason whatsoever: though we now know that Basilosaurus is a proto-whale and not any sort of reptile, Basilosaurus it will remain forever.

The only thing that can happen in Linnaean nomenclature is the recognition that two names are synonymous. In that case, there is a question which shall be the preferred name, and normally it is the first name to be published, but exceptions sometimes occur. Thus when the dinosaurs Brontosaurus and Apatosaurus were found to be the same, Apatosaurus was chosen as the preferred name because it was published first; however, this is not properly to be described as "changing the name of Brontosaurus to Apatosaurus". Brontosaurus is a perfectly good name and may still be used even though it is dispreferred.

When are later names preferred to earlier ones? Usually when the earlier name has long been forgotten, and the later name is widely used in the scientific literature.

2006-03-22

Typographical variety

  1. The Polish acute accent is shorter and stubbier than the Western one.
  2. French likes to put spaces in front of certain terminal punctuations, notably semicolon and colon, and also inside guillemets.
  3. Quotation marks have at least six flavors in Europe alone:
    • 6-quotes ... 9-quotes (English, Dutch, Italian, Spanish, Turkish)
    • 9-quotes ... 9-quotes (Scandinavian languages)
    • low-9-quotes ... 6-quotes (German, Czech, Slovak)
    • low-9-quotes ... 9-quotes (Hungarian, Polish)
    • guillemets pointing in (Slovene, German sometimes)
    • guillemets pointing out (French, Greek, Russian)
  4. Some languages like initial dashes for dialogue, some don't.
  5. French c with cedilla can be written with a detached comma below, but not so in Portuguese or Catalan. Turkish insists on s with cedilla, Romanian on s with a comma below for their respective sh-sounds. (The story for Gagauz, which is a Turkic language spoken in Romania, is still uncertain.)
  6. Inverted punctuation marks are unique to Spanish.
  7. Lojban uses dots at the beginnings of words. :-)

2005-08-29

All the character codes in the world

This is not a proposal to change standards in any respect. It's just a thought-out (well, somewhat) approach for people who have to represent character codes as opposed to characters, and have 32 bits to play with.

The intent is to represent all the codes of all the registered character sets, present and future, as individual unsigned 31-bit integers. All further numbers in this post, except 94, 96, and 2022, are base 16.

Unicode codes are mapped onto the integers 0-10FFFF in the obvious way. The registered character sets of ISO 2022 are represented by codes above 2000000.

The detailed roadmap is as follows:

  • 00000000-0010FFFF: Unicode
  • 00110000-1FFFFFFF: reserved
  • 20000000-2003FFFF: ISO 2022 94-char, 96-char, C0, and C1 character sets
  • 20040000-2093FFFF: ISO 2022 94x94/96x96-char character sets
  • 20940000-5693FFFF: ISO 2022 94x94x94/96x96x96-char character sets
  • 56940000-7FFFFFFF: reserved

Definitions for ISO 2022 character sets:

  • Every character set has an ISO-specified value between 40 and 7E, called F.
  • Some character sets have an ISO-specified value between 21 and 2F, called I. If I is not present, it is deemed for our purposes to 20.
  • Individual characters in one-byte character sets have a value between 20 and 7F, called H.
  • Individual characters in two-byte character sets have two values between 20 and 7F, called H and L.
  • Individual characters in three-byte character sets have three values between 20 and 7F, called H, M, and L.

Values:

  • The value of a character in Unicode is its scalar value.
  • The value of a character in a 94-bit character set is 20000000 + (I - 20) * 4000 + (F - 40) * 100 + H.
  • The value of a character in a 96-bit character set is 20000000 + (I - 20) * 4000 + (F - 40) * 100 + H + 80.
  • The value of a character in a 94x94-char or 96x96-char character set is 20040000 + (I - 20) * 90000 (F - 40) * 2400 + (H - 20) * 60 + (L - 20).
  • The value of a character in a 94x94x94-char or 96x96x96-char character set is 20940000 + (I - 20) * 3600000 + (F - 40) * D8000 + (H - 20) * 2400 + (M - 20) * 60 + L.

This scheme was inspired by a related scheme by Markus Kuhn.

2005-08-22

Unicode is big enough

People tend to be skeptical that the 17 * 65536 = 1,114,112 character codes provided by Unicode will be big enough. After all, we have moved from 8-bit to 64-bit computers, both in word size and in address size; in general, most finite limits have been repeatedly shown to be insufficient. The maximum normal memory on MS-DOS-based PCs was 640K, ten times as big as the 64K limit on the 8-bit systems that preceded them: after all, as Bill Gates supposedly said back in 1981, 640K of memory ought to be enough for anybody!

In fact, though, there just aren't any huge and complicated writing systems hiding in some remote ravine. We have a pretty good map of all the writing systems on the planet; a few may have been overlooked by accident, but none of them are going to be huge. The biggest remaining ones are Egyptian hieroglyphics and ancient Chinese characters, and neither of them will require anything like a million character codes.

There are other ceilings in computing that aren't likely to be broken through either. Consider the number of different assembly-language op codes. Does anyone foresee computer chips with 65,536 different opcodes? How about 4,294,967,296 distinct opcodes? I don't think so.

Or consider IP version 6 network addresses. There are 2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 of them. They won't be assigned densely, according to current plans, but they could be, and that would be enough IP addresses to have a few billion addresses for every soil bacterium in every square centimeter of soil on the planet. Does anybody really believe we are going to "break through" that?