How WM2003 and WM2003SE store and use font size information? How fonts in ozVGA work?
Internal represenantion of fonts in WM2003 and SE
Also Help! A registry editor program has messed up my fonts! How do I bring them back?
Questions like the the one at http://www.pocketpcmag.com/forum/top...TOPIC_ID=15752
are pretty common (go there for a WM2003-specific explanation!) and the intricacies of the WM2003(SE) font handling are not known for many. This is why a lot of people don't understand how, for example, ozVGA ( http://www.freewareppc.com/utilities/ozvga.shtml
) works when it changes predefined font sizes upon mode change (native to SE VGA and vice versa). This is why I decided to elaborate on it a bit.
First, WM2003SE has almost the same registry keys for setting the system font, the menubar and the menu fonts as its predecessor. These are as follows (this is, again, old hat for people that already know WM2003):
- The fonts used in dialog boxes (like a Yes/No box) and at a lot of other places (see the list in the WM2003 tutorial!) is set by the registry value HKEY_LOCAL_MACHINE\System\GDI\SYSFNT\Ht . It's (decimal) 900 by default.
- The menubar (the fonts that are displayed in the menubar, not in the menus themselves; they are, therefore, displayed at the standard GUI of the app) font heigth is set by
[HKEY_LOCAL_MACHINE\System\GWE\Menu\BarFnt\Ht]; 800 by default.
- HKEY_LOCAL_MACHINE\System\GWE\Menu\PopFnt\Ht stores the size of the characters used in pop-up menus. 900 by default.
However, there's a catch: the Ht
values are completely different from those of WM2003 (go to http://www.pocketpcmag.com/forum/top...TOPIC_ID=15752
to find out more on WM2003). Fortunately, if you load the WM2003 registry values onto a WM2003SE device (because, for example, the registry tweaker application you use is not compliant with WM2003SE and, therefore, doesn't know its default values), there won't be too big problems. For example, if you load the WM2003 default FFFFFFF5 to HKEY_LOCAL_MACHINE\System\GWE\Menu\BarFnt\Ht on a WM2003SE device, almost nothing will happen. The same stands for all the other values, even the sysfont value: it's just that they all become pretty small, but still usable.
If, on the other hand, you do the opposite (you load, for example, the WM2003SE default 900 to HKEY_LOCAL_MACHINE\System\GDI\SYSFNT\Ht on a WM2003 device), you'll see something like this (the Tree view control becomes almost useless and the titles on the titlebar also become unreadable; the same stands for Excel and Contacts headings etc.):
and, in dialog boxes (that's the upper left corner of the M letter in a dialog box):
(fortunately, the dialog box will still work so you'll be able to manually set back the registry value, even without importing; see the linked WM2003 article on this).
Regarding the registry value-level compatibility between WM2003 and SE, bottom line: as a rule of thumb, while you can safely load WM2003 defaults to a WM2003SE device, you shouldn't do the same in the opposite direction; that is, you should never load a WM2003SE registry file onto a WM2003 device.
Now comes the really interesting part. The even more visible difference between the two WM versions (again, apart from the value difference in the known-from-before menu/system font registry keys) is the introduction of HKEY_LOCAL_MACHINE\ControlPanel\Stylus\FontArray
, with the default value 500,600,650,800,1000. This is an array
of font size values and can contain anything, even extreme values (just like the other font settings).
These will be the values the slider at Start
/the Text Size
tab will offer the user. This means that if the slider is at the left end, the system will use a (small) font of height 500, while if it's at the right end, 1000, assuming the above array values. You can supply even more values here and, especially in native VGA mode, where not even the largest font with size 1000 will be eye-friendly enough, you will really want to modify the values here.
What can they be used for?
On VGA devices, it's pretty logical: if you don't use ozVGA (just SE_VGA) to switch between the native VGA mode and the default SE mode, then, just before running SE_VGA, you just load the new values into the registry (I describe a very easy way of doing this at, say, http://www.firstloox.org//forums/showthread.php?p=28878
- if you put the registry files on the Today screen, it only takes a click on them to load them); this way, you can easily switch between the fonts used in the two modes. (Actually, this is what ozVGA does behind the curtains - it just overwrites HKEY_LOCAL_MACHINE\ControlPanel\Stylus\FontArray before resetting the device.)
Now, that's enough for everyone that wants to know how the font-related parts in the WM2003SE registry works; now, a tutorial for people that have problems with misaligned registry values in WM2003SE. What should you do, if you mess up your registry settings (apart from setting them by hand / with a tweaker app)? (Again, please note that the WM2003
version of the same tutorial, with WM2003-compliant registry files, can be found at the above-linked http://www.pocketpcmag.com/forum/top...TOPIC_ID=15752
1, if you don't already have Resco Registry Editor on your PPC, get Tascal Registry Editor from http://pocketpcfreewares.com/en/index.php?soft=92
and install it. It'll be pretty straightforward. Do NOT start it!
2a, if you have Tascal, get the file at http://menneisyys.freeweb.hu/Fonts/normalfontsize.zip
on your desktop computer
2b, if you have Resco, get the file at http://menneisyys.freeweb.hu/Fonts/n...size-Resco.zip
3, rename the downloaded file to <the original name>.reg
(had to upload the file as a ZIP so that it is sent back to the users as a binary file, instead of being displayed) and transfer it to the root directory of your PDA (NOT \My Documents!)
3, start Pocket File Explorer on your PDA, and just click the file. Your current registry editor should say that it has successfully imported the registry keys.
4, Reset your device - all fonts should be normal now.