WGL Assistant

07 sep

Categories: Techno

WGL Assistant allows convenient use of the multilingual (Unicode/WGL4) TrueType and OpenType/TTF fonts in all MS Windows applications.>

  1. Character encoding
  2. 1.1. Codepage soup
    1.2. Unicode
  3. Fonts
  4. 2.1. TrueType fonts
    2.2. Single-codepage fonts
    2.3. Multilingual fonts
    2.3.1. Unicode fonts
    2.3.2. WGL4 fonts
  5. Applications
  6. 3.1. Using Unicode
    3.2. WGL4 and codepage selection
    3.3. Font substitutes


  1. WGL Assistant
  2. 4.1. Codepages
    4.2. Font preview
    4.3. Program window
    4.4. Running WGL Assistant
    4.5. Customizing WGL Assistant
    4.5.1. Creating custom font preview texts
    4.5.2. Creating custom language versions
  3. Acknowledgements
  4. License and Copyright Note



  1. Web Links
  2. 7.1. Our homepage
    7.2. Downloadable multilingual fonts
    7.3. Commercial products containing multilingual fonts
    7.4. Font utilities

I. Introduction

1. Character encoding ^

1.1. Codepage soup ^

Most computer applications and operating systems can easily access only 256 characters at a time. This is so because they originally used 8 bits (one byte) which makes 256 different combinations (28=256). Text is stored in computer memory as strings of codes, i.e. text is encoded. Every character (letter, digit, special character) is represented by a number, e.g. the letter "A" is usually stored as 65. At the very beginning computers could work with 128 different combinations (one bit was reserved for other purposes). Meanwhile the American National Standard Commitee (ANSI) developed the American Standard Code for Information Interchange (ASCII), which was a standarised encoding table (a codepage) covering all uppercase and lowercase English letters, digits, punctuation characters, as well as some special and control characters.

Engineers soon noticed that 128 codes are not sufficient for all characters. Even the diactirical marks of the Western European languages could not be covered. The ASCII codepage covered 128 characters, but newer computer systems were able to work with 256 codes. So the standard commitees (ANSI, ISO) and computer companies (IBM, Apple, Microsoft) started extending the ASCII codepage with various character sets. The complementary 128 codes had been filled with graphical symbols, mathematical signs, Western European diacritical marks etc. Each organization elaborated their own "standards".

The characters for the most Western European languages have been ordered into several codepages. ANSI and Microsoft invented the codepage 1252 (ANSI Latin-1), the International Standards Organization (ISO) established the ISO 8859-1 (ISO Latin-1), IBM developed the codepage 850 (IBM Latin-1), Apple created the Macintosh Roman character set, etc.

Because of the "iron curtain", the countries in the Central and Eastern Europe were initially separated from the Western world. Nevertheless, each CEE country started to modify the Western codepages by adding their own diacritical marks. So-called local "quasi-standards" have been developed. Russians invented KOI-8, in Poland Mazovia became most popular, yet there were others also.

Political changes in the early 90s had forced Western companies and commitees to quickly develop codepages for the "new" markets. As a result, the major regions of Central Europe (Poland, former Czechoslovakia, Hungary, former Yugoslavia), Baltic area (Lithuania, Latvia, Estonia) and Cyrillic area (former Soviet Union) have been defined. Each of these regions received its own developer-specific codepages.

For example, Polish, Czech, Slovak, Hungarian, Albanian, Romanian, Croatian and Slovenian languages have been artificially grouped into Central European codepages (also called Eastern European or Latin-2). ANSI developed CP 1250 (ANSI Latin-2), ISO had the ISO 8859-2 (ISO Latin-2), IBM invented CP 852 (IBM Latin-2), Apple created Macintosh CE and so on.

1.2. Unicode ^

The Unicode standard is a character coding system designed to support written texts of diverse modern, classical and historical languages. It's based on double-byte character encoding, so it can enumerate 65,536 characters. It's hopefully the "one and only" future standard, and it may solve the "codepage soup" problem. Unicode is compatible with the ISO 10646 standard. The current version 2.1 includes 38,887 coded characters used in written languages of the Americas, Europe, the Middle East, Africa, India, Asia, and Pacifica.

2. Fonts ^

2.1. TrueType and OpenType fonts ^

TrueType fonts used in Microsoft Windows 3.1 initially contained only the characters from the Latin-1 (CP 1252) codepage. But the TrueType font technology allows many more characters in a single font. Microsoft decided to encode the characters according to the Unicode standard. But most of the applications were not yet programmed to work with such fonts. Even if a font contained many characters, the applications could only use 256 characters of each font.

In Microsoft Windows 2000, OpenType fonts will be used. The OpenType font format is an extension of the TrueType font format, adding support for PostScript font data. The format was developed by Microsoft and Adobe.

OpenType fonts may contain TrueType or PostScript outlines (so Type 1 won't be necessary anymore), but the general structure of an OpenType font file is that of a TrueType font.

2.2. Single-codepage fonts ^

In Microsoft Windows 3.1, characters for each codepage had to be stored in a separate font. A user desiring to switch from English to Cyrillic to Greek while typing would have to choose three different fonts: Times New Roman, Times New Roman Cyr, and Times New Roman Greek.

The non-Latin-1 fonts were encoded in Unicode, but each font contained only the character set used in the specific codepage. Microsoft used a trick, so the applications could see the non-Latin-1 fonts just as if they were normal Western fonts. Unfortunately, this trick was not published and many font developers used different ways to get international characters into TrueType fonts.

ANSI codepages used:

1252 Latin-1 (Western) 1253 Greek
1250 Latin-2 (Central Europe) 1254 Turkish
1251 Cyrillic 1257 Baltic

2.3. Multilingual fonts ^

2.3.1. Unicode fonts ^

In Microsoft Windows NT 3.1, some Unicode functionality was included in the system. Thus a particular application could address all characters contained in a TrueType font, not only the first 256 of them. Unfortunately few developers wrote compliant programs, so Unicode didn't become popular at that time. Nevertheless, Windows NT was the first Microsoft system which included multilingual TrueType fonts, containing characters for more than one codepage.

2.3.2. WGL4 fonts ^

In 1995, Microsoft Windows 95 was introduced. It supported a subset of Unicode which included characters required by Western, Central, and Eastern European writing systems, plus characters required by Greek and Turkish. This so-called PanEuropean character set contained 652 characters and was called WGL4: Windows Glyph List 4.

Fonts which were shiping with Windows 95 included the full WGL4 character set (all Western and Central European languages, Cyrillic, Greek, Baltic and Turkish alphabets). Later, Microsoft and other vendors released fonts which included a smaller or larger character set. For instance, Trebuchet MS contains characters from the Western, Central European and Turkish codepages, thus not covering the full WGL4 set. On the other hand, there are fonts like Bitstream Cyberbit (over 29,000 glyphs) or Arial Unicode MS (over 51,000 glyphs), covering most of the Unicode standard.

The character set included in a font can be examined using the free Microsoft Font Properties Extension

MS Font Properties Extension

3. Applications ^

There are various ways in which applications may access the extended characters (>256) included in the multilingual TrueType fonts.

3.1. Using Unicode ^

Applications which are Unicode-compliant use double-byte text encoding to store the text and may address the extended characters directly. Currently there are only few such applications (e.g. Microsoft Word 97 and Word 2000, Adobe InDesign, MGI Calamus Publisher 2.0) yet the number is slowly growing.

3.2. WGL4 and codepage selection ^

To make the use of multilingual fonts in non-Unicode applications easier, Microsoft introduced a mechanism which allowed the user to choose a single WGL4 font, and change codepages as needed. In order to use this codepage selection mechanism, applications were supposed to use the system font selector.

Windows Font Selector

Alternatively, applications could use a special form of font enumeration, listing all TrueType fonts including the script name in the brackets. This method is used by Windows WordPad.

WordPad Font Enumeration

Unfortunately, not all applications use the system font selector or the WordPad-like font enumeration. They use the custom font selection dialogs and the old Windows 3.1-like font enumeration (e.g. Microsoft Word 7.0, Adobe PageMaker 6.5, Adobe Photoshop 5.0, QuarkXPress 4.0, Corel DRAW! 9.0).

3.3. Font substitutes ^

Most applications still use the old Windows 3.1-style font enumeration, listing the installed system fonts including so-called font substitutes (or: font aliases). These are the entries in the [FontSubstitutes] section of the Windows 95/98 win.ini file or the Windows NT 4.0 registry.

Although the font aliasing mechanism is quite primitive and hacky (every change requires a Windows restart), there is one interesting feature about this mechanism. By entering a line:

Arial CE,238=Arial,238
a "virtual font" named Arial CE is being installed, which contains all characters of the Central European script of the Arial font. Non-WGL4 applications can now access the Polish, Czech, Slovak etc., characters in the Arial CE "virtual" font using the codes of the Windows 1250 codepage.

Analogically, following entries may be made:

Arial Cyr,204=Arial,204
Arial Greek,161=Arial,161
Arial Baltic,186=Arial,186
Arial Tur,162=Arial,162

The mysterious numbers were initially intended to be used only by Microsoft and were never supposed to be published. Thus, they were chosen based on the visual associations of the hexadecimal notation:

DEC HEX Meaning Codepage
238 EE Eastern Europe 1250
204 CC CyrilliC 1251
186 BA BAltic 1257
Later, more values have been added without such "linguistic" associations.


WGL Assistant allows convenient use of the multilingual (Unicode/WGL4) TrueType and OpenType/TTF fonts in all MS Windows applications.

II. About the Program

4. WGL Assistant ^

Our program, WGL Assistant, helps the user to manage the multilingual entries in the font substitutes section.

4.1. Codepages ^

WGL Assistant allows you to easily enable and disable the codepages globally, or for each multilingual font installed on the system.

When you enable a codepage, a new virtual font (font substitute) will be added for such codepage. The new virtual font will retain the name of the original font, but a short suffix will be added. For example, if you enable Arial (Central European), the following entry will be added into the [FontSubstitutes] section of the win.ini file (Windows 95/98) or of the registry (Windows NT):

Arial CE,238=Arial,238

You can also remap the Western codepage of a font without adding the suffix. Instead of creating a new virtual font, the existing font will be remapped, so that a codepage of your choice becomes the primary codepage of that font. This is useful if you prefer a codepage different than Western, or if the application doesn't list the "virtual" fonts (Arial CE, Arial Cyr etc.). This can also be used to write a non-Latin-1 document in a non-Unicode aplication and then import it into a Unicode-savvy application. WGL Assistant allows you to make such substitutions, which will appear as follows:


Unfortunately, Windows must be restarted to activate the changes every time, due to a limitation of Windows, not of WGL Assistant.

4.2. Font preview ^

WGL Assistant has two font preview modes: a simple preview and an extended preview. The font preview feature is designed for optimal use with multilingual fonts. Each codepage can be previewed with a different sample text.

A set of pre-defined sample texts is included, optimized for each codepage. Each sample text shows most common diacritical characters used in the languages of the specific codepage.

Qui OHamburgefonstizv 01234567890
This sample includes the standard test word "OHamburgefons" which is widely use to preview a font, thus presenting most significant details of a typeface. The version used here has been customized for each codepage and includes all digits.
ABCDEFGHIJK abcdefghijklmnopq
This sample includes the full uppercase and lowercase basic alphabet used in each codepage, with no diacritics.
This sample presents uppercase alphabets, with both basic and diacritic letters of each codepage.
This sample presents lowercase alphabets, with both basic and diacritic letters of each codepage.
&§†‡ $¢€£¥¤ ©®™ +=÷<^>
This sample presents selected special characters, punctuation, currency and mathematical symbols, diacritical marks etc.

The user can easily add custom preview texts (see: Customizing WGL Assistant)

The simple font preview is always visible in the program window. The extended preview window can be switched on and off. It shows a sample text in several sizes of the selected font, similarily to the Windows 95 Font Preview program. Though the Windows 95 Font Preview program cannot preview the extended characters WGL Assistant easily can.

Not all codepages included in a font may be accessed on all Windows platforms. For example, viewing Chinese, Korean and Japanese characters may require the installation of additional system components. If you need these characters, you can install Internet Explorer 5.0 language extensions, Windows NT 4.0 or Windows 2000.

4.3. Program window ^

The program window lists all installed multilingual TrueType fonts, i.e. fonts which contain the codepage information and characters for more than one codepage.

Program Window


Enable/disable selected codepage
Enable/disable selected codepage

By clicking on this button, you can enable/disable the currently selected codepage. Alternatively, you can click directly on the codepage to enable/disable it.

When you enable a codepage, a virual font (font substitute) will be added for this codepage. For example, if you enable Arial (Central European), the following entry will be added into the [FontSubstitutes] section:

Arial CE,238=Arial,238
Codepages for all fonts...
Codepages for all fonts...

Clicking on this button will show a menu where you can enable/disable a certain codepage in all installed fonts, or even all codepages in all fonts.

This menu will be also displayed if you click with the right mouse button on the font list.

Apply/remove remapping of the Western codepage
Apply/remove remapping of the Western codepage

In some cases, you might want to remap the Western codepage of a font. Instead of creating a new virtual font, the existing font will be remapped, so that a codepage of your choice becomes the primary codepage of that font. This is useful if you prefer a codepage different than Western, or if the application doesn't list the "virtual" fonts (Arial CE, Arial Cyr etc.). This can also be used to write a non-Latin-1 document in a non-Unicode aplication and then import it into a Unicode-savvy application.

Press this button to apply or remove such mapping of the currently selected codepage.

Extended font preview
Extended font preview

Press this button to switch the extended preview window on and off. It shows a sample text in several sizes of the selected font, similarily to the Windows 95 Font Preview program. Please note that you cannot preview the extended characters in the Windows 95 Font Preview program, but you can do this in WGL Assistant.

Select font preview text...
Select font preview text...

Press this button to select a sample text for the font preview. There is a set of pre-defined sample texts, which have been optimized for every codepage. Each sample text shows most common diacritical characters used in the languages of the specific codepage.

Select program language...
Select program language...

WGL Assistant has a multi-language user interface. Press this button to switch between different program dialog languages.

Edit the LangRes.ini language resource file
Edit the LangRes.ini language resource file

All program dialog text and all font preview sample text is stored in a special LangRes.ini language resource file. The file can be edited. You can for instance translate all text into a language which is not supported by WGL Assistand yet. You can also add custom font preview sample sets (see: Customizing WGL Assistant). Press this button to open the language resource file in a text editor.

Check for new version on the Web...
Check for new version on the Web...

If you are connected to the Internet, WGL Assistant can look up our site and check if a newer version of the program has been released. If there is a new version, WGL Assistant will download and install it. Press the button and select "Check for new version on the Web..." from the menu.

If you are connected through a proxy server, you may need to enter the proxy host and port prior to downloading the update. To do that, press the button and select "Select proxy server..." from the menu.

Open fonts folder
Open fonts folder

WGL Assistant can enable and disable aliases of installed fonts, but it cannot really install or uninstall fonts. Pressing this button will open the system font folder, so you will be able to install or remove any TrueType font.

Change Substitute NLS 1252 codepage

You can substitute the system codepage 1252 (Western) by a codepage of your choice. In other words, you can force the system to supply the characters of a different codepage in place of the default Western characters. Hence, you gain access to non-Western characters on non-Unicode-enabled applications that do not work with the alias mechanism. Those include Adobe Photoshop 4.0-6.0 (U.S. English), Adobe Illustrator 8.0 (U.S. English). You do not need this when working in Adobe InDesign (any version) or Adobe Illustrator 9.0.

Warning! This setting has some side-effects. Applications like Corel Draw 8.0 or higher, which rely on system font rasterization but employ custom font metrics rendering, or other applications which use standard Unicode to Wide String API calls will not work completely poperly with plain Western encoded characters.

4.4. Running WGL Assistant ^

WGL Assistant not only helps you to manage multilingual fonts, but it also has a multi-language user interface. You can easily switch between different program dialog languages. Currently, the Dutch, English, French, German and Polish languages are supported, but further languages may be added in future. The user can easily add or modify dialog languages.

WGL Assistant installs an own applet in the Control Panel, so it can be easily accessible, without having to browse for it in the Start menu.

We plan to add a feature to WGL Assistant which will allow to start the program in the command line mode with various parameters, helping the system administrator to automate font installing.

4.5. Customizing WGL Assistant ^

WGL Assistant may be easily customized. To do this, start Notepad and edit the file LangRes.ini, which can be found in the program directory.

4.5.1. Creating own font preview texts ^

The LangRes.ini file contains [Samplez.name of the sample] sections. These sections may be modified, new sections may also be added.

The name of the preview text, which appears when the user clicks on "Select font preview text...", is stored in the section name. For instance, if you want to add a sample set with the title "The quick brown fox", you need to add the following line to the LangRes.ini file:

[Samplez.The quick brown fox]

This line should be followed by a list of samples:

 ;Western 0=Sample Western text ;Greek 161=Sample Greek text ;Tur 162=Sample Turkish text ;Hebrew 177=Sample Hebrew text ;Arabic 178=Sample Arabic text ;Baltic 186=Sample Baltic text ;Cyrillic 204=Sample Cyrillic text ;Central European 238=Sample Central European text 
4.5.2. Creating own language versions ^

You can create your own language versions of WGL Assistant by editing the LangRes.ini file. Just create a new language section, giving the section the name of the language, e.g. [Èeský] or [Français]. Then copy all lines from en existing section and translate the messages, which are right to the equation sign.

You can also translate the help file, which is located in the help subdirectory of the program directory. The help file is written in HTML 3.2. The filename is xxindex.htm, where xx is a two-letter standard abbreviation of the language. You can use e.g. czindex.htm for Czech or frindex.htm for French.

Once you've created a new language version or new font preview texts, please send them to us! We will include them in the distribution version. Please send the LangRes.ini file and the xxindex.htm help file.

Do not modify the expressions left to the equation sign. Do not use the equation sign in the entries. Localize all strings for a specific language (do not leave untranslated strings).

Read the comments and hints in the LangRes.ini for further information.

5. Acknowledgements ^

Zbyszek Czapnik <czapnik@venco.com.pl>
for everything

Adam Twardoch <adam@twardoch.com>
for the German version, ideas and documentation

for Windows NT testing

Kojak and Zbyszek
for Windows NT registry assistance

Neil Jones <abton@operamail.com>
for the Control Panel applet example

Mark A. Hiselman and James T. Potter
for Enlish language version assistance

6. License and Copyright Note ^

This is not free software. You are hereby licensed to use this software for evaluation purposes without charge for a period of 45 days. If you use this software after the 45th day evaluation period a registration fee of USD 10 or PLN 20 is required.

Online payments are not accepted yet.

Provided that you verify that you are distributing the evaluation version you are hereby licensed to make as many copies of the evaluation version of this software and documentation as you wish; give exact copies of the original evaluation version to anyone; and distribute the evaluation version of the software and documentation in its unmodified form via electronic means. There is no charge for any of the above.

If you modify the original files, especially in order to create new language versions or new font preview texts, you are encouraged to send these to the author. You may receive a free license if you do so.

You are specifically prohibited from charging, or requesting donations, for any such copies, however made; and from distributing the software and/or documentation with other products (commercial or otherwise) without prior written permission.

Radosław Przybył is author of this software.
Copyright © 1998-2001 by Rados³aw Przyby³. Portions copyright © 1999 by Adam Twardoch.
All Rights reserved.

III. Other Resources

7. Web Links ^

7.1. Our homepage ^


The source of WGL Assistant

The ultimate font site, typography in Poland, Central European diacritics (by Adam Twardoch)

7.2. Downloadable multilingual fonts ^

Microsoft Core Fonts (Microsoft Corp.)
30 freely available multilingual fonts by Microsoft/Monotype

More Euro Enabled Fonts for Microsoft Office (Microsoft Corp.)
35 downloadable multilingual fonts by Microsoft/Monotype, for Microsoft Office users

Arial Unicode MS Font for Publisher 2000 (Microsoft Corp.)
A Unicode 2.1-compatible TrueType font (over 40,000 characters!), for Microsoft Publisher users

HP FontSmart 3.1 (Hewlett-Packard)
145 downloadable multilingual fonts by Hewlett-Packard, for HP printer users

7.3. Commercial products containing multilingual fonts ^

Fonts in Microsoft products (Microsoft Corp.)
a comprehensive list of multilingual fonts (most of them by Microsoft/Monotype) included in Microsoft Windows, Microsoft Office, Microsoft Internet Explorer etc.

Corel DRAW! 8.0/9.0 (Corel Corp.)
33 multilingual fonts by Bitstream

Adobe WebType (Adobe Systems)
12 screen-quality multilingual fonts by Adobe

7.4. Font utilities ^

Font Properties extension (Microsoft Corp.)
This free extension adds several new property tabs to this properties dialog box. These include information relating to font origination and copyright, the type sizes to which hinting and smoothing are applied, and the code pages supported by extended character sets.

FontLab / TypeTool (FontLab Ltd.)
A professional and a trimmed-down version of an easy-to-use Type 1 and TrueType font editor. ($399/$99)

Softy (Dave W. Emmett, R.I.P.)
A basic TrueType editor (shareware $25)

The Font Creator Program (High Logic)
A more and more interesting basic TrueType editor (shareware $20)

Return to index