diff --git a/src/hb-wasm-api-blob.hh b/src/hb-wasm-api-blob.hh index 310f4023f..ee80c14ce 100644 --- a/src/hb-wasm-api-blob.hh +++ b/src/hb-wasm-api-blob.hh @@ -30,6 +30,26 @@ namespace hb { namespace wasm { +HB_WASM_API (ptr_t(face_t), blob_face_create) (HB_WASM_EXEC_ENV + ptr_d(blob_t, blob), + unsigned int index) +{ + HB_PTR_PARAM (blob_t, blob); + hb_blob_t *hb_blob = hb_blob_create( + HB_ARRAY_APP2NATIVE(char, blob->data, blob->length), + blob->length, + (hb_memory_mode_t)0, + NULL, + NULL + ); + + hb_face_t *face = hb_face_create(hb_blob, index); + + HB_OBJ2REF (face); + return faceref; +} + + HB_WASM_API (void, blob_free) (HB_WASM_EXEC_ENV ptr_d(blob_t, blob)) diff --git a/src/hb-wasm-api-face.hh b/src/hb-wasm-api-face.hh index e528e1f8c..b8d208066 100644 --- a/src/hb-wasm-api-face.hh +++ b/src/hb-wasm-api-face.hh @@ -85,7 +85,16 @@ HB_WASM_API (unsigned, face_get_upem) (HB_WASM_EXEC_ENV return hb_face_get_upem (face); } +HB_WASM_API (ptr_t(font_t), face_create_font) (HB_WASM_EXEC_ENV + ptr_d(face_t, face)) +{ + HB_REF2OBJ (face); + hb_font_t *font = hb_font_create (face); + + HB_OBJ2REF (font); + return fontref; +} }} #endif /* HB_WASM_API_FACE_HH */ diff --git a/src/hb-wasm-api-list.hh b/src/hb-wasm-api-list.hh index 3f952e72f..b46044d21 100644 --- a/src/hb-wasm-api-list.hh +++ b/src/hb-wasm-api-list.hh @@ -57,6 +57,7 @@ static NativeSymbol _hb_wasm_native_symbols[] = NATIVE_SYMBOL ("(i)i", script_get_horizontal_direction), /* blob */ + NATIVE_SYMBOL ("(ii)i", blob_face_create), NATIVE_SYMBOL ("(i)", blob_free), /* buffer */ @@ -72,6 +73,7 @@ static NativeSymbol _hb_wasm_native_symbols[] = /* face */ NATIVE_SYMBOL ("(iii)i", face_copy_table), NATIVE_SYMBOL ("(i)i", face_get_upem), + NATIVE_SYMBOL ("(i)i", face_create_font), /* font */ NATIVE_SYMBOL ("(i)i", font_get_face), diff --git a/src/hb-wasm-api.h b/src/hb-wasm-api.h index 67e33e7e1..6927f4d4d 100644 --- a/src/hb-wasm-api.h +++ b/src/hb-wasm-api.h @@ -113,6 +113,9 @@ typedef struct HB_WASM_API (void, blob_free) (HB_WASM_EXEC_ENV ptr_d(blob_t, blob)); +HB_WASM_API (ptr_t(face_t), blob_face_create) (HB_WASM_EXEC_ENV + ptr_d(blob_t, blob), + unsigned int); /* buffer */ @@ -183,6 +186,8 @@ HB_WASM_API (bool_t, face_copy_table) (HB_WASM_EXEC_ENV HB_WASM_API (unsigned, face_get_upem) (HB_WASM_EXEC_ENV ptr_d(face_t, face)); +HB_WASM_API (ptr_t(font_t), face_create_font) (HB_WASM_EXEC_ENV + ptr_d(face_t, face)); /* font */