[Wine] winhelp.exe - tiny, unreadable fonts (SOLVED)

winehq at nospam.wetash.com winehq at nospam.wetash.com
Sat Mar 3 08:01:09 CST 2007


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;



More information about the wine-users mailing list