http://www.boot-land...?...post&p=2081
and this website:
http://graphicssoft....toverload_3.htm
Now in making this script I've discovered a possible bug in WinBuilder. When you add a font it's a two step process.
1. Expand the font file to the Fonts directory
2. Update the registry with the font info
In creating this script I noticed that there's a lot more registry keys then there are fonts in the registry, for a default build. This could possibly cause issues if a program looks to the registry for installed fonts only to find that the font file doesn't exist. I understand wanting to keep the iso size to a minimum and not include any extra fonts but then it would reason that we'd want to remove the registry entries for the ones that don't exist.
There are 3 keys were dealing with fonts in Windows
This key has something do with fonts but I haven't figured out what.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper] "ARIAL" =dword:00000000 "COURIER" =dword:00008800 "COURIER NEW" =dword:00008000 "DEFAULT" ="0" "FIXEDSYS" =dword:00009000 "MS SANS SERIF" =dword:00001000 "MS SERIF" =dword:00005000 "SMALL FONTS" =dword:00000800 "SYMBOL" =dword:00004002 "SYMBOL1" =dword:0000a002 "TIMES NEW ROMAN" =dword:00004000 "WINGDINGS" =dword:00000002 "WINGDINGS2" =dword:00008002
These are the fonts that Windows thinks it has installed. And there a lot more then
that is in the list of essential fonts, so this registry folder could be trimmed of a few
unneccesary keys. Do I think it's a big deal if we leave them? No. But keep reading.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts] "Roman (All res)" ="ROMAN.FON" "Script (All res)" ="SCRIPT.FON" "Modern (All res)" ="MODERN.FON" "Small Fonts (VGA res)" ="SMALLE.FON" "Arial (TrueType)" ="ARIAL.TTF" "Arial Bold (TrueType)" ="ARIALBD.TTF" "Arial Bold Italic (TrueType)" ="ARIALBI.TTF" "Arial Italic (TrueType)" ="ARIALI.TTF" "Courier New (TrueType)" ="COUR.TTF" "Courier New Bold (TrueType)" ="COURBD.TTF" "Courier New Bold Italic (TrueType)" ="COURBI.TTF" "Courier New Italic (TrueType)" ="COURI.TTF" "Lucida Console (TrueType)" ="LUCON.TTF" "Lucida Sans Unicode (TrueType)" ="L_10646.TTF" "Times New Roman (TrueType)" ="TIMES.TTF" "Times New Roman Bold (TrueType)" ="TIMESBD.TTF" "Times New Roman Bold Italic (TrueType)" ="TIMESBI.TTF" "Times New Roman Italic (TrueType)" ="TIMESI.TTF" "WingDings (TrueType)" ="WINGDING.TTF" "Symbol (TrueType)" ="SYMBOL.TTF" "Symbol 8,10,12,14,18,24 (VGA res)" ="SYMBOLE.FON" "Verdana (TrueType)" ="verdana.TTF" "Verdana Bold (TrueType)" ="verdanab.TTF" "Verdana Italic (TrueType)" ="verdanai.TTF" "Verdana Bold Italic (TrueType)" ="verdanaz.TTF" "Arial Black (TrueType)" ="ariblk.TTF" "Comic Sans MS (TrueType)" ="comic.TTF" "Comic Sans MS Bold (TrueType)" ="comicbd.TTF" "Impact (TrueType)" ="impact.TTF" "Georgia (TrueType)" ="georgia.TTF" "Georgia Bold (TrueType)" ="georgiab.TTF" "Georgia Bold Italic (TrueType)" ="georgiaz.TTF" "Georgia Italic (TrueType)" ="georgiai.TTF" "Franklin Gothic Medium (TrueType)" ="Framd.TTF" "Franklin Gothic Medium Italic (TrueType)" ="Framdit.TTF" "Palatino Linotype (TrueType)" ="pala.TTF" "Palatino Linotype Bold (TrueType)" ="palab.TTF" "Palatino Linotype Bold Italic (TrueType)" ="palabi.TTF" "Palatino Linotype Italic (TrueType)" ="palai.TTF" "Tahoma Bold (TrueType)" ="tahomabd.TTF" "Trebuchet MS (TrueType)" ="trebuc.TTF" "Trebuchet MS Bold (TrueType)" ="trebucbd.TTF" "Trebuchet MS Bold Italic (TrueType)" ="trebucbi.TTF" "Trebuchet MS Italic (TrueType)" ="trebucit.TTF" "Webdings (TrueType)" ="webdings.TTF" "Estrangelo Edessa (TrueType)" ="estre.TTF" "Gautami (TrueType)" ="gautami.TTF" "Latha (TrueType)" ="latha.TTF" "Mangal (TrueType)" ="mangal.TTF" "Mv Boli (TrueType)" ="mvboli.TTF" "Raavi (TrueType)" ="raavi.TTF" "Shruti (TrueType)" ="shruti.TTF" "Tunga (TrueType)" ="tunga.TTF" "Sylfaen (TrueType)" ="sylfaen.TTF" "WST_Czec (All res)" ="wst_czec.FON" "WST_Engl (All res)" ="wst_engl.FON" "WST_Fren (All res)" ="wst_fren.FON" "WST_Germ (All res)" ="wst_germ.FON" "WST_Ital (All res)" ="wst_ital.FON" "WST_Span (All res)" ="wst_span.FON" "WST_Swed (All res)" ="wst_swed.FON" "Tahoma (TrueType)" ="TAHOMA.TTF"
Here is where I think we can get into trouble. This where Windows goes to find what font
can be substituted if the font above isn't found. This is the cause of weird fonts being displayed
in some programs because Windows defaults to a font(editmarlett )that doesn't look so pretty.
Also, this issue will become apparent when you try and internationalize the build.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes] "Arial CE,238" [color=blue]="Arial,238"[/color] "Arial CYR,204" [color=blue]="Arial,204"[/color] "Arial Greek,161" [color=blue]="Arial,161"[/color] "Arial TUR,162" [color=blue]="Arial,162"[/color] "Courier New CE,238" [color=blue]="Courier New,238"[/color] "Courier New CYR,204" [color=blue]="Courier New,204"[/color] "Courier New Greek,161" [color=blue]="Courier New,161"[/color] "Courier New TUR,162" [color=blue]="Courier New,162"[/color] "Helv" [color=blue]="MS Sans Serif"[/color] "Helvetica" [color=blue]="Arial"[/color] "MS Shell Dlg" [color=blue]="Microsoft Sans Serif"[/color] "MS Shell Dlg 2" [color=blue]="Tahoma"[/color] "Times" [color=blue]="Times New Roman"[/color] "Times New Roman CE,238" [color=blue]="Times New Roman,238"[/color] "Times New Roman CYR,204" [color=blue]="Times New Roman,204"[/color] "Times New Roman Greek,161" [color=blue]="Times New Roman,161"[/color] "Times New Roman TUR,162" [color=blue]="Times New Roman,162"[/color] "Tms Rmn" [color=blue]="MS Serif"[/color]
I would say that bare minimum we install:
"ARIAL"
"COURIER"
"COURIER NEW"
"FIXEDSYS"
"MS SANS SERIF"
"MS SERIF"
"SMALL FONTS"
"SYMBOL"
"SYMBOL1"
"TIMES NEW ROMAN"
"WINGDINGS"
"WINGDINGS2"
fonts installed, then remove all except those entries from the Fonts Registry
There's a few ways to fix this.
1. In the Copy&Expand script, add all the currently listed fonts in the Fonts registry folder and copy them to the fonts folder
3. I'll make my additional fonts script to add those that are in the registry and are listed as essential by the above two links.