by Michael S. Kaplan, published on 2008/01/17 06:46 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2008/01/17/7141157.aspx
The other day I was chatting by email with a developer on a unique problem -- she was trying to support vertical text.
She had seen my blog Let's get vertical, but had not been able to find the TATE sample in the Platform SDK that I mentioned.
This was something I mentioned after I found out for myself in the more recent blog Rotate it when vertical?.
Anyway, I was giving the explanation about how CJK ideographs on the BMP do not use Uniscribe functionality, they use GDI -- both for the vertical support obtained by prefixing the font name with an @ sign, and for the font linking support provided by GDI itself since not every font supports every character....
But she was getting results that were simply unexpected:
I noticed that "@" in front of font name will help with glyph retrieval - without it I will not be able to see japanese characters. Does Uniscribe expose a flag that tells us when to use "@"? It will help a little bit of explanation of the meaning of "@" in this instance.
From that description, I was at a loss -- it seemed to fly in the fact of what I knew about ideographic characters on the Windows platform and the nature of GDI text rendering and GDI font linking.
Well, in my mind I was imagining the switch between different forms of the same font name and what the @ sign does, i.e.
but if you look at the text Let's get vertical then you'll see that I never mentioned the font name, and honestly the original text in the 1st edition of Developing International Software didn't really get into it, either.
My developer comrade had, through that great mix of (for lack of a better description) ignorance1 and brilliance, made a simple test using Japanese ideographic text and
I was shocked. The idea of doing this had simply never occurred to me. Even when questions that people asked suggested the notion, nobody had ever reported the behavior....
If you look at the text of Font substitution and linking #3 you can see all of the fonts that are affected by GDI font linking outside of those four big East Asian fonts. And The Scourge of Arial, the Helvetica knockoff that has been part of Windows for so long, is not on that list.
So Arial gets no GDI font linking behavior.
But once you put that @ prefix in place, GDI now knows it is doing that vertical support that has been part of the CJK legacy experience for over a decade -- and so it ends up invoking the other longstanding legacy behavior with a CJK focus behind it, and runs through the GDI font linking chain.
Nobody I have talked to remembers this coming up before. I am very curious whether anyone has ever even noticed, let alone tested this whole unknown secret way into the functionality. If not, then simple application of the first Tester's Axiom (If you have not tested it, assume it is broken.) leads one to the obvious conclusion that there are probably (and almost certainly) bugs here related to this usage.
The advice to this developer and her team was easy enough in terms of picking the "right" font, though even now as I write this I am staggered to wonder how many other my longstanding assumptions and the longstanding assumptions of my colleagues in international development and test might also have in them bugs that are blocked by our assumptions -- blocked by the very knowledge of the area that makes us good at our jobs!
In the end, this behavior is the sort of thing that deserves thought and then at least documentation and obvious investigation into possible bugs by the unintentional cross-pollination of these two functionalities with overlapping targets.
And on the whole I am much happier that I am less dismissive now than I used to be of people who are struggling to get our support working before they always understand how it is supposed to be used. Because there are bound to be cases like this one.
And to that developer, if she is reading this -- be sure to forward this to your manager; you definitely earned your salary that day.... :-)
1 - This word is not intended pejoratively, just in the sense of someone coming into an area with a real blank slate in place, with no pre-conceived notions.
This post brought to you by ＠ (U+ff20, FULLWIDTH COMMERCIAL AT)
# jmdesp on 6 Feb 2008 10:57 AM:
I'm a bit puzzled. I never investigated it, but I've seen somewhere a long while ago that the '@' version of those fonts exists to be used for vertical text. So that vertical text starts to work better when you select that version is really, really not surprising for me.
IMO the japanese teams at Microsoft know about it very well and have tested it fully.
# Michael S. Kaplan on 6 Feb 2008 2:17 PM:
Tested adding it to unrelated fonts that do not claim any vertical support at all? That is a lot less likely. I know they certainly test the EA fonts that are used for vertical....
2008/02/28 Font size scaling -- GDI vs. GDI+
go to newer or older post, or back to index or month or day