BabelStone Blog

Sunday, 6 April 2008

BabelMap Version

To coincide with Friday's release of Unicode 5.1.0 I am releasing an updated version of BabelMap which supports all 100,713 characters encoded in Unicode 5.1 (1,624 new characters and 11 new scripts).

In addition to the support for Unicode 5.1 this version also has the following improvements (most of which I only added in last week, which is why it was released two days late). However, I am still working on a major new version for release later in the year which will solve (what I consider to be) the main problem with BabelMap—the fact that the "edit buffer" only supports a single font, and so text in multiple scripts may display badly or as boxes.

1. A new "Font Info" dialog box has been added (available from the Tools menu or as a button in the Font Analysis utility). This gives detailed information about the currently selected font, currently all the information from the font's NAME table (for all platforms, encodings and languages supported by the font) and a list of all CMAP subtables in the font. This is my first experiment in providing information directly from the font tables, and in the future I might include more information from other tables if there is a demand. You can find out some very interesting things about your fonts from this dialog; for example I was very surprised to see just how many fonts there are that have a Unicode 1.0 or 1.1 semantics CMAP subtable, even though I very much doubt that the subtable mappings really do accord to Unicode 1.0 or 1.1 (i.e. Hangul symbols are mapped to where CJK-A now is).

2. The Composite Font configuration dialog ("Configure" button next to the "Composite Font" radio button) has been improved and simplified (largely in response to suggestions by John Cowan). There is now a simple correspondence between a single Unicode block selected and a list of fonts that are available for mapping to that block. This makes the configuration tool much easier to use, although it does mean that it is no longer possible to map a single font to multiple Unicode blocks in a single operation. The list of fonts covering a particular Unicode block are now also sortable by name or by number of characters that they cover, which should make it easier to find the font with the best coverage for any block.

I have also added an "Auto" button that will attempt to automatically configure the best composite font by mapping the font with the best coverage for each block, whilst at the same time using as few different fonts as possible. The results produced may not always be brilliant because the number of characters in a font's CMAP table is not necessarily the best indicator that the font has good coverage and support for a particular Unicode subset, especially for complex scripts. Another problem is that some fonts distort their actual coverage by including explicit blank or not defined glyphs for characters that they don't cover, which may make them seem as if they have good coverage, when in fact they don't (for example "Ming(for ISO10646)" has mapping for all 6,582 CJK-A characters but only a handful of them are non-blank). To avoid running the risk of getting every block mapped to a last resort font, I have explicitly excluded from the auto-configuration process any font which includes the string "LastResort" or "fallback" in its name.

And as a final touch I have added coverage statistics for the current configuration—a prize to the first person to achieve 100% coverage!

3. Related to the changes in the way the Font Configuration dialog works, I have also improved the the way that the default font mappings are assigned the first time that the application is run. This means that there may be a delay of several seconds the first time BabelMap is run (and also the first time it is run after upgrading from a version of BabelMap that supports a prior version of Unicode). This time is used to auto-configure the composite font and determine which font on your system has the greatest coverage, so that it can be set as the initial single font.

4. The Character Properties dialog (the "?" button or F9) has been extended to include the following additional information about characters :

5. The character grid font size can now be adjusted from the new "Fonts" menu. Generally speaking, most glyphs for most fonts fit in their cell comfortably at the default font size, but some fonts have glyphs that are smaller or larger than typical at the default font size, and may not display well. This new feature allows you to adjust the font size used for the character grid display if you are having display problems.

Latest Version [2008-06-12]

BabelMap Version incorporates a number of minor bug fixes and improvements to the user interface, as well as workarounds for fonts with invalid data (e.g. Caslon Roman/Italic, Matisse ITC 1.00). The most important change is to fix a bug that causes BabelMap to become unresponsive if you have installed Apple's Last Resort Font. If you are considering installing the last Resort Font you should first upgrade to the latest versions of BabelMap and BabelPad.



Index of BabelStone Blog Posts