[cairo] Re: User-font API, take 3
behdad at behdad.org
Wed Feb 7 16:14:49 PST 2007
On Tue, 2007-02-06 at 20:15 -0800, Behdad Esfahbod wrote:
> So I thought about it a bit more and I want to suggest:
> - Instead of ctm and font_matrix, we just pass scaled_font->scale to
> scaled_font_create(). The product of ctm and font_matrix is the only
> thing that the font should care about, and the ctm and font_matrix can
> be accessed using public API anyway.
> - Set cairo_set_font_size (cr, 1.) on the cairo_t passed to
> get_glyph(), so the context has the same font and user space.
Done too. But for this to be useful, I also set the font options on the
cairo_t, and set scaled_font->scale as the ctm. This means, the
meta-surface that we record to now records in device space, not font
space. This makes a lot of sense. The user-font can now simply use the
cairo_t font API and it will all just work.
This has the advantage that when replaying, we don't need a freeform
device_transform anymore, which is good. The bad thing is that we now
have to add a way to get the glyphs extents out of the meta-surface *in
font space*. This may be hard. One way to do it is to replay the
meta-surface against another meta-surface to get back to font space and
implement the freeform device_transform thing as before.
"Those who would give up Essential Liberty to purchase a little
Temporary Safety, deserve neither Liberty nor Safety."
-- Benjamin Franklin, 1759
More information about the cairo