Sunday, 27 August 2006

BabelMap : Unicode in Colour

A new release of BabelMap which fixes certain problems that may be encountered by users of non-English locales when they select the option to display all styles of fonts. Many thanks to Nocturnal Dreamer for helping me get to the bottom of it all. John Cowan also had some good suggestions for improving the Composite Font Mappings dialog, but I'm afraid that I haven't been able to do anything about this yet.

On Friday someone somewhere mentioned that colour coding characters according to a selected property would be quite useful. I thought so too, so I have quickly added such a feature into the latest release. You can now select any of the following properties from the "Colour Coding" option of the "Options" menu, and each character in the BabelMap grid will then be highlighted in a particular colour according to the value of that property for the character. Even if you select no colour coding then you still get some colour coding now, as assigned characters will be displayed on a white background and unassigned code points will be rendered in grey.

  • General Category
  • Canonical Combining Class
  • Bidi Class
  • Bidi Mirrored
  • Decomposition Type
  • Numeric Type
  • Script
  • Unicode Version (when the character was encoded)

This, for example, is what the Basic Latin block looks like if you select colour coding by General Category :

The tables below show what colours are used for each value of the various properties other than Script. I'll leave it as an exercise to the reader to work out what colour I've used for each of the sixty-four scripts defined in Unicode 5.0.

Colour Coding by General Category
Colour General Category
red Lu (Letter, Uppercase)
yellow Ll (Letter, Lowercase)
orange red Lt (Letter, Titlecase)
salmon Lm (Letter, Modifier)
crimson Lo (Letter, Other)
pink Mn (Mark, Nonspacing)
hot pink Mc (Mark, Spacing Combining)
deep pink Me (Mark, Enclosing)
violet Nd (Number, Decimal Digit)
fuchsia Nl (Number, Letter)
purple No (Number, Other)
green yellow Pc (Punctuation, Connector)
lime Pd (Punctuation, Dash)
light green Ps (Punctuation, Open)
spring green Pe (Punctuation, Close)
sea green Pi (Punctuation, Initial Quote)
forest green Pf (Punctuation, Final Quote)
olive drab Po (Punctuation, Other)
teal Sm (Symbol, Math)
cyan Sc (Symbol, Currency)
steel blue Sk (Symbol, Modifier)
royal blue So (Symbol, Other)
white Zs (Separator, Space)
khaki Zl (Separator, Line)
dark khaki Zp (Separator, Paragraph)
brown Cc (Other, Control)
peru Cf (Other, Format)
chocolate Co (Other, Private Use)
dark slate gray Cs (Other, Surrogate)
gray Cn (Other, Not Assigned)

Colour Coding by Canonical Combining Class
Colour Canonical Combining Class
white 0
violet 1 (Overlays and interior)
indigo 7 (Nuktas)
coral 8 (Hiragana/Katakana voicing marks)
yellow 9 (Viramas)
red 10-199 (fixed position classes)
green yellow 200 (Below left attached)
lime 202 (Below attached)
spring green 204 (Below right attached)
olive drab 208 (Left attached)
teal 210 (Right attached)
aqua 212 (Above left attached)
sky blue 214 (Above attached)
steel blue 216 (Above right attached)
slate blue 218 (Below left)
royal blue 220 (Below)
pink 222 (Below right)
hot pink 224 (Left)
deep pink 226 (Right)
sandy brown 228 (Above left)
peru 230 (Above)
chocolate 232 (Above right)
sienna 233 (Double below)
brown 234 (Double above)
gold 240 (Below - iota subscript))
gray Unassigned

Colour Coding by Bidi Class
Colour Bidi Class
white L (Left-to-Right)
fuchsia LRE (Left-to-Right Embedding)
purple LRO (Left-to-Right Override)
green R (Right-to-Left)
lime AL (Right-to-Left Arabic)
cyan RLE (Right-to-Left Embedding)
teal RLO (Right-to-Left Override)
orange red PDF (Pop Directional Format)
sandy brown EN (European Number)
chocoloate ES (European Number Separator)
brown ET (European Number Terminator)
steel blue AN (Arabic Number)
salmon CS (Common Number Separator)
crimson NSM (Non-Spacing Mark)
pink BN (Boundary Neutral)
khaki B (Paragraph Separator)
dark khaki S (Segment Separator)
yellow WS (Whitespace)
royal blue ON (Other Neutrals)

Colour Coding by Bidi Mirrored
Colour Bidi Mirrored ?
White No
Red Yes
gray Unassigned

Colour Coding by Decomposition Type
Colour Decomposition Type
white None
red Canonical
sky blue <font>
medium blue <noBreak>
pale violet red <initial>
fuchsia <medial>
slate blue <final>
purple <isolated>
aqua <circle>
green yellow <super>
lime green <sub>
gold <vertical>
orange red <wide>
dark khaki <narrow>
peru <small>
olive drab <square>
steel blue <fraction>
green <compat>
gray Unassigned

Colour Coding by Numeric Type
Colour Numeric Type
white None
red Decimal Digit
green Digit
blue Numeric
gray Unassigned

Colour Coding by Unicode Version
Colour Unicode Version
white 1.0.0 (4,716 characters)
pink 1.0.1 (21,204 characters)
deep pink 1.1 (1,657 characters)
green yellow 2.0 (11,373 characters)
lime green 2.1 (2 characters)
salmon 3.0 (10,307 characters)
crimson 3.1 (44,946 characters)
red 3.2 (1,016 characters)
sandy brown 4.0 (1,226 characters)
chocolate 4.1 (1,273 characters)
sky blue 5.0 (1,369 characters)
gray Unassigned


Anonymous said...

You wrote: "A new version of BabelPad supporting Unicode 5.0 will be available very soon." I wonder how soon is "very soon." It's been quite a while that this expression is around on your webpage about BabelPad.

Andrew West said...

Yeah, I know. It's bothering me as well, but I've broken the code and lost the enthusiasm to mend it. So in the end I took a week or two away from it all. Just started working on it again today, but there's another couple of weeks work left. Sorry about the delay, but the new version will definitely be worth the wait.

Anonymous said...

Hello, just downloaded the babelmap, but I can't view almost 99% of the letters. Any help would be appreciated (bear in mind I have no experience with pcs)
Thanks in advance

Andrew West said...

BabelMap relies on fonts on your system to display characters. Therefore for any character to be displayed by BabelMap you must have an appropriate font installed. Most PCs will have pre-installed font support for the more common scripts, but to view less common characters and scripts you will need to download third-party fonts (see Some of My Favourite Fonts at the bottom of the main blog page for some useful links to free fonts). In order to get good coverage of the almost 100,000 characters encoded in Unicode you will have to work hard, and I doubt that there is a single computer on this planet that has 100% font coverage of Unicode 5.0.

BabelMap has two options for rendering characters :

1) Click on the "Single Font" radio button next to the dropdown list of fonts, and select a particular font (e.g. Code2000 for good general coverage of Unicode). This will cause BabelMap to display all characters using the selected font, which is great if you want to see what coverage a particular font has, but not so good if you want to see all characters in all blocks.

2) Click on the "Composite Font" radio button. This will cause BabelMap to use different fonts to display characters from different Unicode blocks (e.g. use a Tibetan font to display Tibetan characters and a Chinese font to display Chinese characters). The default configuration uses fonts that should be available if you are running Vista, but the configuration (mapping between Unicode blocks and fonts) will need tweaking for most users. To do this, click on the "Configure" button next to "Composite Font" and select which font to use to display each Unicode block (don't forget to click the "Set Font" button for each block you are setting, and click "OK" at the end or you will lose all your changes). N.B. The "Save" and "Load" buttons allow you to use multiple configurations, but can be ignored when initially configuring BabelMap's font mappings.

If you are still unable to display characters which you believe should be displayed, please email me with your details (what operating system you are running on) and a screenshot if possible.

Anonymous said...

thanks a lot

Anonymous said...

Installing fonts can be done by loading the ttf file in babel map right?
I must be doing something wrong because still can't view anything new
Thanks again

Andrew West said...

To install a font, move the TTF file into your system Fonts directory (e.g. "C:\WINDOWS\Fonts"). You may be able to do this by right-clicking on the font file and selecting "Send to ... Fonts". This makes the font available to all applications on your system. You may also temporarily load a font into BabelMap by selecting "Add Uninstalled Font...." from the "File" menu, but this is not what you want to do.

You're not really giving me enough information to help you.

1. Can you confirm what version of BabelMap you are running (select "Help : About BabelMap..." from the menu). If you have recently downloaded it, it should be Also check whether it says "Windows 95/98/ME Build" or "Windows NT4/2000/XP/Vista Build".

2. What version of Windows are you running on (there are known issues with BabelMap running under Windows 95, but not 98 or later) ?

3. In BabelMap go to a Unicode block for which no characters are being displayed (something reasonably common like Greek, Cyrillic or CJK Unified Ideographs), and hit the "Configure" button next to "Composite Font" (ensure "Composite Font" is checked) -- this should open a dialog box that shows you what fonts on your system cover that block. If the font list on the top right is empty then you do not have any fonts installed that cover that block; if the list is not empty then your problem is not due to missing fonts, and needs further investigation.

Anonymous said...

Ι didn't install fonts correct, entirely my mistake
My windows are XP Home Greek

Anonymous said...

Hey I Love your layout !