On Thu, Sep 17, 2009 at 9:05 AM, Scott Violet <[email protected]> wrote:
>
> If you don't care about linux browser side font issues you can skip this.
>
> I've been chasing Linux font metrics problems all week and wanted to
> send around a summary in case anyone has insight or opinions.
>
> app/gfx/font on linux uses Skia for measuring metrics, and
> app/gfx/canvas uses Pango to draw the text. When rendering the text we
> often times clip to the height returned from font, which is the size
> returned from Skia. This means that if Skia returns a size smaller
> than Pango wants to draw at, we get clipping; which was in fact
> happening. In theory both Skia and Pango should be using the same font
> files so this doesn't happen, but in practice we get clipping. See
> http://crbug.com/20823 for one manifestation of this.
>
> My first attempt at fixing this was to change font to use Pango for
> measuring rather than Skia. This resulted in no clipping, but a huge
> performance regression (close to 2x). Why so big? ResourceBundle
> creates a number of fonts the first time you ask for one, which
> triggers asking for the metrics. Apparently asking Pango for the
> metrics is excruciatingly slow as compared to Skia. It turns out we
> really only need the metrics of one font at startup (tab heights). My
> second attempt delayed getting metrics until needed, which brought
> performance down, but still resulted in a slow down of ~10%. Better,
> but still no good.
>
> The slow down is entirely contributed to the call
> pango_context_get_metrics. It's worth noting that Gtk calls this
> function at times as well, so presumably our Gtk code hits this
> function at some point (if you have bookmarks bar open we'll hit it,
> or open preferences...).

does this mean that our startup time when the bookmark bar is open is ~2x worse?

-- Evan Stade

>
> I then spent some time with a debug build of pango and a profiler.
> This was not terribly enlightening, the profiler attributed the extra
> time to libfontconfig.
>
> I then started tracing through pango code to see if I could locate
> where Skia and Pango diverge on getting metrics. I traced through some
> calls and these quickly ended up in Cairo. *SIGH* At that point I
> talked with Mike Reed and he suggested using the bounding box rather
> than the ascent/descent. Converting font to use this gets us much
> closer. For the default font on hardy we are dead on, but at some
> point sizes we are off by 1.
>
> For the time being I'm going with using the bounding box rather than
> ascent/descent. I believe using pango to get metrics is the right
> thing to do, but a 10% startup is hard to justify.
>
>  -Scott
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected] 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to