[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freetype-devel
Subject:    Re: [Devel] Fw: More thoughts on FON files
From:       David Turner <david () freetype ! org>
Date:       2002-12-18 22:53:33
[Download RAW message or body]

Hi,

Werner LEMBERG wrote:

>George is still not able to subscribe...
>  
>
He should be able to do it now :-)
I've commited its fix.

Thanks

- David Turner
- The FreeType Project  (www.freetype.org)

>
>     Werner
>  
>
>
> ------------------------------------------------------------------------
>
> Subject:
> More thoughts on FON files
> From:
> George Williams <gww@silcom.com>
> Date:
> Sat, 14 Dec 2002 12:45:56 -0800
> To:
> Werner LEMBERG <wl@gnu.org>
>
>
> Hi Werner,
>    I'm still not on devel, so could you forward this for me?
>
> Hi David,
>    I have just added code to pfaedit for reading FON files and I 
> noticed the following things in freetype's FON reader 
> (src/winfonts/winfnt.c):
>  1) The fnt header structure differs between version 2 (0x200) and 
> version 3 (0x300)
>     In particular the last 6 fields are not present
>      in version 2 (that is flags and everything
>      after it are omitted).
>  2) According to microsoft's online docs, the printed docs are wrong 
> about the size of the final field in the version 3 structure. 
> Microsoft's online docs say that this field should be 16 bytes long, 
> while the printed docs say 4. I can't test this, not having any 
> version 3 files.
>     http://support.microsoft.com/default.aspx?scid=KB;en-us;q65123
>     (search down for dfReserved1)
>
> So I propose the following patches. These have not been well tested. 
> As I said I have no version 3 fonts to test with.
>
>------------------------------------------------------------------------
>
>*** winfnt.c.old	Sat Dec 14 12:32:06 2002
>--- winfnt.c	Sat Dec 14 12:41:56 2002
>***************
>*** 70,76 ****
>  #undef  FT_STRUCTURE
>  #define FT_STRUCTURE  WinFNT_HeaderRec
>  
>!     FT_FRAME_START( 134 ),
>        FT_FRAME_USHORT_LE( version ),
>        FT_FRAME_ULONG_LE ( file_size ),
>        FT_FRAME_BYTES    ( copyright, 60 ),
>--- 70,76 ----
>  #undef  FT_STRUCTURE
>  #define FT_STRUCTURE  WinFNT_HeaderRec
>  
>!     FT_FRAME_START( 146 ),
>        FT_FRAME_USHORT_LE( version ),
>        FT_FRAME_ULONG_LE ( file_size ),
>        FT_FRAME_BYTES    ( copyright, 60 ),
>***************
>*** 106,112 ****
>        FT_FRAME_USHORT_LE( B_space ),
>        FT_FRAME_USHORT_LE( C_space ),
>        FT_FRAME_USHORT_LE( color_table_offset ),
>!       FT_FRAME_BYTES    ( reserved, 4 ),
>      FT_FRAME_END
>    };
>  
>--- 106,112 ----
>        FT_FRAME_USHORT_LE( B_space ),
>        FT_FRAME_USHORT_LE( C_space ),
>        FT_FRAME_USHORT_LE( color_table_offset ),
>!       FT_FRAME_BYTES    ( reserved, 16 ),
>      FT_FRAME_END
>    };
>  
>***************
>*** 145,150 ****
>--- 145,157 ----
>        goto Exit;
>      }
>  
>+     /* Version 2 doesn't have these fields */
>+     if ( header->version == 0x200 )
>+     {
>+ 	header->flags = header->A_space = header->B_space = 0;
>+ 	header->C_space = header->color_table_offset = 0;
>+     }
>+ 
>      if ( header->file_type & 1 )
>      {
>        FT_TRACE2(( "[can't handle vector FNT fonts]\n" ));
>***************
>*** 664,670 ****
>      len        = new_format ? 6 : 4;
>  
>      /* jump to glyph entry */
>!     p = font->fnt_frame + 118 + len * glyph_index;
>  
>      bitmap->width = FT_NEXT_SHORT_LE( p );
>  
>--- 671,677 ----
>      len        = new_format ? 6 : 4;
>  
>      /* jump to glyph entry */
>!     p = font->fnt_frame + (new_format ? 146 : 118) + len * glyph_index;
>  
>      bitmap->width = FT_NEXT_SHORT_LE( p );
>  
>  
>



_______________________________________________
Devel mailing list
Devel@freetype.org
http://www.freetype.org/mailman/listinfo/devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic