by Michael S. Kaplan, published on 2011/12/09 07:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2011/12/09/10246051.aspx
Previous blogs from this series:
As I've mentioned in the past, I used to work across the hall from Shawn.
His office, he used to have a large cardboard cutout of Mr. Spock:
I have no idea if it still is there, but it used to inspire me.
To be logical.
To have a sense of proportion.
Even now I once again find myself with Douglas Adams on my mind, in this case from a bit of The Restaurant at the End of the Universe:
The Total Perspective Vortex derives its picture of the whole Universe on the principle of extrapolated matter analysis.
To explain--since every piece of matter in the Universe is in some way affected by every other piece of matter in the Universe, it is in theory possible to extrapolate the whole of creation--every sun, every planet, their orbits, their composition, and their economic and social history from, say, one small piece of fairy cake.
The man who invented the Total Perspective Vortex did so basically in order to annoy his wife.
Trin Tragula--for that was his name--was a dreamer, a thinker, a speculative philosopher or, as his wife would have it, an idiot.
And she would nag him incessantly about the utterly inordinate amount of time he spent staring out into space, or mulling over the mechanics of safety pins, or doing spectrographic analysis of pieces of fairy cake.
"Have some sense of proportion!" she would say, sometimes as often as thirty-eight times in a single day.
And so he built the Total Perspective Vortex--just to show her.
And into one end, he plugged the whole of reality as extrapolated from a piece of fairy cake, and into the other, he plugged his wife: so that when he turned it on she saw in one instant the whole infinity of creation and herself in relation to it.
To Trin Tragula's horror, the shock completely annihilated her brain, but to his satisfaction he realized that he had proved conclusively that if life is going to exist in a Universe of this size, then one thing it cannot afford to have is a sense of proportion.
And what does this have to do with anything, you might be wondering?
Well, I was thinking about it when it was pointed out to me that when describing a time value, the COLON (U+003a) was not really what people generally used.
Instead, the RATIO (U+2236), available since at least Unicode 1.1, was preferred, due to the bottom dot being spaced slightly higher up.
You can look at pictures of digital clocks to prove it to yourself, here.
Sound reasonable enough.
In fact, in case you are running on Windows, there is just one problem here: the fact that not all fonts have a RATIO in them.
Looking at four fonts (Segoe UI, Verdana, Meiryo, and Meiryo UI) on Windows 7:
You will see two problems:
Now the situation is slightly better in Windows 8, looking at that same document:
We do seem to have added a bunch of RATIOs there.
And with all of the many interesting places that times pop up, that preferred view makes sense to me. Looking at (for example) Segoe UI:
Okay, I'm prepared to say that the RATIO in that font looks a little better than the COLON -- or, if nothing else, it matches the way that many of those many different clocks you can see here.
Anyway, they are now working through fonts to get the character in.
I imagine that given the many fonts that might be used in the user interface, the various font linking/fallback issues that will sometimes insert a glyph will full width spacing like Simsun, it seems like a good thing that they are doing that -- you can look in earlier versions of Windows to see the cost of getting the right glyph in the wrong font!
Now from a collation standpoint, they are two different characters, and always have been.
I had somebody ask me about that the other day, and also whether anyone wanted to change the underlying locale data, but that answer is more complicated.
I mean, after all, the RATIO is not directly on any code page, and it is only "beat fit mapped" to a COLON on some but not all of them.
And no matter whether you prefer the RATIO to the COLON, probably either one is better than the question mark.
We can't change the code pages to add best fit mappings to 874 and 932 and 1255 and such.
The cost of hacking GetLocaleInfoA and GetTimeFormatA and EnumTimeFormatsA would also be pretty risky and expensive, not to mention it would add a performance hit to every call to these functions.
Better to do work that costs us some effort now than cost customers time or potential bugs later.
To do this, we have to engineer it right, because logic dictates that we keep a sense of proportion about the RATIO!
Michael S. Kaplan on 9 Dec 2011 9:12 AM:
It was of course brought to you by U+2236, a.k.a. RATIO. But it felt too obvious!
Doug Ewell on 9 Dec 2011 3:19 PM:
I hope you got permission, or can make a fair-use claim, for that extended snippet from "Restaurant." IP attorneys tend not to have a sense of humor about that. Cf. the Olsen tz database.
Michael S. Kaplan on 9 Dec 2011 7:08 PM:
Yes, I believe it is covered....
ErikF on 9 Dec 2011 10:57 PM:
One could say that your argument is quite rational, but that would be a bad pun.
Michael S. Kaplan on 10 Dec 2011 12:38 PM:
You mean subpar compared to the usual around here? :-)
referenced by
2012/10/26 The evolving Story of Locale Support, part 28: We finally fixed that 'Install New Languages' thing!
2012/10/02 The evolving Story of Locale Support, part 27: No, the T and the H aren't silent...
2012/08/20 The evolving Story of Locale Support, part 26: Hey Windows 8, there's someone on the phone for you.
2012/06/07 The evolving Story of Locale Support, part 24: I Adar you! Hell, I Double Adar you! (Windows 8 ed.)
2012/06/05 The evolving Story of Locale Support, part 23: Tamazight? Outta sight!
2012/04/12 The evolving Story of Locale Support, part 22: Digit Substitution 2.0
2012/03/08 The evolving Story of Locale Support, part 21: The Windows 8 Hijripalooza extraordinaire!
2012/03/02 The evolving Story of Locale Support, part 20: Yes, it's Bangla. Not Bengali!
2012/02/21 The evolving Story of Locale Support, part 19: In honor of International Mother Language Day...
2012/02/15 The evolving Story of Locale Support, part 18: Two scripts that share ten digits can be trouble
2012/02/09 Keeping a sense of *order* about the RATIO!
2012/02/02 The evolving Story of Locale Support, part 17: Today I feel like translating you more than before
2012/01/24 The evolving Story of Locale Support, part 16: We can't scale to a Xishuangbanna Dai locale, but…
2012/01/17 The evolving Story of Locale Support, part 15: Fixing our listings up in Windows 8!
2011/12/22 The evolving Story of Locale Support, part 14: Tifinagh, Tamazight, and Berber? Oh my!
2011/12/21 The evolving Story of Locale Support, part 13: Divvying up locales, yet again!