winehq@nospam.wetash.com
2007-Mar-03 08:01 UTC
[Wine] winhelp.exe - tiny, unreadable fonts (SOLVED)
The default wine help reader, winhelp.exe, seems to have only a single font that it will display help files with. Unfortunately, this font appears really tiny and unreadable on my 1600x1200 screen. And there seems to be no easy way to change this font without diving in to the source (which is what I ultimately did). In what follows I will first describe my unsuccessful attempts to increase winhelp's font size, and then describe the solution I finally found. Here are some before and after shots: Before: http://img157.imageshack.us/img157/6132/beforelj8.png After: http://img241.imageshack.us/img241/6469/afterfc4.png First, the bad news: There are no configuration options in the winhelp application, much less font configuration option. I tried changing the "HKEY_CURRENT_CONFIG\Software\Fonts\LogPixel" from 96 to 200 but it didn't affect the font winhelp displayed the help file in (though it did increase the font it used for its menus. Unfortunately, this LogPixel setting broke some other apps, so I set it back to 96. I thought that perhaps winhelp was trying to use an unavailable font and defaulting to some tiny font... so, in desperation, I tried changing the value for "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Fonts\ Small Fonts" from smalle.fon to coure.fon, without any apparent effect. I tried a bunch of other registry font changes, even trying to change the "(Default)" key for some font settings, again without apparent effect. I even tried adding [Tweak.Fonts] settings in various .ini files I created in my $HOME/.wine directory, knowing that everything's in the registry now, but hoping against hope it'd work somehow. I finally started looking in the winhelp's source, and found that winhelp.c seemed to use "Helv" as its default font, so I tried substituting a bunch of different fonts, from "Aria" to "Courier" to "Courier New,238" and "Times New Roman" for "Helv" and "Helvetica", again, without effect. Then, on line 1209 of programs/winhelp/hlpfile.c I found: hlpfile->fonts[i].LogFont.lfHeight = -ref[dscr_offset + i * 11 + 1] / 2; I tried changing this assignment to 24, and it finally made winhelp's fonts readable. This is obviously not the ideal solution for all screen resolutions. The ideal solution would probably be a font selection dialog within the program, and a larger default font. There are some other outstanding bugs about unreadably small font sizes in various applications under wine, and I wonder if they could be related. In any case, here's a patch detailing exactly what I did to get winhelp.exe working right. In the following patch, make sure the line containing lfHeight does not get accidentally get wrapped around by your mail client or during your cut and paste. It should all be on one line, up to the semicolon. *** hlpfile.c.orig Sat Mar 3 07:57:59 2007 --- hlpfile.c Sat Mar 3 07:57:59 2007 *************** *** 1206,1212 **** flag = ref[dscr_offset + i * 11 + 0]; family = ref[dscr_offset + i * 11 + 2]; ! hlpfile->fonts[i].LogFont.lfHeight = -ref[dscr_offset + i * 11 + 1] / 2; hlpfile->fonts[i].LogFont.lfWidth = 0; hlpfile->fonts[i].LogFont.lfEscapement = 0; hlpfile->fonts[i].LogFont.lfOrientation = 0; --- 1206,1212 ---- flag = ref[dscr_offset + i * 11 + 0]; family = ref[dscr_offset + i * 11 + 2]; ! hlpfile->fonts[i].LogFont.lfHeight = 24; hlpfile->fonts[i].LogFont.lfWidth = 0; hlpfile->fonts[i].LogFont.lfEscapement = 0; hlpfile->fonts[i].LogFont.lfOrientation = 0;