[pango/userfont: 4/15] add font extents
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/userfont: 4/15] add font extents
- Date: Fri, 28 Jan 2022 14:04:51 +0000 (UTC)
commit 7da87f668c8aceec85cbb28caefd6e9a0d14a72a
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Jan 27 21:09:26 2022 -0500
add font extents
pango/pango-hbface-private.h | 3 ++-
pango/pango-hbface.c | 11 +++++++----
pango/pango-hbface.h | 10 ++++++++--
pango/pango-hbfont.c | 17 ++++++++++++++++-
pango/pangocairo-font.c | 8 ++++----
5 files changed, 37 insertions(+), 12 deletions(-)
---
diff --git a/pango/pango-hbface-private.h b/pango/pango-hbface-private.h
index db016fdc..7899d264 100644
--- a/pango/pango-hbface-private.h
+++ b/pango/pango-hbface-private.h
@@ -28,9 +28,10 @@
typedef struct _PangoUserFontFuncs PangoUserFontFuncs;
struct _PangoUserFontFuncs
{
+ PangoHbFaceGetFontExtentsFunc font_extents_func;
PangoHbFaceGetNominalGlyphFunc glyph_func;
PangoHbFaceGetGlyphAdvanceFunc advance_func;
- PangoHbFaceGetGlyphExtentsFunc extents_func;
+ PangoHbFaceGetGlyphExtentsFunc glyph_extents_func;
PangoHbFaceRenderGlyphFunc render_func;
gpointer user_data;
GDestroyNotify destroy;
diff --git a/pango/pango-hbface.c b/pango/pango-hbface.c
index e5194fc5..ed433129 100644
--- a/pango/pango-hbface.c
+++ b/pango/pango-hbface.c
@@ -895,9 +895,10 @@ pango_hb_face_new_instance (PangoHbFace *face,
/**
* pango_hb_face_new_user:
+ * @font_extents_func: the `PangoHbFaceGetFontExtentsFunc`
* @glyph_func: the `PangoHbFaceGetNominalGlyphFunc`
* @advance_func: the `PangoHbFaceGetGlyphAdvanceFunc`
- * @extents_func: the `PangoHbFaceGetGlyphExtentsFunc`
+ * @glyph_extents_func: the `PangoHbFaceGetGlyphExtentsFunc`
* @render_func: the `PangoHbFaceRenderGlyphFunc`
* @user_data: user data that will be assed to the callbacks
* @destroy: destroy notify for @user_data
@@ -915,9 +916,10 @@ pango_hb_face_new_instance (PangoHbFace *face,
* Since: 1.52
*/
PangoHbFace *
-pango_hb_face_new_user (PangoHbFaceGetNominalGlyphFunc glyph_func,
+pango_hb_face_new_user (PangoHbFaceGetFontExtentsFunc font_extents_func,
+ PangoHbFaceGetNominalGlyphFunc glyph_func,
PangoHbFaceGetGlyphAdvanceFunc advance_func,
- PangoHbFaceGetGlyphExtentsFunc extents_func,
+ PangoHbFaceGetGlyphExtentsFunc glyph_extents_func,
PangoHbFaceRenderGlyphFunc render_func,
gpointer user_data,
GDestroyNotify destroy,
@@ -930,9 +932,10 @@ pango_hb_face_new_user (PangoHbFaceGetNominalGlyphFunc glyph_func,
self->user_font = g_new0 (PangoUserFontFuncs, 1);
+ self->user_font->font_extents_func = font_extents_func;
self->user_font->glyph_func = glyph_func;
self->user_font->advance_func = advance_func;
- self->user_font->extents_func = extents_func,
+ self->user_font->glyph_extents_func = glyph_extents_func,
self->user_font->render_func = render_func;
self->user_font->user_data = user_data;
self->user_font->destroy = destroy;
diff --git a/pango/pango-hbface.h b/pango/pango-hbface.h
index f1303cd6..9d428f8c 100644
--- a/pango/pango-hbface.h
+++ b/pango/pango-hbface.h
@@ -59,6 +59,11 @@ PangoHbFace * pango_hb_face_new_instance (PangoHbFace *fac
const char *name,
const PangoFontDescription *description);
+typedef void (* PangoHbFaceGetFontExtentsFunc) (PangoHbFace *face,
+ int size,
+ hb_font_extents_t *extents,
+ gpointer user_data);
+
typedef gboolean (* PangoHbFaceGetNominalGlyphFunc) (PangoHbFace *face,
hb_codepoint_t unicode,
hb_codepoint_t *glyph,
@@ -82,9 +87,10 @@ typedef void (* PangoHbFaceRenderGlyphFunc) (PangoHbFace *face,
gpointer backend_data);
PANGO_AVAILABLE_IN_1_52
-PangoHbFace * pango_hb_face_new_user (PangoHbFaceGetNominalGlyphFunc glyph_func,
+PangoHbFace * pango_hb_face_new_user (PangoHbFaceGetFontExtentsFunc font_extents_func,
+ PangoHbFaceGetNominalGlyphFunc glyph_func,
PangoHbFaceGetGlyphAdvanceFunc advance_func,
- PangoHbFaceGetGlyphExtentsFunc extents,
+ PangoHbFaceGetGlyphExtentsFunc glyph_extents_func,
PangoHbFaceRenderGlyphFunc render_glyph,
gpointer user_data,
GDestroyNotify destroy,
diff --git a/pango/pango-hbfont.c b/pango/pango-hbfont.c
index 87a62f7e..cb6f7d9b 100644
--- a/pango/pango-hbfont.c
+++ b/pango/pango-hbfont.c
@@ -846,7 +846,21 @@ glyph_extents_func (hb_font_t *font, void *font_data,
PangoUserFontFuncs *user_font = self->face->user_font;
int size = self->size * self->dpi / 72.;
- return user_font->extents_func (self->face, size, glyph, extents, user_font->user_data);
+ return user_font->glyph_extents_func (self->face, size, glyph, extents, user_font->user_data);
+}
+
+static hb_bool_t
+font_extents_func (hb_font_t *font, void *font_data,
+ hb_font_extents_t *extents,
+ void *user_data)
+{
+ PangoHbFont *self = font_data;
+ PangoUserFontFuncs *user_font = self->face->user_font;
+ int size = self->size * self->dpi / 72.;
+
+ user_font->font_extents_func (self->face, size, extents, user_font->user_data);
+
+ return TRUE;
}
static hb_font_t *
@@ -875,6 +889,7 @@ pango_hb_font_create_hb_font (PangoFont *font)
hb_font_funcs_set_nominal_glyph_func (funcs, nominal_glyph_func, NULL, NULL);
hb_font_funcs_set_glyph_h_advance_func (funcs, glyph_h_advance_func, NULL, NULL);
hb_font_funcs_set_glyph_extents_func (funcs, glyph_extents_func, NULL, NULL);
+ hb_font_funcs_set_font_h_extents_func (funcs, font_extents_func, NULL, NULL);
hb_font_set_funcs (hb_font, funcs, self, NULL);
diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c
index 84cb8364..4e256640 100644
--- a/pango/pangocairo-font.c
+++ b/pango/pangocairo-font.c
@@ -100,10 +100,10 @@ render_func (cairo_scaled_font_t *scaled_font,
(hb_codepoint_t)glyph,
user_font->user_data);
- user_font->extents_func (font->face, 1024,
- (hb_codepoint_t)glyph,
- &glyph_extents,
- user_font->user_data);
+ user_font->glyph_extents_func (font->face, 1024,
+ (hb_codepoint_t)glyph,
+ &glyph_extents,
+ user_font->user_data);
extents->x_bearing = glyph_extents.x_bearing / (double) 1024;
extents->y_bearing = glyph_extents.y_bearing / (double) 1024;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]