From fe557e2f21108181496b8f23c92595e0d24d7d20 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 24 Feb 2023 12:20:31 -0700 Subject: [PATCH] [wasm-api] Bind font_get_glyph_extents Untested. --- src/hb-wasm-api-font.hh | 17 +++++++++++++++++ src/hb-wasm-api-list.hh | 1 + src/hb-wasm-api.h | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/hb-wasm-api-font.hh b/src/hb-wasm-api-font.hh index 319814cea..b4b0548dd 100644 --- a/src/hb-wasm-api-font.hh +++ b/src/hb-wasm-api-font.hh @@ -88,6 +88,23 @@ font_get_glyph_v_advance (HB_WASM_EXEC_ENV return hb_font_get_glyph_v_advance (font, glyph); } +static_assert (sizeof (glyph_extents_t) == sizeof (hb_glyph_extents_t), ""); + +bool_t +font_get_glyph_extents (HB_WASM_EXEC_ENV + ptr_t(font_t) fontref, + codepoint_t glyph, + ptr_t(glyph_extents_t) extentsptr) +{ + HB_REF2OBJ (font); + HB_OUT_PARAM (glyph_extents_t, extents); + if (unlikely (!extents)) + return false; + + return hb_font_get_glyph_extents (font, glyph, + (hb_glyph_extents_t *) extents); +} + void font_glyph_to_string (HB_WASM_EXEC_ENV ptr_t(font_t) fontref, diff --git a/src/hb-wasm-api-list.hh b/src/hb-wasm-api-list.hh index f3cb29f76..475bf06e2 100644 --- a/src/hb-wasm-api-list.hh +++ b/src/hb-wasm-api-list.hh @@ -73,6 +73,7 @@ static NativeSymbol _hb_wasm_native_symbols[] = NATIVE_SYMBOL ("(iii)i", font_get_glyph), NATIVE_SYMBOL ("(ii)i", font_get_glyph_h_advance), NATIVE_SYMBOL ("(ii)i", font_get_glyph_v_advance), + NATIVE_SYMBOL ("(iii)i", font_get_glyph_extents), NATIVE_SYMBOL ("(ii$*)", font_glyph_to_string), /* shape */ diff --git a/src/hb-wasm-api.h b/src/hb-wasm-api.h index 2180b882a..622398f24 100644 --- a/src/hb-wasm-api.h +++ b/src/hb-wasm-api.h @@ -191,6 +191,18 @@ HB_WASM_API (position_t, font_get_glyph_v_advance) (HB_WASM_EXEC_ENV ptr_t(font_t), codepoint_t glyph); +typedef struct { + position_t x_bearing; + position_t y_bearing; + position_t width; + position_t height; +} glyph_extents_t; + +HB_WASM_API (bool_t, font_get_glyph_extents) (HB_WASM_EXEC_ENV + ptr_t(font_t), + codepoint_t glyph, + ptr_t(glyph_extents_t) extents); + HB_WASM_API (void, font_glyph_to_string) (HB_WASM_EXEC_ENV ptr_t(font_t), codepoint_t glyph,