Re: calculating text length
- From: Tapani Pälli <tapani palli nokia com>
- To: ext Owen Taylor <otaylor redhat com>
- Cc: gtk-i18n-list gnome org
- Subject: Re: calculating text length
- Date: Thu, 19 Apr 2007 16:30:46 +0300
ext Owen Taylor wrote:
> On Thu, 2007-04-19 at 11:17 +0300, Tapani P�i wrote:
>
>> ext Owen Taylor wrote:
>>
>>> On Wed, 2007-04-18 at 10:43 +0300, Tapani P�i wrote:
>>>
>>>
>>>> Hello,
>>>>
>>>> I have a performance problem with Matchbox window manager calculating
>>>> window title width rather slowly with Pango when doing ellipsation for
>>>> the title. The current algorithm is rather poor but produces good result
>>>> and works nicely for short titles, however when our browser puts the
>>>> title of a webpage as window title and webpage titles seem to sometimes
>>>> be even 300 characters long ...
>>>>
>>>> Current algorithm takes the title, goes from title's end to begin and
>>>> inserts '...\0' to end and check if it would fit now. Result is always
>>>> perfect. However it calls several Pango funcs when checking the width
>>>> and besides of the algorithm I'd like to optimize width check aswell. It
>>>> calls pango_itemize() and then pango_shape, pango_glyph_string_extents
>>>> for each resulted item (word?) just like when rendering text. I thought
>>>> one way would be to take 'average char width' and then calculate some
>>>> pessimistic result out of that (?) I'd like to know if there's a quick
>>>> way to have extents for all characters in a string or maybe some other
>>>> way to quickly check how many characters of $string would fit in $w pixels.
>>>>
>>>>
>>> Can't you just use the ellipsization feature of Pango? That's going to
>>> be considerably faster than the algorithm you describe.
>>>
>>>
>>>
>> I guess this is only with pango-layout? I think Matchbox is not using
>> layout because the rendering is slower than with just doing it in a loop
>> with pango-glyph-string, window title is single line always.
>>
>
> Care to show benchmarks?
>
> While there is obviously some overhead from the PangoLayout object, the
> cost of laying out text in Pango is mostly the cost of laying out the
> text ... that is, within pango_itemize() and pango_shape().
>
> If you use PangoLayout, you get to delete considerable amounts of code,
> and you get a carefully written, smart, ellipsization algorithm.
>
>
Hmm OK, I will test with layout aswell. Like I said 'i think' it has
overhead :) It would be definitely nice to get things done
automatically. Maybe the main reason todo things like it's currently
being done is to have a generic codebase which fits to multiple backends
such as Pango. pango_glyph_string_get_logical_widths() was something I
was actually originally looking for ...
> - Owen
>
Thanks,
// Tapani
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]