summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-03-15 01:32:36 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-03-15 01:32:36 +0000
commitbb3e77cc890eb14c9a3973b0c856ef5dc30aa606 (patch)
tree1b4fd3424b626b90ce1ad5584d44e32482aa31b3
parentca30a4175066d693135eb035c4546e9a519054c4 (diff)
downloadpango-bb3e77cc890eb14c9a3973b0c856ef5dc30aa606.tar.gz
Check for FT_Get_First_Char from FreeType-2.0.9.
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.
-rw-r--r--ChangeLog8
-rw-r--r--ChangeLog.pre-1-08
-rw-r--r--ChangeLog.pre-1-108
-rw-r--r--ChangeLog.pre-1-28
-rw-r--r--ChangeLog.pre-1-48
-rw-r--r--ChangeLog.pre-1-68
-rw-r--r--ChangeLog.pre-1-88
-rw-r--r--configure.in6
-rw-r--r--pango/pangoft2.c39
-rw-r--r--pango/pangoxft-font.c14
10 files changed, 100 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index cb3df776..2b05dce8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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