How Do You Solve a Problem Like Meiryo? (Windows XP edition)

by Michael S. Kaplan, published on 2008/06/18 03:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2008/06/18/8614758.aspx


Apologies for the Sound of Music allusion!

Via the Contact link, tiwunster asked me:

Hi I have a question regarding the changing of default East Asian fonts. Recently Microsoft has release East Asian ClearType fonts for Windows XP.

I've installed all of them however I have to configure the applications individually to make use of them since Windows XP default to non-ClearType ones.

Is there any way to 'force' XP to default to the new fonts when rendering East Asian characters? Thanks.

Best regards

Now indeed, the cool Vista ClearType fonts are now available for XP (for genuine XP installations only!):

But no, there is no supported (or indeed supportable!) way to change the defaults here.

There are several reasons for this....

The first is that the reason these fonts were made available on XP is (as the various blurbs indicate) for the benefit of WPF (Windows Presentation Foundation), which really does not work as well with the conventional East Asian fonts that ship in Windows prior to Vista, since they are TrueType fonts that contain embedded bitmaps (and those embedded bitmaps do not work in WPF, or in GDI+ incidentally), which means at smaller sizes the fonts are pretty unsightly in WPF.

That is the scenario, and the reason they were released. Their use in ways beyond that -- such as adding them to the GDI font link chain -- was not tested or verified.

And everyone remembers the First Tester's Axiom, right? If you have not tested it, assume it is broken.

What could be broken? Well, any application using default fonts that was suddenly getting glyphs from a different font, just as the most obvious example!

Second, if you look at the GDI font link registry key (HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink) for these values of these fonts in Vista, you will see something different. For example the Meiryo value:

MSGOTHIC.TTC,MS UI Gothic
MSJH.TTF,128,96
MSJH.TTF
MSYH.TTF,128,96
MSYH.TTF
MALGUN.TTF,128,96
MALGUN.TTF

See all of those numbers? That was some crucial scaling support that was added to Vista to help allow for the very different nature of these fonts and the way that GDI font linking was causing very strange effects as the font link chain as being followed. The underlying support for this different format requires work that was done in GDI in Vista, and that support could not be backported for the sake of a WPF, which never even uses the settings anyway....

Adding these fonts to the font link chain, in addition to being unsupported (and therefore probably buggy) and lacking the scaling support to have the font sizes appear properly in XP when picked up through font linking (and therefore pretty much guaranteed to be incorrectly scaled in an unknown number of cases, is also something that was neither done for or tested in XP or Server 2003.

You can certainly try to add values yourself without the scaling information (since that feature does not exist prior to Vista) but if you make a mistake in the registry key you could break all font linking, which is a very big risk to take to pick up some other fonts for your applications without specifying them....

 

This blog brought to you by(U+3140, aka HANGUL LETTER RIEUL-HIEUH)


# Mihai on 18 Jun 2008 12:46 PM:

Really cool having these fonts!

But try installing them on an English XP :-)

- The license agreement is all "mojibake" (including the French accented characters!)

- At the end you get a MessageBox with "mojibake", no clue if it's about a failure or a success

# Michael S. Kaplan on 18 Jun 2008 12:57 PM:

Is the font installed, at least? :-)

# Mihai on 18 Jun 2008 6:52 PM:

"Is the font installed, at least? :-)"

Yes, no problem there :-)


referenced by

2012/04/18 How on earth does that scale, anyhow?

2012/01/26 If font linking doesn't fit the text to a T (or ț!), a Romanian letter may be right but not quite look it

go to newer or older post, or back to index or month or day