shithub: freetype+ttf2subf

Download patch

ref: e20ab691c357c548e7c90eaca3721f382d5c116e
parent: 64591b765710775d95852eecc3981cc1c865bec3
author: Werner Lemberg <[email protected]>
date: Mon Jun 2 03:24:33 EDT 2003

* src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from
2003-03-20.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-01  Werner Lemberg  <[email protected]>
+
+	* src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from
+	2003-03-20.
+
 2003-05-31  Werner Lemberg  <[email protected]>
 
 	* include/freetype/fttrigon.h (FT_Vector_Normalize): Removed.
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -198,6 +198,7 @@
     return error;
   }
 
+
   FT_BASE_DEF( void )
   ft_glyphslot_free_bitmap( FT_GlyphSlot  slot )
   {
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -618,7 +618,10 @@
 
     /* allocate and build bitmap */
     {
-      FT_Int  pitch  = ( bitmap->width + 7 ) >> 3;
+      FT_Memory  memory = FT_FACE_MEMORY( slot->face );
+      FT_Int     pitch  = ( bitmap->width + 7 ) >> 3;
+      FT_Byte*   column;
+      FT_Byte*   write;
 
 
       bitmap->pitch      = pitch;
@@ -625,11 +628,24 @@
       bitmap->rows       = font->header.pixel_height;
       bitmap->pixel_mode = FT_PIXEL_MODE_MONO;
 
-      /* note: we don't allocate a new buffer for the bitmap since we */
-      /*       already store the images in the FT_Face                */
-      ft_glyphslot_set_bitmap( slot, p );
+      /* note: since glyphs are stored in columns and not in rows we */
+      /*       can't use ft_glyphslot_set_bitmap                     */
+      if ( FT_ALLOC( bitmap->buffer, pitch * bitmap->rows ) )
+        goto Exit;
+
+      column = (FT_Byte*)bitmap->buffer;
+
+      for ( ; pitch > 0; pitch--, column++ )
+      {
+        FT_Byte*  limit = p + bitmap->rows;
+
+
+        for ( write = column; p < limit; p++, write += bitmap->pitch )
+          *write = *p;
+      }
     }
 
+    slot->flags       = FT_GLYPH_OWN_BITMAP;
     slot->bitmap_left = 0;
     slot->bitmap_top  = font->header.ascent;
     slot->format      = FT_GLYPH_FORMAT_BITMAP;