by Michael S. Kaplan, published on 2005/10/01 10:09 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2005/10/01/476022.aspx
Yesterday I was with our international MVPs all day as they were meeting with various people all across GIFT and GPTS. It was exciting for me because I had the chance to learn about a lot of things that I do not usually get exposure to, if you know what I mean....
One of the interesting points that came up is the difference between these two technologies (linking vs. fallback), both of which are intended to help with the same problem -- you select a font and then try to use that font to view characters that do not exist within it. But how they work in Windows is very different.
I will limit things in scope at the moment, but soon I will expand it to talk about differences in MLang, Office, and maybe even Avalon....
Font fallback is what Uniscribe uses. With its own internal knowledge of the best fonts to use for the various scripts that it supports, any time it is asked to render a character that is not in the selected font, it borrows the glyph from its preferred font for the script. Note that you can override this choice at any time by simply making sur your initial font contains the characters you want and all of the shaping rules/tables than an OpenType font brings to the mix. If fallback does not do the trick, Uniscribe will fall back to linking.
Font linking, on the other hand, is what GDI uses. It is the value list of fonts under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink that gives the list of fonts to look in if the character cannot be found, and the order to look at them. Again, you can override the mechanism by making sure the initial font you choose has the glyphs.
In this particular case, FALLBACK gets used pretty much exclusively in the case where you have a complex script, something that needs Uniscribe to do its work. And if you look at LINKING, for the most part it is exclusively used to help the East Asian story by allowing the default system locale to choose an ordering for where to look for the appropriate ideograph glyphs in fonts (though the mechanism can be expanded, and sometimes is by ISVs, to cover other languages and scripts).
Now of course the way that the terms are used by other technologies is actually different in some cases, as are their mechanisms -- I will cover this soon (for now I have to get to a presentation for the Shell MVPs, where I am acting as both the 'Slide Boy' and one of the two 'Demo Boys'. :-)
# Suz on 1 Oct 2005 2:06 PM:
# Michael S. Kaplan on 1 Oct 2005 6:46 PM:
# Suz on 1 Oct 2005 7:28 PM:
# Michael S. Kaplan on 1 Oct 2005 7:57 PM:
# Andreas Magnusson on 3 Oct 2005 10:42 AM:
Adrian on 11 Mar 2010 11:08 AM:
I've seen a few places assert that Uniscribe will automatically apply font fallback and/or font linking, yet the documentation says just the opposite.
"Once it has determined that font fallback is required, *the application* must assign a fallback font."
Can you clarify what you meant about Uniscribe doing some of this work?
Michael S. Kaplan on 11 Mar 2010 4:14 PM:
ScriptShape (the topic you link to) is low-level Uniscribe, where none of the stuff I talk about applies and you have to do it all yourself....
2007/02/27 They do it with MLang
2007/02/06 MLang and GDI and Uniscribe, oh my!
2006/03/18 What about logical fonts?
2006/03/14 GDI Font Linking in GDI+
2006/01/22 Questions about font linking, etc.
2005/12/12 Ready... set... Reboot Redux
2005/10/18 Font Linking vs. Font Fallback, #2
go to newer or older post, or back to index or month or day