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.
--- 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;