[Cairo] Re: [xsvg] cairo_text_extents ?
spitzak at d2.com
Tue Dec 16 14:46:58 PST 2003
On Tuesday 16 December 2003 01:47 pm, Owen Taylor wrote:
> The Pango approach is going to be that lines of text always
> proceed in the positive-X direction. Vertical text will involve
> a 90 degree rotation of Han characters during layout so they
> get rotated back into vertical by the overall matrix.
Notice that this matches my proposal exactly.
Here is the proposal again, reworded:
There is a font_matrix with 4 numbers in it that is used to "scale" the font.
This matrix is part of the cairo state, and the only things you can do to it
are set it directly to 4 constants, or use grestore to go back to a previous
The glyphs are transformed by the concatenation of this matrix and the
current cairo transformation. However this matrix does not contain x,y
offsets, so the exact position of the glyphs is not determined by it. Instead
the font itself gets to decide on these. It also can use this to modify the
The "extents" contain a bounding box and ONLY an x_advance value.
To produce vertical text, for a typical western font, you would rotate the
cairo transform -90 and then set the font_transform to a +90 rotation. This
would produce "sideways" glyphs that are moved so the origin of each of them
is centered on the former top edge. The x_advance will have changed from the
horizontal value to the vertical value.
This would also support diagonal layout in a clean way.
I'm going to try to draw a diagram that shows this and put it on the web...
,~,~,~,~ ~ ~ ~ ~
/\_ _|_========___ Bill Spitzak
~~~/\/\\~~~~~~\____________/~~~~~~~~ spitzak at d2.com
More information about the cairo