<!-- Link to source file download -->
Download source files - 51 Kb
<!-- Link to demo file download -->
Download demo project - 39 Kb
<!-- Article image -->
<!-- Add the rest of your HTML here -->
As you may know, Windows 2000 and Windows NT contain natural support Unicode, and can make use of
the Windows API functions for displaying and using wide characters. However, the behavior of those
API functions is not always completely the same between NT and 2000. Furthermore, under Windows 95
& 98 Unicode character functions are not supported at all.
This makes it very frustrating for a developer to create an application that needs to display such
characters. Recently, I needed to write a small Japanese dictionary for myself. This article contains
the small set of classes that encapsulate some simple character translations and the methods for
displaying Unicode characters reliably on Windows95/98/NT/2000 to solve this problem. I based my code
on some older code done by Glen Rosenthal who wrote JWPce (a very nice Japanese text editor) and on
an MSDN article that had some dated examples of a similar solution (Q241020).
Basically, all TrueType fonts contain encoding tables based on the Unicode mappings for
the characters those fonts contain. Microsoft distributes a few large fonts with MS Office
and with newer version of Internet Explorer that contain characters or 'glyphs' for many different
globale regions. Normally, a device context will do the translation from character code to
glyph index for the systems locale when you call the
TextOut or the
functions. This does not work on non-Unicode versions of Windows, and it does not work on some
configurations for systems that are Unicode compatible. So in order to display the character you
want on all version of windows you have to calculate the index of the 'glyph' within the true
type font for the charcter code you want to display. Then a call to the
function will allow you to display the 'glyph' you have selected; so long as it is present in
the selected font.
These classes provide a simple set of objects to easily use a true type font that contains
glyphs foreign to your system locale, as well as some character code translation objects.
To assist in debugging and just generally getting used to seeing Unicode character codes;
most programmers are used to ASCII. I've included some iostream manipulators that allow
you to easily translate character codes from one encoding format to another.
If you have any enhancements or improvements, please let me know and the source can be updated here.