diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 76659125..e20119eb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -58,8 +58,9 @@ jobs: run: | cd dev/test C:\premake5.exe --scripts=..\..\build vs2022 + cd out/debug MSBuild rive.sln - build\bin\debug\tests.exe + tests.exe build-macos: runs-on: macOS-latest diff --git a/.rive_head b/.rive_head index b535eeaa..c6cbfd56 100644 --- a/.rive_head +++ b/.rive_head @@ -1 +1 @@ -34fff8ea44e3d30fb68912af71d35a808a2f8332 +6059f744d9225938a1463ab66c965ecba7ec0dd3 diff --git a/README.md b/README.md index 6c99f30a..c8048ee1 100644 --- a/README.md +++ b/README.md @@ -57,16 +57,19 @@ rive-cpp uses clang-format, you can install it with brew on MacOS: ```brew insta ## Memory Checks Note that if you're on MacOS you'll want to install valgrind, which is somewhat complicated these days. This is the easiest solution (please PR a better one when it becomes available). + ``` brew tap LouisBrunner/valgrind brew install --HEAD LouisBrunner/valgrind/valgrind ``` + You can now run the all the tests through valgrind by running ```test.sh memory```. ## Disassembly Explorer If you want to examine the generated assembly code per cpp file, install [Disassembly Explorer](https://marketplace.visualstudio.com/items?itemName=dseight.disasexpl) in VSCode. A ```disassemble``` task is provided to compile and preview the generated assembly. You can reach it via the Tasks: Run Task command palette or you can bind it to a shortcut by editing your VSCode keybindings.json: + ``` [ { @@ -75,4 +78,4 @@ A ```disassemble``` task is provided to compile and preview the generated assemb "args": "disassemble" } ] -``` +``` \ No newline at end of file diff --git a/dependencies/gen_harfbuzz_renames/gen_header.dart b/dependencies/gen_harfbuzz_renames/gen_header.dart new file mode 100644 index 00000000..e0c6b4df --- /dev/null +++ b/dependencies/gen_harfbuzz_renames/gen_header.dart @@ -0,0 +1,28 @@ +import 'dart:collection'; +import 'dart:io'; + +var skip = HashSet.from( + [ + 'hb_color_get_alpha', + 'hb_color_get_green', + 'hb_color_get_blue', + 'hb_color_get_red', + 'hb_glyph_info_get_glyph_flags', + ], +); + +void main() { + var header = StringBuffer(); + header.writeln('// clang-format off'); + var contents = File('harfbuzz_names.txt').readAsStringSync(); + RegExp exp = RegExp(r'\s_(hb_([a-zA-Z0-9_]*))$', multiLine: true); + Iterable matches = exp.allMatches(contents); + for (final m in matches) { + var symbolName = m[1]; + if (skip.contains(symbolName)) { + continue; + } + header.writeln('#define $symbolName rive_$symbolName'); + } + File('../rive_harfbuzz_renames.h').writeAsStringSync(header.toString()); +} diff --git a/dependencies/gen_harfbuzz_renames/gen_renames.sh b/dependencies/gen_harfbuzz_renames/gen_renames.sh new file mode 100755 index 00000000..1900497b --- /dev/null +++ b/dependencies/gen_harfbuzz_renames/gen_renames.sh @@ -0,0 +1,56 @@ +#!/bin/bash +set -e + +# This script should be called on a Mac! + +if [[ ! -f "dependencies/bin/premake5" ]]; then + mkdir -p dependencies/bin + pushd dependencies + # v5.0.0-beta2 doesn't support apple silicon properly, update the branch + # once a stable one is avaialble that supports it + git clone --depth 1 --branch master https://github.com/premake/premake-core.git + pushd premake-core + if [[ $LOCAL_ARCH == "arm64" ]]; then + PREMAKE_MAKE_ARCH=ARM + else + PREMAKE_MAKE_ARCH=x86 + fi + make -f Bootstrap.mak osx PLATFORM=$PREMAKE_MAKE_ARCH + cp bin/release/* ../bin + popd + popd +fi + +export PREMAKE=$PWD/dependencies/bin/premake5 + +for var in "$@"; do + if [[ $var = "clean" ]]; then + echo 'Cleaning...' + rm -fR out + fi +done + +mkdir -p out +mkdir -p out_with_renames + +pushd ../../../ +PACKAGES=$PWD +popd +export PREMAKE_PATH="dependencies/export-compile-commands":"$PACKAGES/runtime_unity/native_plugin/platform":"$PACKAGES/runtime/build":"$PREMAKE_PATH" + +$PREMAKE gmake2 --file=../premake5_harfbuzz_v2.lua --out=out --no-harfbuzz-renames +pushd out +make -j$(($(sysctl -n hw.physicalcpu) + 1)) +popd + +nm out/librive_harfbuzz.a --demangle &>harfbuzz_names.txt + +dart gen_header.dart + +# make with renames just to examine the exported symbols... +$PREMAKE gmake2 --file=../premake5_harfbuzz_v2.lua --out=out_with_renames +pushd out_with_renames +make -j$(($(sysctl -n hw.physicalcpu) + 1)) +popd + +nm out_with_renames/librive_harfbuzz.a --demangle &>harfbuzz_renames.txt diff --git a/dependencies/premake5_harfbuzz_v2.lua b/dependencies/premake5_harfbuzz_v2.lua index f5e41795..678f1a2d 100644 --- a/dependencies/premake5_harfbuzz_v2.lua +++ b/dependencies/premake5_harfbuzz_v2.lua @@ -3,6 +3,11 @@ dofile('rive_build_config.lua') local dependency = require('dependency') harfbuzz = dependency.github('harfbuzz/harfbuzz', '6.0.0') +newoption({ + trigger = 'no-harfbuzz-renames', + description = 'don\'t rename harfbuzz symbols', +}) + project('rive_harfbuzz') do kind('StaticLib') @@ -232,4 +237,10 @@ do do optimize('Size') end + + filter({ 'options:not no-harfbuzz-renames' }) + do + includedirs({ './' }) + forceincludes({ 'rive_harfbuzz_renames.h' }) + end end diff --git a/dependencies/rive_harfbuzz_renames.h b/dependencies/rive_harfbuzz_renames.h new file mode 100644 index 00000000..8e6e77ad --- /dev/null +++ b/dependencies/rive_harfbuzz_renames.h @@ -0,0 +1,798 @@ +// clang-format off +#define hb_aat_layout_feature_type_get_name_id rive_hb_aat_layout_feature_type_get_name_id +#define hb_aat_layout_feature_type_get_selector_infos rive_hb_aat_layout_feature_type_get_selector_infos +#define hb_aat_layout_get_feature_types rive_hb_aat_layout_get_feature_types +#define hb_aat_layout_has_positioning rive_hb_aat_layout_has_positioning +#define hb_aat_layout_has_substitution rive_hb_aat_layout_has_substitution +#define hb_aat_layout_has_tracking rive_hb_aat_layout_has_tracking +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_language_from_string rive_hb_language_from_string +#define hb_language_matches rive_hb_language_matches +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_blob_copy_writable_or_fail rive_hb_blob_copy_writable_or_fail +#define hb_blob_create rive_hb_blob_create +#define hb_blob_create_from_file rive_hb_blob_create_from_file +#define hb_blob_create_from_file_or_fail rive_hb_blob_create_from_file_or_fail +#define hb_blob_create_or_fail rive_hb_blob_create_or_fail +#define hb_blob_create_sub_blob rive_hb_blob_create_sub_blob +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data rive_hb_blob_get_data +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_get_length rive_hb_blob_get_length +#define hb_blob_get_user_data rive_hb_blob_get_user_data +#define hb_blob_is_immutable rive_hb_blob_is_immutable +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_blob_set_user_data rive_hb_blob_set_user_data +#define hb_buffer_serialize_formats rive_hb_buffer_serialize_formats +#define hb_buffer_deserialize_glyphs rive_hb_buffer_deserialize_glyphs +#define hb_buffer_deserialize_unicode rive_hb_buffer_deserialize_unicode +#define hb_buffer_get_glyph_infos rive_hb_buffer_get_glyph_infos +#define hb_buffer_get_glyph_positions rive_hb_buffer_get_glyph_positions +#define hb_buffer_serialize rive_hb_buffer_serialize +#define hb_buffer_serialize_format_from_string rive_hb_buffer_serialize_format_from_string +#define hb_buffer_serialize_format_to_string rive_hb_buffer_serialize_format_to_string +#define hb_buffer_serialize_glyphs rive_hb_buffer_serialize_glyphs +#define hb_buffer_serialize_list_formats rive_hb_buffer_serialize_list_formats +#define hb_buffer_serialize_unicode rive_hb_buffer_serialize_unicode +#define hb_buffer_set_content_type rive_hb_buffer_set_content_type +#define hb_font_get_empty rive_hb_font_get_empty +#define hb_font_get_glyph_extents rive_hb_font_get_glyph_extents +#define hb_font_glyph_from_string rive_hb_font_glyph_from_string +#define hb_font_glyph_to_string rive_hb_font_glyph_to_string +#define hb_tag_from_string rive_hb_tag_from_string +#define hb_buffer_append rive_hb_buffer_append +#define hb_buffer_clear_contents rive_hb_buffer_clear_contents +#define hb_buffer_create_similar rive_hb_buffer_create_similar +#define hb_buffer_destroy rive_hb_buffer_destroy +#define hb_buffer_diff rive_hb_buffer_diff +#define hb_buffer_get_direction rive_hb_buffer_get_direction +#define hb_buffer_get_flags rive_hb_buffer_get_flags +#define hb_buffer_get_glyph_infos rive_hb_buffer_get_glyph_infos +#define hb_buffer_get_segment_properties rive_hb_buffer_get_segment_properties +#define hb_buffer_reverse rive_hb_buffer_reverse +#define hb_buffer_serialize_unicode rive_hb_buffer_serialize_unicode +#define hb_buffer_set_flags rive_hb_buffer_set_flags +#define hb_buffer_set_length rive_hb_buffer_set_length +#define hb_buffer_set_segment_properties rive_hb_buffer_set_segment_properties +#define hb_shape_full rive_hb_shape_full +#define hb_buffer_add rive_hb_buffer_add +#define hb_buffer_add_codepoints rive_hb_buffer_add_codepoints +#define hb_buffer_add_latin1 rive_hb_buffer_add_latin1 +#define hb_buffer_add_utf16 rive_hb_buffer_add_utf16 +#define hb_buffer_add_utf32 rive_hb_buffer_add_utf32 +#define hb_buffer_add_utf8 rive_hb_buffer_add_utf8 +#define hb_buffer_allocation_successful rive_hb_buffer_allocation_successful +#define hb_buffer_append rive_hb_buffer_append +#define hb_buffer_clear_contents rive_hb_buffer_clear_contents +#define hb_buffer_create rive_hb_buffer_create +#define hb_buffer_create_similar rive_hb_buffer_create_similar +#define hb_buffer_destroy rive_hb_buffer_destroy +#define hb_buffer_diff rive_hb_buffer_diff +#define hb_buffer_get_cluster_level rive_hb_buffer_get_cluster_level +#define hb_buffer_get_content_type rive_hb_buffer_get_content_type +#define hb_buffer_get_direction rive_hb_buffer_get_direction +#define hb_buffer_get_empty rive_hb_buffer_get_empty +#define hb_buffer_get_flags rive_hb_buffer_get_flags +#define hb_buffer_get_glyph_infos rive_hb_buffer_get_glyph_infos +#define hb_buffer_get_glyph_positions rive_hb_buffer_get_glyph_positions +#define hb_buffer_get_invisible_glyph rive_hb_buffer_get_invisible_glyph +#define hb_buffer_get_language rive_hb_buffer_get_language +#define hb_buffer_get_length rive_hb_buffer_get_length +#define hb_buffer_get_not_found_glyph rive_hb_buffer_get_not_found_glyph +#define hb_buffer_get_replacement_codepoint rive_hb_buffer_get_replacement_codepoint +#define hb_buffer_get_script rive_hb_buffer_get_script +#define hb_buffer_get_segment_properties rive_hb_buffer_get_segment_properties +#define hb_buffer_get_unicode_funcs rive_hb_buffer_get_unicode_funcs +#define hb_buffer_get_user_data rive_hb_buffer_get_user_data +#define hb_buffer_guess_segment_properties rive_hb_buffer_guess_segment_properties +#define hb_buffer_has_positions rive_hb_buffer_has_positions +#define hb_buffer_normalize_glyphs rive_hb_buffer_normalize_glyphs +#define hb_buffer_pre_allocate rive_hb_buffer_pre_allocate +#define hb_buffer_reference rive_hb_buffer_reference +#define hb_buffer_reset rive_hb_buffer_reset +#define hb_buffer_reverse rive_hb_buffer_reverse +#define hb_buffer_reverse_clusters rive_hb_buffer_reverse_clusters +#define hb_buffer_reverse_range rive_hb_buffer_reverse_range +#define hb_buffer_set_cluster_level rive_hb_buffer_set_cluster_level +#define hb_buffer_set_content_type rive_hb_buffer_set_content_type +#define hb_buffer_set_direction rive_hb_buffer_set_direction +#define hb_buffer_set_flags rive_hb_buffer_set_flags +#define hb_buffer_set_invisible_glyph rive_hb_buffer_set_invisible_glyph +#define hb_buffer_set_language rive_hb_buffer_set_language +#define hb_buffer_set_length rive_hb_buffer_set_length +#define hb_buffer_set_message_func rive_hb_buffer_set_message_func +#define hb_buffer_set_not_found_glyph rive_hb_buffer_set_not_found_glyph +#define hb_buffer_set_replacement_codepoint rive_hb_buffer_set_replacement_codepoint +#define hb_buffer_set_script rive_hb_buffer_set_script +#define hb_buffer_set_segment_properties rive_hb_buffer_set_segment_properties +#define hb_buffer_set_unicode_funcs rive_hb_buffer_set_unicode_funcs +#define hb_buffer_set_user_data rive_hb_buffer_set_user_data +#define hb_language_get_default rive_hb_language_get_default +#define hb_script_get_horizontal_direction rive_hb_script_get_horizontal_direction +#define hb_segment_properties_equal rive_hb_segment_properties_equal +#define hb_segment_properties_hash rive_hb_segment_properties_hash +#define hb_segment_properties_overlay rive_hb_segment_properties_overlay +#define hb_unicode_funcs_destroy rive_hb_unicode_funcs_destroy +#define hb_unicode_funcs_get_default rive_hb_unicode_funcs_get_default +#define hb_unicode_funcs_reference rive_hb_unicode_funcs_reference +#define hb_direction_from_string rive_hb_direction_from_string +#define hb_direction_to_string rive_hb_direction_to_string +#define hb_feature_from_string rive_hb_feature_from_string +#define hb_feature_to_string rive_hb_feature_to_string +#define hb_language_from_string rive_hb_language_from_string +#define hb_language_get_default rive_hb_language_get_default +#define hb_language_matches rive_hb_language_matches +#define hb_language_to_string rive_hb_language_to_string +#define hb_script_from_iso15924_tag rive_hb_script_from_iso15924_tag +#define hb_script_from_string rive_hb_script_from_string +#define hb_script_get_horizontal_direction rive_hb_script_get_horizontal_direction +#define hb_script_to_iso15924_tag rive_hb_script_to_iso15924_tag +#define hb_tag_from_string rive_hb_tag_from_string +#define hb_tag_to_string rive_hb_tag_to_string +#define hb_variation_from_string rive_hb_variation_from_string +#define hb_variation_to_string rive_hb_variation_to_string +#define hb_version rive_hb_version +#define hb_version_atleast rive_hb_version_atleast +#define hb_version_string rive_hb_version_string +#define hb_draw_close_path rive_hb_draw_close_path +#define hb_draw_cubic_to rive_hb_draw_cubic_to +#define hb_draw_funcs_create rive_hb_draw_funcs_create +#define hb_draw_funcs_destroy rive_hb_draw_funcs_destroy +#define hb_draw_funcs_is_immutable rive_hb_draw_funcs_is_immutable +#define hb_draw_funcs_make_immutable rive_hb_draw_funcs_make_immutable +#define hb_draw_funcs_reference rive_hb_draw_funcs_reference +#define hb_draw_funcs_set_close_path_func rive_hb_draw_funcs_set_close_path_func +#define hb_draw_funcs_set_cubic_to_func rive_hb_draw_funcs_set_cubic_to_func +#define hb_draw_funcs_set_line_to_func rive_hb_draw_funcs_set_line_to_func +#define hb_draw_funcs_set_move_to_func rive_hb_draw_funcs_set_move_to_func +#define hb_draw_funcs_set_quadratic_to_func rive_hb_draw_funcs_set_quadratic_to_func +#define hb_draw_line_to rive_hb_draw_line_to +#define hb_draw_move_to rive_hb_draw_move_to +#define hb_draw_quadratic_to rive_hb_draw_quadratic_to +#define hb_arabic_u8 rive_hb_arabic_u8 +#define hb_arabic_u16 rive_hb_arabic_u16 +#define hb_blob_create rive_hb_blob_create +#define hb_blob_create_sub_blob rive_hb_blob_create_sub_blob +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_get_length rive_hb_blob_get_length +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_builder_add_table rive_hb_face_builder_add_table +#define hb_face_builder_create rive_hb_face_builder_create +#define hb_face_builder_sort_tables rive_hb_face_builder_sort_tables +#define hb_face_collect_unicodes rive_hb_face_collect_unicodes +#define hb_face_collect_variation_selectors rive_hb_face_collect_variation_selectors +#define hb_face_collect_variation_unicodes rive_hb_face_collect_variation_unicodes +#define hb_face_count rive_hb_face_count +#define hb_face_create rive_hb_face_create +#define hb_face_create_for_tables rive_hb_face_create_for_tables +#define hb_face_destroy rive_hb_face_destroy +#define hb_face_get_empty rive_hb_face_get_empty +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_get_index rive_hb_face_get_index +#define hb_face_get_table_tags rive_hb_face_get_table_tags +#define hb_face_get_upem rive_hb_face_get_upem +#define hb_face_get_user_data rive_hb_face_get_user_data +#define hb_face_is_immutable rive_hb_face_is_immutable +#define hb_face_make_immutable rive_hb_face_make_immutable +#define hb_face_reference rive_hb_face_reference +#define hb_face_reference_blob rive_hb_face_reference_blob +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_face_set_glyph_count rive_hb_face_set_glyph_count +#define hb_face_set_index rive_hb_face_set_index +#define hb_face_set_upem rive_hb_face_set_upem +#define hb_face_set_user_data rive_hb_face_set_user_data +#define hb_shape_plan_destroy rive_hb_shape_plan_destroy +#define hb_draw_funcs_default rive_hb_draw_funcs_default +#define hb_font_funcs_default rive_hb_font_funcs_default +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_destroy rive_hb_face_destroy +#define hb_face_get_empty rive_hb_face_get_empty +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_make_immutable rive_hb_face_make_immutable +#define hb_face_reference rive_hb_face_reference +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_font_add_glyph_origin_for_direction rive_hb_font_add_glyph_origin_for_direction +#define hb_font_changed rive_hb_font_changed +#define hb_font_create rive_hb_font_create +#define hb_font_create_sub_font rive_hb_font_create_sub_font +#define hb_font_destroy rive_hb_font_destroy +#define hb_font_funcs_create rive_hb_font_funcs_create +#define hb_font_funcs_destroy rive_hb_font_funcs_destroy +#define hb_font_funcs_get_empty rive_hb_font_funcs_get_empty +#define hb_font_funcs_get_user_data rive_hb_font_funcs_get_user_data +#define hb_font_funcs_is_immutable rive_hb_font_funcs_is_immutable +#define hb_font_funcs_make_immutable rive_hb_font_funcs_make_immutable +#define hb_font_funcs_reference rive_hb_font_funcs_reference +#define hb_font_funcs_set_font_h_extents_func rive_hb_font_funcs_set_font_h_extents_func +#define hb_font_funcs_set_font_v_extents_func rive_hb_font_funcs_set_font_v_extents_func +#define hb_font_funcs_set_glyph_contour_point_func rive_hb_font_funcs_set_glyph_contour_point_func +#define hb_font_funcs_set_glyph_extents_func rive_hb_font_funcs_set_glyph_extents_func +#define hb_font_funcs_set_glyph_from_name_func rive_hb_font_funcs_set_glyph_from_name_func +#define hb_font_funcs_set_glyph_func rive_hb_font_funcs_set_glyph_func +#define hb_font_funcs_set_glyph_h_advance_func rive_hb_font_funcs_set_glyph_h_advance_func +#define hb_font_funcs_set_glyph_h_advances_func rive_hb_font_funcs_set_glyph_h_advances_func +#define hb_font_funcs_set_glyph_h_kerning_func rive_hb_font_funcs_set_glyph_h_kerning_func +#define hb_font_funcs_set_glyph_h_origin_func rive_hb_font_funcs_set_glyph_h_origin_func +#define hb_font_funcs_set_glyph_name_func rive_hb_font_funcs_set_glyph_name_func +#define hb_font_funcs_set_glyph_shape_func rive_hb_font_funcs_set_glyph_shape_func +#define hb_font_funcs_set_glyph_v_advance_func rive_hb_font_funcs_set_glyph_v_advance_func +#define hb_font_funcs_set_glyph_v_advances_func rive_hb_font_funcs_set_glyph_v_advances_func +#define hb_font_funcs_set_glyph_v_kerning_func rive_hb_font_funcs_set_glyph_v_kerning_func +#define hb_font_funcs_set_glyph_v_origin_func rive_hb_font_funcs_set_glyph_v_origin_func +#define hb_font_funcs_set_nominal_glyph_func rive_hb_font_funcs_set_nominal_glyph_func +#define hb_font_funcs_set_nominal_glyphs_func rive_hb_font_funcs_set_nominal_glyphs_func +#define hb_font_funcs_set_user_data rive_hb_font_funcs_set_user_data +#define hb_font_funcs_set_variation_glyph_func rive_hb_font_funcs_set_variation_glyph_func +#define hb_font_get_empty rive_hb_font_get_empty +#define hb_font_get_extents_for_direction rive_hb_font_get_extents_for_direction +#define hb_font_get_face rive_hb_font_get_face +#define hb_font_get_glyph rive_hb_font_get_glyph +#define hb_font_get_glyph_advance_for_direction rive_hb_font_get_glyph_advance_for_direction +#define hb_font_get_glyph_advances_for_direction rive_hb_font_get_glyph_advances_for_direction +#define hb_font_get_glyph_contour_point rive_hb_font_get_glyph_contour_point +#define hb_font_get_glyph_contour_point_for_origin rive_hb_font_get_glyph_contour_point_for_origin +#define hb_font_get_glyph_extents rive_hb_font_get_glyph_extents +#define hb_font_get_glyph_extents_for_origin rive_hb_font_get_glyph_extents_for_origin +#define hb_font_get_glyph_from_name rive_hb_font_get_glyph_from_name +#define hb_font_get_glyph_h_advance rive_hb_font_get_glyph_h_advance +#define hb_font_get_glyph_h_advances rive_hb_font_get_glyph_h_advances +#define hb_font_get_glyph_h_kerning rive_hb_font_get_glyph_h_kerning +#define hb_font_get_glyph_h_origin rive_hb_font_get_glyph_h_origin +#define hb_font_get_glyph_kerning_for_direction rive_hb_font_get_glyph_kerning_for_direction +#define hb_font_get_glyph_name rive_hb_font_get_glyph_name +#define hb_font_get_glyph_origin_for_direction rive_hb_font_get_glyph_origin_for_direction +#define hb_font_get_glyph_shape rive_hb_font_get_glyph_shape +#define hb_font_get_glyph_v_advance rive_hb_font_get_glyph_v_advance +#define hb_font_get_glyph_v_advances rive_hb_font_get_glyph_v_advances +#define hb_font_get_glyph_v_kerning rive_hb_font_get_glyph_v_kerning +#define hb_font_get_glyph_v_origin rive_hb_font_get_glyph_v_origin +#define hb_font_get_h_extents rive_hb_font_get_h_extents +#define hb_font_get_nominal_glyph rive_hb_font_get_nominal_glyph +#define hb_font_get_nominal_glyphs rive_hb_font_get_nominal_glyphs +#define hb_font_get_parent rive_hb_font_get_parent +#define hb_font_get_ppem rive_hb_font_get_ppem +#define hb_font_get_ptem rive_hb_font_get_ptem +#define hb_font_get_scale rive_hb_font_get_scale +#define hb_font_get_serial rive_hb_font_get_serial +#define hb_font_get_synthetic_slant rive_hb_font_get_synthetic_slant +#define hb_font_get_user_data rive_hb_font_get_user_data +#define hb_font_get_v_extents rive_hb_font_get_v_extents +#define hb_font_get_var_coords_design rive_hb_font_get_var_coords_design +#define hb_font_get_var_coords_normalized rive_hb_font_get_var_coords_normalized +#define hb_font_get_variation_glyph rive_hb_font_get_variation_glyph +#define hb_font_glyph_from_string rive_hb_font_glyph_from_string +#define hb_font_glyph_to_string rive_hb_font_glyph_to_string +#define hb_font_is_immutable rive_hb_font_is_immutable +#define hb_font_make_immutable rive_hb_font_make_immutable +#define hb_font_reference rive_hb_font_reference +#define hb_font_set_face rive_hb_font_set_face +#define hb_font_set_funcs rive_hb_font_set_funcs +#define hb_font_set_funcs_data rive_hb_font_set_funcs_data +#define hb_font_set_parent rive_hb_font_set_parent +#define hb_font_set_ppem rive_hb_font_set_ppem +#define hb_font_set_ptem rive_hb_font_set_ptem +#define hb_font_set_scale rive_hb_font_set_scale +#define hb_font_set_synthetic_slant rive_hb_font_set_synthetic_slant +#define hb_font_set_user_data rive_hb_font_set_user_data +#define hb_font_set_var_coords_design rive_hb_font_set_var_coords_design +#define hb_font_set_var_coords_normalized rive_hb_font_set_var_coords_normalized +#define hb_font_set_var_named_instance rive_hb_font_set_var_named_instance +#define hb_font_set_variations rive_hb_font_set_variations +#define hb_font_subtract_glyph_origin_for_direction rive_hb_font_subtract_glyph_origin_for_direction +#define hb_ot_font_set_funcs rive_hb_ot_font_set_funcs +#define hb_ot_var_named_instance_get_design_coords rive_hb_ot_var_named_instance_get_design_coords +#define hb_ot_var_normalize_coords rive_hb_ot_var_normalize_coords +#define hb_map_allocation_successful rive_hb_map_allocation_successful +#define hb_map_clear rive_hb_map_clear +#define hb_map_copy rive_hb_map_copy +#define hb_map_create rive_hb_map_create +#define hb_map_del rive_hb_map_del +#define hb_map_destroy rive_hb_map_destroy +#define hb_map_get rive_hb_map_get +#define hb_map_get_empty rive_hb_map_get_empty +#define hb_map_get_population rive_hb_map_get_population +#define hb_map_get_user_data rive_hb_map_get_user_data +#define hb_map_has rive_hb_map_has +#define hb_map_hash rive_hb_map_hash +#define hb_map_is_empty rive_hb_map_is_empty +#define hb_map_is_equal rive_hb_map_is_equal +#define hb_map_reference rive_hb_map_reference +#define hb_map_set rive_hb_map_set +#define hb_map_set_user_data rive_hb_map_set_user_data +#define hb_blob_create_sub_blob rive_hb_blob_create_sub_blob +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_get_upem rive_hb_face_get_upem +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_ot_color_glyph_get_layers rive_hb_ot_color_glyph_get_layers +#define hb_ot_color_glyph_reference_png rive_hb_ot_color_glyph_reference_png +#define hb_ot_color_glyph_reference_svg rive_hb_ot_color_glyph_reference_svg +#define hb_ot_color_has_layers rive_hb_ot_color_has_layers +#define hb_ot_color_has_palettes rive_hb_ot_color_has_palettes +#define hb_ot_color_has_png rive_hb_ot_color_has_png +#define hb_ot_color_has_svg rive_hb_ot_color_has_svg +#define hb_ot_color_palette_color_get_name_id rive_hb_ot_color_palette_color_get_name_id +#define hb_ot_color_palette_get_colors rive_hb_ot_color_palette_get_colors +#define hb_ot_color_palette_get_count rive_hb_ot_color_palette_get_count +#define hb_ot_color_palette_get_flags rive_hb_ot_color_palette_get_flags +#define hb_ot_color_palette_get_name_id rive_hb_ot_color_palette_get_name_id +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_arabic_u8 rive_hb_arabic_u8 +#define hb_arabic_u16 rive_hb_arabic_u16 +#define hb_blob_create_sub_blob rive_hb_blob_create_sub_blob +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_get_upem rive_hb_face_get_upem +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_font_funcs_create rive_hb_font_funcs_create +#define hb_font_funcs_destroy rive_hb_font_funcs_destroy +#define hb_font_funcs_get_empty rive_hb_font_funcs_get_empty +#define hb_font_funcs_make_immutable rive_hb_font_funcs_make_immutable +#define hb_font_funcs_set_font_h_extents_func rive_hb_font_funcs_set_font_h_extents_func +#define hb_font_funcs_set_font_v_extents_func rive_hb_font_funcs_set_font_v_extents_func +#define hb_font_funcs_set_glyph_extents_func rive_hb_font_funcs_set_glyph_extents_func +#define hb_font_funcs_set_glyph_from_name_func rive_hb_font_funcs_set_glyph_from_name_func +#define hb_font_funcs_set_glyph_h_advances_func rive_hb_font_funcs_set_glyph_h_advances_func +#define hb_font_funcs_set_glyph_name_func rive_hb_font_funcs_set_glyph_name_func +#define hb_font_funcs_set_glyph_shape_func rive_hb_font_funcs_set_glyph_shape_func +#define hb_font_funcs_set_glyph_v_advances_func rive_hb_font_funcs_set_glyph_v_advances_func +#define hb_font_funcs_set_glyph_v_origin_func rive_hb_font_funcs_set_glyph_v_origin_func +#define hb_font_funcs_set_nominal_glyph_func rive_hb_font_funcs_set_nominal_glyph_func +#define hb_font_funcs_set_nominal_glyphs_func rive_hb_font_funcs_set_nominal_glyphs_func +#define hb_font_funcs_set_variation_glyph_func rive_hb_font_funcs_set_variation_glyph_func +#define hb_font_set_funcs rive_hb_font_set_funcs +#define hb_ot_font_set_funcs rive_hb_ot_font_set_funcs +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_buffer_get_glyph_positions rive_hb_buffer_get_glyph_positions +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_font_get_extents_for_direction rive_hb_font_get_extents_for_direction +#define hb_font_get_glyph_extents rive_hb_font_get_glyph_extents +#define hb_font_get_nominal_glyph rive_hb_font_get_nominal_glyph +#define hb_ot_layout_collect_features rive_hb_ot_layout_collect_features +#define hb_ot_layout_collect_lookups rive_hb_ot_layout_collect_lookups +#define hb_ot_layout_feature_get_characters rive_hb_ot_layout_feature_get_characters +#define hb_ot_layout_feature_get_lookups rive_hb_ot_layout_feature_get_lookups +#define hb_ot_layout_feature_get_name_ids rive_hb_ot_layout_feature_get_name_ids +#define hb_ot_layout_feature_with_variations_get_lookups rive_hb_ot_layout_feature_with_variations_get_lookups +#define hb_ot_layout_get_attach_points rive_hb_ot_layout_get_attach_points +#define hb_ot_layout_get_baseline rive_hb_ot_layout_get_baseline +#define hb_ot_layout_get_baseline_with_fallback rive_hb_ot_layout_get_baseline_with_fallback +#define hb_ot_layout_get_glyph_class rive_hb_ot_layout_get_glyph_class +#define hb_ot_layout_get_glyphs_in_class rive_hb_ot_layout_get_glyphs_in_class +#define hb_ot_layout_get_horizontal_baseline_tag_for_script rive_hb_ot_layout_get_horizontal_baseline_tag_for_script +#define hb_ot_layout_get_ligature_carets rive_hb_ot_layout_get_ligature_carets +#define hb_ot_layout_get_size_params rive_hb_ot_layout_get_size_params +#define hb_ot_layout_has_glyph_classes rive_hb_ot_layout_has_glyph_classes +#define hb_ot_layout_has_positioning rive_hb_ot_layout_has_positioning +#define hb_ot_layout_has_substitution rive_hb_ot_layout_has_substitution +#define hb_ot_layout_language_find_feature rive_hb_ot_layout_language_find_feature +#define hb_ot_layout_language_get_feature_indexes rive_hb_ot_layout_language_get_feature_indexes +#define hb_ot_layout_language_get_feature_tags rive_hb_ot_layout_language_get_feature_tags +#define hb_ot_layout_language_get_required_feature rive_hb_ot_layout_language_get_required_feature +#define hb_ot_layout_language_get_required_feature_index rive_hb_ot_layout_language_get_required_feature_index +#define hb_ot_layout_lookup_collect_glyphs rive_hb_ot_layout_lookup_collect_glyphs +#define hb_ot_layout_lookup_get_glyph_alternates rive_hb_ot_layout_lookup_get_glyph_alternates +#define hb_ot_layout_lookup_get_optical_bound rive_hb_ot_layout_lookup_get_optical_bound +#define hb_ot_layout_lookup_substitute_closure rive_hb_ot_layout_lookup_substitute_closure +#define hb_ot_layout_lookup_would_substitute rive_hb_ot_layout_lookup_would_substitute +#define hb_ot_layout_lookups_substitute_closure rive_hb_ot_layout_lookups_substitute_closure +#define hb_ot_layout_script_find_language rive_hb_ot_layout_script_find_language +#define hb_ot_layout_script_get_language_tags rive_hb_ot_layout_script_get_language_tags +#define hb_ot_layout_script_select_language rive_hb_ot_layout_script_select_language +#define hb_ot_layout_table_choose_script rive_hb_ot_layout_table_choose_script +#define hb_ot_layout_table_find_feature_variations rive_hb_ot_layout_table_find_feature_variations +#define hb_ot_layout_table_find_script rive_hb_ot_layout_table_find_script +#define hb_ot_layout_table_get_feature_tags rive_hb_ot_layout_table_get_feature_tags +#define hb_ot_layout_table_get_lookup_count rive_hb_ot_layout_table_get_lookup_count +#define hb_ot_layout_table_get_script_tags rive_hb_ot_layout_table_get_script_tags +#define hb_ot_layout_table_select_script rive_hb_ot_layout_table_select_script +#define hb_ot_metrics_get_position_with_fallback rive_hb_ot_metrics_get_position_with_fallback +#define hb_set_add_range rive_hb_set_add_range +#define hb_set_clear rive_hb_set_clear +#define hb_set_create rive_hb_set_create +#define hb_set_destroy rive_hb_set_destroy +#define hb_set_get_empty rive_hb_set_get_empty +#define hb_set_get_user_data rive_hb_set_get_user_data +#define hb_set_has rive_hb_set_has +#define hb_set_next rive_hb_set_next +#define hb_set_reference rive_hb_set_reference +#define hb_set_set_user_data rive_hb_set_set_user_data +#define hb_ot_layout_feature_with_variations_get_lookups rive_hb_ot_layout_feature_with_variations_get_lookups +#define hb_ot_layout_language_find_feature rive_hb_ot_layout_language_find_feature +#define hb_ot_layout_language_get_required_feature rive_hb_ot_layout_language_get_required_feature +#define hb_ot_layout_script_select_language rive_hb_ot_layout_script_select_language +#define hb_ot_layout_table_get_lookup_count rive_hb_ot_layout_table_get_lookup_count +#define hb_ot_layout_table_select_script rive_hb_ot_layout_table_select_script +#define hb_ot_tags_from_script_and_language rive_hb_ot_tags_from_script_and_language +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_ot_math_get_constant rive_hb_ot_math_get_constant +#define hb_ot_math_get_glyph_assembly rive_hb_ot_math_get_glyph_assembly +#define hb_ot_math_get_glyph_italics_correction rive_hb_ot_math_get_glyph_italics_correction +#define hb_ot_math_get_glyph_kerning rive_hb_ot_math_get_glyph_kerning +#define hb_ot_math_get_glyph_kernings rive_hb_ot_math_get_glyph_kernings +#define hb_ot_math_get_glyph_top_accent_attachment rive_hb_ot_math_get_glyph_top_accent_attachment +#define hb_ot_math_get_glyph_variants rive_hb_ot_math_get_glyph_variants +#define hb_ot_math_get_min_connector_overlap rive_hb_ot_math_get_min_connector_overlap +#define hb_ot_math_has_data rive_hb_ot_math_has_data +#define hb_ot_math_is_glyph_extended_shape rive_hb_ot_math_is_glyph_extended_shape +#define hb_blob_create_sub_blob rive_hb_blob_create_sub_blob +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_ot_meta_get_entry_tags rive_hb_ot_meta_get_entry_tags +#define hb_ot_meta_reference_entry rive_hb_ot_meta_reference_entry +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_font_get_extents_for_direction rive_hb_font_get_extents_for_direction +#define hb_font_get_glyph_extents rive_hb_font_get_glyph_extents +#define hb_font_get_nominal_glyph rive_hb_font_get_nominal_glyph +#define hb_ot_metrics_get_position rive_hb_ot_metrics_get_position +#define hb_ot_metrics_get_position_with_fallback rive_hb_ot_metrics_get_position_with_fallback +#define hb_ot_metrics_get_variation rive_hb_ot_metrics_get_variation +#define hb_ot_metrics_get_x_variation rive_hb_ot_metrics_get_x_variation +#define hb_ot_metrics_get_y_variation rive_hb_ot_metrics_get_y_variation +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_language_from_string rive_hb_language_from_string +#define hb_language_matches rive_hb_language_matches +#define hb_language_to_string rive_hb_language_to_string +#define hb_ot_name_get_utf16 rive_hb_ot_name_get_utf16 +#define hb_ot_name_get_utf32 rive_hb_ot_name_get_utf32 +#define hb_ot_name_get_utf8 rive_hb_ot_name_get_utf8 +#define hb_ot_name_list_names rive_hb_ot_name_list_names +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_script_get_horizontal_direction rive_hb_script_get_horizontal_direction +#define hb_aat_layout_has_positioning rive_hb_aat_layout_has_positioning +#define hb_aat_layout_has_substitution rive_hb_aat_layout_has_substitution +#define hb_aat_layout_has_tracking rive_hb_aat_layout_has_tracking +#define hb_buffer_reverse rive_hb_buffer_reverse +#define hb_ot_layout_has_glyph_classes rive_hb_ot_layout_has_glyph_classes +#define hb_ot_layout_has_positioning rive_hb_ot_layout_has_positioning +#define hb_ot_layout_has_substitution rive_hb_ot_layout_has_substitution +#define hb_ot_layout_lookups_substitute_closure rive_hb_ot_layout_lookups_substitute_closure +#define hb_ot_shape_glyphs_closure rive_hb_ot_shape_glyphs_closure +#define hb_ot_shape_plan_collect_lookups rive_hb_ot_shape_plan_collect_lookups +#define hb_script_get_horizontal_direction rive_hb_script_get_horizontal_direction +#define hb_set_create rive_hb_set_create +#define hb_set_destroy rive_hb_set_destroy +#define hb_shape_plan_create_cached rive_hb_shape_plan_create_cached +#define hb_shape_plan_destroy rive_hb_shape_plan_destroy +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_font_get_glyph rive_hb_font_get_glyph +#define hb_font_get_glyph rive_hb_font_get_glyph +#define hb_font_get_glyph_h_advance rive_hb_font_get_glyph_h_advance +#define hb_ot_layout_lookup_would_substitute rive_hb_ot_layout_lookup_would_substitute +#define hb_font_get_glyph rive_hb_font_get_glyph +#define hb_language_from_string rive_hb_language_from_string +#define hb_language_to_string rive_hb_language_to_string +#define hb_ot_tag_from_language rive_hb_ot_tag_from_language +#define hb_ot_tag_to_language rive_hb_ot_tag_to_language +#define hb_ot_tag_to_script rive_hb_ot_tag_to_script +#define hb_ot_tags_from_script rive_hb_ot_tags_from_script +#define hb_ot_tags_from_script_and_language rive_hb_ot_tags_from_script_and_language +#define hb_ot_tags_to_script_and_language rive_hb_ot_tags_to_script_and_language +#define hb_tag_from_string rive_hb_tag_from_string +#define hb_tag_to_string rive_hb_tag_to_string +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_ot_var_find_axis rive_hb_ot_var_find_axis +#define hb_ot_var_find_axis_info rive_hb_ot_var_find_axis_info +#define hb_ot_var_get_axes rive_hb_ot_var_get_axes +#define hb_ot_var_get_axis_count rive_hb_ot_var_get_axis_count +#define hb_ot_var_get_axis_infos rive_hb_ot_var_get_axis_infos +#define hb_ot_var_get_named_instance_count rive_hb_ot_var_get_named_instance_count +#define hb_ot_var_has_data rive_hb_ot_var_has_data +#define hb_ot_var_named_instance_get_design_coords rive_hb_ot_var_named_instance_get_design_coords +#define hb_ot_var_named_instance_get_postscript_name_id rive_hb_ot_var_named_instance_get_postscript_name_id +#define hb_ot_var_named_instance_get_subfamily_name_id rive_hb_ot_var_named_instance_get_subfamily_name_id +#define hb_ot_var_normalize_coords rive_hb_ot_var_normalize_coords +#define hb_ot_var_normalize_variations rive_hb_ot_var_normalize_variations +#define hb_set_add rive_hb_set_add +#define hb_set_add_range rive_hb_set_add_range +#define hb_set_add_sorted_array rive_hb_set_add_sorted_array +#define hb_set_allocation_successful rive_hb_set_allocation_successful +#define hb_set_clear rive_hb_set_clear +#define hb_set_copy rive_hb_set_copy +#define hb_set_create rive_hb_set_create +#define hb_set_del rive_hb_set_del +#define hb_set_del_range rive_hb_set_del_range +#define hb_set_destroy rive_hb_set_destroy +#define hb_set_get_empty rive_hb_set_get_empty +#define hb_set_get_max rive_hb_set_get_max +#define hb_set_get_min rive_hb_set_get_min +#define hb_set_get_population rive_hb_set_get_population +#define hb_set_get_user_data rive_hb_set_get_user_data +#define hb_set_has rive_hb_set_has +#define hb_set_hash rive_hb_set_hash +#define hb_set_intersect rive_hb_set_intersect +#define hb_set_invert rive_hb_set_invert +#define hb_set_is_empty rive_hb_set_is_empty +#define hb_set_is_equal rive_hb_set_is_equal +#define hb_set_is_subset rive_hb_set_is_subset +#define hb_set_next rive_hb_set_next +#define hb_set_next_many rive_hb_set_next_many +#define hb_set_next_range rive_hb_set_next_range +#define hb_set_previous rive_hb_set_previous +#define hb_set_previous_range rive_hb_set_previous_range +#define hb_set_reference rive_hb_set_reference +#define hb_set_set rive_hb_set_set +#define hb_set_set_user_data rive_hb_set_set_user_data +#define hb_set_subtract rive_hb_set_subtract +#define hb_set_symmetric_difference rive_hb_set_symmetric_difference +#define hb_set_union rive_hb_set_union +#define hb_face_get_empty rive_hb_face_get_empty +#define hb_face_make_immutable rive_hb_face_make_immutable +#define hb_ot_layout_table_find_feature_variations rive_hb_ot_layout_table_find_feature_variations +#define hb_segment_properties_equal rive_hb_segment_properties_equal +#define hb_shape_plan_create rive_hb_shape_plan_create +#define hb_shape_plan_create2 rive_hb_shape_plan_create2 +#define hb_shape_plan_create_cached rive_hb_shape_plan_create_cached +#define hb_shape_plan_create_cached2 rive_hb_shape_plan_create_cached2 +#define hb_shape_plan_destroy rive_hb_shape_plan_destroy +#define hb_shape_plan_execute rive_hb_shape_plan_execute +#define hb_shape_plan_get_empty rive_hb_shape_plan_get_empty +#define hb_shape_plan_get_shaper rive_hb_shape_plan_get_shaper +#define hb_shape_plan_get_user_data rive_hb_shape_plan_get_user_data +#define hb_shape_plan_reference rive_hb_shape_plan_reference +#define hb_shape_plan_set_user_data rive_hb_shape_plan_set_user_data +#define hb_buffer_append rive_hb_buffer_append +#define hb_buffer_create rive_hb_buffer_create +#define hb_buffer_destroy rive_hb_buffer_destroy +#define hb_shape rive_hb_shape +#define hb_shape_full rive_hb_shape_full +#define hb_shape_list_shapers rive_hb_shape_list_shapers +#define hb_shape_plan_create_cached2 rive_hb_shape_plan_create_cached2 +#define hb_shape_plan_destroy rive_hb_shape_plan_destroy +#define hb_shape_plan_execute rive_hb_shape_plan_execute +#define hb_all_shapers rive_hb_all_shapers +#define hb_ms_language_map rive_hb_ms_language_map +#define hb_mac_language_map rive_hb_mac_language_map +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_language_from_string rive_hb_language_from_string +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_map_create rive_hb_map_create +#define hb_map_destroy rive_hb_map_destroy +#define hb_set_next rive_hb_set_next +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_map_destroy rive_hb_map_destroy +#define hb_set_next rive_hb_set_next +#define hb_ot_var_find_axis_info rive_hb_ot_var_find_axis_info +#define hb_set_add rive_hb_set_add +#define hb_set_add_range rive_hb_set_add_range +#define hb_set_clear rive_hb_set_clear +#define hb_set_create rive_hb_set_create +#define hb_set_destroy rive_hb_set_destroy +#define hb_set_invert rive_hb_set_invert +#define hb_subset_input_create_or_fail rive_hb_subset_input_create_or_fail +#define hb_subset_input_destroy rive_hb_subset_input_destroy +#define hb_subset_input_get_flags rive_hb_subset_input_get_flags +#define hb_subset_input_get_user_data rive_hb_subset_input_get_user_data +#define hb_subset_input_glyph_set rive_hb_subset_input_glyph_set +#define hb_subset_input_pin_axis_location rive_hb_subset_input_pin_axis_location +#define hb_subset_input_pin_axis_to_default rive_hb_subset_input_pin_axis_to_default +#define hb_subset_input_reference rive_hb_subset_input_reference +#define hb_subset_input_set rive_hb_subset_input_set +#define hb_subset_input_set_flags rive_hb_subset_input_set_flags +#define hb_subset_input_set_user_data rive_hb_subset_input_set_user_data +#define hb_subset_input_unicode_set rive_hb_subset_input_unicode_set +#define hb_subset_or_fail rive_hb_subset_or_fail +#define hb_subset_preprocess rive_hb_subset_preprocess +#define hb_arabic_u8 rive_hb_arabic_u8 +#define hb_arabic_u16 rive_hb_arabic_u16 +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_get_user_data rive_hb_blob_get_user_data +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_blob_set_user_data rive_hb_blob_set_user_data +#define hb_face_builder_create rive_hb_face_builder_create +#define hb_face_destroy rive_hb_face_destroy +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_get_upem rive_hb_face_get_upem +#define hb_face_get_user_data rive_hb_face_get_user_data +#define hb_face_reference rive_hb_face_reference +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_font_create rive_hb_font_create +#define hb_font_destroy rive_hb_font_destroy +#define hb_font_set_variations rive_hb_font_set_variations +#define hb_map_create rive_hb_map_create +#define hb_map_destroy rive_hb_map_destroy +#define hb_map_get_empty rive_hb_map_get_empty +#define hb_map_get_user_data rive_hb_map_get_user_data +#define hb_map_reference rive_hb_map_reference +#define hb_map_set_user_data rive_hb_map_set_user_data +#define hb_ot_layout_collect_features rive_hb_ot_layout_collect_features +#define hb_ot_layout_has_positioning rive_hb_ot_layout_has_positioning +#define hb_ot_layout_lookups_substitute_closure rive_hb_ot_layout_lookups_substitute_closure +#define hb_set_copy rive_hb_set_copy +#define hb_set_create rive_hb_set_create +#define hb_set_destroy rive_hb_set_destroy +#define hb_set_get_empty rive_hb_set_get_empty +#define hb_set_get_user_data rive_hb_set_get_user_data +#define hb_set_previous rive_hb_set_previous +#define hb_set_reference rive_hb_set_reference +#define hb_set_set rive_hb_set_set +#define hb_set_set_user_data rive_hb_set_set_user_data +#define hb_set_subtract rive_hb_set_subtract +#define hb_set_union rive_hb_set_union +#define hb_subset_plan_create_or_fail rive_hb_subset_plan_create_or_fail +#define hb_subset_plan_destroy rive_hb_subset_plan_destroy +#define hb_subset_plan_get_user_data rive_hb_subset_plan_get_user_data +#define hb_subset_plan_new_to_old_glyph_mapping rive_hb_subset_plan_new_to_old_glyph_mapping +#define hb_subset_plan_old_to_new_glyph_mapping rive_hb_subset_plan_old_to_new_glyph_mapping +#define hb_subset_plan_reference rive_hb_subset_plan_reference +#define hb_subset_plan_set_user_data rive_hb_subset_plan_set_user_data +#define hb_subset_plan_unicode_to_old_glyph_mapping rive_hb_subset_plan_unicode_to_old_glyph_mapping +#define hb_blob_copy_writable_or_fail rive_hb_blob_copy_writable_or_fail +#define hb_blob_create rive_hb_blob_create +#define hb_blob_destroy rive_hb_blob_destroy +#define hb_blob_get_data rive_hb_blob_get_data +#define hb_blob_get_data_writable rive_hb_blob_get_data_writable +#define hb_blob_get_empty rive_hb_blob_get_empty +#define hb_blob_get_user_data rive_hb_blob_get_user_data +#define hb_blob_make_immutable rive_hb_blob_make_immutable +#define hb_blob_reference rive_hb_blob_reference +#define hb_blob_set_user_data rive_hb_blob_set_user_data +#define hb_face_builder_add_table rive_hb_face_builder_add_table +#define hb_face_get_empty rive_hb_face_get_empty +#define hb_face_get_glyph_count rive_hb_face_get_glyph_count +#define hb_face_get_table_tags rive_hb_face_get_table_tags +#define hb_face_get_upem rive_hb_face_get_upem +#define hb_face_reference rive_hb_face_reference +#define hb_face_reference_table rive_hb_face_reference_table +#define hb_face_set_user_data rive_hb_face_set_user_data +#define hb_font_create rive_hb_font_create +#define hb_font_destroy rive_hb_font_destroy +#define hb_font_get_empty rive_hb_font_get_empty +#define hb_font_set_variations rive_hb_font_set_variations +#define hb_set_create rive_hb_set_create +#define hb_set_destroy rive_hb_set_destroy +#define hb_set_get_empty rive_hb_set_get_empty +#define hb_set_get_user_data rive_hb_set_get_user_data +#define hb_set_next rive_hb_set_next +#define hb_set_reference rive_hb_set_reference +#define hb_set_set_user_data rive_hb_set_set_user_data +#define hb_set_subtract rive_hb_set_subtract +#define hb_set_union rive_hb_set_union +#define hb_subset_or_fail rive_hb_subset_or_fail +#define hb_subset_plan_create_or_fail rive_hb_subset_plan_create_or_fail +#define hb_subset_plan_destroy rive_hb_subset_plan_destroy +#define hb_subset_plan_execute_or_fail rive_hb_subset_plan_execute_or_fail +#define hb_ucd_u8 rive_hb_ucd_u8 +#define hb_ucd_i16 rive_hb_ucd_i16 +#define hb_ucd_u16 rive_hb_ucd_u16 +#define hb_ucd_sc_map rive_hb_ucd_sc_map +#define hb_ucd_dm1_p0_map rive_hb_ucd_dm1_p0_map +#define hb_ucd_dm1_p2_map rive_hb_ucd_dm1_p2_map +#define hb_ucd_dm2_u32_map rive_hb_ucd_dm2_u32_map +#define hb_ucd_dm2_u64_map rive_hb_ucd_dm2_u64_map +#define hb_ucd_get_unicode_funcs rive_hb_ucd_get_unicode_funcs +#define hb_unicode_funcs_create rive_hb_unicode_funcs_create +#define hb_unicode_funcs_destroy rive_hb_unicode_funcs_destroy +#define hb_unicode_funcs_get_empty rive_hb_unicode_funcs_get_empty +#define hb_unicode_funcs_make_immutable rive_hb_unicode_funcs_make_immutable +#define hb_unicode_funcs_set_combining_class_func rive_hb_unicode_funcs_set_combining_class_func +#define hb_unicode_funcs_set_compose_func rive_hb_unicode_funcs_set_compose_func +#define hb_unicode_funcs_set_decompose_func rive_hb_unicode_funcs_set_decompose_func +#define hb_unicode_funcs_set_general_category_func rive_hb_unicode_funcs_set_general_category_func +#define hb_unicode_funcs_set_mirroring_func rive_hb_unicode_funcs_set_mirroring_func +#define hb_unicode_funcs_set_script_func rive_hb_unicode_funcs_set_script_func +#define hb_emoji_u8 rive_hb_emoji_u8 +#define hb_ucd_get_unicode_funcs rive_hb_ucd_get_unicode_funcs +#define hb_unicode_combining_class rive_hb_unicode_combining_class +#define hb_unicode_compose rive_hb_unicode_compose +#define hb_unicode_decompose rive_hb_unicode_decompose +#define hb_unicode_decompose_compatibility rive_hb_unicode_decompose_compatibility +#define hb_unicode_eastasian_width rive_hb_unicode_eastasian_width +#define hb_unicode_funcs_create rive_hb_unicode_funcs_create +#define hb_unicode_funcs_destroy rive_hb_unicode_funcs_destroy +#define hb_unicode_funcs_get_default rive_hb_unicode_funcs_get_default +#define hb_unicode_funcs_get_empty rive_hb_unicode_funcs_get_empty +#define hb_unicode_funcs_get_parent rive_hb_unicode_funcs_get_parent +#define hb_unicode_funcs_get_user_data rive_hb_unicode_funcs_get_user_data +#define hb_unicode_funcs_is_immutable rive_hb_unicode_funcs_is_immutable +#define hb_unicode_funcs_make_immutable rive_hb_unicode_funcs_make_immutable +#define hb_unicode_funcs_reference rive_hb_unicode_funcs_reference +#define hb_unicode_funcs_set_combining_class_func rive_hb_unicode_funcs_set_combining_class_func +#define hb_unicode_funcs_set_compose_func rive_hb_unicode_funcs_set_compose_func +#define hb_unicode_funcs_set_decompose_compatibility_func rive_hb_unicode_funcs_set_decompose_compatibility_func +#define hb_unicode_funcs_set_decompose_func rive_hb_unicode_funcs_set_decompose_func +#define hb_unicode_funcs_set_eastasian_width_func rive_hb_unicode_funcs_set_eastasian_width_func +#define hb_unicode_funcs_set_general_category_func rive_hb_unicode_funcs_set_general_category_func +#define hb_unicode_funcs_set_mirroring_func rive_hb_unicode_funcs_set_mirroring_func +#define hb_unicode_funcs_set_script_func rive_hb_unicode_funcs_set_script_func +#define hb_unicode_funcs_set_user_data rive_hb_unicode_funcs_set_user_data +#define hb_unicode_general_category rive_hb_unicode_general_category +#define hb_unicode_mirroring rive_hb_unicode_mirroring +#define hb_unicode_script rive_hb_unicode_script diff --git a/premake5_v2.lua b/premake5_v2.lua index 400bd6ea..0787eddc 100644 --- a/premake5_v2.lua +++ b/premake5_v2.lua @@ -19,9 +19,10 @@ do end filter({}) -dofile(path.join(path.getabsolute('dependencies/'), 'premake5_harfbuzz_v2.lua')) -dofile(path.join(path.getabsolute('dependencies/'), 'premake5_sheenbidi_v2.lua')) -dofile(path.join(path.getabsolute('dependencies/'), 'premake5_miniaudio_v2.lua')) +dependencies = path.getabsolute('dependencies/') +dofile(path.join(dependencies, 'premake5_harfbuzz_v2.lua')) +dofile(path.join(dependencies, 'premake5_sheenbidi_v2.lua')) +dofile(path.join(dependencies, 'premake5_miniaudio_v2.lua')) project('rive') do @@ -38,6 +39,14 @@ do flags({ 'FatalCompileWarnings' }) + filter({ 'options:with_rive_text', 'options:not no-harfbuzz-renames' }) + do + includedirs({ + dependencies, + }) + forceincludes({ 'rive_harfbuzz_renames.h' }) + end + filter({ 'system:linux' }) do defines({ 'MA_NO_RUNTIME_LINKING' })