summaryrefslogtreecommitdiff
path: root/pango
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2000-10-03 19:04:34 +0000
committerTor Lillqvist <tml@src.gnome.org>2000-10-03 19:04:34 +0000
commit9b359e9b7c20a134363f2383902519d73d130e68 (patch)
treebdf8e74a67b9d5783bf2b263662d518d557a7f21 /pango
parent6ed8c4f1d4f27507919db74990fa9bdd3681ad7e (diff)
downloadpango-9b359e9b7c20a134363f2383902519d73d130e68.tar.gz
pango/pango.def Add new entry points.
2000-10-03 Tor Lillqvist <tml@iki.fi> * pango/pango.def * pango/pangoft2.def: Add new entry points. * pango/pango-coverage.c (pango_coverage_set): Remove unnecessary loop calling memset() with same parameters 64 times ;-) * pango/makefile.mingw.in (PANGO_OBJS): Add pango-tabs.o. Some small changes that have been laying around on my disk. The Win32 and FT2 backends aren't "production quality" yet. For speedup, need to cache at least the coverage info. * pango/pangoft2.c (pango_ft2_get_coverage): New function. * modules/basic/basic-win32.c: Use "BasicScriptEngineLangWin32" to be unique. * modules/basic/basic-ft2.c: Add comments explaining what Unicode ranges the table entries covers. Use "BasicScriptEngineLangFT2" to be unique. (basic_engine_get_coverage): Test calling pango_ft2_get_coverage(). (basic_engine_ft2_new): Set corect engine type. Not that this apparently is used for anything, the X11 basic shaper module also sets its type as TYPE_LANG. * examples/viewer-ft2.c (split_paragraphs): Just end the string upon encountering an invalid character. Don't return.
Diffstat (limited to 'pango')
-rw-r--r--pango/makefile.mingw.in1
-rw-r--r--pango/pango-coverage.c3
-rw-r--r--pango/pango.def12
-rw-r--r--pango/pangoft2-fontcache.c2
-rw-r--r--pango/pangoft2.c44
-rw-r--r--pango/pangoft2.def1
6 files changed, 60 insertions, 3 deletions
diff --git a/pango/makefile.mingw.in b/pango/makefile.mingw.in
index 3bcc4beb..1e1fb33a 100644
--- a/pango/makefile.mingw.in
+++ b/pango/makefile.mingw.in
@@ -31,6 +31,7 @@ PANGO_OBJS = \
pango-fontmap.o \
pango-item.o \
pango-layout.o \
+ pango-tabs.o \
pango-utils.o \
reorder-items.o \
shape.o
diff --git a/pango/pango-coverage.c b/pango/pango-coverage.c
index 6a031fb3..c0c10145 100644
--- a/pango/pango-coverage.c
+++ b/pango/pango-coverage.c
@@ -237,8 +237,7 @@ void pango_coverage_set (PangoCoverage *coverage,
(coverage->blocks[block_index].level << 4) |
(coverage->blocks[block_index].level << 6);
- for (i=0; i<64; i++)
- memset (data, byte, 64);
+ memset (data, byte, 64);
}
i = index % 256;
diff --git a/pango/pango.def b/pango/pango.def
index 982162c5..0037f85f 100644
--- a/pango/pango.def
+++ b/pango/pango.def
@@ -97,6 +97,7 @@ EXPORTS
pango_layout_get_pixel_size
pango_layout_get_size
pango_layout_get_spacing
+ pango_layout_get_tabs
pango_layout_get_type
pango_layout_get_width
pango_layout_index_to_pos
@@ -115,6 +116,7 @@ EXPORTS
pango_layout_set_indent
pango_layout_set_justify
pango_layout_set_spacing
+ pango_layout_set_tabs
pango_layout_set_text
pango_layout_set_width
pango_layout_xy_to_index
@@ -132,4 +134,14 @@ EXPORTS
pango_shape
pango_skip_space
pango_split_file_list
+ pango_tab_array_copy
+ pango_tab_array_free
+ pango_tab_array_get_size
+ pango_tab_array_get_tab
+ pango_tab_array_get_tabs
+ pango_tab_array_new
+ pango_tab_array_new_with_positions
+ pango_tab_array_get_positions_in_pixels
+ pango_tab_array_resize
+ pango_tab_array_set_tab
pango_trim_string
diff --git a/pango/pangoft2-fontcache.c b/pango/pangoft2-fontcache.c
index ddfc114c..fa58adbe 100644
--- a/pango/pangoft2-fontcache.c
+++ b/pango/pangoft2-fontcache.c
@@ -28,7 +28,7 @@
/* Number of fonts to retain after they are not otherwise referenced.
*/
-#define CACHE_SIZE 3
+#define CACHE_SIZE 10
typedef struct _CacheEntry CacheEntry;
diff --git a/pango/pangoft2.c b/pango/pangoft2.c
index fe55178c..01f138b5 100644
--- a/pango/pangoft2.c
+++ b/pango/pangoft2.c
@@ -749,6 +749,50 @@ pango_ft2_has_glyph (PangoFont *font,
return TRUE;
}
+PangoCoverage *
+pango_ft2_get_coverage (PangoFont *font,
+ const char *lang)
+{
+ PangoFT2Font *ft2font = (PangoFT2Font *)font;
+ PangoCoverage *result = pango_coverage_new ();
+ PangoCoverage *tmp;
+ PangoGlyph glyph;
+ FT_Face face;
+ gunichar wc;
+ int i;
+ GTimeVal tv0, tv1;
+
+ for (i = 1; i <= ft2font->n_fonts; i++)
+ {
+ g_get_current_time (&tv0);
+ tmp = pango_coverage_new ();
+ face = pango_ft2_get_face (font, i);
+ g_get_current_time (&tv1);
+ if (tv1.tv_usec < tv0.tv_usec)
+ tv1.tv_sec--, tv1.tv_usec += 1000000L;
+ g_print ("after pango_ft2_get_face: %ld.%06ld s\n", tv1.tv_sec - tv0.tv_sec, tv1.tv_usec - tv0.tv_usec);
+ for (wc = 0; wc < 65536; wc++)
+ {
+ glyph = PANGO_FT2_MAKE_GLYPH (i, wc);
+ if (FT_Get_Char_Index (face, wc))
+ pango_coverage_set (tmp, wc, PANGO_COVERAGE_EXACT);
+ if ((wc%3000)==1) {
+ g_get_current_time (&tv1);
+ if (tv1.tv_usec < tv0.tv_usec)
+ tv1.tv_sec--, tv1.tv_usec += 1000000L;
+ g_print ("after %d loops: %ld.%06ld s\n", wc, tv1.tv_sec - tv0.tv_sec, tv1.tv_usec - tv0.tv_usec);}
+ }
+ g_get_current_time (&tv1);
+ if (tv1.tv_usec < tv0.tv_usec)
+ tv1.tv_sec--, tv1.tv_usec += 1000000L;
+ g_print ("after loop for %s: %ld.%06ld s\n", face->family_name, tv1.tv_sec - tv0.tv_sec, tv1.tv_usec - tv0.tv_usec);
+ pango_coverage_max (result, tmp);
+ pango_coverage_unref (tmp);
+ }
+
+ return result;
+}
+
/**
* pango_ft2_font_subfont_open_args:
* @font: a #PangoFont which must be from the FT2 backend
diff --git a/pango/pangoft2.def b/pango/pangoft2.def
index 2bb3134b..bab9698e 100644
--- a/pango/pangoft2.def
+++ b/pango/pangoft2.def
@@ -10,6 +10,7 @@ EXPORTS
pango_ft2_fontmap_dump
pango_ft2_ft_strerror
pango_ft2_get_context
+ pango_ft2_get_coverage
pango_ft2_get_unknown_glyph
pango_ft2_has_glyph
pango_ft2_load_font