Sunday, 24 October 2010

BabelPad and BabelMap Version 6.0.0.0

New versions of BabelPad and BabelMap that support Unicode 6.0 have been released today, and can be downloaded directly :

  • BabelPad.zip (simply unzip the file BabelPad.exe and run it from wherever you like)
  • BabelMap.zip (simply unzip the file BabelMap.exe and run it from wherever you like)

Creative Commons License
This screenshot of BabelMap is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License (CC-BY-SA-3.0) by Andrew West.


Important Technical Note

BabelPad and BabelMap were scheduled for release on 11 October, to coincide with the release of Unicode 6.0 on that day, but their release was delayed due to a Blue Screen of Death crash that occured with the beta versions of both BabelMap and BabelPad when the Windows function ExtTextOutW is called within a path bracket, and the selected font is Symbola font version 6.00, and the ETO_GLYPH_INDEX flag is set, and the glyph index passed to the function corresponds to U+1F5FD STATUE OF LIBERTY (this problem only occurs in BabelPad when in Simple Rendering mode, which bypasses Microsoft's Uniscribe rendering engine). The glyph for U+1F5FD in the Symbola font has a mega-complex glyph outline (which oddly enough is the glyph for an angel, whilst the glyph for the Statue of Liberty is actually at U+FFFED), which probably results in a buffer overrun somewhere within Windows GDI. In order to work around this problem I have had to rewrite, refactor and retest core sections of the source code.

The newly released versions of BabelPad and BabelMap fix the problem described above, and should be safe for use with the Symbola font under normal usage scenarios, but the glyphs for U+1F5FB (MOUNT FUJI) through U+1F5FF (MOYAI) are rendered very slowly because of their extreme complexity (several thousand points for each glyph), resulting in sluggish response in BabelMap when scrolling through the Miscellaneous Symbols And Pictographs block, and potentially extremely sluggish performance in BabelPad.

Moreover, the Symbola font may still cause a Blue Screen of Death crash (reporting an infinite loop) on some systems when rendering U+1F5FD STATUE OF LIBERTY at high point sizes with standard Windows applications such as Notepad (my test case is to set Notepad to use the Symbola font at 72 points, and then paste in a string comprising twelve instances of U+1F5FD — my XP machine then blue screens, although my Vista machine is OK). This general Windows-level vulnerability to Symbola version 6.00 means that BabelMap may still blue screen if you insert multiple instances of U+1F5FD into the BabelMap edit buffer, and BabelPad may still blue screen if you attempt to display a document with multiple instances of U+1F5FD at a large point size in Complex Rendering mode (i.e. using Uniscribe). For this reason, you are strongly advised not to install Symbola version 6.00, but if you do install this font I cannot be responsible for any loss or damage incurred due to a system crash when running either BabelPad or BabelMap.


BabelPad Enhancements

  • BabelPad now emulates the Alt-X functionality found in Microsoft Word and WordPad (position the caret after a hexadecimal code pont value and hit Alt-X to convert it to the corresponding Unicode character; and position the caret after a Unicode character and hit Alt-X to convert it to its corresponding hexadecimal code point value)
  • Convert Unicode character names to their corresponding Unicode character (due to the difficulty of disambiguating strings such as "bell symbol for bell with cancellation stroke" where "bell", "bell symbol", "symbol for bell" and "bell with cancellation stroke" are all Unicode character names, the selected text must be an exact Unicode name or formal alias, and not a partial name or a longer text string containing a Unicode name; although you can use the contextual convert utility to convert structured data such as <UnicodeName>Vulgar Fraction Three Quarters</UnicodeName> to <UnicodeName>¾</UnicodeName>) ["Convert : Unicode Name to Character" from the main menu or the right-click menu]
  • Import Shift-JIS encoded documents with emoji extensions defined by DoCoMo, KDDI or SoftBank [select "Shift-JIS plus DoCoMo/KDDI/SoftBank emoji" from the "Encoding" dropdown list of the "Open File" dialog]
  • Convert Han ideographs to their pinyin or jyutping readings (not perfect as characters with multiple readings are converted to a slash-separated list of readings, even when one reading is considerably more common than another, but this feature may be useful for some users in some situations)
  • Title casing options for either Script Neutral title casing (e.g. The Owl And The Pussy-Cat Went To Sea) or English title casing (e.g. The Owl and the Pussy-Cat Went to Sea) ["Options : Title Casing" from the menu]
  • The default script colours when colour coding by script is selected ["Options : Display Colours : Colour Code by Script" from the menu] have been harmonized with the default script colours used for BabelMap, and an option to reset all script colours to their default values has been added to the "Configure Script Colours" dialog (this needs to be selected for the new default colours to be used).

BabelMap Enhancements

  • Script colours when colour coding by script has been selected are now user configurable ["Options : Customize Colours..." from the menu]
  • When colour coding of characters has been selected, the character with focus is no longer highlighted in red
  • The character with focus in the character grid is now indicated by its cell having an inset appearance
  • Option to rotate of not rotate the glyphs for vertical scripts (Mongolian and Phags-pa) where the selected font has rotated glyphs for vertical layout (in previous versions of BabelMap the glyphs are always rotated) ["Options : Other Options : Rotate Vertical Scripts" from the menu]
  • The Export Font Glyphs utility has been improved to ensure glyphs are not accidentally clipped in some cases
  • The Han Radical Lookup utility has been updated to cover CJK-D (now covers all all 74,616 CJK unified ideographs)
  • The Advanced Character Search utility now has an option to only give the total number of characters matching the selected criteria, and not list them all (this makes searches which return a large number of results, for example when querying how many characters were introduced in a particular version of Unicode, very fast)