Wednesday, 16 November 2005

BabelMap Version 1.11.4

I released a new version of BabelMap yesterday, the first for several months. It has two important new features.

Firstly, I no longer use Uniscribe to render the characters in the main character grid. Most people will probably not notice the difference, but it has removed one constant source of annoyance to me : unwanted font substitution. Now the Uniscribe API allows you to turn off font substitution (which I do in both BabelPad and BabelMap), but in some cases it will still do it anyway. For example, in the previous versions of BabelMap if you selected the Tahoma or Microsoft Sans Serif font and displayed the CJK Unified Ideographs block, then the ideographs would be displayed even though these fonts do not have any glyphs for CJK ideographs (the MingLiU font appears to be substituted). Similarly, for Tahoma and Microsoft Sans Serif, the control characters U+0000 through U+001F are displayed using another font (Batang, Dolum or Gulim). As far as I can tell this unexpected font substitution only happens for Tahoma and Microsoft Sans Serif. Some versions of Uniscribe also do weird font substitution when running under anything other than Windows XP (i.e. 9X, ME, NT4, 2K), and for certain complex scripts if the selected font does not have the appropriate OpenType tables then Uniscribe will substitute the missing character glyph for the font's glyphs (this problem seems to have been fixed in the latest versions of Uniscribe). Anyhow, in the latest version of BabelMap none of this unexpected and unwanted font substitution occurs, and what you see is exactly what is in the font.

The second major change is the implementation of the number one feature request : to be able to open fonts from file. By default BabelMap shows all installed fonts on the PC, but now you can also open one or more uninstalled fonts from file by selecting "File : Add New Fonts..." from the menu. When you do this the fonts will be available for selection and display in exactly the same way that installed fonts are. However, the fonts will only be visible for the current instance of BabelMap, and will no longer be available once BabelMap is closed unless you actually install the fonts. This feature will be very useful for previewing fonts, in order to install only those fonts with the coverage you are interested in.

Finally, a sneak preview of what I am working on next, which for me is a very exciting feature : a utility that analyses the OpenType tables of the currently selected font. The utility displays in a tree control the scripts, languages, features and lookup tables defined for the GSUB and GPOS tables in the font :

When you click on one of the lookup tables, then full details of the lookup table will be displayed in another area, for example for a GSUB lookup you will be able to select an input glyph or glyph sequence from a dropdown list (and a context if appropriate) and see what output glyph or glyph sequence the lookup table maps it to. I am also planning to put in an OpenType test bed, similar to the proofing tool in Microsoft VOLT, which will allow the user to enter text and see the OpenType substitutions take place. I still have a lot of work to do on this, and I'm quite busy on other things right now (lots of fun stuff to do in preparation for Unicode 5.0, including writing up the block introduction for Phags-pa), so this feature will probably not be ready until the spring of next year.

No comments: