[wasm] Add wasm-sample/

This commit is contained in:
Behdad Esfahbod 2023-02-23 14:28:16 -07:00
parent 5cecfe8659
commit d45a13f101
4 changed files with 54 additions and 0 deletions

18
src/wasm-sample/Makefile Normal file
View File

@ -0,0 +1,18 @@
all: test.wasm.ttf
%.so: %.c ../hb-wasm-api.h
clang \
--target=wasm32-unknown-wasi \
-Wl,--no-entry \
-fvisibility=hidden \
-Wl,--allow-undefined \
-nostdlib \
-I .. \
$< \
-o $@
%.wasm.ttf: %.ttf shape.so addTable.py
python addTable.py
clean:
$(RM) test.wasm.ttf shape.so

View File

@ -0,0 +1,11 @@
from fontTools.ttLib import TTFont
from fontTools.ttLib.tables.DefaultTable import DefaultTable
font = TTFont("test.ttf")
wasm_table = DefaultTable("Wasm")
wasm_table.data = open("shape.so", "rb").read()
font["Wasm"] = wasm_table
font.save("test.wasm.ttf")

25
src/wasm-sample/shape.c Normal file
View File

@ -0,0 +1,25 @@
#define HB_WASM_INTERFACE(ret_t, name) __attribute__((export_name(#name))) ret_t name
#include <hb-wasm-api.h>
void debugprint1 (char *s, int32_t);
void debugprint2 (char *s, int32_t, int32_t);
bool_t
shape (font_t font, buffer_t buffer)
{
face_t face = font_get_face (font);
blob_t blob = face_reference_table (face, TAG ('c','m','a','p'));
debugprint1 ("cmap length", blob.length);
buffer_contents_t contents = buffer_copy_contents (buffer);
debugprint1 ("buffer length", contents.length);
for (unsigned i = 0; i < contents.length; i++)
debugprint2 ("Codepoint", i, contents.info[i].codepoint);
return 1;
}

BIN
src/wasm-sample/test.ttf Normal file

Binary file not shown.