On 12-12-18 04:32 AM, Olivier Fourdan wrote: > Hi, > > For a small project I am working on, I need to render labels and leaders on a > drawing. > > For labels placed on each side, the label should be placed vertically so that > the leader ends vertically in the middle of the label, something like: > > <-------- Some Label > > My first implementation was using the logical rectangle from > pango_layout_get_pixel_extents() to compute the height of the layout and > position the label in the middle, ie: > > pango_layout_get_pixel_extents (layout, NULL, &logical_rect); > lx = priv->label_x + logical_rect.x; > ly = priv->label_y + logical_rect.y - logical_rect.height / 2; > > While this would mostly work, it's not perfect as the positioning is done > based on the logical rect, which may vary depending on the text, ie "Papa" and > "papa" would not have the same height. Beside, to improve the positioning, > it's been requested that the label is placed at the middle of the lowercase > characters.
That's not correct. "Papa" and "papa" have the same logical height. That's the whole difference between logical and ink extents. > Looking at typefaces definitions here [1] and [2], the positioning should be > ideally made based in between the baseline and the mean-line (baseline - > x-height). > > I wonder, how can I access the x-height (or better the meanline) using the > Pango API? Is there a simple API for this? Not directly. If you are using pangofc, you can obtain the FT_Face from the PangoFont, then get the (I think) "OS/2" table of the font, and get the x-height from in there. behdad > Cheers, > Olivier > > [1] http://en.wikipedia.org/wiki/Typeface > [2] > http://upload.wikimedia.org/wikipedia/commons/3/39/Typography_Line_Terms.svg > _______________________________________________ > gtk-i18n-list mailing list > [email protected] > https://mail.gnome.org/mailman/listinfo/gtk-i18n-list > -- behdad http://behdad.org/ _______________________________________________ gtk-i18n-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/gtk-i18n-list
