diff options
author | Owen Taylor <otaylor@redhat.com> | 2000-05-05 23:30:41 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2000-05-05 23:30:41 +0000 |
commit | 20ab53bba42fa623824fe5fe98b2afcc13d93c76 (patch) | |
tree | 5fac2ca08fcd99db82ddf881958ffe1330c728c2 /pango/pango-layout.c | |
parent | 46ba6b62b8423d3a8e6223ebd516f1703d23aa56 (diff) | |
download | pango-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.c | 17 |
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 |