Reference information on CreateScalableFontResource

Jeremy White jwhite at codeweavers.com
Thu Apr 10 10:54:10 CDT 2008


> FONTDIR and all related font structures are well described in Windows 3.1
> DDK I used to have (and use) 15 years ago. I put some knowledge about it
> when I was fixing after Huw tools/fnt2fon.c, that's a good piece of 
> knowledge
> about Windows .fon files.
> 

Where in the DDK?  I can't find any place that clearly defines the
FONTDIR structure in the 3.11 DDK I am looking at.

For example, by inspection, I see that the value placed by Windows
mostly lines up with the structure we have defined in
wine/wingdi16.h.   (And you can find that definition of FONTDIR
if you google around on the web).

But in the DDK, I find only FONTINFO and other structures; not FONTDIR.

What I really wanted to know was how the tail end of that structure
was really mapped out.

That is, if I compare it to the FONTDIR16 structure we have, it
seems as though the data written by windows matches pretty well
up until dfDefaultChar.  At that point, the order is:

   BYTE   always 0x1    (might be dfDefaultChar, but not clear)
   BYTE   always 0x2    (might be dfBreakChar, but not clear)
   WORD   always 0x0    (might be WidthBytes, but not clear)
   DWORD  always 0x0    (might be dfDevice, but not clear)
   DWORD  always 0x76, which is the location
          in the struct of the Family name, suggests dfFace is
          a reasonable name for this field
   BYTE   mystery1      (mostly 0x9, sometimes 0xa, 0xb, or 0x6)
   BYTE   mystery2      always 0
   BYTE   mystery3      always 0
   BYTE   mystery4      is sometimes 0xf0, appears to be linked
                        to cases where the firstchar and last char
                        both are in the 0xf0XX range
                        [named dfReserved in the FONTDIR16 struct]
   BYTE   mystery5      always 0xff
   ZSTRING family name
   ZSTRING family name  (again)
   ZSTRING style name
       I'm pretty sure the latter 3 are in a constrained buffer
       of about 40 bytes; haven't nailed that down just yet.


And the sad truth is that what I mostly need is the ability to
turn information I can get from Freetype into matching FONTDIR
information, and that's just not likely to be documented anywhere.

Cheers,

Jeremy



More information about the wine-devel mailing list