On 2010/06/08 21:43, John Dlugosz wrote:
So, our unique digits are grandfathered in.  It was in ASCII and in EBCDIC, so 
it's in Unicode.  Sometime later, assemblers and compilers came along.  The 
writers of these tools had little trouble using context or strict rules to 
distinguish A-F between their role as digits or numbers.  We could do without 
separate U+0030 and U+0031 today just as well:  O is a reserved word in C, 
identifiers that look like numbers (beginning with O or l and containing only 
characters that are used to form numeric literals) would be deemed to be parsed 
as numbers, or use a special mark, or whatever.

So it's only history that some glyphs used as digits are separate and others 
(for Computer Science work anyway) are not.  In practice, we don't need unique 
assignments, in general.  There are characters that are used in numeric 
literals and they are a subset of those used for words in general
From a parsing point of view this might not matter, however, for distinguishing characters by glyph this matters a lot:

0O
1l

Were these the same code points it would be pretty hard to read, because we know from handwriting that these characters do look different. Usually fixed-width fonts that programmers tend to use will make these glyphs distinguishable, because they have to be.

Even worse, some cursive/"handwriting" fonts style digits and the respective confusable letters differently. You couldn't do this if they were encoded as the same character without having to have contextual glyphs ready and some text engine that supports it (and even then you couldn't type a zero in a word, because it would be a capital O). Usually the styles for characters will differ from digits because digits are not written as a whole string without breaks, whereas characters usually are. Sure, you could still have the same glyph and make it look good, but it wouldn't look natural, nor would it be practical.

So I don't think that we _could do without_ those characters having different code points today. Even back then it must have seemed like a hack to type a lowercase L instead of a 1. I think this a neat example of why Unicode encodes the character's abstract identity rather than it's shape. That's why we have Han unification after all, because some characters have the same abstract identity which was preserved, while others, such as our digits do not share identities with Latin characters.

Robert

Reply via email to