[cairo] cairo_text_path() questions
behdad at behdad.org
Fri Nov 9 10:05:08 PST 2007
On Fri, 2007-11-09 at 11:46 -0500, Hans Breuer wrote:
> Recently I've written a prototype for outline rendering with Dia based on
> cairo_text_path(), see:
> There are two things which make it less useful than expected:
> 1) although there is a cario context required to call cairo_text_path() the
> transformation within it seems to be ignored (or I am doing something
> wrong:)) E.g. calling cairo_rotate() before cairo_text_path() does not have
> the desired effect of delivering a rotated path.
It works. But if you do cairo_text_path() and cairo_copy_path() with
the same matrix, you always get the same result. What you want to do is
to rotate before cairo_text_path, but go back to identity (or whatever)
> 2) cairo is delivering multiple closed pathes per glyph. If for example one
> renders '#' the first path given describes the outer curve while the next
> closed path gives the inner square.
> Is there a way to detect the second outline being a hole in the glyph?
I don't think there is. This is how fonts are defined. You probably
can detect it. All holes have different orientation than non-holes.
One set are clockwise, the other counterclockwise. That's very easy to
- Find the point on path with least y. If many have that same y, take
the one with the least x.
- Take it's two (degenerate) neighbors. Compute the slope to those,
- Compare the slopes and decide whether it's CW or CCW.
> This is tested with cairo 1.4.10 on Windows and Linux, the results are
> consistent across the different font backends.
> -------- Hans "at" Breuer "dot" Org -----------
> Tell me what you need, and I'll tell you how to
> get along without it. -- Dilbert
> cairo mailing list
> cairo at cairographics.org
"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