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