summaryrefslogtreecommitdiff
path: root/pango/pango-layout.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2000-05-05 23:30:41 +0000
committerOwen Taylor <otaylor@src.gnome.org>2000-05-05 23:30:41 +0000
commit20ab53bba42fa623824fe5fe98b2afcc13d93c76 (patch)
tree5fac2ca08fcd99db82ddf881958ffe1330c728c2 /pango/pango-layout.c
parent46ba6b62b8423d3a8e6223ebd516f1703d23aa56 (diff)
downloadpango-20ab53bba42fa623824fe5fe98b2afcc13d93c76.tar.gz
Add ZWS to hacky break algorithm.
Fri May 5 18:56:45 2000 Owen Taylor <otaylor@redhat.com> * pango/break.c (pango_break): Add ZWS to hacky break algorithm. * modules/basic/basic.c (basic_engine_shape): Special case zero-width-space as a temporary hack. (What's the right solution?) * modules/basic/tables-big.i: Added support for TIS-620 encoding. * configure.in pango/modules.[ch] pango/Makefile.am modules/**: First stab at support for linking modules directly into Pango. Add a --with-included-modules= flag that causes the specified modules to be built as convenience libraries and linked directly into libpangox. Tue May 2 22:59:52 2000 Owen Taylor <otaylor@redhat.com> * modules/basic/basic.c: Get rid of link list of masks in cache structure in favor of an array. (This is easy to do now since we already have linear indices for the masks from the new table format.) * pango/modules.c pango/pango-context.c pango/pangox.c: Modify _pango_find_map() to take quarks for the engine type and render type instead of strings. Get rid of the map hash table in favor of a GList with the most recently used map at the beginning. * pango/modules.[ch] pango/pango-context.c pango/pangox.c: Add some utility functions for getting the engine for a particular character in a map. Using modules.c knowledge of map structure, this allows us to save a bunch of useless strcmps. * pango/pango-context.c (add_engines): Remove unused lookup of shape mask. * modules/basic/tables-{small,big}.i modules/basic/basic.c tools/compress-table.pl: Reencode mask table to avoid binary searches and save a bit of space. * modules/basic/basic.c (find_converter): Get rid of gratuitous use of hash tables for looking up iconv converters. * modules/basic/tables-{small,big}.i modules/basic/basic.c: Use conv_ucs4 instead of conv_8bit for latin-1. * pango/pango-layout.c: Avoid calling pango_glyph_string_extents() - just add up the widths from shaping.
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r--pango/pango-layout.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 6892ed4e..30a872da 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -1390,8 +1390,9 @@ process_item (PangoLayoutLine *line,
int *remaining_width)
{
PangoGlyphString *glyphs = pango_glyph_string_new ();
- PangoRectangle logical_rect;
int width;
+ int length;
+ int i;
if (*remaining_width == 0)
return FALSE;
@@ -1404,14 +1405,11 @@ process_item (PangoLayoutLine *line,
return TRUE;
}
- /* We special-case the case where the whole item fits. Removing this special
- * case would simplify the code, speed up the break case, and wouldn't
- * slow things down much for the non-break case.
- */
- pango_glyph_string_extents (glyphs, item->analysis.font, NULL, &logical_rect);
- width = logical_rect.width;
+ width =0;
+ for (i=0; i < glyphs->num_glyphs; i++)
+ width += glyphs->glyphs[i].geometry.width;
- if (logical_rect.width < *remaining_width && !no_break_at_end)
+ if (width < *remaining_width && !no_break_at_end)
{
*remaining_width -= width;
insert_run (line, item, glyphs);
@@ -1420,11 +1418,8 @@ process_item (PangoLayoutLine *line,
}
else
{
- int length;
int num_chars = item->num_chars;
-
PangoGlyphUnit *log_widths = g_new (PangoGlyphUnit, item->num_chars);
-
pango_glyph_string_get_logical_widths (glyphs, text + item->offset, item->length, item->analysis.level, log_widths);
/* Shorten the item by one line break