diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-0 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 8 | ||||
-rw-r--r-- | configure.in | 6 | ||||
-rw-r--r-- | pango/pangoft2.c | 39 | ||||
-rw-r--r-- | pango/pangoxft-font.c | 14 |
10 files changed, 100 insertions, 15 deletions
@@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0 index cb3df776..2b05dce8 100644 --- a/ChangeLog.pre-1-0 +++ b/ChangeLog.pre-1-0 @@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index cb3df776..2b05dce8 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index cb3df776..2b05dce8 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index cb3df776..2b05dce8 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index cb3df776..2b05dce8 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index cb3df776..2b05dce8 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,11 @@ +Thu Mar 14 20:28:59 2002 Owen Taylor <otaylor@redhat.com> + + * configure.in: Check for FT_Get_First_Char from + FreeType-2.0.9. + + * pango/pangoft2.c pango/pangoxft-font.c: Use + FT_Get_First_Char/Get_Next_Char to accelerate coverage calculation. + Thu Mar 14 20:02:58 2002 Owen Taylor <otaylor@redhat.com> * examples/Makefile.am (EXTRA_DIST): Remove moc_view-qt.cc. (#74725) diff --git a/configure.in b/configure.in index caea1aa6..b10e3424 100644 --- a/configure.in +++ b/configure.in @@ -188,6 +188,12 @@ CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS" AC_CHECK_HEADER(freetype/internal/tterrors.h, AC_DEFINE(HAVE_FREETYPE_2_0_3)) CPPFLAGS="$pango_save_cppflags" +## Check to see whether we have FT_Get_First_Char(), new in 2.0.9 +pango_save_libs=$LIBS +LIBS="$LIBS $FREETYPE_LIBS" +AC_CHECK_FUNCS(FT_Get_First_Char) +LIBS=$pango_save_libs + # # Checks for Xft/XRender # diff --git a/pango/pangoft2.c b/pango/pangoft2.c index f13d0e44..5c2aa891 100644 --- a/pango/pangoft2.c +++ b/pango/pangoft2.c @@ -599,19 +599,40 @@ static PangoCoverage * pango_ft2_calc_coverage (PangoFont *font, PangoLanguage *language) { - PangoCoverage *result; + PangoCoverage *coverage; FT_Face face; - gunichar wc; - result = pango_coverage_new (); + coverage = pango_coverage_new (); face = pango_ft2_font_get_face (font); - for (wc = 0; wc < 65536; wc++) - { - if (FT_Get_Char_Index (face, wc)) - pango_coverage_set (result, wc, PANGO_COVERAGE_EXACT); - } - return result; +#ifdef HAVE_FT_GET_FIRST_CHAR + { + FT_UInt gindex; + FT_ULong charcode; + + charcode = FT_Get_First_Char (face, &gindex); + while (gindex) + { + pango_coverage_set (coverage, charcode, PANGO_COVERAGE_EXACT); + charcode = FT_Get_Next_Char (face, charcode, &gindex); + } + } +#else + /* Ugh, this is going to be SLOW */ + { + gunichar wc; + + for (wc = 0; wc < G_MAXUSHORT; wc++) + { + FT_UInt glyph = FT_Get_Char_Index (face, wc); + + if (glyph && glyph < face->num_glyphs) + pango_coverage_set (coverage, wc, PANGO_COVERAGE_EXACT); + } + } +#endif + + return coverage; } static void diff --git a/pango/pangoxft-font.c b/pango/pangoxft-font.c index 6600bd78..4ec646ac 100644 --- a/pango/pangoxft-font.c +++ b/pango/pangoxft-font.c @@ -19,6 +19,8 @@ * Boston, MA 02111-1307, USA. */ +#include "config.h" + #include <stdlib.h> #include "pangoxft-private.h" @@ -471,8 +473,8 @@ pango_xft_font_get_coverage (PangoFont *font, coverage = pango_coverage_new (); #ifdef HAVE_FT_GET_FIRST_CHAR { - FT_ULong gindex; - FT_Ulong charcode; + FT_UInt gindex; + FT_ULong charcode; charcode = FT_Get_First_Char (face, &gindex); while (gindex) @@ -484,14 +486,14 @@ pango_xft_font_get_coverage (PangoFont *font, #else /* Ugh, this is going to be SLOW */ { - int i; + gunichar wc; - for (i = 0; i < G_MAXUSHORT; i++) + for (wc = 0; wc < G_MAXUSHORT; wc++) { - FT_UInt glyph = FT_Get_Char_Index (face, i); + FT_UInt glyph = FT_Get_Char_Index (face, wc); if (glyph && glyph < face->num_glyphs) - pango_coverage_set (coverage, i, PANGO_COVERAGE_EXACT); + pango_coverage_set (coverage, wc, PANGO_COVERAGE_EXACT); } } #endif |