diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ChangeLog.pre-1-0 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 6 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 6 | ||||
-rw-r--r-- | pango/pangoft2.c | 53 |
8 files changed, 81 insertions, 14 deletions
@@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0 index c342e34a..2c4df5b4 100644 --- a/ChangeLog.pre-1-0 +++ b/ChangeLog.pre-1-0 @@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index c342e34a..2c4df5b4 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index c342e34a..2c4df5b4 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index c342e34a..2c4df5b4 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index c342e34a..2c4df5b4 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index c342e34a..2c4df5b4 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,9 @@ +2001-08-14 Sven Neumann <sven@gimp.org> + + * pango/pangoft2.c (pango_ft2_render): composite glyphs over the + buffer instead of simply copying into it so glyphs with overlapping + ink rectangles do not overwrite each other. + Sun Aug 12 10:33:02 2001 Owen Taylor <otaylor@redhat.com> * docs/Makefile.am pango/Makefile.am: Set GPATH to fix srcdir != diff --git a/pango/pangoft2.c b/pango/pangoft2.c index 2c619aea..b44d11d3 100644 --- a/pango/pangoft2.c +++ b/pango/pangoft2.c @@ -351,14 +351,39 @@ pango_ft2_render (FT_Bitmap *bitmap, { p = bitmap->buffer + (iyoff - face->glyph->bitmap_top + iy) * bitmap->pitch + - ixoff + - face->glyph->bitmap_left + x_start; + ixoff + face->glyph->bitmap_left + + x_start; - q = face->glyph->bitmap.buffer + iy*face->glyph->bitmap.pitch; + q = face->glyph->bitmap.buffer + + iy * face->glyph->bitmap.pitch; + for (ix = x_start; ix < x_limit; ix++) { - *p = *q; - q++; + switch (*q) + { + case 0: + break; + case 0xff: + *p = 0xff; + default: + switch (*p) + { + case 0: + *p = *q; + break; + case 0xff: + break; + default: + { + gushort pixel = *(q); + gushort s = (*p)+1; + *(p) = (pixel * (256-s) + s) >> 8; + } + break; + } + break; + } + q++; p++; } } @@ -367,17 +392,17 @@ pango_ft2_render (FT_Bitmap *bitmap, { p = bitmap->buffer + (iyoff - face->glyph->bitmap_top + iy) * bitmap->pitch + - ixoff + - face->glyph->bitmap_left + x_start; - - q = face->glyph->bitmap.buffer + iy*face->glyph->bitmap.pitch; + ixoff + face->glyph->bitmap_left + + x_start; + + q = face->glyph->bitmap.buffer + + iy*face->glyph->bitmap.pitch; + for (ix = x_start; ix < x_limit; ix++) { - if ((*q) & (1 << (7 - (ix%8)))) - *p = 0; - else - *p = MIN (*p, 0xFF); - if ((ix%8) == 7) + if ((*q) & (1 << (7 - (ix % 8)))) + *p = 0xff; + if ((ix % 8) == 7) q++; p++; } |