diff options
Diffstat (limited to 'test')
952 files changed, 5142 insertions, 7549 deletions
diff --git a/test/Makefile.in b/test/Makefile.in index 5a7e405..2416988 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -96,8 +96,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -304,6 +303,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt index b540eb5..0c7337c 100644 --- a/test/api/CMakeLists.txt +++ b/test/api/CMakeLists.txt @@ -3,6 +3,8 @@ if (HB_HAVE_GLIB) extract_make_variable (TEST_PROGS ${MAKEFILEAM}) list (APPEND TEST_PROGS + test-ot-color + test-ot-name test-ot-tag test-c test-cplusplus diff --git a/test/api/Makefile.am b/test/api/Makefile.am index 65ceeda..67d66e1 100644 --- a/test/api/Makefile.am +++ b/test/api/Makefile.am @@ -9,11 +9,15 @@ MAINTAINERCLEANFILES = # Convenience targets: lib: @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib +libs: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs EXTRA_DIST += CMakeLists.txt EXTRA_DIST += fonts +LINK = $(CXXLINK) + if HAVE_GLIB AM_CPPFLAGS = -DSRCDIR="\"$(srcdir)\"" -I$(top_srcdir)/src/ -I$(top_builddir)/src/ $(GLIB_CFLAGS) LDADD = $(top_builddir)/src/libharfbuzz.la $(GLIB_LIBS) @@ -24,15 +28,19 @@ check_PROGRAMS = $(TEST_PROGS) noinst_PROGRAMS = $(TEST_PROGS) TEST_PROGS = \ + test-aat-layout \ + test-baseline \ test-blob \ test-buffer \ + test-collect-unicodes \ test-common \ test-font \ + test-map \ test-object \ + test-ot-face \ test-set \ test-shape \ test-subset \ - test-subset-codepoints \ test-subset-cmap \ test-subset-glyf \ test-subset-hdmx \ @@ -40,12 +48,13 @@ TEST_PROGS = \ test-subset-os2 \ test-subset-post \ test-subset-vmtx \ + test-subset-cff1 \ + test-subset-cff2 \ test-unicode \ test-version \ $(NULL) test_subset_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la -test_subset_codepoints_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_cmap_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_glyf_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_hdmx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @@ -53,6 +62,8 @@ test_subset_hmtx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_os2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_post_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_subset_vmtx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la +test_subset_cff1_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la +test_subset_cff2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la test_unicode_CPPFLAGS = \ $(AM_CPPFLAGS) \ @@ -65,13 +76,26 @@ test_unicode_LDADD += $(top_builddir)/src/libharfbuzz-icu.la $(ICU_LIBS) endif -if HAVE_OT - TEST_PROGS += \ test-ot-color \ + test-ot-ligature-carets \ + test-ot-name \ test-ot-tag \ + test-ot-extents-cff \ $(NULL) + +if HAVE_PTHREAD +if HAVE_FREETYPE +TEST_PROGS += test-multithread +test_multithread_CFLAGS = $(CFLAGS) $(PTHREAD_CFLAGS) $(FREETYPE_CFLAGS) +test_multithread_LDADD = $(LDADD) $(PTHREAD_LIBS) $(FREETYPE_LIBS) +# The auto-generated link rule somehow includes CFLAGS as well. Without +# it, pthread link fails, because, who knows why, $PTHREAD_LIBS is empty. +test_multithread_LINK = $(LINK) $(PTHREAD_CFLAGS) +endif +endif + if HAVE_FREETYPE TEST_PROGS += \ test-ot-math \ @@ -80,7 +104,6 @@ test_ot_math_LDADD = $(LDADD) $(FREETYPE_LIBS) test_ot_math_CPPFLAGS = $(AM_CPPFLAGS) $(FREETYPE_CFLAGS) endif # HAVE_FREETYPE -endif # HAVE_OT # Tests for header compilation TEST_PROGS += \ @@ -131,9 +154,9 @@ check-gtester: # Check tests under valgrind. Saves log to log-valgrind.txt VALGRIND_FLAGS = \ - --tool=memcheck --suppressions=$(srcdir)/.valgrind-suppressions \ + --tool=memcheck \ --track-origins=yes \ - --leak-check=yes + --leak-check=yes \ $(EXTRA_VALGRIND_FLAGS) # Can't do for now: --show-reachable=yes CLEANFILES += log-valgrind.txt @@ -152,13 +175,18 @@ symbols-tested.txt: $(TEST_PROGS) $(AM_V_GEN)$(top_builddir)/libtool --mode=execute nm $^ \ | grep ' U hb_' | sed 's/.* U hb_/hb_/' \ | sort | uniq > $@.tmp && mv $@.tmp $@ +symbols-tested-or-deprecated.txt: symbols-tested.txt $(top_builddir)/src/harfbuzz-deprecated-symbols.txt + $(AM_V_GEN)cat $^ | sort | uniq > $@.tmp; mv $@.tmp $@ symbols-exported.txt: $(top_builddir)/src/.libs/libharfbuzz.so $(AM_V_GEN)$(top_builddir)/libtool --mode=execute nm $^ \ | grep ' T ' | sed 's/.* T //' | grep -v '^\(_init\|_fini\)$$' \ | sort | uniq > $@.tmp && mv $@.tmp $@ -symbols-untested.txt: symbols-tested.txt symbols-exported.txt +symbols-untested.txt: symbols-tested-or-deprecated.txt symbols-exported.txt $(AM_V_GEN)diff $^ > $@.tmp; mv $@.tmp $@ -CLEANFILES += symbols-tested.txt symbols-exported.txt symbols-untested.txt +CLEANFILES += symbols-tested.txt \ + symbols-exported.txt \ + symbols-untested.txt \ + symbols-tested-or-deprecated.txt check-symbols: symbols-untested.txt @! cat $^ | grep . diff --git a/test/api/Makefile.in b/test/api/Makefile.in index c08ad51..b317eb5 100644 --- a/test/api/Makefile.in +++ b/test/api/Makefile.in @@ -95,14 +95,10 @@ host_triplet = @host@ @HAVE_GLIB_TRUE@noinst_PROGRAMS = $(am__EXEEXT_4) @HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_2 = $(ICU_CFLAGS) @HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_3 = $(top_builddir)/src/libharfbuzz-icu.la $(ICU_LIBS) -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am__append_4 = \ -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ test-ot-color \ -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ test-ot-tag \ -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(NULL) - -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am__append_5 = \ -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ test-ot-math \ -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(NULL) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@am__append_4 = test-multithread +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@am__append_5 = \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ test-ot-math \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(NULL) @HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_6 = $(ICU_CFLAGS) @HAVE_GLIB_TRUE@@HAVE_ICU_TRUE@am__append_7 = $(ICU_CFLAGS) @@ -111,7 +107,8 @@ host_triplet = @host@ @HAVE_GLIB_TRUE@TESTS = $(am__EXEEXT_4) # Can't do for now: --show-reachable=yes @HAVE_GLIB_TRUE@am__append_10 = log-valgrind.txt symbols-tested.txt \ -@HAVE_GLIB_TRUE@ symbols-exported.txt symbols-untested.txt +@HAVE_GLIB_TRUE@ symbols-exported.txt symbols-untested.txt \ +@HAVE_GLIB_TRUE@ symbols-tested-or-deprecated.txt subdir = test/api ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ @@ -119,8 +116,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -129,16 +125,18 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am__EXEEXT_2 = test-ot-color$(EXEEXT) \ -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ test-ot-tag$(EXEEXT) \ -@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(am__EXEEXT_1) -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@am__EXEEXT_3 = test-ot-math$(EXEEXT) \ -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(am__EXEEXT_1) -@HAVE_GLIB_TRUE@am__EXEEXT_4 = test-blob$(EXEEXT) test-buffer$(EXEEXT) \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@am__EXEEXT_2 = test-multithread$(EXEEXT) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@am__EXEEXT_3 = \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ test-ot-math$(EXEEXT) \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(am__EXEEXT_1) +@HAVE_GLIB_TRUE@am__EXEEXT_4 = test-aat-layout$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-baseline$(EXEEXT) test-blob$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-buffer$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-collect-unicodes$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-common$(EXEEXT) test-font$(EXEEXT) \ -@HAVE_GLIB_TRUE@ test-object$(EXEEXT) test-set$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-map$(EXEEXT) test-object$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-ot-face$(EXEEXT) test-set$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-shape$(EXEEXT) test-subset$(EXEEXT) \ -@HAVE_GLIB_TRUE@ test-subset-codepoints$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-subset-cmap$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-subset-glyf$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-subset-hdmx$(EXEEXT) \ @@ -146,22 +144,40 @@ am__EXEEXT_1 = @HAVE_GLIB_TRUE@ test-subset-os2$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-subset-post$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-subset-vmtx$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-subset-cff1$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-subset-cff2$(EXEEXT) \ @HAVE_GLIB_TRUE@ test-unicode$(EXEEXT) test-version$(EXEEXT) \ -@HAVE_GLIB_TRUE@ $(am__EXEEXT_1) $(am__EXEEXT_2) \ -@HAVE_GLIB_TRUE@ $(am__EXEEXT_3) test-c$(EXEEXT) \ -@HAVE_GLIB_TRUE@ test-cplusplus$(EXEEXT) $(am__EXEEXT_1) +@HAVE_GLIB_TRUE@ $(am__EXEEXT_1) test-ot-color$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-ot-ligature-carets$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-ot-name$(EXEEXT) test-ot-tag$(EXEEXT) \ +@HAVE_GLIB_TRUE@ test-ot-extents-cff$(EXEEXT) $(am__EXEEXT_1) \ +@HAVE_GLIB_TRUE@ $(am__EXEEXT_2) $(am__EXEEXT_3) \ +@HAVE_GLIB_TRUE@ test-c$(EXEEXT) test-cplusplus$(EXEEXT) \ +@HAVE_GLIB_TRUE@ $(am__EXEEXT_1) PROGRAMS = $(noinst_PROGRAMS) -test_blob_SOURCES = test-blob.c -test_blob_OBJECTS = test-blob.$(OBJEXT) -test_blob_LDADD = $(LDADD) +test_aat_layout_SOURCES = test-aat-layout.c +test_aat_layout_OBJECTS = test-aat-layout.$(OBJEXT) +test_aat_layout_LDADD = $(LDADD) am__DEPENDENCIES_1 = -@HAVE_GLIB_TRUE@test_blob_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@test_aat_layout_DEPENDENCIES = \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ @HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = +test_baseline_SOURCES = test-baseline.c +test_baseline_OBJECTS = test-baseline.$(OBJEXT) +test_baseline_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_baseline_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_blob_SOURCES = test-blob.c +test_blob_OBJECTS = test-blob.$(OBJEXT) +test_blob_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_blob_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) test_buffer_SOURCES = test-buffer.c test_buffer_OBJECTS = test-buffer.$(OBJEXT) test_buffer_LDADD = $(LDADD) @@ -174,6 +190,12 @@ test_c_LDADD = $(LDADD) @HAVE_GLIB_TRUE@test_c_DEPENDENCIES = \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ @HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_collect_unicodes_SOURCES = test-collect-unicodes.c +test_collect_unicodes_OBJECTS = test-collect-unicodes.$(OBJEXT) +test_collect_unicodes_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_collect_unicodes_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) test_common_SOURCES = test-common.c test_common_OBJECTS = test-common.$(OBJEXT) test_common_LDADD = $(LDADD) @@ -194,6 +216,21 @@ test_font_LDADD = $(LDADD) @HAVE_GLIB_TRUE@test_font_DEPENDENCIES = \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ @HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_map_SOURCES = test-map.c +test_map_OBJECTS = test-map.$(OBJEXT) +test_map_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_map_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_multithread_SOURCES = test-multithread.c +test_multithread_OBJECTS = \ + test_multithread-test-multithread.$(OBJEXT) +@HAVE_GLIB_TRUE@am__DEPENDENCIES_2 = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@test_multithread_DEPENDENCIES = $(am__DEPENDENCIES_2) \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@ $(am__DEPENDENCIES_1) \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@ $(am__DEPENDENCIES_1) test_object_SOURCES = test-object.c test_object_OBJECTS = test-object.$(OBJEXT) test_object_LDADD = $(LDADD) @@ -206,13 +243,35 @@ test_ot_color_LDADD = $(LDADD) @HAVE_GLIB_TRUE@test_ot_color_DEPENDENCIES = \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ @HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_ot_extents_cff_SOURCES = test-ot-extents-cff.c +test_ot_extents_cff_OBJECTS = test-ot-extents-cff.$(OBJEXT) +test_ot_extents_cff_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_ot_extents_cff_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_ot_face_SOURCES = test-ot-face.c +test_ot_face_OBJECTS = test-ot-face.$(OBJEXT) +test_ot_face_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_ot_face_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_ot_ligature_carets_SOURCES = test-ot-ligature-carets.c +test_ot_ligature_carets_OBJECTS = test-ot-ligature-carets.$(OBJEXT) +test_ot_ligature_carets_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_ot_ligature_carets_DEPENDENCIES = \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ +@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) test_ot_math_SOURCES = test-ot-math.c test_ot_math_OBJECTS = test_ot_math-test-ot-math.$(OBJEXT) -@HAVE_GLIB_TRUE@am__DEPENDENCIES_2 = \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@test_ot_math_DEPENDENCIES = \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_2) \ +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) +test_ot_name_SOURCES = test-ot-name.c +test_ot_name_OBJECTS = test-ot-name.$(OBJEXT) +test_ot_name_LDADD = $(LDADD) +@HAVE_GLIB_TRUE@test_ot_name_DEPENDENCIES = \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz.la \ @HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_1) -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@test_ot_math_DEPENDENCIES = $(am__DEPENDENCIES_2) \ -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@ $(am__DEPENDENCIES_1) test_ot_tag_SOURCES = test-ot-tag.c test_ot_tag_OBJECTS = test-ot-tag.$(OBJEXT) test_ot_tag_LDADD = $(LDADD) @@ -235,15 +294,18 @@ test_subset_SOURCES = test-subset.c test_subset_OBJECTS = test-subset.$(OBJEXT) @HAVE_GLIB_TRUE@test_subset_DEPENDENCIES = $(am__DEPENDENCIES_2) \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz-subset.la +test_subset_cff1_SOURCES = test-subset-cff1.c +test_subset_cff1_OBJECTS = test-subset-cff1.$(OBJEXT) +@HAVE_GLIB_TRUE@test_subset_cff1_DEPENDENCIES = $(am__DEPENDENCIES_2) \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz-subset.la +test_subset_cff2_SOURCES = test-subset-cff2.c +test_subset_cff2_OBJECTS = test-subset-cff2.$(OBJEXT) +@HAVE_GLIB_TRUE@test_subset_cff2_DEPENDENCIES = $(am__DEPENDENCIES_2) \ +@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz-subset.la test_subset_cmap_SOURCES = test-subset-cmap.c test_subset_cmap_OBJECTS = test-subset-cmap.$(OBJEXT) @HAVE_GLIB_TRUE@test_subset_cmap_DEPENDENCIES = $(am__DEPENDENCIES_2) \ @HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz-subset.la -test_subset_codepoints_SOURCES = test-subset-codepoints.c -test_subset_codepoints_OBJECTS = test-subset-codepoints.$(OBJEXT) -@HAVE_GLIB_TRUE@test_subset_codepoints_DEPENDENCIES = \ -@HAVE_GLIB_TRUE@ $(am__DEPENDENCIES_2) \ -@HAVE_GLIB_TRUE@ $(top_builddir)/src/libharfbuzz-subset.la test_subset_glyf_SOURCES = test-subset-glyf.c test_subset_glyf_OBJECTS = test-subset-glyf.$(OBJEXT) @HAVE_GLIB_TRUE@test_subset_glyf_DEPENDENCIES = $(am__DEPENDENCIES_2) \ @@ -307,9 +369,6 @@ am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; @@ -332,20 +391,28 @@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = -SOURCES = test-blob.c test-buffer.c test-c.c test-common.c \ - $(test_cplusplus_SOURCES) test-font.c test-object.c \ - test-ot-color.c test-ot-math.c test-ot-tag.c test-set.c \ - test-shape.c test-subset.c test-subset-cmap.c \ - test-subset-codepoints.c test-subset-glyf.c test-subset-hdmx.c \ - test-subset-hmtx.c test-subset-os2.c test-subset-post.c \ - test-subset-vmtx.c test-unicode.c test-version.c -DIST_SOURCES = test-blob.c test-buffer.c test-c.c test-common.c \ - $(am__test_cplusplus_SOURCES_DIST) test-font.c test-object.c \ - test-ot-color.c test-ot-math.c test-ot-tag.c test-set.c \ - test-shape.c test-subset.c test-subset-cmap.c \ - test-subset-codepoints.c test-subset-glyf.c test-subset-hdmx.c \ - test-subset-hmtx.c test-subset-os2.c test-subset-post.c \ - test-subset-vmtx.c test-unicode.c test-version.c +SOURCES = test-aat-layout.c test-baseline.c test-blob.c test-buffer.c \ + test-c.c test-collect-unicodes.c test-common.c \ + $(test_cplusplus_SOURCES) test-font.c test-map.c \ + test-multithread.c test-object.c test-ot-color.c \ + test-ot-extents-cff.c test-ot-face.c test-ot-ligature-carets.c \ + test-ot-math.c test-ot-name.c test-ot-tag.c test-set.c \ + test-shape.c test-subset.c test-subset-cff1.c \ + test-subset-cff2.c test-subset-cmap.c test-subset-glyf.c \ + test-subset-hdmx.c test-subset-hmtx.c test-subset-os2.c \ + test-subset-post.c test-subset-vmtx.c test-unicode.c \ + test-version.c +DIST_SOURCES = test-aat-layout.c test-baseline.c test-blob.c \ + test-buffer.c test-c.c test-collect-unicodes.c test-common.c \ + $(am__test_cplusplus_SOURCES_DIST) test-font.c test-map.c \ + test-multithread.c test-object.c test-ot-color.c \ + test-ot-extents-cff.c test-ot-face.c test-ot-ligature-carets.c \ + test-ot-math.c test-ot-name.c test-ot-tag.c test-set.c \ + test-shape.c test-subset.c test-subset-cff1.c \ + test-subset-cff2.c test-subset-cmap.c test-subset-glyf.c \ + test-subset-hdmx.c test-subset-hmtx.c test-subset-os2.c \ + test-subset-post.c test-subset-vmtx.c test-unicode.c \ + test-version.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -694,6 +761,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -767,21 +836,25 @@ EXTRA_DIST = CMakeLists.txt fonts $(am__append_1) CLEANFILES = $(am__append_10) DISTCLEANFILES = MAINTAINERCLEANFILES = +LINK = $(CXXLINK) @HAVE_GLIB_TRUE@AM_CPPFLAGS = -DSRCDIR="\"$(srcdir)\"" -I$(top_srcdir)/src/ -I$(top_builddir)/src/ $(GLIB_CFLAGS) @HAVE_GLIB_TRUE@LDADD = $(top_builddir)/src/libharfbuzz.la $(GLIB_LIBS) # Tests for header compilation -@HAVE_GLIB_TRUE@TEST_PROGS = test-blob test-buffer test-common \ -@HAVE_GLIB_TRUE@ test-font test-object test-set test-shape \ -@HAVE_GLIB_TRUE@ test-subset test-subset-codepoints \ +@HAVE_GLIB_TRUE@TEST_PROGS = test-aat-layout test-baseline test-blob \ +@HAVE_GLIB_TRUE@ test-buffer test-collect-unicodes test-common \ +@HAVE_GLIB_TRUE@ test-font test-map test-object test-ot-face \ +@HAVE_GLIB_TRUE@ test-set test-shape test-subset \ @HAVE_GLIB_TRUE@ test-subset-cmap test-subset-glyf \ @HAVE_GLIB_TRUE@ test-subset-hdmx test-subset-hmtx \ @HAVE_GLIB_TRUE@ test-subset-os2 test-subset-post \ -@HAVE_GLIB_TRUE@ test-subset-vmtx test-unicode test-version \ +@HAVE_GLIB_TRUE@ test-subset-vmtx test-subset-cff1 \ +@HAVE_GLIB_TRUE@ test-subset-cff2 test-unicode test-version \ +@HAVE_GLIB_TRUE@ $(NULL) test-ot-color test-ot-ligature-carets \ +@HAVE_GLIB_TRUE@ test-ot-name test-ot-tag test-ot-extents-cff \ @HAVE_GLIB_TRUE@ $(NULL) $(am__append_4) $(am__append_5) test-c \ @HAVE_GLIB_TRUE@ test-cplusplus $(NULL) @HAVE_GLIB_TRUE@test_subset_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la -@HAVE_GLIB_TRUE@test_subset_codepoints_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @HAVE_GLIB_TRUE@test_subset_cmap_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @HAVE_GLIB_TRUE@test_subset_glyf_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @HAVE_GLIB_TRUE@test_subset_hdmx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @@ -789,11 +862,18 @@ MAINTAINERCLEANFILES = @HAVE_GLIB_TRUE@test_subset_os2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @HAVE_GLIB_TRUE@test_subset_post_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @HAVE_GLIB_TRUE@test_subset_vmtx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la +@HAVE_GLIB_TRUE@test_subset_cff1_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la +@HAVE_GLIB_TRUE@test_subset_cff2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la @HAVE_GLIB_TRUE@test_unicode_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS) \ @HAVE_GLIB_TRUE@ $(NULL) $(am__append_2) @HAVE_GLIB_TRUE@test_unicode_LDADD = $(LDADD) $(am__append_3) -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@test_ot_math_LDADD = $(LDADD) $(FREETYPE_LIBS) -@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_OT_TRUE@test_ot_math_CPPFLAGS = $(AM_CPPFLAGS) $(FREETYPE_CFLAGS) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@test_multithread_CFLAGS = $(CFLAGS) $(PTHREAD_CFLAGS) $(FREETYPE_CFLAGS) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@test_multithread_LDADD = $(LDADD) $(PTHREAD_LIBS) $(FREETYPE_LIBS) +# The auto-generated link rule somehow includes CFLAGS as well. Without +# it, pthread link fails, because, who knows why, $PTHREAD_LIBS is empty. +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@@HAVE_PTHREAD_TRUE@test_multithread_LINK = $(LINK) $(PTHREAD_CFLAGS) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@test_ot_math_LDADD = $(LDADD) $(FREETYPE_LIBS) +@HAVE_FREETYPE_TRUE@@HAVE_GLIB_TRUE@test_ot_math_CPPFLAGS = $(AM_CPPFLAGS) $(FREETYPE_CFLAGS) @HAVE_GLIB_TRUE@test_cplusplus_SOURCES = test-cplusplus.cc @HAVE_GLIB_TRUE@test_c_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_6) \ @HAVE_GLIB_TRUE@ $(am__append_8) @@ -815,9 +895,10 @@ MAINTAINERCLEANFILES = # Check tests under valgrind. Saves log to log-valgrind.txt @HAVE_GLIB_TRUE@VALGRIND_FLAGS = \ -@HAVE_GLIB_TRUE@ --tool=memcheck --suppressions=$(srcdir)/.valgrind-suppressions \ +@HAVE_GLIB_TRUE@ --tool=memcheck \ @HAVE_GLIB_TRUE@ --track-origins=yes \ -@HAVE_GLIB_TRUE@ --leak-check=yes +@HAVE_GLIB_TRUE@ --leak-check=yes \ +@HAVE_GLIB_TRUE@ $(EXTRA_VALGRIND_FLAGS) @HAVE_GLIB_TRUE@valgrind_verbose = $(valgrind_verbose_@AM_V@) @HAVE_GLIB_TRUE@valgrind_verbose_ = $(valgrind_verbose_@AM_DEFAULT_V@) @@ -876,6 +957,14 @@ clean-noinstPROGRAMS: echo " rm -f" $$list; \ rm -f $$list +test-aat-layout$(EXEEXT): $(test_aat_layout_OBJECTS) $(test_aat_layout_DEPENDENCIES) $(EXTRA_test_aat_layout_DEPENDENCIES) + @rm -f test-aat-layout$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_aat_layout_OBJECTS) $(test_aat_layout_LDADD) $(LIBS) + +test-baseline$(EXEEXT): $(test_baseline_OBJECTS) $(test_baseline_DEPENDENCIES) $(EXTRA_test_baseline_DEPENDENCIES) + @rm -f test-baseline$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_baseline_OBJECTS) $(test_baseline_LDADD) $(LIBS) + test-blob$(EXEEXT): $(test_blob_OBJECTS) $(test_blob_DEPENDENCIES) $(EXTRA_test_blob_DEPENDENCIES) @rm -f test-blob$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_blob_OBJECTS) $(test_blob_LDADD) $(LIBS) @@ -888,6 +977,10 @@ test-c$(EXEEXT): $(test_c_OBJECTS) $(test_c_DEPENDENCIES) $(EXTRA_test_c_DEPENDE @rm -f test-c$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_c_OBJECTS) $(test_c_LDADD) $(LIBS) +test-collect-unicodes$(EXEEXT): $(test_collect_unicodes_OBJECTS) $(test_collect_unicodes_DEPENDENCIES) $(EXTRA_test_collect_unicodes_DEPENDENCIES) + @rm -f test-collect-unicodes$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_collect_unicodes_OBJECTS) $(test_collect_unicodes_LDADD) $(LIBS) + test-common$(EXEEXT): $(test_common_OBJECTS) $(test_common_DEPENDENCIES) $(EXTRA_test_common_DEPENDENCIES) @rm -f test-common$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_common_OBJECTS) $(test_common_LDADD) $(LIBS) @@ -900,6 +993,14 @@ test-font$(EXEEXT): $(test_font_OBJECTS) $(test_font_DEPENDENCIES) $(EXTRA_test_ @rm -f test-font$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_font_OBJECTS) $(test_font_LDADD) $(LIBS) +test-map$(EXEEXT): $(test_map_OBJECTS) $(test_map_DEPENDENCIES) $(EXTRA_test_map_DEPENDENCIES) + @rm -f test-map$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_map_OBJECTS) $(test_map_LDADD) $(LIBS) + +test-multithread$(EXEEXT): $(test_multithread_OBJECTS) $(test_multithread_DEPENDENCIES) $(EXTRA_test_multithread_DEPENDENCIES) + @rm -f test-multithread$(EXEEXT) + $(AM_V_GEN)$(test_multithread_LINK) $(test_multithread_OBJECTS) $(test_multithread_LDADD) $(LIBS) + test-object$(EXEEXT): $(test_object_OBJECTS) $(test_object_DEPENDENCIES) $(EXTRA_test_object_DEPENDENCIES) @rm -f test-object$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_object_OBJECTS) $(test_object_LDADD) $(LIBS) @@ -908,10 +1009,26 @@ test-ot-color$(EXEEXT): $(test_ot_color_OBJECTS) $(test_ot_color_DEPENDENCIES) $ @rm -f test-ot-color$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_ot_color_OBJECTS) $(test_ot_color_LDADD) $(LIBS) +test-ot-extents-cff$(EXEEXT): $(test_ot_extents_cff_OBJECTS) $(test_ot_extents_cff_DEPENDENCIES) $(EXTRA_test_ot_extents_cff_DEPENDENCIES) + @rm -f test-ot-extents-cff$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ot_extents_cff_OBJECTS) $(test_ot_extents_cff_LDADD) $(LIBS) + +test-ot-face$(EXEEXT): $(test_ot_face_OBJECTS) $(test_ot_face_DEPENDENCIES) $(EXTRA_test_ot_face_DEPENDENCIES) + @rm -f test-ot-face$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ot_face_OBJECTS) $(test_ot_face_LDADD) $(LIBS) + +test-ot-ligature-carets$(EXEEXT): $(test_ot_ligature_carets_OBJECTS) $(test_ot_ligature_carets_DEPENDENCIES) $(EXTRA_test_ot_ligature_carets_DEPENDENCIES) + @rm -f test-ot-ligature-carets$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ot_ligature_carets_OBJECTS) $(test_ot_ligature_carets_LDADD) $(LIBS) + test-ot-math$(EXEEXT): $(test_ot_math_OBJECTS) $(test_ot_math_DEPENDENCIES) $(EXTRA_test_ot_math_DEPENDENCIES) @rm -f test-ot-math$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_ot_math_OBJECTS) $(test_ot_math_LDADD) $(LIBS) +test-ot-name$(EXEEXT): $(test_ot_name_OBJECTS) $(test_ot_name_DEPENDENCIES) $(EXTRA_test_ot_name_DEPENDENCIES) + @rm -f test-ot-name$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ot_name_OBJECTS) $(test_ot_name_LDADD) $(LIBS) + test-ot-tag$(EXEEXT): $(test_ot_tag_OBJECTS) $(test_ot_tag_DEPENDENCIES) $(EXTRA_test_ot_tag_DEPENDENCIES) @rm -f test-ot-tag$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_ot_tag_OBJECTS) $(test_ot_tag_LDADD) $(LIBS) @@ -928,14 +1045,18 @@ test-subset$(EXEEXT): $(test_subset_OBJECTS) $(test_subset_DEPENDENCIES) $(EXTRA @rm -f test-subset$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_subset_OBJECTS) $(test_subset_LDADD) $(LIBS) +test-subset-cff1$(EXEEXT): $(test_subset_cff1_OBJECTS) $(test_subset_cff1_DEPENDENCIES) $(EXTRA_test_subset_cff1_DEPENDENCIES) + @rm -f test-subset-cff1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_subset_cff1_OBJECTS) $(test_subset_cff1_LDADD) $(LIBS) + +test-subset-cff2$(EXEEXT): $(test_subset_cff2_OBJECTS) $(test_subset_cff2_DEPENDENCIES) $(EXTRA_test_subset_cff2_DEPENDENCIES) + @rm -f test-subset-cff2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_subset_cff2_OBJECTS) $(test_subset_cff2_LDADD) $(LIBS) + test-subset-cmap$(EXEEXT): $(test_subset_cmap_OBJECTS) $(test_subset_cmap_DEPENDENCIES) $(EXTRA_test_subset_cmap_DEPENDENCIES) @rm -f test-subset-cmap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_subset_cmap_OBJECTS) $(test_subset_cmap_LDADD) $(LIBS) -test-subset-codepoints$(EXEEXT): $(test_subset_codepoints_OBJECTS) $(test_subset_codepoints_DEPENDENCIES) $(EXTRA_test_subset_codepoints_DEPENDENCIES) - @rm -f test-subset-codepoints$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_subset_codepoints_OBJECTS) $(test_subset_codepoints_LDADD) $(LIBS) - test-subset-glyf$(EXEEXT): $(test_subset_glyf_OBJECTS) $(test_subset_glyf_DEPENDENCIES) $(EXTRA_test_subset_glyf_DEPENDENCIES) @rm -f test-subset-glyf$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_subset_glyf_OBJECTS) $(test_subset_glyf_LDADD) $(LIBS) @@ -974,17 +1095,26 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-aat-layout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-baseline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-blob.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-buffer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-collect-unicodes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-font.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-map.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-object.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ot-color.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ot-extents-cff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ot-face.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ot-ligature-carets.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ot-name.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ot-tag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-set.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-shape.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-cff1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-cff2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-cmap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-codepoints.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-glyf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-hdmx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-subset-hmtx.Po@am__quote@ @@ -995,6 +1125,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-version.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_c-test-c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cplusplus-test-cplusplus.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_multithread-test-multithread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ot_math-test-ot-math.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_unicode-test-unicode.Po@am__quote@ @@ -1033,6 +1164,20 @@ test_c-test-c.obj: test-c.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_c_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_c-test-c.obj `if test -f 'test-c.c'; then $(CYGPATH_W) 'test-c.c'; else $(CYGPATH_W) '$(srcdir)/test-c.c'; fi` +test_multithread-test-multithread.o: test-multithread.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_multithread_CFLAGS) $(CFLAGS) -MT test_multithread-test-multithread.o -MD -MP -MF $(DEPDIR)/test_multithread-test-multithread.Tpo -c -o test_multithread-test-multithread.o `test -f 'test-multithread.c' || echo '$(srcdir)/'`test-multithread.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_multithread-test-multithread.Tpo $(DEPDIR)/test_multithread-test-multithread.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-multithread.c' object='test_multithread-test-multithread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_multithread_CFLAGS) $(CFLAGS) -c -o test_multithread-test-multithread.o `test -f 'test-multithread.c' || echo '$(srcdir)/'`test-multithread.c + +test_multithread-test-multithread.obj: test-multithread.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_multithread_CFLAGS) $(CFLAGS) -MT test_multithread-test-multithread.obj -MD -MP -MF $(DEPDIR)/test_multithread-test-multithread.Tpo -c -o test_multithread-test-multithread.obj `if test -f 'test-multithread.c'; then $(CYGPATH_W) 'test-multithread.c'; else $(CYGPATH_W) '$(srcdir)/test-multithread.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_multithread-test-multithread.Tpo $(DEPDIR)/test_multithread-test-multithread.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-multithread.c' object='test_multithread-test-multithread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_multithread_CFLAGS) $(CFLAGS) -c -o test_multithread-test-multithread.obj `if test -f 'test-multithread.c'; then $(CYGPATH_W) 'test-multithread.c'; else $(CYGPATH_W) '$(srcdir)/test-multithread.c'; fi` + test_ot_math-test-ot-math.o: test-ot-math.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_ot_math_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_ot_math-test-ot-math.o -MD -MP -MF $(DEPDIR)/test_ot_math-test-ot-math.Tpo -c -o test_ot_math-test-ot-math.o `test -f 'test-ot-math.c' || echo '$(srcdir)/'`test-ot-math.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_ot_math-test-ot-math.Tpo $(DEPDIR)/test_ot_math-test-ot-math.Po @@ -1295,6 +1440,20 @@ recheck: all $(check_PROGRAMS) am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? +test-aat-layout.log: test-aat-layout$(EXEEXT) + @p='test-aat-layout$(EXEEXT)'; \ + b='test-aat-layout'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-baseline.log: test-baseline$(EXEEXT) + @p='test-baseline$(EXEEXT)'; \ + b='test-baseline'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-blob.log: test-blob$(EXEEXT) @p='test-blob$(EXEEXT)'; \ b='test-blob'; \ @@ -1309,6 +1468,13 @@ test-buffer.log: test-buffer$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-collect-unicodes.log: test-collect-unicodes$(EXEEXT) + @p='test-collect-unicodes$(EXEEXT)'; \ + b='test-collect-unicodes'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-common.log: test-common$(EXEEXT) @p='test-common$(EXEEXT)'; \ b='test-common'; \ @@ -1323,6 +1489,13 @@ test-font.log: test-font$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-map.log: test-map$(EXEEXT) + @p='test-map$(EXEEXT)'; \ + b='test-map'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-object.log: test-object$(EXEEXT) @p='test-object$(EXEEXT)'; \ b='test-object'; \ @@ -1330,6 +1503,13 @@ test-object.log: test-object$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ot-face.log: test-ot-face$(EXEEXT) + @p='test-ot-face$(EXEEXT)'; \ + b='test-ot-face'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-set.log: test-set$(EXEEXT) @p='test-set$(EXEEXT)'; \ b='test-set'; \ @@ -1351,13 +1531,6 @@ test-subset.log: test-subset$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -test-subset-codepoints.log: test-subset-codepoints$(EXEEXT) - @p='test-subset-codepoints$(EXEEXT)'; \ - b='test-subset-codepoints'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) test-subset-cmap.log: test-subset-cmap$(EXEEXT) @p='test-subset-cmap$(EXEEXT)'; \ b='test-subset-cmap'; \ @@ -1407,6 +1580,20 @@ test-subset-vmtx.log: test-subset-vmtx$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-subset-cff1.log: test-subset-cff1$(EXEEXT) + @p='test-subset-cff1$(EXEEXT)'; \ + b='test-subset-cff1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-subset-cff2.log: test-subset-cff2$(EXEEXT) + @p='test-subset-cff2$(EXEEXT)'; \ + b='test-subset-cff2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-unicode.log: test-unicode$(EXEEXT) @p='test-unicode$(EXEEXT)'; \ b='test-unicode'; \ @@ -1428,6 +1615,20 @@ test-ot-color.log: test-ot-color$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ot-ligature-carets.log: test-ot-ligature-carets$(EXEEXT) + @p='test-ot-ligature-carets$(EXEEXT)'; \ + b='test-ot-ligature-carets'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ot-name.log: test-ot-name$(EXEEXT) + @p='test-ot-name$(EXEEXT)'; \ + b='test-ot-name'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-ot-tag.log: test-ot-tag$(EXEEXT) @p='test-ot-tag$(EXEEXT)'; \ b='test-ot-tag'; \ @@ -1435,6 +1636,20 @@ test-ot-tag.log: test-ot-tag$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ot-extents-cff.log: test-ot-extents-cff$(EXEEXT) + @p='test-ot-extents-cff$(EXEEXT)'; \ + b='test-ot-extents-cff'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-multithread.log: test-multithread$(EXEEXT) + @p='test-multithread$(EXEEXT)'; \ + b='test-multithread'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-ot-math.log: test-ot-math$(EXEEXT) @p='test-ot-math$(EXEEXT)'; \ b='test-ot-math'; \ @@ -1637,6 +1852,8 @@ uninstall-am: # Convenience targets: lib: @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib +libs: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs # check-tool: Run tests under $(TOOL) @HAVE_GLIB_TRUE@check-tool: @@ -1650,7 +1867,6 @@ lib: @HAVE_GLIB_TRUE@ env $(TOOL)' @HAVE_GLIB_TRUE@check-gtester: @HAVE_GLIB_TRUE@ $(AM_V_at)$(MAKE) $(AM_MAKEFLGS) check-tool-raw TOOL="$(GTESTER) --verbose --keep-going" -@HAVE_GLIB_TRUE@ $(EXTRA_VALGRIND_FLAGS) # TODO: The following check does not fail if valgrind finds error. It should. @HAVE_GLIB_TRUE@check-valgrind: @HAVE_GLIB_TRUE@ $(AM_V_at)$(MAKE) $(AM_MAKEFLGS) check-tool TOOL="valgrind $(VALGRIND_FLAGS)" \ @@ -1661,11 +1877,13 @@ lib: @HAVE_GLIB_TRUE@ $(AM_V_GEN)$(top_builddir)/libtool --mode=execute nm $^ \ @HAVE_GLIB_TRUE@ | grep ' U hb_' | sed 's/.* U hb_/hb_/' \ @HAVE_GLIB_TRUE@ | sort | uniq > $@.tmp && mv $@.tmp $@ +@HAVE_GLIB_TRUE@symbols-tested-or-deprecated.txt: symbols-tested.txt $(top_builddir)/src/harfbuzz-deprecated-symbols.txt +@HAVE_GLIB_TRUE@ $(AM_V_GEN)cat $^ | sort | uniq > $@.tmp; mv $@.tmp $@ @HAVE_GLIB_TRUE@symbols-exported.txt: $(top_builddir)/src/.libs/libharfbuzz.so @HAVE_GLIB_TRUE@ $(AM_V_GEN)$(top_builddir)/libtool --mode=execute nm $^ \ @HAVE_GLIB_TRUE@ | grep ' T ' | sed 's/.* T //' | grep -v '^\(_init\|_fini\)$$' \ @HAVE_GLIB_TRUE@ | sort | uniq > $@.tmp && mv $@.tmp $@ -@HAVE_GLIB_TRUE@symbols-untested.txt: symbols-tested.txt symbols-exported.txt +@HAVE_GLIB_TRUE@symbols-untested.txt: symbols-tested-or-deprecated.txt symbols-exported.txt @HAVE_GLIB_TRUE@ $(AM_V_GEN)diff $^ > $@.tmp; mv $@.tmp $@ @HAVE_GLIB_TRUE@check-symbols: symbols-untested.txt @HAVE_GLIB_TRUE@ @! cat $^ | grep . diff --git a/test/api/fonts/AdobeVFPrototype.abc.otf b/test/api/fonts/AdobeVFPrototype.abc.otf Binary files differnew file mode 100644 index 0000000..cc47708 --- /dev/null +++ b/test/api/fonts/AdobeVFPrototype.abc.otf diff --git a/test/api/fonts/AdobeVFPrototype.ac.nohints.otf b/test/api/fonts/AdobeVFPrototype.ac.nohints.otf Binary files differnew file mode 100644 index 0000000..935bdbf --- /dev/null +++ b/test/api/fonts/AdobeVFPrototype.ac.nohints.otf diff --git a/test/api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf b/test/api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf Binary files differnew file mode 100644 index 0000000..85f6cf6 --- /dev/null +++ b/test/api/fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf diff --git a/test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf b/test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf Binary files differnew file mode 100644 index 0000000..ad4d53b --- /dev/null +++ b/test/api/fonts/AdobeVFPrototype.ac.nosubrs.otf diff --git a/test/api/fonts/AdobeVFPrototype.ac.otf b/test/api/fonts/AdobeVFPrototype.ac.otf Binary files differnew file mode 100644 index 0000000..beab7d5 --- /dev/null +++ b/test/api/fonts/AdobeVFPrototype.ac.otf diff --git a/test/api/fonts/AdobeVFPrototype_vsindex.otf b/test/api/fonts/AdobeVFPrototype_vsindex.otf Binary files differnew file mode 100644 index 0000000..3697b46 --- /dev/null +++ b/test/api/fonts/AdobeVFPrototype_vsindex.otf diff --git a/test/api/fonts/MathTestFontFull.ttx b/test/api/fonts/MathTestFontFull.ttx deleted file mode 100644 index 1d1aa53..0000000 --- a/test/api/fonts/MathTestFontFull.ttx +++ /dev/null @@ -1,6578 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ttFont sfntVersion="OTTO" ttLibVersion="3.0"> - - <GlyphOrder> - <!-- The 'id' attribute is only for humans; it is ignored when parsed. --> - <GlyphID id="0" name=".notdef"/> - <GlyphID id="1" name="space"/> - <GlyphID id="2" name="A"/> - <GlyphID id="3" name="B"/> - <GlyphID id="4" name="C"/> - <GlyphID id="5" name="D"/> - <GlyphID id="6" name="E"/> - <GlyphID id="7" name="F"/> - <GlyphID id="8" name="G"/> - <GlyphID id="9" name="H"/> - <GlyphID id="10" name="I"/> - <GlyphID id="11" name="J"/> - <GlyphID id="12" name="K"/> - <GlyphID id="13" name="L"/> - <GlyphID id="14" name="M"/> - <GlyphID id="15" name="N"/> - <GlyphID id="16" name="O"/> - <GlyphID id="17" name="P"/> - <GlyphID id="18" name="Q"/> - <GlyphID id="19" name="R"/> - <GlyphID id="20" name="S"/> - <GlyphID id="21" name="T"/> - <GlyphID id="22" name="U"/> - <GlyphID id="23" name="V"/> - <GlyphID id="24" name="W"/> - <GlyphID id="25" name="X"/> - <GlyphID id="26" name="Y"/> - <GlyphID id="27" name="Z"/> - <GlyphID id="28" name="underscore"/> - <GlyphID id="29" name="braceleft"/> - <GlyphID id="30" name="arrowleft"/> - <GlyphID id="31" name="arrowup"/> - <GlyphID id="32" name="arrowright"/> - <GlyphID id="33" name="arrowdown"/> - <GlyphID id="34" name="arrowboth"/> - <GlyphID id="35" name="arrowupdn"/> - <GlyphID id="36" name="uni21A4"/> - <GlyphID id="37" name="uni21A5"/> - <GlyphID id="38" name="uni21A6"/> - <GlyphID id="39" name="uni21A7"/> - <GlyphID id="40" name="uni21C7"/> - <GlyphID id="41" name="uni21C8"/> - <GlyphID id="42" name="uni21C9"/> - <GlyphID id="43" name="uni21CA"/> - <GlyphID id="44" name="arrowdblleft"/> - <GlyphID id="45" name="arrowdblup"/> - <GlyphID id="46" name="arrowdblright"/> - <GlyphID id="47" name="arrowdbldown"/> - <GlyphID id="48" name="arrowdblboth"/> - <GlyphID id="49" name="uni21D5"/> - <GlyphID id="50" name="uni21E6"/> - <GlyphID id="51" name="uni21E7"/> - <GlyphID id="52" name="uni21E8"/> - <GlyphID id="53" name="uni21E9"/> - <GlyphID id="54" name="uni23A7"/> - <GlyphID id="55" name="uni23A8"/> - <GlyphID id="56" name="uni23A9"/> - <GlyphID id="57" name="uni23AA"/> - <GlyphID id="58" name="center"/> - <GlyphID id="59" name="left"/> - <GlyphID id="60" name="right"/> - <GlyphID id="61" name="top"/> - <GlyphID id="62" name="bottom"/> - <GlyphID id="63" name="horizontal"/> - <GlyphID id="64" name="vertical"/> - <GlyphID id="65" name="uni2190_size2"/> - <GlyphID id="66" name="uni2190_size3"/> - <GlyphID id="67" name="uni2190_size4"/> - <GlyphID id="68" name="uni2191_size2"/> - <GlyphID id="69" name="uni2191_size3"/> - <GlyphID id="70" name="uni2191_size4"/> - <GlyphID id="71" name="uni2191_size5"/> - <GlyphID id="72" name="uni2192_size2"/> - <GlyphID id="73" name="uni2192_size3"/> - <GlyphID id="74" name="uni2192_size4"/> - <GlyphID id="75" name="uni2192_size5"/> - <GlyphID id="76" name="uni2192_size6"/> - <GlyphID id="77" name="uni2193_size2"/> - <GlyphID id="78" name="uni2193_size3"/> - <GlyphID id="79" name="uni2193_size4"/> - <GlyphID id="80" name="uni2193_size5"/> - <GlyphID id="81" name="uni2193_size6"/> - <GlyphID id="82" name="uni2193_size7"/> - <GlyphID id="83" name="uni2195_size2"/> - <GlyphID id="84" name="uni21A4_size2"/> - <GlyphID id="85" name="uni21A4_size3"/> - <GlyphID id="86" name="uni21A5_size2"/> - <GlyphID id="87" name="uni21A5_size3"/> - <GlyphID id="88" name="uni21A5_size4"/> - <GlyphID id="89" name="uni21A6_size2"/> - <GlyphID id="90" name="uni21A6_size3"/> - <GlyphID id="91" name="uni21A6_size4"/> - <GlyphID id="92" name="uni21A6_size5"/> - <GlyphID id="93" name="uni21A7_size2"/> - <GlyphID id="94" name="uni21A7_size3"/> - <GlyphID id="95" name="uni21A7_size4"/> - <GlyphID id="96" name="uni21A7_size5"/> - <GlyphID id="97" name="uni21A7_size6"/> - <GlyphID id="98" name="uni21C7_size2"/> - <GlyphID id="99" name="uni21C7_size3"/> - <GlyphID id="100" name="uni21C8_size2"/> - <GlyphID id="101" name="uni21C8_size3"/> - <GlyphID id="102" name="uni21C8_size4"/> - <GlyphID id="103" name="uni21C9_size2"/> - <GlyphID id="104" name="uni21C9_size3"/> - <GlyphID id="105" name="uni21C9_size4"/> - <GlyphID id="106" name="uni21C9_size5"/> - <GlyphID id="107" name="uni21CA_size2"/> - <GlyphID id="108" name="uni21CA_size3"/> - <GlyphID id="109" name="uni21CA_size4"/> - <GlyphID id="110" name="uni21CA_size5"/> - <GlyphID id="111" name="uni21CA_size6"/> - <GlyphID id="112" name="uni21D0_size2"/> - <GlyphID id="113" name="uni21D0_size3"/> - <GlyphID id="114" name="uni21D0_size4"/> - <GlyphID id="115" name="uni21D0_size5"/> - <GlyphID id="116" name="uni21D1_size2"/> - <GlyphID id="117" name="uni21D1_size3"/> - <GlyphID id="118" name="uni21D1_size4"/> - <GlyphID id="119" name="uni21D1_size5"/> - <GlyphID id="120" name="uni21D1_size6"/> - <GlyphID id="121" name="uni21D2_size2"/> - <GlyphID id="122" name="uni21D2_size3"/> - <GlyphID id="123" name="uni21D2_size4"/> - <GlyphID id="124" name="uni21D2_size5"/> - <GlyphID id="125" name="uni21D2_size6"/> - <GlyphID id="126" name="uni21D2_size7"/> - <GlyphID id="127" name="uni21D4_size2"/> - <GlyphID id="128" name="uni21D5_size2"/> - <GlyphID id="129" name="uni21D5_size3"/> - <GlyphID id="130" name="uni21E6_size2"/> - <GlyphID id="131" name="uni21E6_size3"/> - <GlyphID id="132" name="uni21E6_size4"/> - <GlyphID id="133" name="uni21E6_size5"/> - <GlyphID id="134" name="uni21E6_size6"/> - <GlyphID id="135" name="uni21E7_size2"/> - <GlyphID id="136" name="uni21E7_size3"/> - <GlyphID id="137" name="uni21E7_size4"/> - <GlyphID id="138" name="uni21E7_size5"/> - <GlyphID id="139" name="uni21E7_size6"/> - <GlyphID id="140" name="uni21E7_size7"/> - <GlyphID id="141" name="uni21E9_size2"/> - </GlyphOrder> - - <head> - <!-- Most of this table will be recalculated by the compiler --> - <tableVersion value="1.0"/> - <fontRevision value="1.0"/> - <checkSumAdjustment value="0x87faf3a0"/> - <magicNumber value="0x5f0f3cf5"/> - <flags value="00000000 00001011"/> - <unitsPerEm value="1000"/> - <created value="Tue Apr 12 14:44:11 2016"/> - <modified value="Tue Apr 12 14:44:11 2016"/> - <xMin value="0"/> - <yMin value="0"/> - <xMax value="5300"/> - <yMax value="5500"/> - <macStyle value="00000000 00000000"/> - <lowestRecPPEM value="8"/> - <fontDirectionHint value="2"/> - <indexToLocFormat value="0"/> - <glyphDataFormat value="0"/> - </head> - - <hhea> - <tableVersion value="1.0"/> - <ascent value="1000"/> - <descent value="0"/> - <lineGap value="108"/> - <advanceWidthMax value="1000"/> - <minLeftSideBearing value="0"/> - <minRightSideBearing value="-4300"/> - <xMaxExtent value="5300"/> - <caretSlopeRise value="1"/> - <caretSlopeRun value="0"/> - <caretOffset value="0"/> - <reserved0 value="0"/> - <reserved1 value="0"/> - <reserved2 value="0"/> - <reserved3 value="0"/> - <metricDataFormat value="0"/> - <numberOfHMetrics value="2"/> - </hhea> - - <maxp> - <tableVersion value="0x5000"/> - <numGlyphs value="142"/> - </maxp> - - <OS_2> - <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex' - will be recalculated by the compiler --> - <version value="4"/> - <xAvgCharWidth value="1000"/> - <usWeightClass value="400"/> - <usWidthClass value="5"/> - <fsType value="00000000 00000000"/> - <ySubscriptXSize value="780"/> - <ySubscriptYSize value="840"/> - <ySubscriptXOffset value="0"/> - <ySubscriptYOffset value="168"/> - <ySuperscriptXSize value="780"/> - <ySuperscriptYSize value="840"/> - <ySuperscriptXOffset value="0"/> - <ySuperscriptYOffset value="576"/> - <yStrikeoutSize value="59"/> - <yStrikeoutPosition value="310"/> - <sFamilyClass value="0"/> - <panose> - <bFamilyType value="2"/> - <bSerifStyle value="0"/> - <bWeight value="5"/> - <bProportion value="9"/> - <bContrast value="0"/> - <bStrokeVariation value="0"/> - <bArmStyle value="0"/> - <bLetterForm value="0"/> - <bMidline value="0"/> - <bXHeight value="0"/> - </panose> - <ulUnicodeRange1 value="00000000 00000000 00000000 00000001"/> - <ulUnicodeRange2 value="00000000 00000000 00000000 00100000"/> - <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/> - <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/> - <achVendID value="\x00\x00\x00\x00"/> - <fsSelection value="00000000 10000000"/> - <usFirstCharIndex value="32"/> - <usLastCharIndex value="9130"/> - <sTypoAscender value="1000"/> - <sTypoDescender value="0"/> - <sTypoLineGap value="108"/> - <usWinAscent value="0"/> - <usWinDescent value="0"/> - <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/> - <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/> - <sxHeight value="0"/> - <sCapHeight value="1000"/> - <usDefaultChar value="32"/> - <usBreakChar value="32"/> - <usMaxContext value="1"/> - </OS_2> - - <name> - <namerecord nameID="0" platformID="1" platEncID="0" langID="0x0" unicode="True"> - Copyright (c) 2016, Igalia S.L. (http://igalia.com/) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. - - </namerecord> - <namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True"> - MathTestFontFull - </namerecord> - <namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True"> - Regular - </namerecord> - <namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True"> - FontForge 2.0 : MathTestFontFull : 12-4-2016 - </namerecord> - <namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True"> - MathTestFontFull - </namerecord> - <namerecord nameID="5" platformID="1" platEncID="0" langID="0x0" unicode="True"> - Version 001.000 - </namerecord> - <namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True"> - MathTestFontFull - </namerecord> - <namerecord nameID="14" platformID="1" platEncID="0" langID="0x0" unicode="True"> - http://scripts.sil.org/OFL - </namerecord> - <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409"> - Copyright (c) 2016, Igalia S.L. (http://igalia.com/) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. - - </namerecord> - <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409"> - MathTestFontFull - </namerecord> - <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409"> - Regular - </namerecord> - <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409"> - FontForge 2.0 : MathTestFontFull : 12-4-2016 - </namerecord> - <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409"> - MathTestFontFull - </namerecord> - <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409"> - Version 001.000 - </namerecord> - <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409"> - MathTestFontFull - </namerecord> - <namerecord nameID="14" platformID="3" platEncID="1" langID="0x409"> - http://scripts.sil.org/OFL - </namerecord> - </name> - - <cmap> - <tableVersion version="0"/> - <cmap_format_4 platformID="0" platEncID="3" language="0"> - <map code="0x20" name="space"/><!-- SPACE --> - <map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A --> - <map code="0x42" name="B"/><!-- LATIN CAPITAL LETTER B --> - <map code="0x43" name="C"/><!-- LATIN CAPITAL LETTER C --> - <map code="0x44" name="D"/><!-- LATIN CAPITAL LETTER D --> - <map code="0x45" name="E"/><!-- LATIN CAPITAL LETTER E --> - <map code="0x46" name="F"/><!-- LATIN CAPITAL LETTER F --> - <map code="0x47" name="G"/><!-- LATIN CAPITAL LETTER G --> - <map code="0x48" name="H"/><!-- LATIN CAPITAL LETTER H --> - <map code="0x49" name="I"/><!-- LATIN CAPITAL LETTER I --> - <map code="0x4a" name="J"/><!-- LATIN CAPITAL LETTER J --> - <map code="0x4b" name="K"/><!-- LATIN CAPITAL LETTER K --> - <map code="0x4c" name="L"/><!-- LATIN CAPITAL LETTER L --> - <map code="0x4d" name="M"/><!-- LATIN CAPITAL LETTER M --> - <map code="0x4e" name="N"/><!-- LATIN CAPITAL LETTER N --> - <map code="0x4f" name="O"/><!-- LATIN CAPITAL LETTER O --> - <map code="0x50" name="P"/><!-- LATIN CAPITAL LETTER P --> - <map code="0x51" name="Q"/><!-- LATIN CAPITAL LETTER Q --> - <map code="0x52" name="R"/><!-- LATIN CAPITAL LETTER R --> - <map code="0x53" name="S"/><!-- LATIN CAPITAL LETTER S --> - <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T --> - <map code="0x55" name="U"/><!-- LATIN CAPITAL LETTER U --> - <map code="0x56" name="V"/><!-- LATIN CAPITAL LETTER V --> - <map code="0x57" name="W"/><!-- LATIN CAPITAL LETTER W --> - <map code="0x58" name="X"/><!-- LATIN CAPITAL LETTER X --> - <map code="0x59" name="Y"/><!-- LATIN CAPITAL LETTER Y --> - <map code="0x5a" name="Z"/><!-- LATIN CAPITAL LETTER Z --> - <map code="0x5f" name="underscore"/><!-- LOW LINE --> - <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET --> - <map code="0x2190" name="arrowleft"/><!-- LEFTWARDS ARROW --> - <map code="0x2191" name="arrowup"/><!-- UPWARDS ARROW --> - <map code="0x2192" name="arrowright"/><!-- RIGHTWARDS ARROW --> - <map code="0x2193" name="arrowdown"/><!-- DOWNWARDS ARROW --> - <map code="0x2194" name="arrowboth"/><!-- LEFT RIGHT ARROW --> - <map code="0x2195" name="arrowupdn"/><!-- UP DOWN ARROW --> - <map code="0x21a4" name="uni21A4"/><!-- LEFTWARDS ARROW FROM BAR --> - <map code="0x21a5" name="uni21A5"/><!-- UPWARDS ARROW FROM BAR --> - <map code="0x21a6" name="uni21A6"/><!-- RIGHTWARDS ARROW FROM BAR --> - <map code="0x21a7" name="uni21A7"/><!-- DOWNWARDS ARROW FROM BAR --> - <map code="0x21c7" name="uni21C7"/><!-- LEFTWARDS PAIRED ARROWS --> - <map code="0x21c8" name="uni21C8"/><!-- UPWARDS PAIRED ARROWS --> - <map code="0x21c9" name="uni21C9"/><!-- RIGHTWARDS PAIRED ARROWS --> - <map code="0x21ca" name="uni21CA"/><!-- DOWNWARDS PAIRED ARROWS --> - <map code="0x21d0" name="arrowdblleft"/><!-- LEFTWARDS DOUBLE ARROW --> - <map code="0x21d1" name="arrowdblup"/><!-- UPWARDS DOUBLE ARROW --> - <map code="0x21d2" name="arrowdblright"/><!-- RIGHTWARDS DOUBLE ARROW --> - <map code="0x21d3" name="arrowdbldown"/><!-- DOWNWARDS DOUBLE ARROW --> - <map code="0x21d4" name="arrowdblboth"/><!-- LEFT RIGHT DOUBLE ARROW --> - <map code="0x21d5" name="uni21D5"/><!-- UP DOWN DOUBLE ARROW --> - <map code="0x21e6" name="uni21E6"/><!-- LEFTWARDS WHITE ARROW --> - <map code="0x21e7" name="uni21E7"/><!-- UPWARDS WHITE ARROW --> - <map code="0x21e8" name="uni21E8"/><!-- RIGHTWARDS WHITE ARROW --> - <map code="0x21e9" name="uni21E9"/><!-- DOWNWARDS WHITE ARROW --> - <map code="0x23a7" name="uni23A7"/><!-- LEFT CURLY BRACKET UPPER HOOK --> - <map code="0x23a8" name="uni23A8"/><!-- LEFT CURLY BRACKET MIDDLE PIECE --> - <map code="0x23a9" name="uni23A9"/><!-- LEFT CURLY BRACKET LOWER HOOK --> - <map code="0x23aa" name="uni23AA"/><!-- CURLY BRACKET EXTENSION --> - </cmap_format_4> - <cmap_format_0 platformID="1" platEncID="0" language="0"> - <map code="0x0" name="space"/> - <map code="0x1" name=".notdef"/> - <map code="0x2" name=".notdef"/> - <map code="0x3" name=".notdef"/> - <map code="0x4" name=".notdef"/> - <map code="0x5" name=".notdef"/> - <map code="0x6" name=".notdef"/> - <map code="0x7" name=".notdef"/> - <map code="0x8" name=".notdef"/> - <map code="0x9" name=".notdef"/> - <map code="0xa" name=".notdef"/> - <map code="0xb" name=".notdef"/> - <map code="0xc" name=".notdef"/> - <map code="0xd" name=".notdef"/> - <map code="0xe" name=".notdef"/> - <map code="0xf" name=".notdef"/> - <map code="0x10" name=".notdef"/> - <map code="0x11" name=".notdef"/> - <map code="0x12" name=".notdef"/> - <map code="0x13" name=".notdef"/> - <map code="0x14" name=".notdef"/> - <map code="0x15" name=".notdef"/> - <map code="0x16" name=".notdef"/> - <map code="0x17" name=".notdef"/> - <map code="0x18" name=".notdef"/> - <map code="0x19" name=".notdef"/> - <map code="0x1a" name=".notdef"/> - <map code="0x1b" name=".notdef"/> - <map code="0x1c" name=".notdef"/> - <map code="0x1d" name=".notdef"/> - <map code="0x1e" name=".notdef"/> - <map code="0x1f" name=".notdef"/> - <map code="0x20" name="space"/> - <map code="0x21" name=".notdef"/> - <map code="0x22" name=".notdef"/> - <map code="0x23" name=".notdef"/> - <map code="0x24" name=".notdef"/> - <map code="0x25" name=".notdef"/> - <map code="0x26" name=".notdef"/> - <map code="0x27" name=".notdef"/> - <map code="0x28" name=".notdef"/> - <map code="0x29" name=".notdef"/> - <map code="0x2a" name=".notdef"/> - <map code="0x2b" name=".notdef"/> - <map code="0x2c" name=".notdef"/> - <map code="0x2d" name=".notdef"/> - <map code="0x2e" name=".notdef"/> - <map code="0x2f" name=".notdef"/> - <map code="0x30" name=".notdef"/> - <map code="0x31" name=".notdef"/> - <map code="0x32" name=".notdef"/> - <map code="0x33" name=".notdef"/> - <map code="0x34" name=".notdef"/> - <map code="0x35" name=".notdef"/> - <map code="0x36" name=".notdef"/> - <map code="0x37" name=".notdef"/> - <map code="0x38" name=".notdef"/> - <map code="0x39" name=".notdef"/> - <map code="0x3a" name=".notdef"/> - <map code="0x3b" name=".notdef"/> - <map code="0x3c" name=".notdef"/> - <map code="0x3d" name=".notdef"/> - <map code="0x3e" name=".notdef"/> - <map code="0x3f" name=".notdef"/> - <map code="0x40" name=".notdef"/> - <map code="0x41" name="A"/> - <map code="0x42" name="B"/> - <map code="0x43" name="C"/> - <map code="0x44" name="D"/> - <map code="0x45" name="E"/> - <map code="0x46" name="F"/> - <map code="0x47" name="G"/> - <map code="0x48" name="H"/> - <map code="0x49" name="I"/> - <map code="0x4a" name="J"/> - <map code="0x4b" name="K"/> - <map code="0x4c" name="L"/> - <map code="0x4d" name="M"/> - <map code="0x4e" name="N"/> - <map code="0x4f" name="O"/> - <map code="0x50" name="P"/> - <map code="0x51" name="Q"/> - <map code="0x52" name="R"/> - <map code="0x53" name="S"/> - <map code="0x54" name="T"/> - <map code="0x55" name="U"/> - <map code="0x56" name="V"/> - <map code="0x57" name="W"/> - <map code="0x58" name="X"/> - <map code="0x59" name="Y"/> - <map code="0x5a" name="Z"/> - <map code="0x5b" name=".notdef"/> - <map code="0x5c" name=".notdef"/> - <map code="0x5d" name=".notdef"/> - <map code="0x5e" name=".notdef"/> - <map code="0x5f" name="underscore"/> - <map code="0x60" name=".notdef"/> - <map code="0x61" name=".notdef"/> - <map code="0x62" name=".notdef"/> - <map code="0x63" name=".notdef"/> - <map code="0x64" name=".notdef"/> - <map code="0x65" name=".notdef"/> - <map code="0x66" name=".notdef"/> - <map code="0x67" name=".notdef"/> - <map code="0x68" name=".notdef"/> - <map code="0x69" name=".notdef"/> - <map code="0x6a" name=".notdef"/> - <map code="0x6b" name=".notdef"/> - <map code="0x6c" name=".notdef"/> - <map code="0x6d" name=".notdef"/> - <map code="0x6e" name=".notdef"/> - <map code="0x6f" name=".notdef"/> - <map code="0x70" name=".notdef"/> - <map code="0x71" name=".notdef"/> - <map code="0x72" name=".notdef"/> - <map code="0x73" name=".notdef"/> - <map code="0x74" name=".notdef"/> - <map code="0x75" name=".notdef"/> - <map code="0x76" name=".notdef"/> - <map code="0x77" name=".notdef"/> - <map code="0x78" name=".notdef"/> - <map code="0x79" name=".notdef"/> - <map code="0x7a" name=".notdef"/> - <map code="0x7b" name="braceleft"/> - <map code="0x7c" name=".notdef"/> - <map code="0x7d" name=".notdef"/> - <map code="0x7e" name=".notdef"/> - <map code="0x7f" name=".notdef"/> - <map code="0x80" name=".notdef"/> - <map code="0x81" name=".notdef"/> - <map code="0x82" name=".notdef"/> - <map code="0x83" name=".notdef"/> - <map code="0x84" name=".notdef"/> - <map code="0x85" name=".notdef"/> - <map code="0x86" name=".notdef"/> - <map code="0x87" name=".notdef"/> - <map code="0x88" name=".notdef"/> - <map code="0x89" name=".notdef"/> - <map code="0x8a" name=".notdef"/> - <map code="0x8b" name=".notdef"/> - <map code="0x8c" name=".notdef"/> - <map code="0x8d" name=".notdef"/> - <map code="0x8e" name=".notdef"/> - <map code="0x8f" name=".notdef"/> - <map code="0x90" name=".notdef"/> - <map code="0x91" name=".notdef"/> - <map code="0x92" name=".notdef"/> - <map code="0x93" name=".notdef"/> - <map code="0x94" name=".notdef"/> - <map code="0x95" name=".notdef"/> - <map code="0x96" name=".notdef"/> - <map code="0x97" name=".notdef"/> - <map code="0x98" name=".notdef"/> - <map code="0x99" name=".notdef"/> - <map code="0x9a" name=".notdef"/> - <map code="0x9b" name=".notdef"/> - <map code="0x9c" name=".notdef"/> - <map code="0x9d" name=".notdef"/> - <map code="0x9e" name=".notdef"/> - <map code="0x9f" name=".notdef"/> - <map code="0xa0" name=".notdef"/> - <map code="0xa1" name=".notdef"/> - <map code="0xa2" name=".notdef"/> - <map code="0xa3" name=".notdef"/> - <map code="0xa4" name=".notdef"/> - <map code="0xa5" name=".notdef"/> - <map code="0xa6" name=".notdef"/> - <map code="0xa7" name=".notdef"/> - <map code="0xa8" name=".notdef"/> - <map code="0xa9" name=".notdef"/> - <map code="0xaa" name=".notdef"/> - <map code="0xab" name=".notdef"/> - <map code="0xac" name=".notdef"/> - <map code="0xad" name=".notdef"/> - <map code="0xae" name=".notdef"/> - <map code="0xaf" name=".notdef"/> - <map code="0xb0" name=".notdef"/> - <map code="0xb1" name=".notdef"/> - <map code="0xb2" name=".notdef"/> - <map code="0xb3" name=".notdef"/> - <map code="0xb4" name=".notdef"/> - <map code="0xb5" name=".notdef"/> - <map code="0xb6" name=".notdef"/> - <map code="0xb7" name=".notdef"/> - <map code="0xb8" name=".notdef"/> - <map code="0xb9" name=".notdef"/> - <map code="0xba" name=".notdef"/> - <map code="0xbb" name=".notdef"/> - <map code="0xbc" name=".notdef"/> - <map code="0xbd" name=".notdef"/> - <map code="0xbe" name=".notdef"/> - <map code="0xbf" name=".notdef"/> - <map code="0xc0" name=".notdef"/> - <map code="0xc1" name=".notdef"/> - <map code="0xc2" name=".notdef"/> - <map code="0xc3" name=".notdef"/> - <map code="0xc4" name=".notdef"/> - <map code="0xc5" name=".notdef"/> - <map code="0xc6" name=".notdef"/> - <map code="0xc7" name=".notdef"/> - <map code="0xc8" name=".notdef"/> - <map code="0xc9" name=".notdef"/> - <map code="0xca" name=".notdef"/> - <map code="0xcb" name=".notdef"/> - <map code="0xcc" name=".notdef"/> - <map code="0xcd" name=".notdef"/> - <map code="0xce" name=".notdef"/> - <map code="0xcf" name=".notdef"/> - <map code="0xd0" name=".notdef"/> - <map code="0xd1" name=".notdef"/> - <map code="0xd2" name=".notdef"/> - <map code="0xd3" name=".notdef"/> - <map code="0xd4" name=".notdef"/> - <map code="0xd5" name=".notdef"/> - <map code="0xd6" name=".notdef"/> - <map code="0xd7" name=".notdef"/> - <map code="0xd8" name=".notdef"/> - <map code="0xd9" name=".notdef"/> - <map code="0xda" name=".notdef"/> - <map code="0xdb" name=".notdef"/> - <map code="0xdc" name=".notdef"/> - <map code="0xdd" name=".notdef"/> - <map code="0xde" name=".notdef"/> - <map code="0xdf" name=".notdef"/> - <map code="0xe0" name=".notdef"/> - <map code="0xe1" name=".notdef"/> - <map code="0xe2" name=".notdef"/> - <map code="0xe3" name=".notdef"/> - <map code="0xe4" name=".notdef"/> - <map code="0xe5" name=".notdef"/> - <map code="0xe6" name=".notdef"/> - <map code="0xe7" name=".notdef"/> - <map code="0xe8" name=".notdef"/> - <map code="0xe9" name=".notdef"/> - <map code="0xea" name=".notdef"/> - <map code="0xeb" name=".notdef"/> - <map code="0xec" name=".notdef"/> - <map code="0xed" name=".notdef"/> - <map code="0xee" name=".notdef"/> - <map code="0xef" name=".notdef"/> - <map code="0xf0" name=".notdef"/> - <map code="0xf1" name=".notdef"/> - <map code="0xf2" name=".notdef"/> - <map code="0xf3" name=".notdef"/> - <map code="0xf4" name=".notdef"/> - <map code="0xf5" name=".notdef"/> - <map code="0xf6" name=".notdef"/> - <map code="0xf7" name=".notdef"/> - <map code="0xf8" name=".notdef"/> - <map code="0xf9" name=".notdef"/> - <map code="0xfa" name=".notdef"/> - <map code="0xfb" name=".notdef"/> - <map code="0xfc" name=".notdef"/> - <map code="0xfd" name=".notdef"/> - <map code="0xfe" name=".notdef"/> - <map code="0xff" name=".notdef"/> - </cmap_format_0> - <cmap_format_4 platformID="3" platEncID="1" language="0"> - <map code="0x20" name="space"/><!-- SPACE --> - <map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A --> - <map code="0x42" name="B"/><!-- LATIN CAPITAL LETTER B --> - <map code="0x43" name="C"/><!-- LATIN CAPITAL LETTER C --> - <map code="0x44" name="D"/><!-- LATIN CAPITAL LETTER D --> - <map code="0x45" name="E"/><!-- LATIN CAPITAL LETTER E --> - <map code="0x46" name="F"/><!-- LATIN CAPITAL LETTER F --> - <map code="0x47" name="G"/><!-- LATIN CAPITAL LETTER G --> - <map code="0x48" name="H"/><!-- LATIN CAPITAL LETTER H --> - <map code="0x49" name="I"/><!-- LATIN CAPITAL LETTER I --> - <map code="0x4a" name="J"/><!-- LATIN CAPITAL LETTER J --> - <map code="0x4b" name="K"/><!-- LATIN CAPITAL LETTER K --> - <map code="0x4c" name="L"/><!-- LATIN CAPITAL LETTER L --> - <map code="0x4d" name="M"/><!-- LATIN CAPITAL LETTER M --> - <map code="0x4e" name="N"/><!-- LATIN CAPITAL LETTER N --> - <map code="0x4f" name="O"/><!-- LATIN CAPITAL LETTER O --> - <map code="0x50" name="P"/><!-- LATIN CAPITAL LETTER P --> - <map code="0x51" name="Q"/><!-- LATIN CAPITAL LETTER Q --> - <map code="0x52" name="R"/><!-- LATIN CAPITAL LETTER R --> - <map code="0x53" name="S"/><!-- LATIN CAPITAL LETTER S --> - <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T --> - <map code="0x55" name="U"/><!-- LATIN CAPITAL LETTER U --> - <map code="0x56" name="V"/><!-- LATIN CAPITAL LETTER V --> - <map code="0x57" name="W"/><!-- LATIN CAPITAL LETTER W --> - <map code="0x58" name="X"/><!-- LATIN CAPITAL LETTER X --> - <map code="0x59" name="Y"/><!-- LATIN CAPITAL LETTER Y --> - <map code="0x5a" name="Z"/><!-- LATIN CAPITAL LETTER Z --> - <map code="0x5f" name="underscore"/><!-- LOW LINE --> - <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET --> - <map code="0x2190" name="arrowleft"/><!-- LEFTWARDS ARROW --> - <map code="0x2191" name="arrowup"/><!-- UPWARDS ARROW --> - <map code="0x2192" name="arrowright"/><!-- RIGHTWARDS ARROW --> - <map code="0x2193" name="arrowdown"/><!-- DOWNWARDS ARROW --> - <map code="0x2194" name="arrowboth"/><!-- LEFT RIGHT ARROW --> - <map code="0x2195" name="arrowupdn"/><!-- UP DOWN ARROW --> - <map code="0x21a4" name="uni21A4"/><!-- LEFTWARDS ARROW FROM BAR --> - <map code="0x21a5" name="uni21A5"/><!-- UPWARDS ARROW FROM BAR --> - <map code="0x21a6" name="uni21A6"/><!-- RIGHTWARDS ARROW FROM BAR --> - <map code="0x21a7" name="uni21A7"/><!-- DOWNWARDS ARROW FROM BAR --> - <map code="0x21c7" name="uni21C7"/><!-- LEFTWARDS PAIRED ARROWS --> - <map code="0x21c8" name="uni21C8"/><!-- UPWARDS PAIRED ARROWS --> - <map code="0x21c9" name="uni21C9"/><!-- RIGHTWARDS PAIRED ARROWS --> - <map code="0x21ca" name="uni21CA"/><!-- DOWNWARDS PAIRED ARROWS --> - <map code="0x21d0" name="arrowdblleft"/><!-- LEFTWARDS DOUBLE ARROW --> - <map code="0x21d1" name="arrowdblup"/><!-- UPWARDS DOUBLE ARROW --> - <map code="0x21d2" name="arrowdblright"/><!-- RIGHTWARDS DOUBLE ARROW --> - <map code="0x21d3" name="arrowdbldown"/><!-- DOWNWARDS DOUBLE ARROW --> - <map code="0x21d4" name="arrowdblboth"/><!-- LEFT RIGHT DOUBLE ARROW --> - <map code="0x21d5" name="uni21D5"/><!-- UP DOWN DOUBLE ARROW --> - <map code="0x21e6" name="uni21E6"/><!-- LEFTWARDS WHITE ARROW --> - <map code="0x21e7" name="uni21E7"/><!-- UPWARDS WHITE ARROW --> - <map code="0x21e8" name="uni21E8"/><!-- RIGHTWARDS WHITE ARROW --> - <map code="0x21e9" name="uni21E9"/><!-- DOWNWARDS WHITE ARROW --> - <map code="0x23a7" name="uni23A7"/><!-- LEFT CURLY BRACKET UPPER HOOK --> - <map code="0x23a8" name="uni23A8"/><!-- LEFT CURLY BRACKET MIDDLE PIECE --> - <map code="0x23a9" name="uni23A9"/><!-- LEFT CURLY BRACKET LOWER HOOK --> - <map code="0x23aa" name="uni23AA"/><!-- CURLY BRACKET EXTENSION --> - </cmap_format_4> - </cmap> - - <post> - <formatType value="3.0"/> - <italicAngle value="0.0"/> - <underlinePosition value="-125"/> - <underlineThickness value="50"/> - <isFixedPitch value="1"/> - <minMemType42 value="0"/> - <maxMemType42 value="0"/> - <minMemType1 value="0"/> - <maxMemType1 value="0"/> - </post> - - <CFF> - <CFFFont name="MathTestFontFull"> - <version value="001.000"/> - <Notice value="Copyright (c) 2016 Igalia S.L."/> - <FullName value="MathTestFontFull"/> - <FamilyName value="MathTestFontFull"/> - <Weight value="Regular"/> - <isFixedPitch value="1"/> - <ItalicAngle value="0"/> - <UnderlineThickness value="50"/> - <PaintType value="0"/> - <CharstringType value="2"/> - <FontMatrix value="0.001 0 0 0.001 0 0"/> - <FontBBox value="0 0 5300 5500"/> - <StrokeWidth value="0"/> - <!-- charset is dumped separately as the 'GlyphOrder' element --> - <Encoding name="StandardEncoding"/> - <Private> - <BlueValues value="-20 0 1000 1000"/> - <BlueScale value="0.039625"/> - <BlueShift value="0"/> - <BlueFuzz value="1"/> - <StdHW value="250"/> - <StdVW value="1000"/> - <StemSnapH value="166 200 250 333 500"/> - <StemSnapV value="166 200 250 333 500 1000"/> - <ForceBold value="0"/> - <LanguageGroup value="0"/> - <ExpansionFactor value="0.06"/> - <initialRandomSeed value="0"/> - <defaultWidthX value="1000"/> - <nominalWidthX value="0"/> - <Subrs> - <!-- The 'index' attribute is only for humans; it is ignored when parsed. --> - <CharString index="0"> - 1000 1000 -1000 hlineto - return - </CharString> - </Subrs> - </Private> - <CharStrings> - <CharString name=".notdef"> - 0 50 566 50 hstem - 50 50 800 50 vstem - 50 hmoveto - 900 666 -900 hlineto - 50 -616 rmoveto - 566 800 -566 vlineto - endchar - </CharString> - <CharString name="A"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="B"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="C"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="D"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="E"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="F"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="G"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="H"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="I"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="J"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="K"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="L"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="M"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="N"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="O"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="P"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="Q"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="R"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="S"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="T"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="U"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="V"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="W"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="X"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="Y"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="Z"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowboth"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowdblboth"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowdbldown"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowdblleft"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowdblright"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowdblup"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowdown"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowleft"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowright"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowup"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="arrowupdn"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="bottom"> - 0 200 800 -20 hstem - 400 200 vstem - 0 vmoveto - 1000 200 -400 800 -200 -800 -400 hlineto - endchar - </CharString> - <CharString name="braceleft"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="center"> - 21 -21 400 200 400 -20 hstem - 400 200 vstem - 400 hmoveto - 200 400 400 200 -400 400 -200 -400 -400 -200 400 hlineto - endchar - </CharString> - <CharString name="horizontal"> - 400 200 hstem - 400 vmoveto - 1000 200 -1000 hlineto - endchar - </CharString> - <CharString name="left"> - 21 -21 400 200 400 -20 hstem - 0 200 vstem - 0 vmoveto - 200 400 800 200 -800 400 -200 hlineto - endchar - </CharString> - <CharString name="right"> - 21 -21 400 200 400 -20 hstem - 800 200 vstem - 800 hmoveto - 200 1000 -200 -400 -800 -200 800 hlineto - endchar - </CharString> - <CharString name="space"> - endchar - </CharString> - <CharString name="top"> - 21 -21 800 200 hstem - 400 200 vstem - 400 hmoveto - 200 800 400 200 -1000 -200 400 hlineto - endchar - </CharString> - <CharString name="underscore"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni2190_size2"> - 0 250 hstem - 0 vmoveto - 2150 250 -2150 hlineto - endchar - </CharString> - <CharString name="uni2190_size3"> - 0 200 hstem - 0 vmoveto - 2400 200 -2400 hlineto - endchar - </CharString> - <CharString name="uni2190_size4"> - 0 166 hstem - 0 vmoveto - 2900 166 -2900 hlineto - endchar - </CharString> - <CharString name="uni2191_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2250 -250 hlineto - endchar - </CharString> - <CharString name="uni2191_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 2500 -200 hlineto - endchar - </CharString> - <CharString name="uni2191_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 3000 -166 hlineto - endchar - </CharString> - <CharString name="uni2191_size5"> - 21 -21 hstem - 0 500 vstem - 0 vmoveto - 500 3750 -500 hlineto - endchar - </CharString> - <CharString name="uni2192_size2"> - 0 250 hstem - 0 vmoveto - 2350 250 -2350 hlineto - endchar - </CharString> - <CharString name="uni2192_size3"> - 0 200 hstem - 0 vmoveto - 2600 200 -2600 hlineto - endchar - </CharString> - <CharString name="uni2192_size4"> - 0 166 hstem - 0 vmoveto - 3100 166 -3100 hlineto - endchar - </CharString> - <CharString name="uni2192_size5"> - 0 500 hstem - 0 vmoveto - 3850 500 -3850 hlineto - endchar - </CharString> - <CharString name="uni2192_size6"> - 0 333 hstem - 0 vmoveto - 4100 333 -4100 hlineto - endchar - </CharString> - <CharString name="uni2193_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2450 -250 hlineto - endchar - </CharString> - <CharString name="uni2193_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 2700 -200 hlineto - endchar - </CharString> - <CharString name="uni2193_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 3200 -166 hlineto - endchar - </CharString> - <CharString name="uni2193_size5"> - 21 -21 hstem - 0 500 vstem - 0 vmoveto - 500 3950 -500 hlineto - endchar - </CharString> - <CharString name="uni2193_size6"> - 21 -21 hstem - 0 333 vstem - 0 vmoveto - 333 4200 -333 hlineto - endchar - </CharString> - <CharString name="uni2193_size7"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 4700 -250 hlineto - endchar - </CharString> - <CharString name="uni2195_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2650 -250 hlineto - endchar - </CharString> - <CharString name="uni21A4"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21A4_size2"> - 0 250 hstem - 0 vmoveto - 2250 250 -2250 hlineto - endchar - </CharString> - <CharString name="uni21A4_size3"> - 0 200 hstem - 0 vmoveto - 2500 200 -2500 hlineto - endchar - </CharString> - <CharString name="uni21A5"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21A5_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2350 -250 hlineto - endchar - </CharString> - <CharString name="uni21A5_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 2600 -200 hlineto - endchar - </CharString> - <CharString name="uni21A5_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 3100 -166 hlineto - endchar - </CharString> - <CharString name="uni21A6"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21A6_size2"> - 0 250 hstem - 0 vmoveto - 2450 250 -2450 hlineto - endchar - </CharString> - <CharString name="uni21A6_size3"> - 0 200 hstem - 0 vmoveto - 2700 200 -2700 hlineto - endchar - </CharString> - <CharString name="uni21A6_size4"> - 0 166 hstem - 0 vmoveto - 3200 166 -3200 hlineto - endchar - </CharString> - <CharString name="uni21A6_size5"> - 0 500 hstem - 0 vmoveto - 3950 500 -3950 hlineto - endchar - </CharString> - <CharString name="uni21A7"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21A7_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2550 -250 hlineto - endchar - </CharString> - <CharString name="uni21A7_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 2800 -200 hlineto - endchar - </CharString> - <CharString name="uni21A7_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 3300 -166 hlineto - endchar - </CharString> - <CharString name="uni21A7_size5"> - 21 -21 hstem - 0 500 vstem - 0 vmoveto - 500 4050 -500 hlineto - endchar - </CharString> - <CharString name="uni21A7_size6"> - 21 -21 hstem - 0 333 vstem - 0 vmoveto - 333 4300 -333 hlineto - endchar - </CharString> - <CharString name="uni21C7"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21C7_size2"> - 0 250 hstem - 0 vmoveto - 1950 250 -1950 hlineto - endchar - </CharString> - <CharString name="uni21C7_size3"> - 0 200 hstem - 0 vmoveto - 2200 200 -2200 hlineto - endchar - </CharString> - <CharString name="uni21C8"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21C8_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2050 -250 hlineto - endchar - </CharString> - <CharString name="uni21C8_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 2300 -200 hlineto - endchar - </CharString> - <CharString name="uni21C8_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 2800 -166 hlineto - endchar - </CharString> - <CharString name="uni21C9"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21C9_size2"> - 0 250 hstem - 0 vmoveto - 2150 250 -2150 hlineto - endchar - </CharString> - <CharString name="uni21C9_size3"> - 0 200 hstem - 0 vmoveto - 2400 200 -2400 hlineto - endchar - </CharString> - <CharString name="uni21C9_size4"> - 0 166 hstem - 0 vmoveto - 2900 166 -2900 hlineto - endchar - </CharString> - <CharString name="uni21C9_size5"> - 0 500 hstem - 0 vmoveto - 3650 500 -3650 hlineto - endchar - </CharString> - <CharString name="uni21CA"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21CA_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2250 -250 hlineto - endchar - </CharString> - <CharString name="uni21CA_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 2500 -200 hlineto - endchar - </CharString> - <CharString name="uni21CA_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 3000 -166 hlineto - endchar - </CharString> - <CharString name="uni21CA_size5"> - 21 -21 hstem - 0 500 vstem - 0 vmoveto - 500 3750 -500 hlineto - endchar - </CharString> - <CharString name="uni21CA_size6"> - 21 -21 hstem - 0 333 vstem - 0 vmoveto - 333 4000 -333 hlineto - endchar - </CharString> - <CharString name="uni21D0_size2"> - 0 250 hstem - 0 vmoveto - 2850 250 -2850 hlineto - endchar - </CharString> - <CharString name="uni21D0_size3"> - 0 200 hstem - 0 vmoveto - 3100 200 -3100 hlineto - endchar - </CharString> - <CharString name="uni21D0_size4"> - 0 166 hstem - 0 vmoveto - 3600 166 -3600 hlineto - endchar - </CharString> - <CharString name="uni21D0_size5"> - 0 500 hstem - 0 vmoveto - 4350 500 -4350 hlineto - endchar - </CharString> - <CharString name="uni21D1_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 2950 -250 hlineto - endchar - </CharString> - <CharString name="uni21D1_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 3200 -200 hlineto - endchar - </CharString> - <CharString name="uni21D1_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 3700 -166 hlineto - endchar - </CharString> - <CharString name="uni21D1_size5"> - 21 -21 hstem - 0 500 vstem - 0 vmoveto - 500 4450 -500 hlineto - endchar - </CharString> - <CharString name="uni21D1_size6"> - 21 -21 hstem - 0 333 vstem - 0 vmoveto - 333 4700 -333 hlineto - endchar - </CharString> - <CharString name="uni21D2_size2"> - 0 250 hstem - 0 vmoveto - 3050 250 -3050 hlineto - endchar - </CharString> - <CharString name="uni21D2_size3"> - 0 200 hstem - 0 vmoveto - 3300 200 -3300 hlineto - endchar - </CharString> - <CharString name="uni21D2_size4"> - 0 166 hstem - 0 vmoveto - 3800 166 -3800 hlineto - endchar - </CharString> - <CharString name="uni21D2_size5"> - 0 500 hstem - 0 vmoveto - 4550 500 -4550 hlineto - endchar - </CharString> - <CharString name="uni21D2_size6"> - 0 333 hstem - 0 vmoveto - 4800 333 -4800 hlineto - endchar - </CharString> - <CharString name="uni21D2_size7"> - 0 250 hstem - 0 vmoveto - 5300 250 -5300 hlineto - endchar - </CharString> - <CharString name="uni21D4_size2"> - 0 250 hstem - 0 vmoveto - 3250 250 -3250 hlineto - endchar - </CharString> - <CharString name="uni21D5"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21D5_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 3350 -250 hlineto - endchar - </CharString> - <CharString name="uni21D5_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 3600 -200 hlineto - endchar - </CharString> - <CharString name="uni21E6"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21E6_size2"> - 0 250 hstem - 0 vmoveto - 3150 250 -3150 hlineto - endchar - </CharString> - <CharString name="uni21E6_size3"> - 0 200 hstem - 0 vmoveto - 3400 200 -3400 hlineto - endchar - </CharString> - <CharString name="uni21E6_size4"> - 0 166 hstem - 0 vmoveto - 3900 166 -3900 hlineto - endchar - </CharString> - <CharString name="uni21E6_size5"> - 0 500 hstem - 0 vmoveto - 4650 500 -4650 hlineto - endchar - </CharString> - <CharString name="uni21E6_size6"> - 0 333 hstem - 0 vmoveto - 4900 333 -4900 hlineto - endchar - </CharString> - <CharString name="uni21E7"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21E7_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 3250 -250 hlineto - endchar - </CharString> - <CharString name="uni21E7_size3"> - 21 -21 hstem - 0 200 vstem - 0 vmoveto - 200 3500 -200 hlineto - endchar - </CharString> - <CharString name="uni21E7_size4"> - 21 -21 hstem - 0 166 vstem - 0 vmoveto - 166 4000 -166 hlineto - endchar - </CharString> - <CharString name="uni21E7_size5"> - 21 -21 hstem - 0 500 vstem - 0 vmoveto - 500 4750 -500 hlineto - endchar - </CharString> - <CharString name="uni21E7_size6"> - 21 -21 hstem - 0 333 vstem - 0 vmoveto - 333 5000 -333 hlineto - endchar - </CharString> - <CharString name="uni21E7_size7"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 5500 -250 hlineto - endchar - </CharString> - <CharString name="uni21E8"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21E9"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni21E9_size2"> - 21 -21 hstem - 0 250 vstem - 0 vmoveto - 250 3450 -250 hlineto - endchar - </CharString> - <CharString name="uni23A7"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni23A8"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni23A9"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="uni23AA"> - 21 -21 1000 -20 hstem - 0 1000 vstem - 0 vmoveto - -107 callsubr - endchar - </CharString> - <CharString name="vertical"> - 21 -21 1000 -20 hstem - 400 200 vstem - 400 hmoveto - 200 1000 -200 hlineto - endchar - </CharString> - </CharStrings> - </CFFFont> - - <GlobalSubrs> - <!-- The 'index' attribute is only for humans; it is ignored when parsed. --> - </GlobalSubrs> - </CFF> - - <FFTM> - <!-- FontForge's timestamp, font source creation and modification dates --> - <version value="1"/> - <FFTimeStamp value="Sun Mar 20 10:09:51 2016"/> - <sourceCreated value="Tue Apr 12 14:44:11 2016"/> - <sourceModified value="Tue Apr 12 14:44:11 2016"/> - </FFTM> - - <MATH> - <Version value="1.0"/> - <MathConstants> - <ScriptPercentScaleDown value="87"/> - <ScriptScriptPercentScaleDown value="76"/> - <DelimitedSubFormulaMinHeight value="100"/> - <DisplayOperatorMinHeight value="200"/> - <MathLeading> - <Value value="300"/> - </MathLeading> - <AxisHeight> - <Value value="400"/> - </AxisHeight> - <AccentBaseHeight> - <Value value="500"/> - </AccentBaseHeight> - <FlattenedAccentBaseHeight> - <Value value="600"/> - </FlattenedAccentBaseHeight> - <SubscriptShiftDown> - <Value value="700"/> - </SubscriptShiftDown> - <SubscriptTopMax> - <Value value="800"/> - </SubscriptTopMax> - <SubscriptBaselineDropMin> - <Value value="900"/> - </SubscriptBaselineDropMin> - <SuperscriptShiftUp> - <Value value="1100"/> - </SuperscriptShiftUp> - <SuperscriptShiftUpCramped> - <Value value="1200"/> - </SuperscriptShiftUpCramped> - <SuperscriptBottomMin> - <Value value="1300"/> - </SuperscriptBottomMin> - <SuperscriptBaselineDropMax> - <Value value="1400"/> - </SuperscriptBaselineDropMax> - <SubSuperscriptGapMin> - <Value value="1500"/> - </SubSuperscriptGapMin> - <SuperscriptBottomMaxWithSubscript> - <Value value="1600"/> - </SuperscriptBottomMaxWithSubscript> - <SpaceAfterScript> - <Value value="1700"/> - </SpaceAfterScript> - <UpperLimitGapMin> - <Value value="1800"/> - </UpperLimitGapMin> - <UpperLimitBaselineRiseMin> - <Value value="1900"/> - </UpperLimitBaselineRiseMin> - <LowerLimitGapMin> - <Value value="2200"/> - </LowerLimitGapMin> - <LowerLimitBaselineDropMin> - <Value value="2300"/> - </LowerLimitBaselineDropMin> - <StackTopShiftUp> - <Value value="2400"/> - </StackTopShiftUp> - <StackTopDisplayStyleShiftUp> - <Value value="2500"/> - </StackTopDisplayStyleShiftUp> - <StackBottomShiftDown> - <Value value="2600"/> - </StackBottomShiftDown> - <StackBottomDisplayStyleShiftDown> - <Value value="2700"/> - </StackBottomDisplayStyleShiftDown> - <StackGapMin> - <Value value="2800"/> - </StackGapMin> - <StackDisplayStyleGapMin> - <Value value="2900"/> - </StackDisplayStyleGapMin> - <StretchStackTopShiftUp> - <Value value="3000"/> - </StretchStackTopShiftUp> - <StretchStackBottomShiftDown> - <Value value="3100"/> - </StretchStackBottomShiftDown> - <StretchStackGapAboveMin> - <Value value="3200"/> - </StretchStackGapAboveMin> - <StretchStackGapBelowMin> - <Value value="3300"/> - </StretchStackGapBelowMin> - <FractionNumeratorShiftUp> - <Value value="3400"/> - </FractionNumeratorShiftUp> - <FractionNumeratorDisplayStyleShiftUp> - <Value value="3500"/> - </FractionNumeratorDisplayStyleShiftUp> - <FractionDenominatorShiftDown> - <Value value="3600"/> - </FractionDenominatorShiftDown> - <FractionDenominatorDisplayStyleShiftDown> - <Value value="3700"/> - </FractionDenominatorDisplayStyleShiftDown> - <FractionNumeratorGapMin> - <Value value="3800"/> - </FractionNumeratorGapMin> - <FractionNumDisplayStyleGapMin> - <Value value="3900"/> - </FractionNumDisplayStyleGapMin> - <FractionRuleThickness> - <Value value="4000"/> - </FractionRuleThickness> - <FractionDenominatorGapMin> - <Value value="4100"/> - </FractionDenominatorGapMin> - <FractionDenomDisplayStyleGapMin> - <Value value="4200"/> - </FractionDenomDisplayStyleGapMin> - <SkewedFractionHorizontalGap> - <Value value="4300"/> - </SkewedFractionHorizontalGap> - <SkewedFractionVerticalGap> - <Value value="4400"/> - </SkewedFractionVerticalGap> - <OverbarVerticalGap> - <Value value="4500"/> - </OverbarVerticalGap> - <OverbarRuleThickness> - <Value value="4600"/> - </OverbarRuleThickness> - <OverbarExtraAscender> - <Value value="4700"/> - </OverbarExtraAscender> - <UnderbarVerticalGap> - <Value value="4800"/> - </UnderbarVerticalGap> - <UnderbarRuleThickness> - <Value value="4900"/> - </UnderbarRuleThickness> - <UnderbarExtraDescender> - <Value value="5000"/> - </UnderbarExtraDescender> - <RadicalVerticalGap> - <Value value="5100"/> - </RadicalVerticalGap> - <RadicalDisplayStyleVerticalGap> - <Value value="5200"/> - </RadicalDisplayStyleVerticalGap> - <RadicalRuleThickness> - <Value value="5300"/> - </RadicalRuleThickness> - <RadicalExtraAscender> - <Value value="5400"/> - </RadicalExtraAscender> - <RadicalKernBeforeDegree> - <Value value="5500"/> - </RadicalKernBeforeDegree> - <RadicalKernAfterDegree> - <Value value="5600"/> - </RadicalKernAfterDegree> - <RadicalDegreeBottomRaisePercent value="65"/> - </MathConstants> - <MathGlyphInfo> - <MathItalicsCorrectionInfo> - <Coverage Format="2"> - <Glyph value="A"/> - <Glyph value="B"/> - <Glyph value="C"/> - <Glyph value="D"/> - <Glyph value="E"/> - <Glyph value="F"/> - <Glyph value="G"/> - <Glyph value="H"/> - <Glyph value="I"/> - <Glyph value="J"/> - <Glyph value="K"/> - <Glyph value="L"/> - <Glyph value="M"/> - <Glyph value="N"/> - <Glyph value="O"/> - <Glyph value="P"/> - <Glyph value="Q"/> - <Glyph value="R"/> - <Glyph value="S"/> - <Glyph value="T"/> - <Glyph value="U"/> - <Glyph value="V"/> - <Glyph value="W"/> - <Glyph value="X"/> - <Glyph value="Y"/> - <Glyph value="Z"/> - <Glyph value="arrowleft"/> - <Glyph value="arrowup"/> - <Glyph value="arrowright"/> - <Glyph value="arrowdown"/> - <Glyph value="arrowboth"/> - <Glyph value="arrowupdn"/> - <Glyph value="uni21A4"/> - <Glyph value="uni21A5"/> - <Glyph value="uni21A6"/> - <Glyph value="uni21A7"/> - <Glyph value="uni21C7"/> - <Glyph value="uni21C8"/> - <Glyph value="uni21C9"/> - <Glyph value="uni21CA"/> - <Glyph value="arrowdblleft"/> - <Glyph value="arrowdblup"/> - <Glyph value="arrowdblright"/> - <Glyph value="arrowdbldown"/> - <Glyph value="arrowdblboth"/> - <Glyph value="uni21D5"/> - <Glyph value="uni21E6"/> - <Glyph value="uni21E7"/> - <Glyph value="uni21E8"/> - <Glyph value="uni21E9"/> - <Glyph value="uni2190_size2"/> - <Glyph value="uni2190_size3"/> - <Glyph value="uni2190_size4"/> - <Glyph value="uni2191_size2"/> - <Glyph value="uni2191_size3"/> - <Glyph value="uni2191_size4"/> - <Glyph value="uni2191_size5"/> - <Glyph value="uni2192_size2"/> - <Glyph value="uni2192_size3"/> - <Glyph value="uni2192_size4"/> - <Glyph value="uni2192_size5"/> - <Glyph value="uni2192_size6"/> - <Glyph value="uni2193_size2"/> - <Glyph value="uni2193_size3"/> - <Glyph value="uni2193_size4"/> - <Glyph value="uni2193_size5"/> - <Glyph value="uni2193_size6"/> - <Glyph value="uni2193_size7"/> - <Glyph value="uni2195_size2"/> - <Glyph value="uni21A4_size2"/> - <Glyph value="uni21A4_size3"/> - <Glyph value="uni21A5_size2"/> - <Glyph value="uni21A5_size3"/> - <Glyph value="uni21A5_size4"/> - <Glyph value="uni21A6_size2"/> - <Glyph value="uni21A6_size3"/> - <Glyph value="uni21A6_size4"/> - <Glyph value="uni21A6_size5"/> - <Glyph value="uni21A7_size2"/> - <Glyph value="uni21A7_size3"/> - <Glyph value="uni21A7_size4"/> - <Glyph value="uni21A7_size5"/> - <Glyph value="uni21A7_size6"/> - <Glyph value="uni21C7_size2"/> - <Glyph value="uni21C7_size3"/> - <Glyph value="uni21C8_size2"/> - <Glyph value="uni21C8_size3"/> - <Glyph value="uni21C8_size4"/> - <Glyph value="uni21C9_size2"/> - <Glyph value="uni21C9_size3"/> - <Glyph value="uni21C9_size4"/> - <Glyph value="uni21C9_size5"/> - <Glyph value="uni21CA_size2"/> - <Glyph value="uni21CA_size3"/> - <Glyph value="uni21CA_size4"/> - <Glyph value="uni21CA_size5"/> - <Glyph value="uni21CA_size6"/> - <Glyph value="uni21D0_size2"/> - <Glyph value="uni21D0_size3"/> - <Glyph value="uni21D0_size4"/> - <Glyph value="uni21D0_size5"/> - <Glyph value="uni21D1_size2"/> - <Glyph value="uni21D1_size3"/> - <Glyph value="uni21D1_size4"/> - <Glyph value="uni21D1_size5"/> - <Glyph value="uni21D1_size6"/> - <Glyph value="uni21D2_size2"/> - <Glyph value="uni21D2_size3"/> - <Glyph value="uni21D2_size4"/> - <Glyph value="uni21D2_size5"/> - <Glyph value="uni21D2_size6"/> - <Glyph value="uni21D2_size7"/> - <Glyph value="uni21D4_size2"/> - <Glyph value="uni21D5_size2"/> - <Glyph value="uni21D5_size3"/> - <Glyph value="uni21E6_size2"/> - <Glyph value="uni21E6_size3"/> - <Glyph value="uni21E6_size4"/> - <Glyph value="uni21E6_size5"/> - <Glyph value="uni21E6_size6"/> - <Glyph value="uni21E7_size2"/> - <Glyph value="uni21E7_size3"/> - <Glyph value="uni21E7_size4"/> - <Glyph value="uni21E7_size5"/> - <Glyph value="uni21E7_size6"/> - <Glyph value="uni21E7_size7"/> - <Glyph value="uni21E9_size2"/> - </Coverage> - <!-- ItalicsCorrectionCount=127 --> - <ItalicsCorrection index="0"> - <Value value="197"/> - </ItalicsCorrection> - <ItalicsCorrection index="1"> - <Value value="150"/> - </ItalicsCorrection> - <ItalicsCorrection index="2"> - <Value value="452"/> - </ItalicsCorrection> - <ItalicsCorrection index="3"> - <Value value="405"/> - </ItalicsCorrection> - <ItalicsCorrection index="4"> - <Value value="358"/> - </ItalicsCorrection> - <ItalicsCorrection index="5"> - <Value value="311"/> - </ItalicsCorrection> - <ItalicsCorrection index="6"> - <Value value="264"/> - </ItalicsCorrection> - <ItalicsCorrection index="7"> - <Value value="217"/> - </ItalicsCorrection> - <ItalicsCorrection index="8"> - <Value value="170"/> - </ItalicsCorrection> - <ItalicsCorrection index="9"> - <Value value="123"/> - </ItalicsCorrection> - <ItalicsCorrection index="10"> - <Value value="425"/> - </ItalicsCorrection> - <ItalicsCorrection index="11"> - <Value value="378"/> - </ItalicsCorrection> - <ItalicsCorrection index="12"> - <Value value="331"/> - </ItalicsCorrection> - <ItalicsCorrection index="13"> - <Value value="284"/> - </ItalicsCorrection> - <ItalicsCorrection index="14"> - <Value value="237"/> - </ItalicsCorrection> - <ItalicsCorrection index="15"> - <Value value="190"/> - </ItalicsCorrection> - <ItalicsCorrection index="16"> - <Value value="143"/> - </ItalicsCorrection> - <ItalicsCorrection index="17"> - <Value value="445"/> - </ItalicsCorrection> - <ItalicsCorrection index="18"> - <Value value="398"/> - </ItalicsCorrection> - <ItalicsCorrection index="19"> - <Value value="351"/> - </ItalicsCorrection> - <ItalicsCorrection index="20"> - <Value value="304"/> - </ItalicsCorrection> - <ItalicsCorrection index="21"> - <Value value="257"/> - </ItalicsCorrection> - <ItalicsCorrection index="22"> - <Value value="210"/> - </ItalicsCorrection> - <ItalicsCorrection index="23"> - <Value value="163"/> - </ItalicsCorrection> - <ItalicsCorrection index="24"> - <Value value="116"/> - </ItalicsCorrection> - <ItalicsCorrection index="25"> - <Value value="418"/> - </ItalicsCorrection> - <ItalicsCorrection index="26"> - <Value value="429"/> - </ItalicsCorrection> - <ItalicsCorrection index="27"> - <Value value="382"/> - </ItalicsCorrection> - <ItalicsCorrection index="28"> - <Value value="335"/> - </ItalicsCorrection> - <ItalicsCorrection index="29"> - <Value value="288"/> - </ItalicsCorrection> - <ItalicsCorrection index="30"> - <Value value="241"/> - </ItalicsCorrection> - <ItalicsCorrection index="31"> - <Value value="194"/> - </ItalicsCorrection> - <ItalicsCorrection index="32"> - <Value value="187"/> - </ItalicsCorrection> - <ItalicsCorrection index="33"> - <Value value="140"/> - </ItalicsCorrection> - <ItalicsCorrection index="34"> - <Value value="442"/> - </ItalicsCorrection> - <ItalicsCorrection index="35"> - <Value value="395"/> - </ItalicsCorrection> - <ItalicsCorrection index="36"> - <Value value="287"/> - </ItalicsCorrection> - <ItalicsCorrection index="37"> - <Value value="240"/> - </ItalicsCorrection> - <ItalicsCorrection index="38"> - <Value value="193"/> - </ItalicsCorrection> - <ItalicsCorrection index="39"> - <Value value="146"/> - </ItalicsCorrection> - <ItalicsCorrection index="40"> - <Value value="213"/> - </ItalicsCorrection> - <ItalicsCorrection index="41"> - <Value value="166"/> - </ItalicsCorrection> - <ItalicsCorrection index="42"> - <Value value="119"/> - </ItalicsCorrection> - <ItalicsCorrection index="43"> - <Value value="421"/> - </ItalicsCorrection> - <ItalicsCorrection index="44"> - <Value value="374"/> - </ItalicsCorrection> - <ItalicsCorrection index="45"> - <Value value="327"/> - </ItalicsCorrection> - <ItalicsCorrection index="46"> - <Value value="226"/> - </ItalicsCorrection> - <ItalicsCorrection index="47"> - <Value value="179"/> - </ItalicsCorrection> - <ItalicsCorrection index="48"> - <Value value="132"/> - </ItalicsCorrection> - <ItalicsCorrection index="49"> - <Value value="434"/> - </ItalicsCorrection> - <ItalicsCorrection index="50"> - <Value value="335"/> - </ItalicsCorrection> - <ItalicsCorrection index="51"> - <Value value="288"/> - </ItalicsCorrection> - <ItalicsCorrection index="52"> - <Value value="241"/> - </ItalicsCorrection> - <ItalicsCorrection index="53"> - <Value value="288"/> - </ItalicsCorrection> - <ItalicsCorrection index="54"> - <Value value="241"/> - </ItalicsCorrection> - <ItalicsCorrection index="55"> - <Value value="194"/> - </ItalicsCorrection> - <ItalicsCorrection index="56"> - <Value value="147"/> - </ItalicsCorrection> - <ItalicsCorrection index="57"> - <Value value="241"/> - </ItalicsCorrection> - <ItalicsCorrection index="58"> - <Value value="194"/> - </ItalicsCorrection> - <ItalicsCorrection index="59"> - <Value value="147"/> - </ItalicsCorrection> - <ItalicsCorrection index="60"> - <Value value="449"/> - </ItalicsCorrection> - <ItalicsCorrection index="61"> - <Value value="402"/> - </ItalicsCorrection> - <ItalicsCorrection index="62"> - <Value value="194"/> - </ItalicsCorrection> - <ItalicsCorrection index="63"> - <Value value="147"/> - </ItalicsCorrection> - <ItalicsCorrection index="64"> - <Value value="449"/> - </ItalicsCorrection> - <ItalicsCorrection index="65"> - <Value value="402"/> - </ItalicsCorrection> - <ItalicsCorrection index="66"> - <Value value="355"/> - </ItalicsCorrection> - <ItalicsCorrection index="67"> - <Value value="308"/> - </ItalicsCorrection> - <ItalicsCorrection index="68"> - <Value value="449"/> - </ItalicsCorrection> - <ItalicsCorrection index="69"> - <Value value="442"/> - </ItalicsCorrection> - <ItalicsCorrection index="70"> - <Value value="395"/> - </ItalicsCorrection> - <ItalicsCorrection index="71"> - <Value value="395"/> - </ItalicsCorrection> - <ItalicsCorrection index="72"> - <Value value="348"/> - </ItalicsCorrection> - <ItalicsCorrection index="73"> - <Value value="301"/> - </ItalicsCorrection> - <ItalicsCorrection index="74"> - <Value value="348"/> - </ItalicsCorrection> - <ItalicsCorrection index="75"> - <Value value="301"/> - </ItalicsCorrection> - <ItalicsCorrection index="76"> - <Value value="254"/> - </ItalicsCorrection> - <ItalicsCorrection index="77"> - <Value value="207"/> - </ItalicsCorrection> - <ItalicsCorrection index="78"> - <Value value="301"/> - </ItalicsCorrection> - <ItalicsCorrection index="79"> - <Value value="254"/> - </ItalicsCorrection> - <ItalicsCorrection index="80"> - <Value value="207"/> - </ItalicsCorrection> - <ItalicsCorrection index="81"> - <Value value="160"/> - </ItalicsCorrection> - <ItalicsCorrection index="82"> - <Value value="113"/> - </ItalicsCorrection> - <ItalicsCorrection index="83"> - <Value value="193"/> - </ItalicsCorrection> - <ItalicsCorrection index="84"> - <Value value="146"/> - </ItalicsCorrection> - <ItalicsCorrection index="85"> - <Value value="146"/> - </ItalicsCorrection> - <ItalicsCorrection index="86"> - <Value value="448"/> - </ItalicsCorrection> - <ItalicsCorrection index="87"> - <Value value="401"/> - </ItalicsCorrection> - <ItalicsCorrection index="88"> - <Value value="448"/> - </ItalicsCorrection> - <ItalicsCorrection index="89"> - <Value value="401"/> - </ItalicsCorrection> - <ItalicsCorrection index="90"> - <Value value="354"/> - </ItalicsCorrection> - <ItalicsCorrection index="91"> - <Value value="307"/> - </ItalicsCorrection> - <ItalicsCorrection index="92"> - <Value value="401"/> - </ItalicsCorrection> - <ItalicsCorrection index="93"> - <Value value="354"/> - </ItalicsCorrection> - <ItalicsCorrection index="94"> - <Value value="307"/> - </ItalicsCorrection> - <ItalicsCorrection index="95"> - <Value value="260"/> - </ItalicsCorrection> - <ItalicsCorrection index="96"> - <Value value="213"/> - </ItalicsCorrection> - <ItalicsCorrection index="97"> - <Value value="119"/> - </ItalicsCorrection> - <ItalicsCorrection index="98"> - <Value value="421"/> - </ItalicsCorrection> - <ItalicsCorrection index="99"> - <Value value="374"/> - </ItalicsCorrection> - <ItalicsCorrection index="100"> - <Value value="327"/> - </ItalicsCorrection> - <ItalicsCorrection index="101"> - <Value value="421"/> - </ItalicsCorrection> - <ItalicsCorrection index="102"> - <Value value="374"/> - </ItalicsCorrection> - <ItalicsCorrection index="103"> - <Value value="327"/> - </ItalicsCorrection> - <ItalicsCorrection index="104"> - <Value value="280"/> - </ItalicsCorrection> - <ItalicsCorrection index="105"> - <Value value="233"/> - </ItalicsCorrection> - <ItalicsCorrection index="106"> - <Value value="374"/> - </ItalicsCorrection> - <ItalicsCorrection index="107"> - <Value value="327"/> - </ItalicsCorrection> - <ItalicsCorrection index="108"> - <Value value="280"/> - </ItalicsCorrection> - <ItalicsCorrection index="109"> - <Value value="233"/> - </ItalicsCorrection> - <ItalicsCorrection index="110"> - <Value value="186"/> - </ItalicsCorrection> - <ItalicsCorrection index="111"> - <Value value="139"/> - </ItalicsCorrection> - <ItalicsCorrection index="112"> - <Value value="280"/> - </ItalicsCorrection> - <ItalicsCorrection index="113"> - <Value value="233"/> - </ItalicsCorrection> - <ItalicsCorrection index="114"> - <Value value="186"/> - </ItalicsCorrection> - <ItalicsCorrection index="115"> - <Value value="132"/> - </ItalicsCorrection> - <ItalicsCorrection index="116"> - <Value value="434"/> - </ItalicsCorrection> - <ItalicsCorrection index="117"> - <Value value="387"/> - </ItalicsCorrection> - <ItalicsCorrection index="118"> - <Value value="340"/> - </ItalicsCorrection> - <ItalicsCorrection index="119"> - <Value value="293"/> - </ItalicsCorrection> - <ItalicsCorrection index="120"> - <Value value="434"/> - </ItalicsCorrection> - <ItalicsCorrection index="121"> - <Value value="387"/> - </ItalicsCorrection> - <ItalicsCorrection index="122"> - <Value value="340"/> - </ItalicsCorrection> - <ItalicsCorrection index="123"> - <Value value="293"/> - </ItalicsCorrection> - <ItalicsCorrection index="124"> - <Value value="246"/> - </ItalicsCorrection> - <ItalicsCorrection index="125"> - <Value value="199"/> - </ItalicsCorrection> - <ItalicsCorrection index="126"> - <Value value="340"/> - </ItalicsCorrection> - </MathItalicsCorrectionInfo> - <MathTopAccentAttachment> - <TopAccentCoverage Format="2"> - <Glyph value="A"/> - <Glyph value="B"/> - <Glyph value="C"/> - <Glyph value="D"/> - <Glyph value="E"/> - <Glyph value="F"/> - <Glyph value="G"/> - <Glyph value="H"/> - <Glyph value="I"/> - <Glyph value="J"/> - <Glyph value="K"/> - <Glyph value="L"/> - <Glyph value="M"/> - <Glyph value="N"/> - <Glyph value="O"/> - <Glyph value="P"/> - <Glyph value="Q"/> - <Glyph value="R"/> - <Glyph value="S"/> - <Glyph value="T"/> - <Glyph value="U"/> - <Glyph value="V"/> - <Glyph value="W"/> - <Glyph value="X"/> - <Glyph value="Y"/> - <Glyph value="Z"/> - </TopAccentCoverage> - <!-- TopAccentAttachmentCount=26 --> - <TopAccentAttachment index="0"> - <Value value="458"/> - </TopAccentAttachment> - <TopAccentAttachment index="1"> - <Value value="430"/> - </TopAccentAttachment> - <TopAccentAttachment index="2"> - <Value value="402"/> - </TopAccentAttachment> - <TopAccentAttachment index="3"> - <Value value="374"/> - </TopAccentAttachment> - <TopAccentAttachment index="4"> - <Value value="346"/> - </TopAccentAttachment> - <TopAccentAttachment index="5"> - <Value value="318"/> - </TopAccentAttachment> - <TopAccentAttachment index="6"> - <Value value="290"/> - </TopAccentAttachment> - <TopAccentAttachment index="7"> - <Value value="262"/> - </TopAccentAttachment> - <TopAccentAttachment index="8"> - <Value value="234"/> - </TopAccentAttachment> - <TopAccentAttachment index="9"> - <Value value="463"/> - </TopAccentAttachment> - <TopAccentAttachment index="10"> - <Value value="435"/> - </TopAccentAttachment> - <TopAccentAttachment index="11"> - <Value value="407"/> - </TopAccentAttachment> - <TopAccentAttachment index="12"> - <Value value="379"/> - </TopAccentAttachment> - <TopAccentAttachment index="13"> - <Value value="351"/> - </TopAccentAttachment> - <TopAccentAttachment index="14"> - <Value value="323"/> - </TopAccentAttachment> - <TopAccentAttachment index="15"> - <Value value="295"/> - </TopAccentAttachment> - <TopAccentAttachment index="16"> - <Value value="267"/> - </TopAccentAttachment> - <TopAccentAttachment index="17"> - <Value value="239"/> - </TopAccentAttachment> - <TopAccentAttachment index="18"> - <Value value="468"/> - </TopAccentAttachment> - <TopAccentAttachment index="19"> - <Value value="440"/> - </TopAccentAttachment> - <TopAccentAttachment index="20"> - <Value value="412"/> - </TopAccentAttachment> - <TopAccentAttachment index="21"> - <Value value="384"/> - </TopAccentAttachment> - <TopAccentAttachment index="22"> - <Value value="356"/> - </TopAccentAttachment> - <TopAccentAttachment index="23"> - <Value value="328"/> - </TopAccentAttachment> - <TopAccentAttachment index="24"> - <Value value="300"/> - </TopAccentAttachment> - <TopAccentAttachment index="25"> - <Value value="272"/> - </TopAccentAttachment> - </MathTopAccentAttachment> - <ExtendedShapeCoverage Format="1"> - <Glyph value="B"/> - <Glyph value="E"/> - <Glyph value="H"/> - <Glyph value="K"/> - <Glyph value="N"/> - <Glyph value="Q"/> - <Glyph value="T"/> - <Glyph value="W"/> - <Glyph value="Z"/> - </ExtendedShapeCoverage> - <MathKernInfo> - <MathKernCoverage Format="2"> - <Glyph value="A"/> - <Glyph value="B"/> - <Glyph value="C"/> - <Glyph value="D"/> - <Glyph value="E"/> - <Glyph value="F"/> - <Glyph value="G"/> - <Glyph value="H"/> - <Glyph value="I"/> - <Glyph value="J"/> - <Glyph value="K"/> - <Glyph value="L"/> - <Glyph value="M"/> - <Glyph value="N"/> - <Glyph value="O"/> - <Glyph value="P"/> - <Glyph value="Q"/> - <Glyph value="R"/> - <Glyph value="S"/> - <Glyph value="T"/> - <Glyph value="U"/> - <Glyph value="V"/> - <Glyph value="W"/> - <Glyph value="X"/> - <Glyph value="Y"/> - <Glyph value="Z"/> - </MathKernCoverage> - <!-- MathKernCount=26 --> - <MathKernInfoRecords index="0"> - <TopLeftMathKern> - <!-- HeightCount=5 --> - <CorrectionHeight index="0"> - <Value value="12"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="19"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="26"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="33"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="40"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="17"/> - </KernValue> - <KernValue index="1"> - <Value value="24"/> - </KernValue> - <KernValue index="2"> - <Value value="31"/> - </KernValue> - <KernValue index="3"> - <Value value="38"/> - </KernValue> - <KernValue index="4"> - <Value value="45"/> - </KernValue> - <KernValue index="5"> - <Value value="52"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="25"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="31"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="57"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="83"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="109"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="135"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="161"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="187"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="213"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="239"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="29"/> - </KernValue> - <KernValue index="1"> - <Value value="48"/> - </KernValue> - <KernValue index="2"> - <Value value="67"/> - </KernValue> - <KernValue index="3"> - <Value value="86"/> - </KernValue> - <KernValue index="4"> - <Value value="105"/> - </KernValue> - <KernValue index="5"> - <Value value="124"/> - </KernValue> - <KernValue index="6"> - <Value value="143"/> - </KernValue> - <KernValue index="7"> - <Value value="162"/> - </KernValue> - <KernValue index="8"> - <Value value="181"/> - </KernValue> - <KernValue index="9"> - <Value value="200"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="1"> - <TopRightMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="30"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="55"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="24"/> - </KernValue> - <KernValue index="1"> - <Value value="38"/> - </KernValue> - <KernValue index="2"> - <Value value="52"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=6 --> - <CorrectionHeight index="0"> - <Value value="13"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="21"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="29"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="37"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="45"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="53"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="18"/> - </KernValue> - <KernValue index="1"> - <Value value="26"/> - </KernValue> - <KernValue index="2"> - <Value value="34"/> - </KernValue> - <KernValue index="3"> - <Value value="42"/> - </KernValue> - <KernValue index="4"> - <Value value="50"/> - </KernValue> - <KernValue index="5"> - <Value value="58"/> - </KernValue> - <KernValue index="6"> - <Value value="66"/> - </KernValue> - </TopLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="2"> - <TopRightMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="31"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="57"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="83"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="25"/> - </KernValue> - <KernValue index="1"> - <Value value="40"/> - </KernValue> - <KernValue index="2"> - <Value value="55"/> - </KernValue> - <KernValue index="3"> - <Value value="70"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="14"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="23"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="32"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="41"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="50"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="59"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="68"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="19"/> - </KernValue> - <KernValue index="1"> - <Value value="28"/> - </KernValue> - <KernValue index="2"> - <Value value="37"/> - </KernValue> - <KernValue index="3"> - <Value value="46"/> - </KernValue> - <KernValue index="4"> - <Value value="55"/> - </KernValue> - <KernValue index="5"> - <Value value="64"/> - </KernValue> - <KernValue index="6"> - <Value value="73"/> - </KernValue> - <KernValue index="7"> - <Value value="82"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="23"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="41"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="27"/> - </KernValue> - <KernValue index="1"> - <Value value="44"/> - </KernValue> - <KernValue index="2"> - <Value value="61"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="31"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="3"> - <TopRightMathKern> - <!-- HeightCount=4 --> - <CorrectionHeight index="0"> - <Value value="32"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="59"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="86"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="113"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="26"/> - </KernValue> - <KernValue index="1"> - <Value value="42"/> - </KernValue> - <KernValue index="2"> - <Value value="58"/> - </KernValue> - <KernValue index="3"> - <Value value="74"/> - </KernValue> - <KernValue index="4"> - <Value value="90"/> - </KernValue> - </TopRightMathKern> - <BottomRightMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="24"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="43"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="62"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="28"/> - </KernValue> - <KernValue index="1"> - <Value value="46"/> - </KernValue> - <KernValue index="2"> - <Value value="64"/> - </KernValue> - <KernValue index="3"> - <Value value="82"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="4"> - <TopRightMathKern> - <!-- HeightCount=5 --> - <CorrectionHeight index="0"> - <Value value="33"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="61"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="89"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="117"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="145"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="27"/> - </KernValue> - <KernValue index="1"> - <Value value="44"/> - </KernValue> - <KernValue index="2"> - <Value value="61"/> - </KernValue> - <KernValue index="3"> - <Value value="78"/> - </KernValue> - <KernValue index="4"> - <Value value="95"/> - </KernValue> - <KernValue index="5"> - <Value value="112"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="16"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="27"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="38"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="49"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="60"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="71"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="82"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="93"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="104"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="21"/> - </KernValue> - <KernValue index="1"> - <Value value="32"/> - </KernValue> - <KernValue index="2"> - <Value value="43"/> - </KernValue> - <KernValue index="3"> - <Value value="54"/> - </KernValue> - <KernValue index="4"> - <Value value="65"/> - </KernValue> - <KernValue index="5"> - <Value value="76"/> - </KernValue> - <KernValue index="6"> - <Value value="87"/> - </KernValue> - <KernValue index="7"> - <Value value="98"/> - </KernValue> - <KernValue index="8"> - <Value value="109"/> - </KernValue> - <KernValue index="9"> - <Value value="120"/> - </KernValue> - </TopLeftMathKern> - <BottomLeftMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="12"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="19"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="16"/> - </KernValue> - <KernValue index="1"> - <Value value="22"/> - </KernValue> - <KernValue index="2"> - <Value value="28"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="5"> - <BottomRightMathKern> - <!-- HeightCount=5 --> - <CorrectionHeight index="0"> - <Value value="26"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="47"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="68"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="89"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="110"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="30"/> - </KernValue> - <KernValue index="1"> - <Value value="50"/> - </KernValue> - <KernValue index="2"> - <Value value="70"/> - </KernValue> - <KernValue index="3"> - <Value value="90"/> - </KernValue> - <KernValue index="4"> - <Value value="110"/> - </KernValue> - <KernValue index="5"> - <Value value="130"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="6"> - <TopRightMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="12"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="19"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="26"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="33"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="40"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="47"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="54"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="29"/> - </KernValue> - <KernValue index="1"> - <Value value="48"/> - </KernValue> - <KernValue index="2"> - <Value value="67"/> - </KernValue> - <KernValue index="3"> - <Value value="86"/> - </KernValue> - <KernValue index="4"> - <Value value="105"/> - </KernValue> - <KernValue index="5"> - <Value value="124"/> - </KernValue> - <KernValue index="6"> - <Value value="143"/> - </KernValue> - <KernValue index="7"> - <Value value="162"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="23"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=6 --> - <CorrectionHeight index="0"> - <Value value="27"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="49"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="71"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="93"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="115"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="137"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="31"/> - </KernValue> - <KernValue index="1"> - <Value value="52"/> - </KernValue> - <KernValue index="2"> - <Value value="73"/> - </KernValue> - <KernValue index="3"> - <Value value="94"/> - </KernValue> - <KernValue index="4"> - <Value value="115"/> - </KernValue> - <KernValue index="5"> - <Value value="136"/> - </KernValue> - <KernValue index="6"> - <Value value="157"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=4 --> - <CorrectionHeight index="0"> - <Value value="14"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="23"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="32"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="41"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="18"/> - </KernValue> - <KernValue index="1"> - <Value value="26"/> - </KernValue> - <KernValue index="2"> - <Value value="34"/> - </KernValue> - <KernValue index="3"> - <Value value="42"/> - </KernValue> - <KernValue index="4"> - <Value value="50"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="7"> - <TopRightMathKern> - <!-- HeightCount=8 --> - <CorrectionHeight index="0"> - <Value value="13"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="21"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="29"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="37"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="45"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="53"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="61"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="69"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="30"/> - </KernValue> - <KernValue index="1"> - <Value value="50"/> - </KernValue> - <KernValue index="2"> - <Value value="70"/> - </KernValue> - <KernValue index="3"> - <Value value="90"/> - </KernValue> - <KernValue index="4"> - <Value value="110"/> - </KernValue> - <KernValue index="5"> - <Value value="130"/> - </KernValue> - <KernValue index="6"> - <Value value="150"/> - </KernValue> - <KernValue index="7"> - <Value value="170"/> - </KernValue> - <KernValue index="8"> - <Value value="190"/> - </KernValue> - </TopRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="8"> - <TopRightMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="14"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="23"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="32"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="41"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="50"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="59"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="68"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="77"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="86"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="31"/> - </KernValue> - <KernValue index="1"> - <Value value="52"/> - </KernValue> - <KernValue index="2"> - <Value value="73"/> - </KernValue> - <KernValue index="3"> - <Value value="94"/> - </KernValue> - <KernValue index="4"> - <Value value="115"/> - </KernValue> - <KernValue index="5"> - <Value value="136"/> - </KernValue> - <KernValue index="6"> - <Value value="157"/> - </KernValue> - <KernValue index="7"> - <Value value="178"/> - </KernValue> - <KernValue index="8"> - <Value value="199"/> - </KernValue> - <KernValue index="9"> - <Value value="220"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="20"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="35"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="25"/> - </KernValue> - <KernValue index="1"> - <Value value="40"/> - </KernValue> - <KernValue index="2"> - <Value value="55"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=8 --> - <CorrectionHeight index="0"> - <Value value="29"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="53"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="77"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="101"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="125"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="149"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="173"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="197"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="16"/> - </KernValue> - <KernValue index="1"> - <Value value="22"/> - </KernValue> - <KernValue index="2"> - <Value value="28"/> - </KernValue> - <KernValue index="3"> - <Value value="34"/> - </KernValue> - <KernValue index="4"> - <Value value="40"/> - </KernValue> - <KernValue index="5"> - <Value value="46"/> - </KernValue> - <KernValue index="6"> - <Value value="52"/> - </KernValue> - <KernValue index="7"> - <Value value="58"/> - </KernValue> - <KernValue index="8"> - <Value value="64"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=6 --> - <CorrectionHeight index="0"> - <Value value="16"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="27"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="38"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="49"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="60"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="71"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="20"/> - </KernValue> - <KernValue index="1"> - <Value value="30"/> - </KernValue> - <KernValue index="2"> - <Value value="40"/> - </KernValue> - <KernValue index="3"> - <Value value="50"/> - </KernValue> - <KernValue index="4"> - <Value value="60"/> - </KernValue> - <KernValue index="5"> - <Value value="70"/> - </KernValue> - <KernValue index="6"> - <Value value="80"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="9"> - <TopLeftMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="21"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="37"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="53"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="26"/> - </KernValue> - <KernValue index="1"> - <Value value="42"/> - </KernValue> - <KernValue index="2"> - <Value value="58"/> - </KernValue> - <KernValue index="3"> - <Value value="74"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="30"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="55"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="80"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="105"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="130"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="155"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="180"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="205"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="230"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="17"/> - </KernValue> - <KernValue index="1"> - <Value value="24"/> - </KernValue> - <KernValue index="2"> - <Value value="31"/> - </KernValue> - <KernValue index="3"> - <Value value="38"/> - </KernValue> - <KernValue index="4"> - <Value value="45"/> - </KernValue> - <KernValue index="5"> - <Value value="52"/> - </KernValue> - <KernValue index="6"> - <Value value="59"/> - </KernValue> - <KernValue index="7"> - <Value value="66"/> - </KernValue> - <KernValue index="8"> - <Value value="73"/> - </KernValue> - <KernValue index="9"> - <Value value="80"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="10"> - <TopLeftMathKern> - <!-- HeightCount=4 --> - <CorrectionHeight index="0"> - <Value value="22"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="39"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="56"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="73"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="27"/> - </KernValue> - <KernValue index="1"> - <Value value="44"/> - </KernValue> - <KernValue index="2"> - <Value value="61"/> - </KernValue> - <KernValue index="3"> - <Value value="78"/> - </KernValue> - <KernValue index="4"> - <Value value="95"/> - </KernValue> - </TopLeftMathKern> - <BottomLeftMathKern> - <!-- HeightCount=8 --> - <CorrectionHeight index="0"> - <Value value="18"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="31"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="44"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="57"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="70"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="83"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="96"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="109"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="22"/> - </KernValue> - <KernValue index="1"> - <Value value="34"/> - </KernValue> - <KernValue index="2"> - <Value value="46"/> - </KernValue> - <KernValue index="3"> - <Value value="58"/> - </KernValue> - <KernValue index="4"> - <Value value="70"/> - </KernValue> - <KernValue index="5"> - <Value value="82"/> - </KernValue> - <KernValue index="6"> - <Value value="94"/> - </KernValue> - <KernValue index="7"> - <Value value="106"/> - </KernValue> - <KernValue index="8"> - <Value value="118"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="11"> - <TopRightMathKern> - <!-- HeightCount=1 --> - <CorrectionHeight index="0"> - <Value value="17"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="17"/> - </KernValue> - <KernValue index="1"> - <Value value="24"/> - </KernValue> - </TopRightMathKern> - <BottomRightMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="19"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="12"> - <TopRightMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="18"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="31"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="18"/> - </KernValue> - <KernValue index="1"> - <Value value="26"/> - </KernValue> - <KernValue index="2"> - <Value value="34"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=6 --> - <CorrectionHeight index="0"> - <Value value="24"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="43"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="62"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="81"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="100"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="119"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="29"/> - </KernValue> - <KernValue index="1"> - <Value value="48"/> - </KernValue> - <KernValue index="2"> - <Value value="67"/> - </KernValue> - <KernValue index="3"> - <Value value="86"/> - </KernValue> - <KernValue index="4"> - <Value value="105"/> - </KernValue> - <KernValue index="5"> - <Value value="124"/> - </KernValue> - <KernValue index="6"> - <Value value="143"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=1 --> - <CorrectionHeight index="0"> - <Value value="33"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="20"/> - </KernValue> - <KernValue index="1"> - <Value value="30"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="13"> - <TopRightMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="19"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="33"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="47"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="19"/> - </KernValue> - <KernValue index="1"> - <Value value="28"/> - </KernValue> - <KernValue index="2"> - <Value value="37"/> - </KernValue> - <KernValue index="3"> - <Value value="46"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="25"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="45"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="65"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="85"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="105"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="125"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="145"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="30"/> - </KernValue> - <KernValue index="1"> - <Value value="50"/> - </KernValue> - <KernValue index="2"> - <Value value="70"/> - </KernValue> - <KernValue index="3"> - <Value value="90"/> - </KernValue> - <KernValue index="4"> - <Value value="110"/> - </KernValue> - <KernValue index="5"> - <Value value="130"/> - </KernValue> - <KernValue index="6"> - <Value value="150"/> - </KernValue> - <KernValue index="7"> - <Value value="170"/> - </KernValue> - </TopLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="14"> - <TopRightMathKern> - <!-- HeightCount=4 --> - <CorrectionHeight index="0"> - <Value value="20"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="35"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="50"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="65"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="20"/> - </KernValue> - <KernValue index="1"> - <Value value="30"/> - </KernValue> - <KernValue index="2"> - <Value value="40"/> - </KernValue> - <KernValue index="3"> - <Value value="50"/> - </KernValue> - <KernValue index="4"> - <Value value="60"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=8 --> - <CorrectionHeight index="0"> - <Value value="26"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="47"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="68"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="89"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="110"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="131"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="152"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="173"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="31"/> - </KernValue> - <KernValue index="1"> - <Value value="52"/> - </KernValue> - <KernValue index="2"> - <Value value="73"/> - </KernValue> - <KernValue index="3"> - <Value value="94"/> - </KernValue> - <KernValue index="4"> - <Value value="115"/> - </KernValue> - <KernValue index="5"> - <Value value="136"/> - </KernValue> - <KernValue index="6"> - <Value value="157"/> - </KernValue> - <KernValue index="7"> - <Value value="178"/> - </KernValue> - <KernValue index="8"> - <Value value="199"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="12"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="19"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="26"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="22"/> - </KernValue> - <KernValue index="1"> - <Value value="34"/> - </KernValue> - <KernValue index="2"> - <Value value="46"/> - </KernValue> - <KernValue index="3"> - <Value value="58"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=1 --> - <CorrectionHeight index="0"> - <Value value="22"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="26"/> - </KernValue> - <KernValue index="1"> - <Value value="42"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="15"> - <BottomRightMathKern> - <!-- HeightCount=4 --> - <CorrectionHeight index="0"> - <Value value="13"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="21"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="29"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="37"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="23"/> - </KernValue> - <KernValue index="1"> - <Value value="36"/> - </KernValue> - <KernValue index="2"> - <Value value="49"/> - </KernValue> - <KernValue index="3"> - <Value value="62"/> - </KernValue> - <KernValue index="4"> - <Value value="75"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="16"> - <TopRightMathKern> - <!-- HeightCount=6 --> - <CorrectionHeight index="0"> - <Value value="22"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="39"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="56"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="73"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="90"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="107"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="22"/> - </KernValue> - <KernValue index="1"> - <Value value="34"/> - </KernValue> - <KernValue index="2"> - <Value value="46"/> - </KernValue> - <KernValue index="3"> - <Value value="58"/> - </KernValue> - <KernValue index="4"> - <Value value="70"/> - </KernValue> - <KernValue index="5"> - <Value value="82"/> - </KernValue> - <KernValue index="6"> - <Value value="94"/> - </KernValue> - </TopRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="24"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="43"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="62"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="28"/> - </KernValue> - <KernValue index="1"> - <Value value="46"/> - </KernValue> - <KernValue index="2"> - <Value value="64"/> - </KernValue> - <KernValue index="3"> - <Value value="82"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="17"> - <TopRightMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="23"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="41"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="59"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="77"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="95"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="113"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="131"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="23"/> - </KernValue> - <KernValue index="1"> - <Value value="36"/> - </KernValue> - <KernValue index="2"> - <Value value="49"/> - </KernValue> - <KernValue index="3"> - <Value value="62"/> - </KernValue> - <KernValue index="4"> - <Value value="75"/> - </KernValue> - <KernValue index="5"> - <Value value="88"/> - </KernValue> - <KernValue index="6"> - <Value value="101"/> - </KernValue> - <KernValue index="7"> - <Value value="114"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="17"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=6 --> - <CorrectionHeight index="0"> - <Value value="15"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="25"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="35"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="45"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="55"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="65"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="25"/> - </KernValue> - <KernValue index="1"> - <Value value="40"/> - </KernValue> - <KernValue index="2"> - <Value value="55"/> - </KernValue> - <KernValue index="3"> - <Value value="70"/> - </KernValue> - <KernValue index="4"> - <Value value="85"/> - </KernValue> - <KernValue index="5"> - <Value value="100"/> - </KernValue> - <KernValue index="6"> - <Value value="115"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="18"> - <TopRightMathKern> - <!-- HeightCount=8 --> - <CorrectionHeight index="0"> - <Value value="24"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="43"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="62"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="81"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="100"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="119"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="138"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="157"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="24"/> - </KernValue> - <KernValue index="1"> - <Value value="38"/> - </KernValue> - <KernValue index="2"> - <Value value="52"/> - </KernValue> - <KernValue index="3"> - <Value value="66"/> - </KernValue> - <KernValue index="4"> - <Value value="80"/> - </KernValue> - <KernValue index="5"> - <Value value="94"/> - </KernValue> - <KernValue index="6"> - <Value value="108"/> - </KernValue> - <KernValue index="7"> - <Value value="122"/> - </KernValue> - <KernValue index="8"> - <Value value="136"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=1 --> - <CorrectionHeight index="0"> - <Value value="30"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="18"/> - </KernValue> - <KernValue index="1"> - <Value value="26"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="16"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="27"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="38"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="49"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="60"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="71"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="82"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="26"/> - </KernValue> - <KernValue index="1"> - <Value value="42"/> - </KernValue> - <KernValue index="2"> - <Value value="58"/> - </KernValue> - <KernValue index="3"> - <Value value="74"/> - </KernValue> - <KernValue index="4"> - <Value value="90"/> - </KernValue> - <KernValue index="5"> - <Value value="106"/> - </KernValue> - <KernValue index="6"> - <Value value="122"/> - </KernValue> - <KernValue index="7"> - <Value value="138"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=5 --> - <CorrectionHeight index="0"> - <Value value="26"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="47"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="68"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="89"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="110"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="30"/> - </KernValue> - <KernValue index="1"> - <Value value="50"/> - </KernValue> - <KernValue index="2"> - <Value value="70"/> - </KernValue> - <KernValue index="3"> - <Value value="90"/> - </KernValue> - <KernValue index="4"> - <Value value="110"/> - </KernValue> - <KernValue index="5"> - <Value value="130"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="19"> - <TopRightMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="25"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="45"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="65"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="85"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="105"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="125"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="145"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="165"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="185"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="25"/> - </KernValue> - <KernValue index="1"> - <Value value="40"/> - </KernValue> - <KernValue index="2"> - <Value value="55"/> - </KernValue> - <KernValue index="3"> - <Value value="70"/> - </KernValue> - <KernValue index="4"> - <Value value="85"/> - </KernValue> - <KernValue index="5"> - <Value value="100"/> - </KernValue> - <KernValue index="6"> - <Value value="115"/> - </KernValue> - <KernValue index="7"> - <Value value="130"/> - </KernValue> - <KernValue index="8"> - <Value value="145"/> - </KernValue> - <KernValue index="9"> - <Value value="160"/> - </KernValue> - </TopRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="20"> - <TopLeftMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="32"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="59"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="86"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="20"/> - </KernValue> - <KernValue index="1"> - <Value value="30"/> - </KernValue> - <KernValue index="2"> - <Value value="40"/> - </KernValue> - <KernValue index="3"> - <Value value="50"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="18"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="31"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="44"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="57"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="70"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="83"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="96"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="109"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="122"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="28"/> - </KernValue> - <KernValue index="1"> - <Value value="46"/> - </KernValue> - <KernValue index="2"> - <Value value="64"/> - </KernValue> - <KernValue index="3"> - <Value value="82"/> - </KernValue> - <KernValue index="4"> - <Value value="100"/> - </KernValue> - <KernValue index="5"> - <Value value="118"/> - </KernValue> - <KernValue index="6"> - <Value value="136"/> - </KernValue> - <KernValue index="7"> - <Value value="154"/> - </KernValue> - <KernValue index="8"> - <Value value="172"/> - </KernValue> - <KernValue index="9"> - <Value value="190"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="28"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="51"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="74"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="97"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="120"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="143"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="166"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="15"/> - </KernValue> - <KernValue index="1"> - <Value value="20"/> - </KernValue> - <KernValue index="2"> - <Value value="25"/> - </KernValue> - <KernValue index="3"> - <Value value="30"/> - </KernValue> - <KernValue index="4"> - <Value value="35"/> - </KernValue> - <KernValue index="5"> - <Value value="40"/> - </KernValue> - <KernValue index="6"> - <Value value="45"/> - </KernValue> - <KernValue index="7"> - <Value value="50"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="21"> - <TopRightMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="27"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=4 --> - <CorrectionHeight index="0"> - <Value value="33"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="61"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="89"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="117"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="21"/> - </KernValue> - <KernValue index="1"> - <Value value="32"/> - </KernValue> - <KernValue index="2"> - <Value value="43"/> - </KernValue> - <KernValue index="3"> - <Value value="54"/> - </KernValue> - <KernValue index="4"> - <Value value="65"/> - </KernValue> - </TopLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="22"> - <TopRightMathKern> - <!-- HeightCount=1 --> - <CorrectionHeight index="0"> - <Value value="28"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="28"/> - </KernValue> - <KernValue index="1"> - <Value value="46"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=5 --> - <CorrectionHeight index="0"> - <Value value="34"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="63"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="92"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="121"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="150"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="22"/> - </KernValue> - <KernValue index="1"> - <Value value="34"/> - </KernValue> - <KernValue index="2"> - <Value value="46"/> - </KernValue> - <KernValue index="3"> - <Value value="58"/> - </KernValue> - <KernValue index="4"> - <Value value="70"/> - </KernValue> - <KernValue index="5"> - <Value value="82"/> - </KernValue> - </TopLeftMathKern> - <BottomLeftMathKern> - <!-- HeightCount=9 --> - <CorrectionHeight index="0"> - <Value value="30"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="55"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="80"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="105"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="130"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="155"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="180"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="205"/> - </CorrectionHeight> - <CorrectionHeight index="8"> - <Value value="230"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="17"/> - </KernValue> - <KernValue index="1"> - <Value value="24"/> - </KernValue> - <KernValue index="2"> - <Value value="31"/> - </KernValue> - <KernValue index="3"> - <Value value="38"/> - </KernValue> - <KernValue index="4"> - <Value value="45"/> - </KernValue> - <KernValue index="5"> - <Value value="52"/> - </KernValue> - <KernValue index="6"> - <Value value="59"/> - </KernValue> - <KernValue index="7"> - <Value value="66"/> - </KernValue> - <KernValue index="8"> - <Value value="73"/> - </KernValue> - <KernValue index="9"> - <Value value="80"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="23"> - <TopRightMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="29"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="53"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="29"/> - </KernValue> - <KernValue index="1"> - <Value value="48"/> - </KernValue> - <KernValue index="2"> - <Value value="67"/> - </KernValue> - </TopRightMathKern> - <BottomRightMathKern> - <!-- HeightCount=1 --> - <CorrectionHeight index="0"> - <Value value="21"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="31"/> - </KernValue> - <KernValue index="1"> - <Value value="52"/> - </KernValue> - </BottomRightMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="24"> - <TopRightMathKern> - <!-- HeightCount=3 --> - <CorrectionHeight index="0"> - <Value value="30"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="55"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="80"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="30"/> - </KernValue> - <KernValue index="1"> - <Value value="50"/> - </KernValue> - <KernValue index="2"> - <Value value="70"/> - </KernValue> - <KernValue index="3"> - <Value value="90"/> - </KernValue> - </TopRightMathKern> - <TopLeftMathKern> - <!-- HeightCount=7 --> - <CorrectionHeight index="0"> - <Value value="13"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="21"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="29"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="37"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="45"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="53"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="61"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="24"/> - </KernValue> - <KernValue index="1"> - <Value value="38"/> - </KernValue> - <KernValue index="2"> - <Value value="52"/> - </KernValue> - <KernValue index="3"> - <Value value="66"/> - </KernValue> - <KernValue index="4"> - <Value value="80"/> - </KernValue> - <KernValue index="5"> - <Value value="94"/> - </KernValue> - <KernValue index="6"> - <Value value="108"/> - </KernValue> - <KernValue index="7"> - <Value value="122"/> - </KernValue> - </TopLeftMathKern> - <BottomRightMathKern> - <!-- HeightCount=2 --> - <CorrectionHeight index="0"> - <Value value="22"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="39"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="15"/> - </KernValue> - <KernValue index="1"> - <Value value="20"/> - </KernValue> - <KernValue index="2"> - <Value value="25"/> - </KernValue> - </BottomRightMathKern> - <BottomLeftMathKern> - <!-- HeightCount=0 --> - <KernValue index="0"> - <Value value="19"/> - </KernValue> - </BottomLeftMathKern> - </MathKernInfoRecords> - <MathKernInfoRecords index="25"> - <TopLeftMathKern> - <!-- HeightCount=8 --> - <CorrectionHeight index="0"> - <Value value="14"/> - </CorrectionHeight> - <CorrectionHeight index="1"> - <Value value="23"/> - </CorrectionHeight> - <CorrectionHeight index="2"> - <Value value="32"/> - </CorrectionHeight> - <CorrectionHeight index="3"> - <Value value="41"/> - </CorrectionHeight> - <CorrectionHeight index="4"> - <Value value="50"/> - </CorrectionHeight> - <CorrectionHeight index="5"> - <Value value="59"/> - </CorrectionHeight> - <CorrectionHeight index="6"> - <Value value="68"/> - </CorrectionHeight> - <CorrectionHeight index="7"> - <Value value="77"/> - </CorrectionHeight> - <KernValue index="0"> - <Value value="25"/> - </KernValue> - <KernValue index="1"> - <Value value="40"/> - </KernValue> - <KernValue index="2"> - <Value value="55"/> - </KernValue> - <KernValue index="3"> - <Value value="70"/> - </KernValue> - <KernValue index="4"> - <Value value="85"/> - </KernValue> - <KernValue index="5"> - <Value value="100"/> - </KernValue> - <KernValue index="6"> - <Value value="115"/> - </KernValue> - <KernValue index="7"> - <Value value="130"/> - </KernValue> - <KernValue index="8"> - <Value value="145"/> - </KernValue> - </TopLeftMathKern> - </MathKernInfoRecords> - </MathKernInfo> - </MathGlyphInfo> - <MathVariants> - <MinConnectorOverlap value="54"/> - <VertGlyphCoverage Format="1"> - <Glyph value="arrowup"/> - <Glyph value="arrowdown"/> - <Glyph value="arrowupdn"/> - <Glyph value="uni21A5"/> - <Glyph value="uni21A7"/> - <Glyph value="uni21C8"/> - <Glyph value="uni21CA"/> - <Glyph value="arrowdblup"/> - <Glyph value="arrowdbldown"/> - <Glyph value="uni21D5"/> - <Glyph value="uni21E7"/> - <Glyph value="uni21E9"/> - </VertGlyphCoverage> - <HorizGlyphCoverage Format="1"> - <Glyph value="arrowleft"/> - <Glyph value="arrowright"/> - <Glyph value="arrowboth"/> - <Glyph value="uni21A4"/> - <Glyph value="uni21A6"/> - <Glyph value="uni21C7"/> - <Glyph value="uni21C9"/> - <Glyph value="arrowdblleft"/> - <Glyph value="arrowdblright"/> - <Glyph value="arrowdblboth"/> - <Glyph value="uni21E6"/> - <Glyph value="uni21E8"/> - </HorizGlyphCoverage> - <!-- VertGlyphCount=12 --> - <!-- HorizGlyphCount=12 --> - <VertGlyphConstruction index="0"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="331"/> - </ItalicsCorrection> - <!-- PartCount=2 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=4 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni2191_size2"/> - <AdvanceMeasurement value="2251"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni2191_size3"/> - <AdvanceMeasurement value="2501"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni2191_size4"/> - <AdvanceMeasurement value="3001"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni2191_size5"/> - <AdvanceMeasurement value="3751"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="1"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="237"/> - </ItalicsCorrection> - <!-- PartCount=5 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="top"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=6 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni2193_size2"/> - <AdvanceMeasurement value="2451"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni2193_size3"/> - <AdvanceMeasurement value="2701"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni2193_size4"/> - <AdvanceMeasurement value="3201"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni2193_size5"/> - <AdvanceMeasurement value="3951"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni2193_size6"/> - <AdvanceMeasurement value="4201"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="5"> - <VariantGlyph value="uni2193_size7"/> - <AdvanceMeasurement value="4701"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="2"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="143"/> - </ItalicsCorrection> - <!-- PartCount=9 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="vertical"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="vertical"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="top"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=1 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni2195_size2"/> - <AdvanceMeasurement value="2651"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="3"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="438"/> - </ItalicsCorrection> - <!-- PartCount=9 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="top"/> - <StartConnectorLength value="262"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=3 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21A5_size2"/> - <AdvanceMeasurement value="2351"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21A5_size3"/> - <AdvanceMeasurement value="2601"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21A5_size4"/> - <AdvanceMeasurement value="3101"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="4"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="344"/> - </ItalicsCorrection> - <!-- PartCount=13 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="vertical"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="vertical"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="center"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="9"> - <glyph value="vertical"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="10"> - <glyph value="center"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="11"> - <glyph value="vertical"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="12"> - <glyph value="top"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=5 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21A7_size2"/> - <AdvanceMeasurement value="2551"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21A7_size3"/> - <AdvanceMeasurement value="2801"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21A7_size4"/> - <AdvanceMeasurement value="3301"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21A7_size5"/> - <AdvanceMeasurement value="4051"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni21A7_size6"/> - <AdvanceMeasurement value="4301"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="5"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="189"/> - </ItalicsCorrection> - <!-- PartCount=1 --> - <PartRecords index="0"> - <glyph value="vertical"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=3 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21C8_size2"/> - <AdvanceMeasurement value="2051"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21C8_size3"/> - <AdvanceMeasurement value="2301"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21C8_size4"/> - <AdvanceMeasurement value="2801"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="6"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="444"/> - </ItalicsCorrection> - <!-- PartCount=3 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="top"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=5 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21CA_size2"/> - <AdvanceMeasurement value="2251"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21CA_size3"/> - <AdvanceMeasurement value="2501"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21CA_size4"/> - <AdvanceMeasurement value="3001"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21CA_size5"/> - <AdvanceMeasurement value="3751"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni21CA_size6"/> - <AdvanceMeasurement value="4001"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="7"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="115"/> - </ItalicsCorrection> - <!-- PartCount=2 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=5 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21D1_size2"/> - <AdvanceMeasurement value="2951"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21D1_size3"/> - <AdvanceMeasurement value="3201"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21D1_size4"/> - <AdvanceMeasurement value="3701"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21D1_size5"/> - <AdvanceMeasurement value="4451"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni21D1_size6"/> - <AdvanceMeasurement value="4701"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="8"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="370"/> - </ItalicsCorrection> - <!-- PartCount=5 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="top"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=0 --> - </VertGlyphConstruction> - <VertGlyphConstruction index="9"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="276"/> - </ItalicsCorrection> - <!-- PartCount=9 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="vertical"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="vertical"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="top"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=2 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21D5_size2"/> - <AdvanceMeasurement value="3351"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21D5_size3"/> - <AdvanceMeasurement value="3601"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="10"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="128"/> - </ItalicsCorrection> - <!-- PartCount=13 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="9"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="10"> - <glyph value="center"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="11"> - <glyph value="vertical"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="12"> - <glyph value="top"/> - <StartConnectorLength value="262"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=6 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21E7_size2"/> - <AdvanceMeasurement value="3251"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21E7_size3"/> - <AdvanceMeasurement value="3501"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21E7_size4"/> - <AdvanceMeasurement value="4001"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21E7_size5"/> - <AdvanceMeasurement value="4751"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni21E7_size6"/> - <AdvanceMeasurement value="5001"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="5"> - <VariantGlyph value="uni21E7_size7"/> - <AdvanceMeasurement value="5501"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <VertGlyphConstruction index="11"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="383"/> - </ItalicsCorrection> - <!-- PartCount=2 --> - <PartRecords index="0"> - <glyph value="bottom"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="vertical"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="54"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=1 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21E9_size2"/> - <AdvanceMeasurement value="3451"/> - </MathGlyphVariantRecord> - </VertGlyphConstruction> - <HorizGlyphConstruction index="0"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="124"/> - </ItalicsCorrection> - <!-- PartCount=1 --> - <PartRecords index="0"> - <glyph value="horizontal"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=3 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni2190_size2"/> - <AdvanceMeasurement value="2151"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni2190_size3"/> - <AdvanceMeasurement value="2401"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni2190_size4"/> - <AdvanceMeasurement value="2901"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="1"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="379"/> - </ItalicsCorrection> - <!-- PartCount=3 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="262"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="right"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=5 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni2192_size2"/> - <AdvanceMeasurement value="2351"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni2192_size3"/> - <AdvanceMeasurement value="2601"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni2192_size4"/> - <AdvanceMeasurement value="3101"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni2192_size5"/> - <AdvanceMeasurement value="3851"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni2192_size6"/> - <AdvanceMeasurement value="4101"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="2"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="285"/> - </ItalicsCorrection> - <!-- PartCount=7 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="horizontal"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="123"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="horizontal"/> - <StartConnectorLength value="365"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="right"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=0 --> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="3"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="231"/> - </ItalicsCorrection> - <!-- PartCount=7 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="right"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=2 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21A4_size2"/> - <AdvanceMeasurement value="2251"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21A4_size3"/> - <AdvanceMeasurement value="2501"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="4"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="137"/> - </ItalicsCorrection> - <!-- PartCount=11 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="9"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="10"> - <glyph value="right"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=4 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21A6_size2"/> - <AdvanceMeasurement value="2451"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21A6_size3"/> - <AdvanceMeasurement value="2701"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21A6_size4"/> - <AdvanceMeasurement value="3201"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21A6_size5"/> - <AdvanceMeasurement value="3951"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="5"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="331"/> - </ItalicsCorrection> - <!-- PartCount=13 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="9"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="10"> - <glyph value="center"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="11"> - <glyph value="horizontal"/> - <StartConnectorLength value="123"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="12"> - <glyph value="right"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=2 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21C7_size2"/> - <AdvanceMeasurement value="1951"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21C7_size3"/> - <AdvanceMeasurement value="2201"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="6"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="237"/> - </ItalicsCorrection> - <!-- PartCount=2 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="262"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=4 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21C9_size2"/> - <AdvanceMeasurement value="2151"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21C9_size3"/> - <AdvanceMeasurement value="2401"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21C9_size4"/> - <AdvanceMeasurement value="2901"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21C9_size5"/> - <AdvanceMeasurement value="3651"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="7"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="257"/> - </ItalicsCorrection> - <!-- PartCount=1 --> - <PartRecords index="0"> - <glyph value="horizontal"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=4 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21D0_size2"/> - <AdvanceMeasurement value="2851"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21D0_size3"/> - <AdvanceMeasurement value="3101"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21D0_size4"/> - <AdvanceMeasurement value="3601"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21D0_size5"/> - <AdvanceMeasurement value="4351"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="8"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="163"/> - </ItalicsCorrection> - <!-- PartCount=3 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="262"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="right"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="296"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=6 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21D2_size2"/> - <AdvanceMeasurement value="3051"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21D2_size3"/> - <AdvanceMeasurement value="3301"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21D2_size4"/> - <AdvanceMeasurement value="3801"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21D2_size5"/> - <AdvanceMeasurement value="4551"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni21D2_size6"/> - <AdvanceMeasurement value="4801"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="5"> - <VariantGlyph value="uni21D2_size7"/> - <AdvanceMeasurement value="5301"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="9"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="418"/> - </ItalicsCorrection> - <!-- PartCount=7 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="262"/> - <EndConnectorLength value="400"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="horizontal"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="89"/> - <EndConnectorLength value="192"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="horizontal"/> - <StartConnectorLength value="54"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="right"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="227"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=1 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21D4_size2"/> - <AdvanceMeasurement value="3251"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="10"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="270"/> - </ItalicsCorrection> - <!-- PartCount=11 --> - <PartRecords index="0"> - <glyph value="left"/> - <StartConnectorLength value="158"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="1"> - <glyph value="horizontal"/> - <StartConnectorLength value="400"/> - <EndConnectorLength value="158"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="2"> - <glyph value="center"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="3"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="4"> - <glyph value="center"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="5"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="6"> - <glyph value="center"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="7"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="8"> - <glyph value="center"/> - <StartConnectorLength value="227"/> - <EndConnectorLength value="331"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - <PartRecords index="9"> - <glyph value="horizontal"/> - <StartConnectorLength value="192"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - <PartRecords index="10"> - <glyph value="right"/> - <StartConnectorLength value="296"/> - <EndConnectorLength value="365"/> - <FullAdvance value="1000"/> - <PartFlags value="0"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=5 --> - <MathGlyphVariantRecord index="0"> - <VariantGlyph value="uni21E6_size2"/> - <AdvanceMeasurement value="3151"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="1"> - <VariantGlyph value="uni21E6_size3"/> - <AdvanceMeasurement value="3401"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="2"> - <VariantGlyph value="uni21E6_size4"/> - <AdvanceMeasurement value="3901"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="3"> - <VariantGlyph value="uni21E6_size5"/> - <AdvanceMeasurement value="4651"/> - </MathGlyphVariantRecord> - <MathGlyphVariantRecord index="4"> - <VariantGlyph value="uni21E6_size6"/> - <AdvanceMeasurement value="4901"/> - </MathGlyphVariantRecord> - </HorizGlyphConstruction> - <HorizGlyphConstruction index="11"> - <GlyphAssembly> - <ItalicsCorrection> - <Value value="176"/> - </ItalicsCorrection> - <!-- PartCount=1 --> - <PartRecords index="0"> - <glyph value="horizontal"/> - <StartConnectorLength value="331"/> - <EndConnectorLength value="89"/> - <FullAdvance value="1000"/> - <PartFlags value="1"/> - </PartRecords> - </GlyphAssembly> - <!-- VariantCount=0 --> - </HorizGlyphConstruction> - </MathVariants> - </MATH> - - <hmtx> - <mtx name=".notdef" width="1000" lsb="0"/> - <mtx name="A" width="1000" lsb="0"/> - <mtx name="B" width="1000" lsb="0"/> - <mtx name="C" width="1000" lsb="0"/> - <mtx name="D" width="1000" lsb="0"/> - <mtx name="E" width="1000" lsb="0"/> - <mtx name="F" width="1000" lsb="0"/> - <mtx name="G" width="1000" lsb="0"/> - <mtx name="H" width="1000" lsb="0"/> - <mtx name="I" width="1000" lsb="0"/> - <mtx name="J" width="1000" lsb="0"/> - <mtx name="K" width="1000" lsb="0"/> - <mtx name="L" width="1000" lsb="0"/> - <mtx name="M" width="1000" lsb="0"/> - <mtx name="N" width="1000" lsb="0"/> - <mtx name="O" width="1000" lsb="0"/> - <mtx name="P" width="1000" lsb="0"/> - <mtx name="Q" width="1000" lsb="0"/> - <mtx name="R" width="1000" lsb="0"/> - <mtx name="S" width="1000" lsb="0"/> - <mtx name="T" width="1000" lsb="0"/> - <mtx name="U" width="1000" lsb="0"/> - <mtx name="V" width="1000" lsb="0"/> - <mtx name="W" width="1000" lsb="0"/> - <mtx name="X" width="1000" lsb="0"/> - <mtx name="Y" width="1000" lsb="0"/> - <mtx name="Z" width="1000" lsb="0"/> - <mtx name="arrowboth" width="1000" lsb="0"/> - <mtx name="arrowdblboth" width="1000" lsb="0"/> - <mtx name="arrowdbldown" width="1000" lsb="0"/> - <mtx name="arrowdblleft" width="1000" lsb="0"/> - <mtx name="arrowdblright" width="1000" lsb="0"/> - <mtx name="arrowdblup" width="1000" lsb="0"/> - <mtx name="arrowdown" width="1000" lsb="0"/> - <mtx name="arrowleft" width="1000" lsb="0"/> - <mtx name="arrowright" width="1000" lsb="0"/> - <mtx name="arrowup" width="1000" lsb="0"/> - <mtx name="arrowupdn" width="1000" lsb="0"/> - <mtx name="bottom" width="1000" lsb="0"/> - <mtx name="braceleft" width="1000" lsb="0"/> - <mtx name="center" width="1000" lsb="0"/> - <mtx name="horizontal" width="1000" lsb="0"/> - <mtx name="left" width="1000" lsb="0"/> - <mtx name="right" width="1000" lsb="0"/> - <mtx name="space" width="1000" lsb="0"/> - <mtx name="top" width="1000" lsb="0"/> - <mtx name="underscore" width="1000" lsb="0"/> - <mtx name="uni2190_size2" width="1000" lsb="0"/> - <mtx name="uni2190_size3" width="1000" lsb="0"/> - <mtx name="uni2190_size4" width="1000" lsb="0"/> - <mtx name="uni2191_size2" width="1000" lsb="0"/> - <mtx name="uni2191_size3" width="1000" lsb="0"/> - <mtx name="uni2191_size4" width="1000" lsb="0"/> - <mtx name="uni2191_size5" width="1000" lsb="0"/> - <mtx name="uni2192_size2" width="1000" lsb="0"/> - <mtx name="uni2192_size3" width="1000" lsb="0"/> - <mtx name="uni2192_size4" width="1000" lsb="0"/> - <mtx name="uni2192_size5" width="1000" lsb="0"/> - <mtx name="uni2192_size6" width="1000" lsb="0"/> - <mtx name="uni2193_size2" width="1000" lsb="0"/> - <mtx name="uni2193_size3" width="1000" lsb="0"/> - <mtx name="uni2193_size4" width="1000" lsb="0"/> - <mtx name="uni2193_size5" width="1000" lsb="0"/> - <mtx name="uni2193_size6" width="1000" lsb="0"/> - <mtx name="uni2193_size7" width="1000" lsb="0"/> - <mtx name="uni2195_size2" width="1000" lsb="0"/> - <mtx name="uni21A4" width="1000" lsb="0"/> - <mtx name="uni21A4_size2" width="1000" lsb="0"/> - <mtx name="uni21A4_size3" width="1000" lsb="0"/> - <mtx name="uni21A5" width="1000" lsb="0"/> - <mtx name="uni21A5_size2" width="1000" lsb="0"/> - <mtx name="uni21A5_size3" width="1000" lsb="0"/> - <mtx name="uni21A5_size4" width="1000" lsb="0"/> - <mtx name="uni21A6" width="1000" lsb="0"/> - <mtx name="uni21A6_size2" width="1000" lsb="0"/> - <mtx name="uni21A6_size3" width="1000" lsb="0"/> - <mtx name="uni21A6_size4" width="1000" lsb="0"/> - <mtx name="uni21A6_size5" width="1000" lsb="0"/> - <mtx name="uni21A7" width="1000" lsb="0"/> - <mtx name="uni21A7_size2" width="1000" lsb="0"/> - <mtx name="uni21A7_size3" width="1000" lsb="0"/> - <mtx name="uni21A7_size4" width="1000" lsb="0"/> - <mtx name="uni21A7_size5" width="1000" lsb="0"/> - <mtx name="uni21A7_size6" width="1000" lsb="0"/> - <mtx name="uni21C7" width="1000" lsb="0"/> - <mtx name="uni21C7_size2" width="1000" lsb="0"/> - <mtx name="uni21C7_size3" width="1000" lsb="0"/> - <mtx name="uni21C8" width="1000" lsb="0"/> - <mtx name="uni21C8_size2" width="1000" lsb="0"/> - <mtx name="uni21C8_size3" width="1000" lsb="0"/> - <mtx name="uni21C8_size4" width="1000" lsb="0"/> - <mtx name="uni21C9" width="1000" lsb="0"/> - <mtx name="uni21C9_size2" width="1000" lsb="0"/> - <mtx name="uni21C9_size3" width="1000" lsb="0"/> - <mtx name="uni21C9_size4" width="1000" lsb="0"/> - <mtx name="uni21C9_size5" width="1000" lsb="0"/> - <mtx name="uni21CA" width="1000" lsb="0"/> - <mtx name="uni21CA_size2" width="1000" lsb="0"/> - <mtx name="uni21CA_size3" width="1000" lsb="0"/> - <mtx name="uni21CA_size4" width="1000" lsb="0"/> - <mtx name="uni21CA_size5" width="1000" lsb="0"/> - <mtx name="uni21CA_size6" width="1000" lsb="0"/> - <mtx name="uni21D0_size2" width="1000" lsb="0"/> - <mtx name="uni21D0_size3" width="1000" lsb="0"/> - <mtx name="uni21D0_size4" width="1000" lsb="0"/> - <mtx name="uni21D0_size5" width="1000" lsb="0"/> - <mtx name="uni21D1_size2" width="1000" lsb="0"/> - <mtx name="uni21D1_size3" width="1000" lsb="0"/> - <mtx name="uni21D1_size4" width="1000" lsb="0"/> - <mtx name="uni21D1_size5" width="1000" lsb="0"/> - <mtx name="uni21D1_size6" width="1000" lsb="0"/> - <mtx name="uni21D2_size2" width="1000" lsb="0"/> - <mtx name="uni21D2_size3" width="1000" lsb="0"/> - <mtx name="uni21D2_size4" width="1000" lsb="0"/> - <mtx name="uni21D2_size5" width="1000" lsb="0"/> - <mtx name="uni21D2_size6" width="1000" lsb="0"/> - <mtx name="uni21D2_size7" width="1000" lsb="0"/> - <mtx name="uni21D4_size2" width="1000" lsb="0"/> - <mtx name="uni21D5" width="1000" lsb="0"/> - <mtx name="uni21D5_size2" width="1000" lsb="0"/> - <mtx name="uni21D5_size3" width="1000" lsb="0"/> - <mtx name="uni21E6" width="1000" lsb="0"/> - <mtx name="uni21E6_size2" width="1000" lsb="0"/> - <mtx name="uni21E6_size3" width="1000" lsb="0"/> - <mtx name="uni21E6_size4" width="1000" lsb="0"/> - <mtx name="uni21E6_size5" width="1000" lsb="0"/> - <mtx name="uni21E6_size6" width="1000" lsb="0"/> - <mtx name="uni21E7" width="1000" lsb="0"/> - <mtx name="uni21E7_size2" width="1000" lsb="0"/> - <mtx name="uni21E7_size3" width="1000" lsb="0"/> - <mtx name="uni21E7_size4" width="1000" lsb="0"/> - <mtx name="uni21E7_size5" width="1000" lsb="0"/> - <mtx name="uni21E7_size6" width="1000" lsb="0"/> - <mtx name="uni21E7_size7" width="1000" lsb="0"/> - <mtx name="uni21E8" width="1000" lsb="0"/> - <mtx name="uni21E9" width="1000" lsb="0"/> - <mtx name="uni21E9_size2" width="1000" lsb="0"/> - <mtx name="uni23A7" width="1000" lsb="0"/> - <mtx name="uni23A8" width="1000" lsb="0"/> - <mtx name="uni23A9" width="1000" lsb="0"/> - <mtx name="uni23AA" width="1000" lsb="0"/> - <mtx name="vertical" width="1000" lsb="400"/> - </hmtx> - -</ttFont> diff --git a/test/api/fonts/README b/test/api/fonts/README index 7e7783c..4830c47 100644 --- a/test/api/fonts/README +++ b/test/api/fonts/README @@ -1,3 +1,5 @@ cmap-format12-only files created by ttx & remove all other cmap entries Inconsolata-Regular.abc.widerc.ttf has the hmtx width of "c" set to 600; everything else is 500. Subsetting out c should reduce numberOfHMetrics to 1. + +chromacheck-* fonts are from https://github.com/RoelN/ChromaCheck/tree/master/fonts and licensed under MIT by Roel Nieskens and Google. diff --git a/test/api/fonts/Roboto-Regular.multihdmx.a.ttf b/test/api/fonts/Roboto-Regular.multihdmx.a.ttf Binary files differnew file mode 100644 index 0000000..dd82178 --- /dev/null +++ b/test/api/fonts/Roboto-Regular.multihdmx.a.ttf diff --git a/test/api/fonts/Roboto-Regular.multihdmx.abc.ttf b/test/api/fonts/Roboto-Regular.multihdmx.abc.ttf Binary files differnew file mode 100644 index 0000000..03dd8b6 --- /dev/null +++ b/test/api/fonts/Roboto-Regular.multihdmx.abc.ttf diff --git a/test/api/fonts/SourceHanSans-Regular.41,3041,4C2E.otf b/test/api/fonts/SourceHanSans-Regular.41,3041,4C2E.otf Binary files differnew file mode 100644 index 0000000..08bc0e0 --- /dev/null +++ b/test/api/fonts/SourceHanSans-Regular.41,3041,4C2E.otf diff --git a/test/api/fonts/SourceHanSans-Regular.41,4C2E.nohints.otf b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nohints.otf Binary files differnew file mode 100644 index 0000000..ec39590 --- /dev/null +++ b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nohints.otf diff --git a/test/api/fonts/SourceHanSans-Regular.41,4C2E.nosubrs.nohints.otf b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nosubrs.nohints.otf Binary files differnew file mode 100644 index 0000000..00a112f --- /dev/null +++ b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nosubrs.nohints.otf diff --git a/test/api/fonts/SourceHanSans-Regular.41,4C2E.nosubrs.otf b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nosubrs.otf Binary files differnew file mode 100644 index 0000000..6fe9bf3 --- /dev/null +++ b/test/api/fonts/SourceHanSans-Regular.41,4C2E.nosubrs.otf diff --git a/test/api/fonts/SourceHanSans-Regular.41,4C2E.otf b/test/api/fonts/SourceHanSans-Regular.41,4C2E.otf Binary files differnew file mode 100644 index 0000000..2c6cd9a --- /dev/null +++ b/test/api/fonts/SourceHanSans-Regular.41,4C2E.otf diff --git a/test/api/fonts/SourceSansPro-Regular.abc.otf b/test/api/fonts/SourceSansPro-Regular.abc.otf Binary files differnew file mode 100644 index 0000000..7f51bd3 --- /dev/null +++ b/test/api/fonts/SourceSansPro-Regular.abc.otf diff --git a/test/api/fonts/SourceSansPro-Regular.ac.nohints.otf b/test/api/fonts/SourceSansPro-Regular.ac.nohints.otf Binary files differnew file mode 100644 index 0000000..14a3a5f --- /dev/null +++ b/test/api/fonts/SourceSansPro-Regular.ac.nohints.otf diff --git a/test/api/fonts/SourceSansPro-Regular.ac.nosubrs.nohints.otf b/test/api/fonts/SourceSansPro-Regular.ac.nosubrs.nohints.otf Binary files differnew file mode 100644 index 0000000..69e244c --- /dev/null +++ b/test/api/fonts/SourceSansPro-Regular.ac.nosubrs.nohints.otf diff --git a/test/api/fonts/SourceSansPro-Regular.ac.nosubrs.otf b/test/api/fonts/SourceSansPro-Regular.ac.nosubrs.otf Binary files differnew file mode 100644 index 0000000..28edf13 --- /dev/null +++ b/test/api/fonts/SourceSansPro-Regular.ac.nosubrs.otf diff --git a/test/api/fonts/SourceSansPro-Regular.ac.otf b/test/api/fonts/SourceSansPro-Regular.ac.otf Binary files differnew file mode 100644 index 0000000..12d6d0f --- /dev/null +++ b/test/api/fonts/SourceSansPro-Regular.ac.otf diff --git a/test/api/fonts/aat-feat.ttf b/test/api/fonts/aat-feat.ttf Binary files differnew file mode 100644 index 0000000..1ff99a2 --- /dev/null +++ b/test/api/fonts/aat-feat.ttf diff --git a/test/api/fonts/aat-morx.ttf b/test/api/fonts/aat-morx.ttf Binary files differnew file mode 100644 index 0000000..5827ec5 --- /dev/null +++ b/test/api/fonts/aat-morx.ttf diff --git a/test/api/fonts/aat-trak.ttf b/test/api/fonts/aat-trak.ttf Binary files differnew file mode 100644 index 0000000..07ae3af --- /dev/null +++ b/test/api/fonts/aat-trak.ttf diff --git a/test/api/fonts/base.ttf b/test/api/fonts/base.ttf Binary files differnew file mode 100644 index 0000000..d984966 --- /dev/null +++ b/test/api/fonts/base.ttf diff --git a/test/api/fonts/cff1_dotsect.nohints.otf b/test/api/fonts/cff1_dotsect.nohints.otf Binary files differnew file mode 100644 index 0000000..faa932e --- /dev/null +++ b/test/api/fonts/cff1_dotsect.nohints.otf diff --git a/test/api/fonts/cff1_dotsect.otf b/test/api/fonts/cff1_dotsect.otf Binary files differnew file mode 100644 index 0000000..dabd4b3 --- /dev/null +++ b/test/api/fonts/cff1_dotsect.otf diff --git a/test/api/fonts/cff1_expert.2D,F6E9,FB00.otf b/test/api/fonts/cff1_expert.2D,F6E9,FB00.otf Binary files differnew file mode 100644 index 0000000..8c198b7 --- /dev/null +++ b/test/api/fonts/cff1_expert.2D,F6E9,FB00.otf diff --git a/test/api/fonts/cff1_expert.otf b/test/api/fonts/cff1_expert.otf Binary files differnew file mode 100644 index 0000000..970ed67 --- /dev/null +++ b/test/api/fonts/cff1_expert.otf diff --git a/test/api/fonts/cff1_flex.otf b/test/api/fonts/cff1_flex.otf Binary files differnew file mode 100644 index 0000000..1ef59e1 --- /dev/null +++ b/test/api/fonts/cff1_flex.otf diff --git a/test/api/fonts/cff1_seac.C0.otf b/test/api/fonts/cff1_seac.C0.otf Binary files differnew file mode 100644 index 0000000..aed2fdd --- /dev/null +++ b/test/api/fonts/cff1_seac.C0.otf diff --git a/test/api/fonts/cff1_seac.otf b/test/api/fonts/cff1_seac.otf Binary files differnew file mode 100644 index 0000000..bc7991c --- /dev/null +++ b/test/api/fonts/cff1_seac.otf diff --git a/test/api/fonts/chromacheck-cbdt.ttf b/test/api/fonts/chromacheck-cbdt.ttf Binary files differnew file mode 100644 index 0000000..100c01a --- /dev/null +++ b/test/api/fonts/chromacheck-cbdt.ttf diff --git a/test/api/fonts/chromacheck-colr.ttf b/test/api/fonts/chromacheck-colr.ttf Binary files differnew file mode 100644 index 0000000..626809c --- /dev/null +++ b/test/api/fonts/chromacheck-colr.ttf diff --git a/test/api/fonts/chromacheck-sbix.ttf b/test/api/fonts/chromacheck-sbix.ttf Binary files differnew file mode 100644 index 0000000..b6f1fe9 --- /dev/null +++ b/test/api/fonts/chromacheck-sbix.ttf diff --git a/test/api/fonts/chromacheck-svg.ttf b/test/api/fonts/chromacheck-svg.ttf Binary files differnew file mode 100644 index 0000000..d39cc56 --- /dev/null +++ b/test/api/fonts/chromacheck-svg.ttf diff --git a/test/api/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5658272078495744 b/test/api/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5658272078495744 Binary files differnew file mode 100644 index 0000000..f3fa938 --- /dev/null +++ b/test/api/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5658272078495744 diff --git a/test/shaping/data/in-house/fonts/e90374e5e439e00725b4fe7a8d73db57c5a97f82.ttf b/test/api/fonts/cpal-v0.ttf Binary files differindex 66a9001..66a9001 100644 --- a/test/shaping/data/in-house/fonts/e90374e5e439e00725b4fe7a8d73db57c5a97f82.ttf +++ b/test/api/fonts/cpal-v0.ttf diff --git a/test/shaping/data/in-house/fonts/319f5d7ebffbefc5c5e6569f8cea73444d7a7268.ttf b/test/api/fonts/cpal-v1.ttf Binary files differindex 53044b7..53044b7 100644 --- a/test/shaping/data/in-house/fonts/319f5d7ebffbefc5c5e6569f8cea73444d7a7268.ttf +++ b/test/api/fonts/cpal-v1.ttf diff --git a/test/api/fonts/cv01.otf b/test/api/fonts/cv01.otf Binary files differnew file mode 100644 index 0000000..01dbf01 --- /dev/null +++ b/test/api/fonts/cv01.otf diff --git a/test/api/fonts/lcar.ttf b/test/api/fonts/lcar.ttf Binary files differnew file mode 100644 index 0000000..4d17663 --- /dev/null +++ b/test/api/fonts/lcar.ttf diff --git a/test/api/hb-subset-test.h b/test/api/hb-subset-test.h index c34f394..cefa4e0 100644 --- a/test/api/hb-subset-test.h +++ b/test/api/hb-subset-test.h @@ -47,18 +47,6 @@ typedef short bool; HB_BEGIN_DECLS -static inline hb_face_t * -hb_subset_test_open_font (const char *font_path) -{ -#if GLIB_CHECK_VERSION(2,37,2) - char* path = g_test_build_filename(G_TEST_DIST, font_path, NULL); -#else - char* path = g_strdup(font_path); -#endif - - return hb_face_create (hb_blob_create_from_file (path), 0); -} - static inline hb_subset_input_t * hb_subset_test_create_input(const hb_set_t *codepoints) { @@ -72,11 +60,9 @@ static inline hb_face_t * hb_subset_test_create_subset (hb_face_t *source, hb_subset_input_t *input) { - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (source, profile, input); + hb_face_t *subset = hb_subset (source, input); g_assert (subset); - hb_subset_profile_destroy (profile); hb_subset_input_destroy (input); return subset; } @@ -87,7 +73,7 @@ hb_subset_test_check (hb_face_t *expected, hb_tag_t table) { hb_blob_t *expected_blob, *actual_blob; - fprintf(stderr, "compare %c%c%c%c\n", HB_UNTAG(table)); + //fprintf(stderr, "comparing %c%c%c%c ", HB_UNTAG(table)); expected_blob = hb_face_reference_table (expected, table); actual_blob = hb_face_reference_table (actual, table); hb_test_assert_blobs_equal (expected_blob, actual_blob); diff --git a/test/api/hb-test.h b/test/api/hb-test.h index 307845f..872f45c 100644 --- a/test/api/hb-test.h +++ b/test/api/hb-test.h @@ -42,6 +42,7 @@ HB_BEGIN_DECLS /* Just in case */ #undef G_DISABLE_ASSERT +#define HB_UNUSED G_GNUC_UNUSED /* Misc */ @@ -276,6 +277,28 @@ G_STMT_START { \ } G_STMT_END +static inline hb_face_t * +hb_test_open_font_file (const char *font_path) +{ +#if GLIB_CHECK_VERSION(2,37,2) + char *path = g_test_build_filename (G_TEST_DIST, font_path, NULL); +#else + char *path = g_strdup (font_path); +#endif + + hb_blob_t *blob = hb_blob_create_from_file (path); + hb_face_t *face; + if (hb_blob_get_length (blob) == 0) + g_error ("Font %s not found.", path); + + face = hb_face_create (blob, 0); + hb_blob_destroy (blob); + + g_free (path); + + return face; +} + HB_END_DECLS #endif /* HB_TEST_H */ diff --git a/test/api/test-aat-layout.c b/test/api/test-aat-layout.c new file mode 100644 index 0000000..1384556 --- /dev/null +++ b/test/api/test-aat-layout.c @@ -0,0 +1,133 @@ +/* + * Copyright © 2018 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#include "hb-test.h" + +#include <hb.h> +#include <hb-ot.h> +#include <hb-aat.h> + +/* Unit tests for hb-aat.h */ + +static hb_face_t *face; +static hb_face_t *sbix; + +static void +test_aat_get_feature_types (void) +{ + hb_aat_layout_feature_type_t features[3]; + unsigned int count = 3; + g_assert_cmpuint (11, ==, hb_aat_layout_get_feature_types (face, 0, &count, features)); + + g_assert_cmpuint (1, ==, features[0]); + g_assert_cmpuint (3, ==, features[1]); + g_assert_cmpuint (6, ==, features[2]); + + g_assert_cmpuint (258, ==, hb_aat_layout_feature_type_get_name_id (face, features[0])); + g_assert_cmpuint (261, ==, hb_aat_layout_feature_type_get_name_id (face, features[1])); + g_assert_cmpuint (265, ==, hb_aat_layout_feature_type_get_name_id (face, features[2])); +} + +static void +test_aat_get_feature_selectors (void) +{ + unsigned int default_index; + hb_aat_layout_feature_selector_info_t settings[3]; + unsigned int count = 3; + + g_assert_cmpuint (4, ==, hb_aat_layout_feature_type_get_selector_infos (face, + HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE, + 0, &count, settings, + &default_index)); + g_assert_cmpuint (3, ==, count); + g_assert_cmpuint (0, ==, default_index); + + g_assert_cmpuint (0, ==, settings[0].enable); + g_assert_cmpuint (294, ==, settings[0].name_id); + + g_assert_cmpuint (1, ==, settings[1].enable); + g_assert_cmpuint (295, ==, settings[1].name_id); + + g_assert_cmpuint (2, ==, settings[2].enable); + g_assert_cmpuint (296, ==, settings[2].name_id); + + count = 3; + g_assert_cmpuint (4, ==, hb_aat_layout_feature_type_get_selector_infos (face, + HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE, + 3, &count, settings, + &default_index)); + g_assert_cmpuint (1, ==, count); + g_assert_cmpuint (0, ==, default_index); + + g_assert_cmpuint (3, ==, settings[0].enable); + g_assert_cmpuint (297, ==, settings[0].name_id); + + count = 1; + g_assert_cmpuint (1, ==, hb_aat_layout_feature_type_get_selector_infos (face, + HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS, + 0, &count, settings, + &default_index)); + g_assert_cmpuint (1, ==, count); + g_assert_cmpuint (HB_AAT_LAYOUT_NO_SELECTOR_INDEX, ==, default_index); + + g_assert_cmpuint (8, ==, settings[0].enable); + g_assert_cmpuint (308, ==, settings[0].name_id); + + count = 100; + g_assert_cmpuint (0, ==, hb_aat_layout_feature_type_get_selector_infos (face, HB_AAT_LAYOUT_FEATURE_TYPE_INVALID, + 0, &count, settings, + NULL)); + g_assert_cmpuint (0, ==, count); +} + +static void +test_aat_has (void) +{ + hb_face_t *morx = hb_test_open_font_file ("fonts/aat-morx.ttf"); + hb_face_t *trak; + g_assert (hb_aat_layout_has_substitution (morx)); + hb_face_destroy (morx); + + trak = hb_test_open_font_file ("fonts/aat-trak.ttf"); + g_assert (hb_aat_layout_has_tracking (trak)); + hb_face_destroy (trak); +} + +int +main (int argc, char **argv) +{ + unsigned int status; + hb_test_init (&argc, &argv); + + hb_test_add (test_aat_get_feature_types); + hb_test_add (test_aat_get_feature_selectors); + hb_test_add (test_aat_has); + + face = hb_test_open_font_file ("fonts/aat-feat.ttf"); + sbix = hb_test_open_font_file ("fonts/chromacheck-sbix.ttf"); + status = hb_test_run (); + hb_face_destroy (sbix); + hb_face_destroy (face); + return status; +} diff --git a/test/api/test-baseline.c b/test/api/test-baseline.c new file mode 100644 index 0000000..a120e14 --- /dev/null +++ b/test/api/test-baseline.c @@ -0,0 +1,58 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#include "hb-test.h" + +#include <hb-ot.h> + +/* Unit tests for hb-ot-layout.h baseline */ + +static void +test_ot_layout_base (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/base.ttf"); + hb_font_t *font = hb_font_create (face); + +#if 0 + hb_position_t position; + g_assert (hb_ot_layout_get_baseline (font, HB_OT_LAYOUT_BASELINE_ICFB, HB_DIRECTION_TTB, + HB_TAG ('h','a','n','i'), + HB_TAG ('E','N','G',' '), + &position)); + g_assert_cmpint (46, ==, position); +#endif + + hb_font_destroy (font); + hb_face_destroy (face); +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + hb_test_add (test_ot_layout_base); + + return hb_test_run(); +} diff --git a/test/api/test-blob.c b/test/api/test-blob.c index d566f4e..7914a26 100644 --- a/test/api/test-blob.c +++ b/test/api/test-blob.c @@ -195,7 +195,7 @@ fixture_init (fixture_t *fixture, gconstpointer user_data) } static void -fixture_finish (fixture_t *fixture, gconstpointer user_data) +fixture_finish (fixture_t *fixture, gconstpointer user_data HB_UNUSED) { hb_blob_destroy (fixture->blob); g_assert_cmpint (fixture->freed, ==, 1); diff --git a/test/api/test-buffer.c b/test/api/test-buffer.c index 5c98a9a..64ab3db 100644 --- a/test/api/test-buffer.c +++ b/test/api/test-buffer.c @@ -92,14 +92,14 @@ fixture_init (fixture_t *fixture, gconstpointer user_data) } static void -fixture_finish (fixture_t *fixture, gconstpointer user_data) +fixture_finish (fixture_t *fixture, gconstpointer user_data HB_UNUSED) { hb_buffer_destroy (fixture->buffer); } static void -test_buffer_properties (fixture_t *fixture, gconstpointer user_data) +test_buffer_properties (fixture_t *fixture, gconstpointer user_data HB_UNUSED) { hb_buffer_t *b = fixture->buffer; hb_unicode_funcs_t *ufuncs; @@ -294,7 +294,7 @@ test_buffer_contents (fixture_t *fixture, gconstpointer user_data) } static void -test_buffer_positions (fixture_t *fixture, gconstpointer user_data) +test_buffer_positions (fixture_t *fixture, gconstpointer user_data HB_UNUSED) { hb_buffer_t *b = fixture->buffer; unsigned int i, len, len2; @@ -319,7 +319,7 @@ test_buffer_positions (fixture_t *fixture, gconstpointer user_data) } static void -test_buffer_allocation (fixture_t *fixture, gconstpointer user_data) +test_buffer_allocation (fixture_t *fixture, gconstpointer user_data HB_UNUSED) { hb_buffer_t *b = fixture->buffer; @@ -379,14 +379,15 @@ static void test_buffer_utf8_conversion (void) { hb_buffer_t *b; - hb_glyph_info_t *glyphs; - unsigned int bytes, chars, i, j, len; + unsigned int chars, i, j, len; b = hb_buffer_create (); hb_buffer_set_replacement_codepoint (b, (hb_codepoint_t) -1); for (i = 0; i < G_N_ELEMENTS (utf8_conversion_tests); i++) { + unsigned int bytes; + hb_glyph_info_t *glyphs; const utf8_conversion_test_t *test = &utf8_conversion_tests[i]; char *escaped; diff --git a/test/api/test-c.c b/test/api/test-c.c index 4b43b83..b4518ad 100644 --- a/test/api/test-c.c +++ b/test/api/test-c.c @@ -32,6 +32,8 @@ #endif #include <hb.h> +#include <hb-ot.h> +#include <hb-aat.h> #ifdef HAVE_GLIB #include <hb-glib.h> @@ -45,10 +47,6 @@ #include <hb-ft.h> #endif -#ifdef HAVE_OT -#include <hb-ot.h> -#endif - #ifdef HAVE_UNISCRIBE #include <hb-uniscribe.h> #endif @@ -58,7 +56,7 @@ #endif int -main (int argc, char **argv) +main (void) { return !*hb_shape_list_shapers (); } diff --git a/test/api/test-subset-codepoints.c b/test/api/test-collect-unicodes.c index 3bd1fe0..50965a9 100644 --- a/test/api/test-subset-codepoints.c +++ b/test/api/test-collect-unicodes.c @@ -28,14 +28,15 @@ #include "hb-subset-test.h" static void -test_get_all_codepoints_format4 (void) +test_collect_unicodes_format4 (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/Roboto-Regular.abc.format4.ttf"); + hb_face_t *face = hb_test_open_font_file ("fonts/Roboto-Regular.abc.format4.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_codepoint_t cp; - hb_subset_get_all_codepoints (face, codepoints); + hb_face_collect_unicodes (face, codepoints); - hb_codepoint_t cp = HB_SET_VALUE_INVALID; + cp = HB_SET_VALUE_INVALID; g_assert (hb_set_next (codepoints, &cp)); g_assert_cmpuint (0x61, ==, cp); g_assert (hb_set_next (codepoints, &cp)); @@ -49,14 +50,15 @@ test_get_all_codepoints_format4 (void) } static void -test_get_all_codepoints_format12 (void) +test_collect_unicodes_format12 (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/Roboto-Regular.abc.format12.ttf"); + hb_face_t *face = hb_test_open_font_file ("fonts/Roboto-Regular.abc.format12.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_codepoint_t cp; - hb_subset_get_all_codepoints (face, codepoints); + hb_face_collect_unicodes (face, codepoints); - hb_codepoint_t cp = HB_SET_VALUE_INVALID; + cp = HB_SET_VALUE_INVALID; g_assert (hb_set_next (codepoints, &cp)); g_assert_cmpuint (0x61, ==, cp); g_assert (hb_set_next (codepoints, &cp)); @@ -70,14 +72,15 @@ test_get_all_codepoints_format12 (void) } static void -test_get_all_codepoints (void) +test_collect_unicodes (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); + hb_codepoint_t cp; - hb_subset_get_all_codepoints (face, codepoints); + hb_face_collect_unicodes (face, codepoints); - hb_codepoint_t cp = HB_SET_VALUE_INVALID; + cp = HB_SET_VALUE_INVALID; g_assert (hb_set_next (codepoints, &cp)); g_assert_cmpuint (0x61, ==, cp); g_assert (hb_set_next (codepoints, &cp)); @@ -95,9 +98,9 @@ main (int argc, char **argv) { hb_test_init (&argc, &argv); - hb_test_add (test_get_all_codepoints); - hb_test_add (test_get_all_codepoints_format4); - hb_test_add (test_get_all_codepoints_format12); + hb_test_add (test_collect_unicodes); + hb_test_add (test_collect_unicodes_format4); + hb_test_add (test_collect_unicodes_format12); return hb_test_run(); } diff --git a/test/api/test-common.c b/test/api/test-common.c index f6f0d48..e9fae13 100644 --- a/test/api/test-common.c +++ b/test/api/test-common.c @@ -32,7 +32,6 @@ static void test_types_int (void) { - /* We already ASSERT_STATIC these in hb-private.h, but anyway */ g_assert_cmpint (sizeof (int8_t), ==, 1); g_assert_cmpint (sizeof (uint8_t), ==, 1); g_assert_cmpint (sizeof (int16_t), ==, 2); diff --git a/test/api/test-font.c b/test/api/test-font.c index 527dfcd..6690194 100644 --- a/test/api/test-font.c +++ b/test/api/test-font.c @@ -83,7 +83,7 @@ free_up (void *user_data) } static hb_blob_t * -get_table (hb_face_t *face, hb_tag_t tag, void *user_data) +get_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data HB_UNUSED) { if (tag == HB_TAG ('a','b','c','d')) return hb_blob_create (test_data, sizeof (test_data), HB_MEMORY_MODE_READONLY, NULL, NULL); @@ -210,10 +210,10 @@ test_fontfuncs_nil (void) } static hb_bool_t -contour_point_func1 (hb_font_t *font, void *font_data, - hb_codepoint_t glyph, unsigned int point_index, +contour_point_func1 (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, + hb_codepoint_t glyph, unsigned int point_index HB_UNUSED, hb_position_t *x, hb_position_t *y, - void *user_data) + void *user_data HB_UNUSED) { if (glyph == 1) { *x = 2; @@ -230,10 +230,10 @@ contour_point_func1 (hb_font_t *font, void *font_data, } static hb_bool_t -contour_point_func2 (hb_font_t *font, void *font_data, +contour_point_func2 (hb_font_t *font, void *font_data HB_UNUSED, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y, - void *user_data) + void *user_data HB_UNUSED) { if (glyph == 1) { *x = 6; @@ -246,9 +246,9 @@ contour_point_func2 (hb_font_t *font, void *font_data, } static hb_position_t -glyph_h_advance_func1 (hb_font_t *font, void *font_data, +glyph_h_advance_func1 (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, - void *user_data) + void *user_data HB_UNUSED) { if (glyph == 1) return 8; @@ -361,8 +361,74 @@ test_fontfuncs_subclassing (void) hb_font_destroy (font3); + hb_font_destroy (font2); +} + +static hb_bool_t +nominal_glyph_func (hb_font_t *font HB_UNUSED, + void *font_data HB_UNUSED, + hb_codepoint_t unicode HB_UNUSED, + hb_codepoint_t *glyph, + void *user_data HB_UNUSED) +{ + *glyph = 0; + return FALSE; +} + +static unsigned int +nominal_glyphs_func (hb_font_t *font HB_UNUSED, + void *font_data HB_UNUSED, + unsigned int count HB_UNUSED, + const hb_codepoint_t *first_unicode HB_UNUSED, + unsigned int unicode_stride HB_UNUSED, + hb_codepoint_t *first_glyph HB_UNUSED, + unsigned int glyph_stride HB_UNUSED, + void *user_data HB_UNUSED) +{ + return 0; } +static void +test_fontfuncs_parallels (void) +{ + hb_blob_t *blob; + hb_face_t *face; + + hb_font_funcs_t *ffuncs1; + hb_font_funcs_t *ffuncs2; + + hb_font_t *font0; + hb_font_t *font1; + hb_font_t *font2; + hb_codepoint_t glyph; + + blob = hb_blob_create (test_data, sizeof (test_data), HB_MEMORY_MODE_READONLY, NULL, NULL); + face = hb_face_create (blob, 0); + hb_blob_destroy (blob); + font0 = hb_font_create (face); + hb_face_destroy (face); + + /* setup sub-font1 */ + font1 = hb_font_create_sub_font (font0); + hb_font_destroy (font0); + ffuncs1 = hb_font_funcs_create (); + hb_font_funcs_set_nominal_glyph_func (ffuncs1, nominal_glyph_func, NULL, NULL); + hb_font_set_funcs (font1, ffuncs1, NULL, NULL); + hb_font_funcs_destroy (ffuncs1); + + /* setup sub-font2 */ + font2 = hb_font_create_sub_font (font1); + hb_font_destroy (font1); + ffuncs2 = hb_font_funcs_create (); + hb_font_funcs_set_nominal_glyphs_func (ffuncs1, nominal_glyphs_func, NULL, NULL); + hb_font_set_funcs (font2, ffuncs2, NULL, NULL); + hb_font_funcs_destroy (ffuncs2); + + /* Just test that calling get_nominal_glyph doesn't infinite-loop. */ + hb_font_get_nominal_glyph (font2, 0x0020u, &glyph); + + hb_font_destroy (font2); +} static void test_font_empty (void) @@ -470,6 +536,11 @@ test_font_properties (void) g_assert_cmpint (x_ppem, ==, 17); g_assert_cmpint (y_ppem, ==, 19); + /* Check ptem */ + g_assert_cmpint (hb_font_get_ptem (font), ==, 0); + hb_font_set_ptem (font, 42); + g_assert_cmpint (hb_font_get_ptem (font), ==, 42); + /* Check immutable */ @@ -542,6 +613,7 @@ main (int argc, char **argv) hb_test_add (test_fontfuncs_empty); hb_test_add (test_fontfuncs_nil); hb_test_add (test_fontfuncs_subclassing); + hb_test_add (test_fontfuncs_parallels); hb_test_add (test_font_empty); hb_test_add (test_font_properties); diff --git a/test/api/test-map.c b/test/api/test-map.c new file mode 100644 index 0000000..0911991 --- /dev/null +++ b/test/api/test-map.c @@ -0,0 +1,117 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#include "hb-test.h" + +/* Unit tests for hb-map.h */ + + +static void +test_map_basic (void) +{ + hb_map_t *empty = hb_map_get_empty (); + hb_map_t *m; + g_assert (hb_map_is_empty (empty)); + g_assert (!hb_map_allocation_successful (empty)); + hb_map_destroy (empty); + + m = hb_map_create (); + g_assert (hb_map_allocation_successful (m)); + g_assert (hb_map_is_empty (m)); + + hb_map_set (m, 213, 223); + hb_map_set (m, 643, 675); + g_assert_cmpint (hb_map_get_population (m), ==, 2); + + g_assert_cmpint (hb_map_get (m, 213), ==, 223); + g_assert (!hb_map_has (m, 123)); + g_assert (hb_map_has (m, 213)); + + hb_map_del (m, 213); + g_assert (!hb_map_has (m, 213)); + + g_assert_cmpint (hb_map_get (m, 643), ==, 675); + hb_map_set (m, 237, 673); + g_assert (hb_map_has (m, 237)); + hb_map_clear (m); + g_assert (!hb_map_has (m, 237)); + g_assert (!hb_map_has (m, 643)); + g_assert_cmpint (hb_map_get_population (m), ==, 0); + + hb_map_destroy (m); +} + +static void +test_map_userdata (void) +{ + hb_map_t *m = hb_map_create (); + + hb_user_data_key_t key[2]; + int *data = (int *) malloc (sizeof (int)); + int *data2; + *data = 3123; + hb_map_set_user_data (m, &key[0], data, free, TRUE); + g_assert_cmpint (*((int *) hb_map_get_user_data (m, &key[0])), ==, 3123); + + data2 = (int *) malloc (sizeof (int)); + *data2 = 6343; + hb_map_set_user_data (m, &key[0], data2, free, FALSE); + g_assert_cmpint (*((int *) hb_map_get_user_data (m, &key[0])), ==, 3123); + hb_map_set_user_data (m, &key[0], data2, free, TRUE); + g_assert_cmpint (*((int *) hb_map_get_user_data (m, &key[0])), ==, 6343); + + hb_map_destroy (m); +} + +static void +test_map_refcount (void) +{ + hb_map_t *m = hb_map_create (); + hb_map_t *m2; + hb_map_set (m, 213, 223); + g_assert_cmpint (hb_map_get (m, 213), ==, 223); + + m2 = hb_map_reference (m); + hb_map_destroy (m); + + /* We copied its reference so it is still usable after one destroy */ + g_assert (hb_map_has (m, 213)); + g_assert (hb_map_has (m2, 213)); + + hb_map_destroy (m2); + + /* Now you can't access them anymore */ +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + hb_test_add (test_map_basic); + hb_test_add (test_map_userdata); + hb_test_add (test_map_refcount); + + return hb_test_run(); +} diff --git a/test/api/test-multithread.c b/test/api/test-multithread.c new file mode 100644 index 0000000..f946049 --- /dev/null +++ b/test/api/test-multithread.c @@ -0,0 +1,162 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +#include <pthread.h> + +#include <hb.h> +#include <hb-ft.h> +#include <hb-ot.h> + +#include "hb-test.h" + +static const char *font_path = "fonts/Inconsolata-Regular.abc.ttf"; +static const char *text = "abc"; + +static int num_threads = 30; +static int num_iters = 200; + +static hb_font_t *font; +static hb_buffer_t *ref_buffer; + +static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; + +static void +fill_the_buffer (hb_buffer_t *buffer) +{ + hb_buffer_add_utf8 (buffer, text, -1, 0, -1); + hb_buffer_guess_segment_properties (buffer); + hb_shape (font, buffer, NULL, 0); +} + +static void +validity_check (hb_buffer_t *buffer) { + if (hb_buffer_diff (ref_buffer, buffer, (hb_codepoint_t) -1, 0)) + { + fprintf (stderr, "One of the buffers was different from the reference.\n"); + char out[255]; + + hb_buffer_serialize_glyphs (buffer, 0, hb_buffer_get_length (ref_buffer), + out, sizeof (out), NULL, + font, HB_BUFFER_SERIALIZE_FORMAT_TEXT, + HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES); + fprintf (stderr, "Actual: %s\n", out); + + hb_buffer_serialize_glyphs (ref_buffer, 0, hb_buffer_get_length (ref_buffer), + out, sizeof (out), NULL, + font, HB_BUFFER_SERIALIZE_FORMAT_TEXT, + HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES); + fprintf (stderr, "Expected: %s\n", out); + + exit (1); + } +} + +static void * +thread_func (void *data) +{ + hb_buffer_t *buffer = (hb_buffer_t *) data; + + pthread_mutex_lock (&mutex); + pthread_mutex_unlock (&mutex); + + int i; + for (i = 0; i < num_iters; i++) + { + hb_buffer_clear_contents (buffer); + fill_the_buffer (buffer); + validity_check (buffer); + } + + return 0; +} + +static void +test_body (void) +{ + int i; + pthread_t *threads = calloc (num_threads, sizeof (pthread_t)); + hb_buffer_t **buffers = calloc (num_threads, sizeof (hb_buffer_t *)); + + pthread_mutex_lock (&mutex); + + for (i = 0; i < num_threads; i++) + { + hb_buffer_t *buffer = hb_buffer_create (); + buffers[i] = buffer; + pthread_create (&threads[i], NULL, thread_func, buffer); + } + + /* Let them loose! */ + pthread_mutex_unlock (&mutex); + + for (i = 0; i < num_threads; i++) + { + pthread_join (threads[i], NULL); + hb_buffer_destroy (buffers[i]); + } + + free (buffers); + free (threads); +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + char *path = argc > 1 && *argv[1] ? argv[1] : (char *) font_path; + if (argc > 2) + num_threads = atoi (argv[2]); + if (argc > 3) + num_iters = atoi (argv[3]); + if (argc > 4) + text = argv[4]; + + /* Dummy call to alleviate _guess_segment_properties thread safety-ness + * https://github.com/harfbuzz/harfbuzz/issues/1191 */ + hb_language_get_default (); + + hb_face_t *face = hb_test_open_font_file (path); + font = hb_font_create (face); + + /* Fill the reference */ + ref_buffer = hb_buffer_create (); + fill_the_buffer (ref_buffer); + + /* Unnecessary, since version 2 it is ot-font by default */ + hb_ot_font_set_funcs (font); + test_body (); + + /* Test hb-ft in multithread */ + hb_ft_font_set_funcs (font); + test_body (); + + hb_buffer_destroy (ref_buffer); + + hb_font_destroy (font); + hb_face_destroy (face); + + return 0; +} diff --git a/test/api/test-object.c b/test/api/test-object.c index 02b9760..093615e 100644 --- a/test/api/test-object.c +++ b/test/api/test-object.c @@ -235,7 +235,7 @@ test_object (void) { unsigned int j; - data_t data[2] = {{MAGIC0, FALSE}, {MAGIC1, FALSE}}; + data_t data[1000] = {{MAGIC0, FALSE}, {MAGIC1, FALSE}}; deadlock_test_t deadlock_test; g_test_message ("Testing object %s", o->name); diff --git a/test/api/test-ot-color.c b/test/api/test-ot-color.c index 22584d2..c0cbd77 100644 --- a/test/api/test-ot-color.c +++ b/test/api/test-ot-color.c @@ -1,5 +1,6 @@ /* * Copyright © 2016 Google, Inc. + * Copyright © 2018 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * @@ -27,8 +28,6 @@ #include "hb-test.h" #include <hb-ot.h> -#include <stdlib.h> -#include <stdio.h> /* Unit tests for hb-ot-color.h */ @@ -98,138 +97,142 @@ static hb_face_t *cpal_v0 = NULL; */ static hb_face_t *cpal_v1 = NULL; +static hb_face_t *cpal = NULL; +static hb_face_t *cbdt = NULL; +static hb_face_t *sbix = NULL; +static hb_face_t *svg = NULL; +static hb_face_t *empty = NULL; #define assert_color_rgba(colors, i, r, g, b, a) G_STMT_START { \ - const hb_ot_color_t *_colors = (colors); \ + const hb_color_t *_colors = (colors); \ const size_t _i = (i); \ const uint8_t red = (r), green = (g), blue = (b), alpha = (a); \ - if (_colors[_i].red != red) { \ + if (hb_color_get_red (_colors[_i]) != red) { \ g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ - "colors[" #i "].red", _colors[_i].red, "==", red, 'x'); \ + "colors[" #i "]", _colors[_i], "==", red, 'x'); \ } \ - if (_colors[_i].green != green) { \ + if (hb_color_get_green (_colors[_i]) != green) { \ g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ - "colors[" #i "].green", _colors[_i].green, "==", green, 'x'); \ + "colors[" #i "]", _colors[_i], "==", green, 'x'); \ } \ - if (_colors[_i].blue != blue) { \ + if (hb_color_get_blue (_colors[_i]) != blue) { \ g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ - "colors[" #i "].blue", colors[i].blue, "==", blue, 'x'); \ + "colors[" #i "]", colors[_i], "==", blue, 'x'); \ } \ - if (_colors[_i].alpha != alpha) { \ + if (hb_color_get_alpha (_colors[_i]) != alpha) { \ g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ - "colors[" #i "].alpha", _colors[_i].alpha, "==", alpha, 'x'); \ + "colors[" #i "]", _colors[_i], "==", alpha, 'x'); \ } \ } G_STMT_END -#if 0 static void -test_hb_ot_color_get_palette_count (void) +test_hb_ot_color_palette_get_count (void) { - g_assert_cmpint (hb_ot_color_get_palette_count (hb_face_get_empty()), ==, 0); - g_assert_cmpint (hb_ot_color_get_palette_count (cpal_v0), ==, 2); - g_assert_cmpint (hb_ot_color_get_palette_count (cpal_v1), ==, 3); + g_assert_cmpint (hb_ot_color_palette_get_count (hb_face_get_empty()), ==, 0); + g_assert_cmpint (hb_ot_color_palette_get_count (cpal_v0), ==, 2); + g_assert_cmpint (hb_ot_color_palette_get_count (cpal_v1), ==, 3); } static void -test_hb_ot_color_get_palette_name_id_empty (void) +test_hb_ot_color_palette_get_name_id_empty (void) { /* numPalettes=0, so all calls are for out-of-bounds palette indices */ - g_assert_cmpint (hb_ot_color_get_palette_name_id (hb_face_get_empty(), 0), ==, 0xffff); - g_assert_cmpint (hb_ot_color_get_palette_name_id (hb_face_get_empty(), 1), ==, 0xffff); + g_assert_cmpint (hb_ot_color_palette_get_name_id (hb_face_get_empty(), 0), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpint (hb_ot_color_palette_get_name_id (hb_face_get_empty(), 1), ==, HB_OT_NAME_ID_INVALID); } static void -test_hb_ot_color_get_palette_name_id_v0 (void) +test_hb_ot_color_palette_get_name_id_v0 (void) { - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v0, 0), ==, 0xffff); - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v0, 1), ==, 0xffff); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v0, 0), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v0, 1), ==, HB_OT_NAME_ID_INVALID); /* numPalettes=2, so palette #2 is out of bounds */ - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v0, 2), ==, 0xffff); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v0, 2), ==, HB_OT_NAME_ID_INVALID); } static void -test_hb_ot_color_get_palette_name_id_v1 (void) +test_hb_ot_color_palette_get_name_id_v1 (void) { - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v1, 0), ==, 257); - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v1, 1), ==, 0xffff); - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v1, 2), ==, 258); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v1, 0), ==, 257); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v1, 1), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v1, 2), ==, 258); /* numPalettes=3, so palette #3 is out of bounds */ - g_assert_cmpint (hb_ot_color_get_palette_name_id (cpal_v1, 3), ==, 0xffff); + g_assert_cmpint (hb_ot_color_palette_get_name_id (cpal_v1, 3), ==, HB_OT_NAME_ID_INVALID); } + static void -test_hb_ot_color_get_palette_flags_empty (void) +test_hb_ot_color_palette_get_flags_empty (void) { /* numPalettes=0, so all calls are for out-of-bounds palette indices */ - g_assert_cmpint (hb_ot_color_get_palette_flags (hb_face_get_empty(), 0), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); - g_assert_cmpint (hb_ot_color_get_palette_flags (hb_face_get_empty(), 1), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (hb_face_get_empty(), 0), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (hb_face_get_empty(), 1), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); } static void -test_hb_ot_color_get_palette_flags_v0 (void) +test_hb_ot_color_palette_get_flags_v0 (void) { - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v0, 0), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v0, 1), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v0, 0), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v0, 1), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); /* numPalettes=2, so palette #2 is out of bounds */ - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v0, 2), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v0, 2), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); } static void -test_hb_ot_color_get_palette_flags_v1 (void) +test_hb_ot_color_palette_get_flags_v1 (void) { - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v1, 0), ==, HB_OT_COLOR_PALETTE_FLAG_FOR_DARK_BACKGROUND); - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v1, 1), ==, HB_OT_COLOR_PALETTE_FLAG_FOR_LIGHT_BACKGROUND); - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v0, 2), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v1, 0), ==, HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v1, 1), ==, HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v0, 2), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); /* numPalettes=3, so palette #3 is out of bounds */ - g_assert_cmpint (hb_ot_color_get_palette_flags (cpal_v0, 3), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); + g_assert_cmpint (hb_ot_color_palette_get_flags (cpal_v0, 3), ==, HB_OT_COLOR_PALETTE_FLAG_DEFAULT); } static void -test_hb_ot_color_get_palette_colors_empty (void) +test_hb_ot_color_palette_get_colors_empty (void) { - hb_face_t *empty = hb_face_get_empty (); - g_assert_cmpint (hb_ot_color_get_palette_colors (empty, 0, 0, NULL, NULL), ==, 0); + g_assert_cmpint (hb_ot_color_palette_get_colors (empty, 0, 0, NULL, NULL), ==, 0); } static void -test_hb_ot_color_get_palette_colors_v0 (void) +test_hb_ot_color_palette_get_colors_v0 (void) { - unsigned int num_colors = hb_ot_color_get_palette_colors (cpal_v0, 0, 0, NULL, NULL); - hb_ot_color_t *colors = (hb_ot_color_t*) alloca (num_colors * sizeof (hb_ot_color_t)); + unsigned int num_colors = hb_ot_color_palette_get_colors (cpal_v0, 0, 0, NULL, NULL); + hb_color_t *colors = (hb_color_t*) alloca (num_colors * sizeof (hb_color_t)); size_t colors_size = num_colors * sizeof(*colors); g_assert_cmpint (num_colors, ==, 2); /* Palette #0, start_index=0 */ - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v0, 0, 0, &num_colors, colors), ==, 2); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v0, 0, 0, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 2); assert_color_rgba (colors, 0, 0x00, 0x00, 0x00, 0xff); assert_color_rgba (colors, 1, 0x66, 0xcc, 0xff, 0xff); /* Palette #1, start_index=0 */ - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v0, 1, 0, &num_colors, colors), ==, 2); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v0, 1, 0, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 2); assert_color_rgba (colors, 0, 0x00, 0x00, 0x00, 0xff); assert_color_rgba (colors, 1, 0x80, 0x00, 0x00, 0xff); /* Palette #2 (there are only #0 and #1 in the font, so this is out of bounds) */ - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v0, 2, 0, &num_colors, colors), ==, 0); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v0, 2, 0, &num_colors, colors), ==, 0); /* Palette #0, start_index=1 */ memset(colors, 0x33, colors_size); num_colors = 2; - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v0, 0, 1, &num_colors, colors), ==, 2); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v0, 0, 1, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 1); assert_color_rgba (colors, 0, 0x66, 0xcc, 0xff, 0xff); assert_color_rgba (colors, 1, 0x33, 0x33, 0x33, 0x33); /* untouched */ @@ -237,15 +240,15 @@ test_hb_ot_color_get_palette_colors_v0 (void) /* Palette #0, start_index=0, pretend that we have only allocated space for 1 color */ memset(colors, 0x44, colors_size); num_colors = 1; - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v0, 0, 0, &num_colors, colors), ==, 2); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v0, 0, 0, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 1); assert_color_rgba (colors, 0, 0x00, 0x00, 0x00, 0xff); assert_color_rgba (colors, 1, 0x44, 0x44, 0x44, 0x44); /* untouched */ /* start_index > numPaletteEntries */ - memset(colors, 0x44, colors_size); + memset (colors, 0x44, colors_size); num_colors = 2; - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v0, 0, 9876, &num_colors, colors), ==, 2); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v0, 0, 9876, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 0); assert_color_rgba (colors, 0, 0x44, 0x44, 0x44, 0x44); /* untouched */ assert_color_rgba (colors, 1, 0x44, 0x44, 0x44, 0x44); /* untouched */ @@ -253,46 +256,199 @@ test_hb_ot_color_get_palette_colors_v0 (void) static void -test_hb_ot_color_get_palette_colors_v1 (void) +test_hb_ot_color_palette_get_colors_v1 (void) { - hb_ot_color_t colors[3]; - unsigned int num_colors = hb_ot_color_get_palette_colors (cpal_v1, 0, 0, NULL, NULL); - size_t colors_size = 3 * sizeof(*colors); + hb_color_t colors[3]; + unsigned int num_colors = hb_ot_color_palette_get_colors (cpal_v1, 0, 0, NULL, NULL); + size_t colors_size = 3 * sizeof (hb_color_t); g_assert_cmpint (num_colors, ==, 2); /* Palette #0, start_index=0 */ - memset(colors, 0x77, colors_size); - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v1, 0, 0, &num_colors, colors), ==, 2); + memset (colors, 0x77, colors_size); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v1, 0, 0, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 2); assert_color_rgba (colors, 0, 0x00, 0x00, 0x00, 0xff); assert_color_rgba (colors, 1, 0x66, 0xcc, 0xff, 0xff); assert_color_rgba (colors, 2, 0x77, 0x77, 0x77, 0x77); /* untouched */ /* Palette #1, start_index=0 */ - memset(colors, 0x77, colors_size); - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v1, 1, 0, &num_colors, colors), ==, 2); + memset (colors, 0x77, colors_size); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v1, 1, 0, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 2); assert_color_rgba (colors, 0, 0x00, 0x00, 0x00, 0xff); assert_color_rgba (colors, 1, 0xff, 0xcc, 0x66, 0xff); assert_color_rgba (colors, 2, 0x77, 0x77, 0x77, 0x77); /* untouched */ /* Palette #2, start_index=0 */ - memset(colors, 0x77, colors_size); - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v1, 2, 0, &num_colors, colors), ==, 2); + memset (colors, 0x77, colors_size); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v1, 2, 0, &num_colors, colors), ==, 2); g_assert_cmpint (num_colors, ==, 2); assert_color_rgba (colors, 0, 0x00, 0x00, 0x00, 0xff); assert_color_rgba (colors, 1, 0x80, 0x00, 0x00, 0xff); assert_color_rgba (colors, 2, 0x77, 0x77, 0x77, 0x77); /* untouched */ /* Palette #3 (out of bounds), start_index=0 */ - memset(colors, 0x77, colors_size); - g_assert_cmpint (hb_ot_color_get_palette_colors (cpal_v1, 3, 0, &num_colors, colors), ==, 0); + memset (colors, 0x77, colors_size); + g_assert_cmpint (hb_ot_color_palette_get_colors (cpal_v1, 3, 0, &num_colors, colors), ==, 0); g_assert_cmpint (num_colors, ==, 0); assert_color_rgba (colors, 0, 0x77, 0x77, 0x77, 0x77); /* untouched */ assert_color_rgba (colors, 1, 0x77, 0x77, 0x77, 0x77); /* untouched */ assert_color_rgba (colors, 2, 0x77, 0x77, 0x77, 0x77); /* untouched */ } -#endif + + +static void +test_hb_ot_color_palette_color_get_name_id (void) +{ + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (empty, 0), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (empty, 1), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (empty, 2), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (cpal_v0, 0), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (cpal_v0, 1), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (cpal_v0, 2), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (cpal_v1, 0), ==, HB_OT_NAME_ID_INVALID); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (cpal_v1, 1), ==, 256); + g_assert_cmpuint (hb_ot_color_palette_color_get_name_id (cpal_v1, 2), ==, HB_OT_NAME_ID_INVALID); +} + + +static void +test_hb_ot_color_glyph_get_layers (void) +{ + hb_ot_color_layer_t layers[1]; + unsigned int count = 1; + unsigned int num_layers; + + g_assert_cmpuint (hb_ot_color_glyph_get_layers (cpal_v1, 0, 0, + NULL, NULL), ==, 0); + g_assert_cmpuint (hb_ot_color_glyph_get_layers (cpal_v1, 1, 0, + NULL, NULL), ==, 0); + g_assert_cmpuint (hb_ot_color_glyph_get_layers (cpal_v1, 2, 0, + NULL, NULL), ==, 2); + + num_layers = hb_ot_color_glyph_get_layers (cpal_v1, 2, 0, &count, layers); + + g_assert_cmpuint (num_layers, ==, 2); + g_assert_cmpuint (count, ==, 1); + g_assert_cmpuint (layers[0].glyph, ==, 3); + g_assert_cmpuint (layers[0].color_index, ==, 1); + + count = 1; + hb_ot_color_glyph_get_layers (cpal_v1, 2, 1, &count, layers); + + g_assert_cmpuint (num_layers, ==, 2); + g_assert_cmpuint (count, ==, 1); + g_assert_cmpuint (layers[0].glyph, ==, 4); + g_assert_cmpuint (layers[0].color_index, ==, 0); +} + +static void +test_hb_ot_color_has_data (void) +{ + g_assert (hb_ot_color_has_layers (empty) == FALSE); + g_assert (hb_ot_color_has_layers (cpal_v0) == TRUE); + g_assert (hb_ot_color_has_layers (cpal_v1) == TRUE); + g_assert (hb_ot_color_has_layers (cpal) == TRUE); + g_assert (hb_ot_color_has_layers (cbdt) == FALSE); + g_assert (hb_ot_color_has_layers (sbix) == FALSE); + g_assert (hb_ot_color_has_layers (svg) == FALSE); + + g_assert (hb_ot_color_has_palettes (empty) == FALSE); + g_assert (hb_ot_color_has_palettes (cpal_v0) == TRUE); + g_assert (hb_ot_color_has_palettes (cpal_v1) == TRUE); + g_assert (hb_ot_color_has_palettes (cpal) == TRUE); + g_assert (hb_ot_color_has_palettes (cbdt) == FALSE); + g_assert (hb_ot_color_has_palettes (sbix) == FALSE); + g_assert (hb_ot_color_has_palettes (svg) == FALSE); + + g_assert (hb_ot_color_has_svg (empty) == FALSE); + g_assert (hb_ot_color_has_svg (cpal_v0) == FALSE); + g_assert (hb_ot_color_has_svg (cpal_v1) == FALSE); + g_assert (hb_ot_color_has_svg (cpal) == FALSE); + g_assert (hb_ot_color_has_svg (cbdt) == FALSE); + g_assert (hb_ot_color_has_svg (sbix) == FALSE); + g_assert (hb_ot_color_has_svg (svg) == TRUE); + + g_assert (hb_ot_color_has_png (empty) == FALSE); + g_assert (hb_ot_color_has_png (cpal_v0) == FALSE); + g_assert (hb_ot_color_has_png (cpal_v1) == FALSE); + g_assert (hb_ot_color_has_png (cpal) == FALSE); + g_assert (hb_ot_color_has_png (cbdt) == TRUE); + g_assert (hb_ot_color_has_png (sbix) == TRUE); + g_assert (hb_ot_color_has_png (svg) == FALSE); +} + +static void +test_hb_ot_color_svg (void) +{ + hb_blob_t *blob; + unsigned int length; + const char *data; + + blob = hb_ot_color_glyph_reference_svg (svg, 0); + g_assert (hb_blob_get_length (blob) == 0); + + blob = hb_ot_color_glyph_reference_svg (svg, 1); + data = hb_blob_get_data (blob, &length); + g_assert_cmpuint (length, ==, 146); + g_assert (strncmp (data, "<?xml", 4) == 0); + g_assert (strncmp (data + 140, "</svg>", 5) == 0); + hb_blob_destroy (blob); + + blob = hb_ot_color_glyph_reference_svg (empty, 0); + g_assert (hb_blob_get_length (blob) == 0); +} + + +static void +test_hb_ot_color_png (void) +{ + hb_blob_t *blob; + unsigned int length; + const char *data; + hb_glyph_extents_t extents; + hb_font_t *cbdt_font; + + /* sbix */ + hb_font_t *sbix_font; + sbix_font = hb_font_create (sbix); + blob = hb_ot_color_glyph_reference_png (sbix_font, 0); + hb_font_get_glyph_extents (sbix_font, 0, &extents); + g_assert_cmpint (extents.x_bearing, ==, 0); + g_assert_cmpint (extents.y_bearing, ==, 0); + g_assert_cmpint (extents.width, ==, 0); + g_assert_cmpint (extents.height, ==, 0); + g_assert (hb_blob_get_length (blob) == 0); + + blob = hb_ot_color_glyph_reference_png (sbix_font, 1); + data = hb_blob_get_data (blob, &length); + g_assert_cmpuint (length, ==, 224); + g_assert (strncmp (data + 1, "PNG", 3) == 0); + hb_font_get_glyph_extents (sbix_font, 1, &extents); + g_assert_cmpint (extents.x_bearing, ==, 0); + g_assert_cmpint (extents.y_bearing, ==, 0); + g_assert_cmpint (extents.width, ==, 800); + g_assert_cmpint (extents.height, ==, 800); + hb_blob_destroy (blob); + hb_font_destroy (sbix_font); + + /* cbdt */ + cbdt_font = hb_font_create (cbdt); + blob = hb_ot_color_glyph_reference_png (cbdt_font, 0); + g_assert (hb_blob_get_length (blob) == 0); + + blob = hb_ot_color_glyph_reference_png (cbdt_font, 1); + data = hb_blob_get_data (blob, &length); + g_assert_cmpuint (length, ==, 88); + g_assert (strncmp (data + 1, "PNG", 3) == 0); + hb_font_get_glyph_extents (cbdt_font, 1, &extents); + g_assert_cmpint (extents.x_bearing, ==, 0); + g_assert_cmpint (extents.y_bearing, ==, 1024); + g_assert_cmpint (extents.width, ==, 1024); + g_assert_cmpint (extents.height, ==, -1024); + hb_blob_destroy (blob); + hb_font_destroy (cbdt_font); +} int main (int argc, char **argv) @@ -300,20 +456,34 @@ main (int argc, char **argv) int status = 0; hb_test_init (&argc, &argv); - // cpal_v0 = hb_test_load_face ("../shaping/data/in-house/fonts/e90374e5e439e00725b4fe7a8d73db57c5a97f82.ttf"); - // cpal_v1 = hb_test_load_face ("../shaping/data/in-house/fonts/319f5d7ebffbefc5c5e6569f8cea73444d7a7268.ttf"); - // hb_test_add (test_hb_ot_color_get_palette_count); - // hb_test_add (test_hb_ot_color_get_palette_name_id_empty); - // hb_test_add (test_hb_ot_color_get_palette_name_id_v0); - // hb_test_add (test_hb_ot_color_get_palette_name_id_v1); - // hb_test_add (test_hb_ot_color_get_palette_flags_empty); - // hb_test_add (test_hb_ot_color_get_palette_flags_v0); - // hb_test_add (test_hb_ot_color_get_palette_flags_v1); - // hb_test_add (test_hb_ot_color_get_palette_colors_empty); - // hb_test_add (test_hb_ot_color_get_palette_colors_v0); - // hb_test_add (test_hb_ot_color_get_palette_colors_v1); + cpal_v0 = hb_test_open_font_file ("fonts/cpal-v0.ttf"); + cpal_v1 = hb_test_open_font_file ("fonts/cpal-v1.ttf"); + cpal = hb_test_open_font_file ("fonts/chromacheck-colr.ttf"); + cbdt = hb_test_open_font_file ("fonts/chromacheck-cbdt.ttf"); + sbix = hb_test_open_font_file ("fonts/chromacheck-sbix.ttf"); + svg = hb_test_open_font_file ("fonts/chromacheck-svg.ttf"); + empty = hb_face_get_empty (); + hb_test_add (test_hb_ot_color_palette_get_count); + hb_test_add (test_hb_ot_color_palette_get_name_id_empty); + hb_test_add (test_hb_ot_color_palette_get_name_id_v0); + hb_test_add (test_hb_ot_color_palette_get_name_id_v1); + hb_test_add (test_hb_ot_color_palette_get_flags_empty); + hb_test_add (test_hb_ot_color_palette_get_flags_v0); + hb_test_add (test_hb_ot_color_palette_get_flags_v1); + hb_test_add (test_hb_ot_color_palette_get_colors_empty); + hb_test_add (test_hb_ot_color_palette_get_colors_v0); + hb_test_add (test_hb_ot_color_palette_get_colors_v1); + hb_test_add (test_hb_ot_color_palette_color_get_name_id); + hb_test_add (test_hb_ot_color_glyph_get_layers); + hb_test_add (test_hb_ot_color_has_data); + hb_test_add (test_hb_ot_color_png); + hb_test_add (test_hb_ot_color_svg); status = hb_test_run(); hb_face_destroy (cpal_v0); hb_face_destroy (cpal_v1); + hb_face_destroy (cpal); + hb_face_destroy (cbdt); + hb_face_destroy (sbix); + hb_face_destroy (svg); return status; } diff --git a/test/api/test-ot-extents-cff.c b/test/api/test-ot-extents-cff.c new file mode 100644 index 0000000..49b8799 --- /dev/null +++ b/test/api/test-ot-extents-cff.c @@ -0,0 +1,199 @@ +/* + * Copyright © 2018 Adobe Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Adobe Author(s): Michiharu Ariza + */ + +#include "hb-test.h" +#include <hb-ot.h> + +/* Unit tests for CFF/CFF2 glyph extents */ + +static void +test_extents_cff1 (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/SourceSansPro-Regular.abc.otf"); + g_assert (face); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + g_assert (font); + hb_ot_font_set_funcs (font); + + hb_glyph_extents_t extents; + hb_bool_t result = hb_font_get_glyph_extents (font, 1, &extents); + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 52); + g_assert_cmpint (extents.y_bearing, ==, 498); + g_assert_cmpint (extents.width, ==, 381); + g_assert_cmpint (extents.height, ==, -510); + + hb_font_destroy (font); + + hb_face_t *face_j = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,3041,4C2E.otf"); + g_assert (face_j); + hb_font_t *font_j = hb_font_create (face_j); + hb_face_destroy (face_j); + g_assert (font_j); + hb_ot_font_set_funcs (font_j); + + hb_bool_t result_j = hb_font_get_glyph_extents (font_j, 3, &extents); + g_assert (result_j); + + g_assert_cmpint (extents.x_bearing, ==, 34); + g_assert_cmpint (extents.y_bearing, ==, 840); + g_assert_cmpint (extents.width, ==, 920); + g_assert_cmpint (extents.height, ==, -907); + + hb_font_destroy (font_j); +} + +static void +test_extents_cff1_flex (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/cff1_flex.otf"); + g_assert (face); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + g_assert (font); + hb_ot_font_set_funcs (font); + + hb_glyph_extents_t extents; + hb_bool_t result = hb_font_get_glyph_extents (font, 1, &extents); + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, -20); + g_assert_cmpint (extents.y_bearing, ==, 520); + g_assert_cmpint (extents.width, ==, 540); + g_assert_cmpint (extents.height, ==, -540); + + hb_font_destroy (font); +} + +static void +test_extents_cff1_seac (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/cff1_seac.otf"); + g_assert (face); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + g_assert (font); + hb_ot_font_set_funcs (font); + + hb_glyph_extents_t extents; + hb_bool_t result = hb_font_get_glyph_extents (font, 3, &extents); /* Agrave */ + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 3); + g_assert_cmpint (extents.y_bearing, ==, 861); + g_assert_cmpint (extents.width, ==, 538); + g_assert_cmpint (extents.height, ==, -861); + + result = hb_font_get_glyph_extents (font, 4, &extents); /* Udieresis */ + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 87); + g_assert_cmpint (extents.y_bearing, ==, 827); + g_assert_cmpint (extents.width, ==, 471); + g_assert_cmpint (extents.height, ==, -839); + + hb_font_destroy (font); +} + +static void +test_extents_cff2 (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/AdobeVFPrototype.abc.otf"); + g_assert (face); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + g_assert (font); + hb_ot_font_set_funcs (font); + + hb_glyph_extents_t extents; + hb_bool_t result = hb_font_get_glyph_extents (font, 1, &extents); + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 46); + g_assert_cmpint (extents.y_bearing, ==, 487); + g_assert_cmpint (extents.width, ==, 455); + g_assert_cmpint (extents.height, ==, -500); + + float coords[2] = { 600.0f, 50.0f }; + hb_font_set_var_coords_design (font, coords, 2); + result = hb_font_get_glyph_extents (font, 1, &extents); + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 38); + g_assert_cmpint (extents.y_bearing, ==, 493); + g_assert_cmpint (extents.width, ==, 481); + g_assert_cmpint (extents.height, ==, -508); + + hb_font_destroy (font); +} + +static void +test_extents_cff2_vsindex (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/AdobeVFPrototype_vsindex.otf"); + g_assert (face); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + g_assert (font); + hb_ot_font_set_funcs (font); + + hb_glyph_extents_t extents; + float coords[2] = { 800.0f, 50.0f }; + hb_font_set_var_coords_design (font, coords, 2); + hb_bool_t result = hb_font_get_glyph_extents (font, 1, &extents); + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 11); + g_assert_cmpint (extents.y_bearing, ==, 656); + g_assert_cmpint (extents.width, ==, 653); + g_assert_cmpint (extents.height, ==, -656); + + result = hb_font_get_glyph_extents (font, 2, &extents); + g_assert (result); + + g_assert_cmpint (extents.x_bearing, ==, 7); + g_assert_cmpint (extents.y_bearing, ==, 669); + g_assert_cmpint (extents.width, ==, 650); + g_assert_cmpint (extents.height, ==, -669); + + hb_font_destroy (font); +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + hb_test_add (test_extents_cff1); + hb_test_add (test_extents_cff1_flex); + hb_test_add (test_extents_cff1_seac); + hb_test_add (test_extents_cff2); + hb_test_add (test_extents_cff2_vsindex); + + return hb_test_run (); +} diff --git a/test/api/test-ot-face.c b/test/api/test-ot-face.c new file mode 100644 index 0000000..f2d2fca --- /dev/null +++ b/test/api/test-ot-face.c @@ -0,0 +1,122 @@ +/* + * Copyright © 2011 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ + +#ifndef TEST_OT_FACE_NO_MAIN +#include "hb-test.h" +#endif +#include <hb-ot.h> + +/* Unit tests for hb-ot-*.h */ + + +static void +test_face (hb_face_t *face, + hb_codepoint_t cp) +{ + hb_font_t *font = hb_font_create (face); + hb_set_t *set; + hb_codepoint_t g; + hb_position_t x, y; + char buf[5] = {0}; + unsigned int len; + hb_glyph_extents_t extents; + hb_ot_font_set_funcs (font); + + set = hb_set_create (); + hb_face_collect_unicodes (face, set); + hb_face_collect_variation_selectors (face, set); + hb_face_collect_variation_unicodes (face, cp, set); + + hb_font_get_nominal_glyph (font, cp, &g); + hb_font_get_variation_glyph (font, cp, cp, &g); + hb_font_get_glyph_h_advance (font, cp); + hb_font_get_glyph_v_advance (font, cp); + hb_font_get_glyph_h_origin (font, cp, &x, &y); + hb_font_get_glyph_v_origin (font, cp, &x, &y); + hb_font_get_glyph_extents (font, cp, &extents); + hb_font_get_glyph_contour_point (font, cp, 0, &x, &y); + hb_font_get_glyph_name (font, cp, buf, sizeof (buf)); + hb_font_get_glyph_from_name (font, buf, strlen (buf), &g); + + hb_ot_color_has_palettes (face); + hb_ot_color_palette_get_count (face); + hb_ot_color_palette_get_name_id (face, cp); + hb_ot_color_palette_color_get_name_id (face, cp); + hb_ot_color_palette_get_flags (face, cp); + hb_ot_color_palette_get_colors (face, cp, 0, NULL, NULL); + hb_ot_color_has_layers (face); + hb_ot_color_glyph_get_layers (face, cp, 0, NULL, NULL); + hb_ot_color_has_svg (face); + hb_blob_destroy (hb_ot_color_glyph_reference_svg (face, cp)); + hb_ot_color_has_png (face); + hb_blob_destroy (hb_ot_color_glyph_reference_png (font, cp)); + + hb_ot_layout_has_glyph_classes (face); + hb_ot_layout_has_substitution (face); + hb_ot_layout_has_positioning (face); + + hb_ot_math_has_data (face); + hb_ot_math_get_constant (font, HB_OT_MATH_CONSTANT_MATH_LEADING); + hb_ot_math_get_glyph_italics_correction (font, cp); + hb_ot_math_get_glyph_top_accent_attachment (font, cp); + hb_ot_math_is_glyph_extended_shape (face, cp); + hb_ot_math_get_glyph_kerning (font, cp, HB_OT_MATH_KERN_BOTTOM_RIGHT, 0); + hb_ot_math_get_glyph_variants (font, cp, HB_DIRECTION_TTB, 0, NULL, NULL); + hb_ot_math_get_min_connector_overlap (font, HB_DIRECTION_RTL); + hb_ot_math_get_glyph_assembly (font, cp, HB_DIRECTION_BTT, 0, NULL, NULL, NULL); + + len = sizeof (buf); + hb_ot_name_list_names (face, NULL); + hb_ot_name_get_utf8 (face, cp, NULL, &len, buf); + hb_ot_name_get_utf16 (face, cp, NULL, NULL, NULL); + hb_ot_name_get_utf32 (face, cp, NULL, NULL, NULL); + + hb_ot_var_get_axis_count (face); + hb_ot_var_get_axis_infos (face, 0, NULL, NULL); + hb_ot_var_normalize_variations (face, NULL, 0, NULL, 0); + hb_ot_var_normalize_coords (face, 0, NULL, NULL); + + hb_set_destroy (set); + hb_font_destroy (font); +} + +#ifndef TEST_OT_FACE_NO_MAIN +static void +test_ot_face_empty (void) +{ + test_face (hb_face_get_empty (), 0); +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + hb_test_add (test_ot_face_empty); + + return hb_test_run(); +} +#endif diff --git a/test/api/test-ot-ligature-carets.c b/test/api/test-ot-ligature-carets.c new file mode 100644 index 0000000..d842785 --- /dev/null +++ b/test/api/test-ot-ligature-carets.c @@ -0,0 +1,67 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +#include "hb-test.h" + +#include <hb-ot.h> + +static void +test_ot_layout_feature_get_name_ids_and_characters (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/lcar.ttf"); + hb_font_t *font = hb_font_create (face); + hb_font_set_scale (font, hb_face_get_upem (face) * 2, hb_face_get_upem (face) * 4); + + hb_position_t caret_array[2]; + unsigned int caret_count = 2; + g_assert_cmpuint (2, ==, hb_ot_layout_get_ligature_carets (font, HB_DIRECTION_RTL, + 98, 0, &caret_count, + caret_array)); + + g_assert_cmpuint (2, ==, caret_count); + g_assert_cmpuint (1130, ==, caret_array[0]); + g_assert_cmpuint (2344, ==, caret_array[1]); + + g_assert_cmpuint (2, ==, hb_ot_layout_get_ligature_carets (font, HB_DIRECTION_BTT, + 98, 0, &caret_count, + caret_array)); + + g_assert_cmpuint (2, ==, caret_count); + g_assert_cmpuint (2260, ==, caret_array[0]); + g_assert_cmpuint (4688, ==, caret_array[1]); + + hb_font_destroy (font); + hb_face_destroy (face); +} + +int +main (int argc, char **argv) +{ + g_test_init (&argc, &argv, NULL); + + hb_test_add (test_ot_layout_feature_get_name_ids_and_characters); + + return hb_test_run (); +} diff --git a/test/api/test-ot-math.c b/test/api/test-ot-math.c index 0ca5566..7f50015 100644 --- a/test/api/test-ot-math.c +++ b/test/api/test-ot-math.c @@ -100,10 +100,14 @@ test_has_data (void) hb_face = hb_face_get_empty (); hb_font = hb_font_create (hb_face); g_assert(!hb_ot_math_has_data (hb_face)); // MATH table not available + hb_font_destroy (hb_font); + hb_face_destroy (hb_face); hb_font = hb_font_get_empty (); hb_face = hb_font_get_face (hb_font); g_assert(!hb_ot_math_has_data (hb_face)); // MATH table not available + hb_font_destroy (hb_font); + hb_face_destroy (hb_face); cleanupFreeType(); } @@ -396,8 +400,8 @@ test_get_min_connector_overlap (void) initFreeType(); openFont("fonts/MathTestFontEmpty.otf"); - g_assert_cmpint(hb_ot_math_get_min_connector_overlap(hb_font, FALSE), ==, 0); // MathVariants not available - g_assert_cmpint(hb_ot_math_get_min_connector_overlap(hb_font, TRUE), ==, 0); // MathVariants not available + g_assert_cmpint(hb_ot_math_get_min_connector_overlap(hb_font, HB_DIRECTION_LTR), ==, 0); // MathVariants not available + g_assert_cmpint(hb_ot_math_get_min_connector_overlap(hb_font, HB_DIRECTION_TTB), ==, 0); // MathVariants not available closeFont(); openFont("fonts/MathTestFontPartial1.otf"); diff --git a/test/api/test-ot-name.c b/test/api/test-ot-name.c new file mode 100644 index 0000000..c2ae4fd --- /dev/null +++ b/test/api/test-ot-name.c @@ -0,0 +1,106 @@ +/* + * Copyright © 2018 Ebrahim Byagowi + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +#include "hb-test.h" + +#include <hb-ot.h> + +static hb_face_t *face; + +static void +test_ot_layout_feature_get_name_ids_and_characters (void) +{ + hb_tag_t cv01 = HB_TAG ('c','v','0','1'); + unsigned int feature_index; + unsigned int num_named_parameters; + hb_ot_name_id_t label_id; + hb_ot_name_id_t tooltip_id; + hb_ot_name_id_t sample_id; + hb_ot_name_id_t first_param_id; + hb_codepoint_t characters[100]; + unsigned int char_count = 100; + unsigned int all_chars; + if (!hb_ot_layout_language_find_feature (face, + HB_OT_TAG_GSUB, + 0, + HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, + cv01, + &feature_index)) + g_error ("Failed to find feature index"); + + if (!hb_ot_layout_feature_get_name_ids (face, HB_OT_TAG_GSUB, feature_index, + &label_id, &tooltip_id, &sample_id, + &num_named_parameters, &first_param_id)) + g_error ("Failed to get name ids"); + + g_assert_cmpint (label_id, ==, 256); + g_assert_cmpint (tooltip_id, ==, 257); + g_assert_cmpint (sample_id, ==, 258); + g_assert_cmpint (num_named_parameters, ==, 2); + g_assert_cmpint (first_param_id, ==, 259); + + all_chars = hb_ot_layout_feature_get_characters (face, HB_OT_TAG_GSUB, feature_index, + 0, &char_count, characters); + + g_assert_cmpint (all_chars, ==, 2); + g_assert_cmpint (char_count, ==, 2); + g_assert_cmpint (characters[0], ==, 10); + g_assert_cmpint (characters[1], ==, 24030); +} + +static void +test_ot_name (void) +{ + unsigned int num_entries; + const hb_ot_name_entry_t *entries; + hb_ot_name_id_t name_id; + hb_language_t lang; + char text[10]; + unsigned int text_size = 10; + entries = hb_ot_name_list_names (face, &num_entries); + g_assert_cmpuint (12, ==, num_entries); + name_id = entries[3].name_id; + g_assert_cmpuint (3, ==, name_id); + lang = entries[3].language; + g_assert_cmpstr (hb_language_to_string (lang), ==, "en"); + g_assert_cmpuint (27, ==, hb_ot_name_get_utf8 (face, name_id, lang, &text_size, text)); + g_assert_cmpuint (9, ==, text_size); + g_assert_cmpstr (text, ==, "FontForge"); +} + +int +main (int argc, char **argv) +{ + unsigned int status; + g_test_init (&argc, &argv, NULL); + + hb_test_add (test_ot_layout_feature_get_name_ids_and_characters); + hb_test_add (test_ot_name); + + face = hb_test_open_font_file ("fonts/cv01.otf"); + status = hb_test_run (); + hb_face_destroy (face); + return status; +} diff --git a/test/api/test-ot-tag.c b/test/api/test-ot-tag.c index e821b36..60231af 100644 --- a/test/api/test-ot-tag.c +++ b/test/api/test-ot-tag.c @@ -37,50 +37,86 @@ static void test_simple_tags (const char *s, hb_script_t script) { hb_script_t tag; - hb_tag_t t1, t2; + unsigned int count = 2; + hb_tag_t t[2]; g_test_message ("Testing script %c%c%c%c: tag %s", HB_UNTAG (hb_script_to_iso15924_tag (script)), s); tag = hb_tag_from_string (s, -1); - hb_ot_tags_from_script (script, &t1, &t2); + hb_ot_tags_from_script_and_language (script, + HB_LANGUAGE_INVALID, + &count, t, NULL, NULL); - g_assert_cmphex (t1, ==, tag); - g_assert_cmphex (t2, ==, HB_OT_TAG_DEFAULT_SCRIPT); + if (count) + g_assert_cmphex (t[0], ==, tag); + else + g_assert_cmphex (HB_TAG_CHAR4 ("DFLT"), ==, tag); g_assert_cmphex (hb_ot_tag_to_script (tag), ==, script); } static void -test_indic_tags (const char *s1, const char *s2, hb_script_t script) +test_script_tags_from_language (const char *s, const char *lang_s, hb_script_t script) { - hb_script_t tag1, tag2; - hb_script_t t1, t2; + hb_script_t tag; + unsigned int count = 1; + hb_tag_t t; + + g_test_message ("Testing script %c%c%c%c: script tag %s, language tag %s", HB_UNTAG (hb_script_to_iso15924_tag (script)), s, lang_s); + tag = hb_tag_from_string (s, -1); + + hb_ot_tags_from_script_and_language (script, hb_language_from_string (lang_s, -1), &count, &t, NULL, NULL); + + if (count != 0) + { + g_assert_cmpuint (count, ==, 1); + g_assert_cmphex (t, ==, tag); + } +} - g_test_message ("Testing script %c%c%c%c: new tag %s, old tag %s", HB_UNTAG (hb_script_to_iso15924_tag (script)), s1, s2); +static void +test_indic_tags (const char *s1, const char *s2, const char *s3, hb_script_t script) +{ + hb_script_t tag1, tag2, tag3; + hb_tag_t t[3]; + unsigned int count = 3; + + g_test_message ("Testing script %c%c%c%c: USE tag %s, new tag %s, old tag %s", HB_UNTAG (hb_script_to_iso15924_tag (script)), s1, s2, s3); tag1 = hb_tag_from_string (s1, -1); tag2 = hb_tag_from_string (s2, -1); + tag3 = hb_tag_from_string (s3, -1); - hb_ot_tags_from_script (script, &t1, &t2); + hb_ot_tags_from_script_and_language (script, + HB_LANGUAGE_INVALID, + &count, t, NULL, NULL); - g_assert_cmphex (t1, ==, tag1); - g_assert_cmphex (t2, ==, tag2); + g_assert_cmpuint (count, ==, 3); + g_assert_cmphex (t[0], ==, tag1); + g_assert_cmphex (t[1], ==, tag2); + g_assert_cmphex (t[2], ==, tag3); g_assert_cmphex (hb_ot_tag_to_script (tag1), ==, script); g_assert_cmphex (hb_ot_tag_to_script (tag2), ==, script); + g_assert_cmphex (hb_ot_tag_to_script (tag3), ==, script); } static void test_ot_tag_script_degenerate (void) { - hb_tag_t t1, t2; + hb_tag_t t[2]; + unsigned int count = 2; g_assert_cmphex (HB_TAG_CHAR4 ("DFLT"), ==, HB_OT_TAG_DEFAULT_SCRIPT); /* HIRAGANA and KATAKANA both map to 'kana' */ test_simple_tags ("kana", HB_SCRIPT_KATAKANA); - hb_ot_tags_from_script (HB_SCRIPT_HIRAGANA, &t1, &t2); - g_assert_cmphex (t1, ==, HB_TAG_CHAR4 ("kana")); - g_assert_cmphex (t2, ==, HB_OT_TAG_DEFAULT_SCRIPT); + + hb_ot_tags_from_script_and_language (HB_SCRIPT_HIRAGANA, + HB_LANGUAGE_INVALID, + &count, t, NULL, NULL); + + g_assert_cmpuint (count, ==, 1); + g_assert_cmphex (t[0], ==, HB_TAG_CHAR4 ("kana")); test_simple_tags ("DFLT", HB_SCRIPT_INVALID); @@ -121,18 +157,40 @@ test_ot_tag_script_simple (void) } static void +test_ot_tag_script_from_language (void) +{ + test_script_tags_from_language (NULL, NULL, HB_SCRIPT_INVALID); + test_script_tags_from_language (NULL, "en", HB_SCRIPT_INVALID); + test_script_tags_from_language ("copt", "en", HB_SCRIPT_COPTIC); + test_script_tags_from_language (NULL, "x-hbsc", HB_SCRIPT_INVALID); + test_script_tags_from_language ("copt", "x-hbsc", HB_SCRIPT_COPTIC); + test_script_tags_from_language ("abc ", "x-hbscabc", HB_SCRIPT_INVALID); + test_script_tags_from_language ("deva", "x-hbscdeva", HB_SCRIPT_INVALID); + test_script_tags_from_language ("dev2", "x-hbscdev2", HB_SCRIPT_INVALID); + test_script_tags_from_language ("dev3", "x-hbscdev3", HB_SCRIPT_INVALID); + test_script_tags_from_language ("copt", "x-hbotpap0-hbsccopt", HB_SCRIPT_INVALID); + test_script_tags_from_language (NULL, "en-x-hbsc", HB_SCRIPT_INVALID); + test_script_tags_from_language ("copt", "en-x-hbsc", HB_SCRIPT_COPTIC); + test_script_tags_from_language ("abc ", "en-x-hbscabc", HB_SCRIPT_INVALID); + test_script_tags_from_language ("deva", "en-x-hbscdeva", HB_SCRIPT_INVALID); + test_script_tags_from_language ("dev2", "en-x-hbscdev2", HB_SCRIPT_INVALID); + test_script_tags_from_language ("dev3", "en-x-hbscdev3", HB_SCRIPT_INVALID); + test_script_tags_from_language ("copt", "en-x-hbotpap0-hbsccopt", HB_SCRIPT_INVALID); +} + +static void test_ot_tag_script_indic (void) { - test_indic_tags ("bng2", "beng", HB_SCRIPT_BENGALI); - test_indic_tags ("dev2", "deva", HB_SCRIPT_DEVANAGARI); - test_indic_tags ("gjr2", "gujr", HB_SCRIPT_GUJARATI); - test_indic_tags ("gur2", "guru", HB_SCRIPT_GURMUKHI); - test_indic_tags ("knd2", "knda", HB_SCRIPT_KANNADA); - test_indic_tags ("mlm2", "mlym", HB_SCRIPT_MALAYALAM); - test_indic_tags ("ory2", "orya", HB_SCRIPT_ORIYA); - test_indic_tags ("tml2", "taml", HB_SCRIPT_TAMIL); - test_indic_tags ("tel2", "telu", HB_SCRIPT_TELUGU); - test_indic_tags ("mym2", "mymr", HB_SCRIPT_MYANMAR); + test_indic_tags ("bng3", "bng2", "beng", HB_SCRIPT_BENGALI); + test_indic_tags ("dev3", "dev2", "deva", HB_SCRIPT_DEVANAGARI); + test_indic_tags ("gjr3", "gjr2", "gujr", HB_SCRIPT_GUJARATI); + test_indic_tags ("gur3", "gur2", "guru", HB_SCRIPT_GURMUKHI); + test_indic_tags ("knd3", "knd2", "knda", HB_SCRIPT_KANNADA); + test_indic_tags ("mlm3", "mlm2", "mlym", HB_SCRIPT_MALAYALAM); + test_indic_tags ("ory3", "ory2", "orya", HB_SCRIPT_ORIYA); + test_indic_tags ("tml3", "tml2", "taml", HB_SCRIPT_TAMIL); + test_indic_tags ("tel3", "tel2", "telu", HB_SCRIPT_TELUGU); + test_indic_tags ("mym3", "mym2", "mymr", HB_SCRIPT_MYANMAR); } @@ -144,10 +202,19 @@ test_language_two_way (const char *tag_s, const char *lang_s) { hb_language_t lang = hb_language_from_string (lang_s, -1); hb_tag_t tag = hb_tag_from_string (tag_s, -1); + hb_tag_t tag2; + unsigned int count = 1; g_test_message ("Testing language %s <-> tag %s", lang_s, tag_s); - g_assert_cmphex (tag, ==, hb_ot_tag_from_language (lang)); + hb_ot_tags_from_script_and_language (HB_SCRIPT_INVALID, + lang, + NULL, NULL, &count, &tag2); + + if (count) + g_assert_cmphex (tag, ==, tag2); + else + g_assert_cmphex (tag, ==, HB_TAG_CHAR4 ("dflt")); g_assert (lang == hb_ot_tag_to_language (tag)); } @@ -156,10 +223,19 @@ test_tag_from_language (const char *tag_s, const char *lang_s) { hb_language_t lang = hb_language_from_string (lang_s, -1); hb_tag_t tag = hb_tag_from_string (tag_s, -1); + hb_tag_t tag2; + unsigned int count = 1; g_test_message ("Testing language %s -> tag %s", lang_s, tag_s); - g_assert_cmphex (tag, ==, hb_ot_tag_from_language (lang)); + hb_ot_tags_from_script_and_language (HB_SCRIPT_INVALID, + lang, + NULL, NULL, &count, &tag2); + + if (count) + g_assert_cmphex (tag, ==, tag2); + else + g_assert_cmphex (tag, ==, HB_TAG_CHAR4 ("dflt")); } static void @@ -174,6 +250,32 @@ test_tag_to_language (const char *tag_s, const char *lang_s) } static void +test_tags_to_script_and_language (const char *script_tag_s, + const char *lang_tag_s, + const char *script_s, + const char *lang_s) +{ + hb_script_t actual_script[1]; + hb_language_t actual_lang[1]; + hb_tag_t script_tag = hb_tag_from_string (script_tag_s, -1); + hb_tag_t lang_tag = hb_tag_from_string (lang_tag_s, -1); + hb_ot_tags_to_script_and_language (script_tag, lang_tag, actual_script, actual_lang); + g_assert_cmphex (*actual_script, ==, hb_tag_from_string (script_s, -1)); + g_assert_cmpstr (hb_language_to_string (*actual_lang), ==, lang_s); +} + +static void +test_ot_tags_to_script_and_language (void) +{ + test_tags_to_script_and_language ("DFLT", "ENG", "", "en-x-hbscdflt"); + test_tags_to_script_and_language ("latn", "ENG", "Latn", "en"); + test_tags_to_script_and_language ("deva", "MAR", "Deva", "mr-x-hbscdeva"); + test_tags_to_script_and_language ("dev2", "MAR", "Deva", "mr-x-hbscdev2"); + test_tags_to_script_and_language ("dev3", "MAR", "Deva", "mr"); + test_tags_to_script_and_language ("qaa", "QTZ0", "Qaaa", "x-hbotqtz0-hbscqaa"); +} + +static void test_ot_tag_language (void) { g_assert_cmphex (HB_TAG_CHAR4 ("dflt"), ==, HB_OT_TAG_DEFAULT_LANGUAGE); @@ -230,27 +332,27 @@ test_ot_tag_language (void) test_language_two_way ("TUA", "tru"); /* Turoyo Aramaic */ - test_language_two_way ("ZHH", "zh-hk"); /* Chinese (Hong Kong) */ - test_tag_from_language ("ZHS", "zh"); /* Chinese */ test_tag_from_language ("ZHS", "zh-cn"); /* Chinese (China) */ test_tag_from_language ("ZHS", "zh-sg"); /* Chinese (Singapore) */ test_tag_from_language ("ZHH", "zh-mo"); /* Chinese (Macao) */ test_tag_from_language ("ZHH", "zh-hant-mo"); /* Chinese (Macao) */ - test_tag_from_language ("ZHH", "zh-hk"); /* Chinese (Hong Kong) */ + test_language_two_way ("ZHH", "zh-HK"); /* Chinese (Hong Kong) */ test_tag_from_language ("ZHH", "zH-HanT-hK"); /* Chinese (Hong Kong) */ test_tag_from_language ("ZHT", "zh-tw"); /* Chinese (Taiwan) */ - test_tag_from_language ("ZHS", "zh-Hans"); /* Chinese (Simplified) */ - test_tag_from_language ("ZHT", "zh-Hant"); /* Chinese (Traditional) */ + test_language_two_way ("ZHS", "zh-Hans"); /* Chinese (Simplified) */ + test_language_two_way ("ZHT", "zh-Hant"); /* Chinese (Traditional) */ test_tag_from_language ("ZHS", "zh-xx"); /* Chinese (Other) */ + test_tag_from_language ("ZHS", "zh-Hans-TW"); + + test_tag_from_language ("ZHH", "yue"); + test_tag_from_language ("ZHH", "yue-Hant"); + test_tag_from_language ("ZHS", "yue-Hans"); + test_tag_from_language ("ZHS", "zh"); /* Chinese */ test_tag_from_language ("ZHS", "zh-xx"); - test_tag_to_language ("ZHS", "zh-Hans"); - test_tag_to_language ("ZHT", "zh-Hant"); - test_tag_to_language ("ZHP", "x-hbotzhp"); - test_language_two_way ("ABC", "x-hbotabc"); test_tag_from_language ("ABC", "asdf-asdf-wer-x-hbotabc-zxc"); test_tag_from_language ("ABC", "asdf-asdf-wer-x-hbotabc"); @@ -262,39 +364,64 @@ test_ot_tag_language (void) test_tag_from_language ("XYZ", "xyz"); /* Unknown ISO 639-3 */ test_tag_from_language ("XYZ", "xyz-qw"); /* Unknown ISO 639-3 */ + /* + * Invalid input. The precise answer does not matter, as long as it + * does not crash or get into an infinite loop. + */ + test_tag_from_language ("IPPH", "-fonipa"); + + /* + * Tags that contain "-fonipa" as a substring but which do not contain + * the subtag "fonipa". + */ + test_tag_from_language ("ENG", "en-fonipax"); + test_tag_from_language ("ENG", "en-x-fonipa"); + test_tag_from_language ("ENG", "en-a-fonipa"); + test_tag_from_language ("ENG", "en-a-qwe-b-fonipa"); + /* International Phonetic Alphabet */ test_tag_from_language ("IPPH", "en-fonipa"); + test_tag_from_language ("IPPH", "en-fonipax-fonipa"); test_tag_from_language ("IPPH", "rm-CH-fonipa-sursilv-x-foobar"); - test_tag_from_language ("IPPH", "und-fonipa"); + test_language_two_way ("IPPH", "und-fonipa"); test_tag_from_language ("IPPH", "zh-fonipa"); - test_tag_to_language ("IPPH", "und-fonipa"); /* North American Phonetic Alphabet (Americanist Phonetic Notation) */ test_tag_from_language ("APPH", "en-fonnapa"); test_tag_from_language ("APPH", "chr-fonnapa"); - test_tag_from_language ("APPH", "und-fonnapa"); - test_tag_to_language ("APPH", "und-fonnapa"); + test_language_two_way ("APPH", "und-fonnapa"); + + /* Khutsuri Georgian */ + test_tag_from_language ("KGE", "ka-Geok"); + test_language_two_way ("KGE", "und-Geok"); + + /* Irish Traditional */ + test_language_two_way ("IRT", "ga-Latg"); + + /* Moldavian */ + test_language_two_way ("MOL", "ro-MD"); + + /* Polytonic Greek */ + test_language_two_way ("PGR", "el-polyton"); + test_tag_from_language ("PGR", "el-CY-polyton"); /* Estrangela Syriac */ test_tag_from_language ("SYRE", "aii-Syre"); test_tag_from_language ("SYRE", "de-Syre"); test_tag_from_language ("SYRE", "syr-Syre"); - test_tag_from_language ("SYRE", "und-Syre"); - test_tag_to_language ("SYRE", "und-Syre"); + test_language_two_way ("SYRE", "und-Syre"); /* Western Syriac */ test_tag_from_language ("SYRJ", "aii-Syrj"); test_tag_from_language ("SYRJ", "de-Syrj"); test_tag_from_language ("SYRJ", "syr-Syrj"); - test_tag_from_language ("SYRJ", "und-Syrj"); - test_tag_to_language ("SYRJ", "und-Syrj"); + test_language_two_way ("SYRJ", "und-Syrj"); /* Eastern Syriac */ test_tag_from_language ("SYRN", "aii-Syrn"); test_tag_from_language ("SYRN", "de-Syrn"); test_tag_from_language ("SYRN", "syr-Syrn"); - test_tag_from_language ("SYRN", "und-Syrn"); - test_tag_to_language ("SYRN", "und-Syrn"); + test_language_two_way ("SYRN", "und-Syrn"); /* Test that x-hbot overrides the base language */ test_tag_from_language ("ABC", "fa-x-hbotabc-zxc"); @@ -303,6 +430,81 @@ test_ot_tag_language (void) test_tag_from_language ("ABC", "zh-cn-x-hbotabc-zxc"); test_tag_from_language ("ABC", "zh-xy-x-hbotabc-zxc"); test_tag_from_language ("ABC", "xyz-xy-x-hbotabc-zxc"); + + /* Unnormalized BCP 47 tags */ + test_tag_from_language ("ARA", "ar-aao"); + test_tag_from_language ("JBO", "art-lojban"); + test_tag_from_language ("KOK", "kok-gom"); + test_tag_from_language ("LTZ", "i-lux"); + test_tag_from_language ("MNG", "drh"); + test_tag_from_language ("MOR", "ar-ary"); + test_tag_from_language ("MOR", "ar-ary-DZ"); + test_tag_from_language ("NOR", "no-bok"); + test_tag_from_language ("NYN", "no-nyn"); + test_tag_from_language ("ZHS", "i-hak"); + test_tag_from_language ("ZHS", "zh-guoyu"); + test_tag_from_language ("ZHS", "zh-min"); + test_tag_from_language ("ZHS", "zh-min-nan"); + test_tag_from_language ("ZHS", "zh-xiang"); + + /* A UN M.49 region code, not an extended language subtag */ + test_tag_from_language ("ARA", "ar-001"); + + /* An invalid tag */ + test_tag_from_language ("TRK", "tr@foo=bar"); +} + +static void +test_tags (hb_script_t script, + const char *lang_s, + unsigned int script_count, + unsigned int language_count, + unsigned int expected_script_count, + unsigned int expected_language_count, + ...) +{ + va_list expected_tags; + unsigned int i; + hb_tag_t *script_tags = malloc (script_count * sizeof (hb_tag_t)); + hb_tag_t *language_tags = malloc (language_count * sizeof (hb_tag_t)); + hb_language_t lang; + g_assert (script_tags); + g_assert (language_tags); + lang = hb_language_from_string (lang_s, -1); + va_start (expected_tags, expected_language_count); + + hb_ot_tags_from_script_and_language (script, lang, &script_count, script_tags, &language_count, language_tags); + + g_assert_cmpuint (script_count, ==, expected_script_count); + g_assert_cmpuint (language_count, ==, expected_language_count); + + for (i = 0; i < script_count + language_count; i++) + { + hb_tag_t expected_tag = hb_tag_from_string (va_arg (expected_tags, const char *), -1); + hb_tag_t actual_tag = i < script_count ? script_tags[i] : language_tags[i - script_count]; + g_assert_cmphex (actual_tag, ==, expected_tag); + } + + free (script_tags); + free (language_tags); + va_end (expected_tags); +} + +static void +test_ot_tag_full (void) +{ + test_tags (HB_SCRIPT_INVALID, "en", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 0, 1, "ENG"); + test_tags (HB_SCRIPT_INVALID, "en-x-hbscdflt", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 1, 1, "DFLT", "ENG"); + test_tags (HB_SCRIPT_LATIN, "en", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 1, 1, "latn", "ENG"); + test_tags (HB_SCRIPT_LATIN, "en", 0, 0, 0, 0); + test_tags (HB_SCRIPT_INVALID, "und-fonnapa", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 0, 1, "APPH"); + test_tags (HB_SCRIPT_INVALID, "en-fonnapa", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 0, 1, "APPH"); + test_tags (HB_SCRIPT_INVALID, "x-hbot1234-hbsc5678", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 1, 1, "5678", "1234"); + test_tags (HB_SCRIPT_INVALID, "x-hbsc5678-hbot1234", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 1, 1, "5678", "1234"); + test_tags (HB_SCRIPT_MALAYALAM, "ml", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 3, 2, "mlm3", "mlm2", "mlym", "MAL", "MLR"); + test_tags (HB_SCRIPT_MALAYALAM, "ml", 1, 1, 1, 1, "mlm3", "MAL"); + test_tags (HB_SCRIPT_INVALID, "xyz", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 0, 1, "XYZ"); + test_tags (HB_SCRIPT_INVALID, "xy", HB_OT_MAX_TAGS_PER_SCRIPT, HB_OT_MAX_TAGS_PER_LANGUAGE, 0, 0); } int @@ -312,9 +514,14 @@ main (int argc, char **argv) hb_test_add (test_ot_tag_script_degenerate); hb_test_add (test_ot_tag_script_simple); + hb_test_add (test_ot_tag_script_from_language); hb_test_add (test_ot_tag_script_indic); + hb_test_add (test_ot_tags_to_script_and_language); + hb_test_add (test_ot_tag_language); + hb_test_add (test_ot_tag_full); + return hb_test_run(); } diff --git a/test/api/test-set.c b/test/api/test-set.c index 338a610..aa2b388 100644 --- a/test/api/test-set.c +++ b/test/api/test-set.c @@ -118,6 +118,9 @@ test_set_basic (void) g_assert (!hb_set_has (s, 801)); g_assert (!hb_set_has (s, 802)); + hb_set_del (s, 800); + g_assert (!hb_set_has (s, 800)); + hb_set_destroy (s); } @@ -262,6 +265,7 @@ test_set_algebra (void) hb_set_destroy (s); hb_set_destroy (o); + hb_set_destroy (o2); } static void @@ -380,10 +384,6 @@ test_set_empty (void) test_empty (b); - hb_set_invert (b); - - test_empty (b); - g_assert (!hb_set_allocation_successful (b)); hb_set_clear (b); diff --git a/test/api/test-shape.c b/test/api/test-shape.c index 6232e73..146cf0f 100644 --- a/test/api/test-shape.c +++ b/test/api/test-shape.c @@ -41,9 +41,9 @@ static const char test_data[] = "test\0data"; static hb_position_t -glyph_h_advance_func (hb_font_t *font, void *font_data, +glyph_h_advance_func (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t glyph, - void *user_data) + void *user_data HB_UNUSED) { switch (glyph) { case 1: return 10; @@ -54,10 +54,10 @@ glyph_h_advance_func (hb_font_t *font, void *font_data, } static hb_bool_t -glyph_func (hb_font_t *font, void *font_data, - hb_codepoint_t unicode, hb_codepoint_t variant_selector, +glyph_func (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, + hb_codepoint_t unicode, hb_codepoint_t *glyph, - void *user_data) + void *user_data HB_UNUSED) { switch (unicode) { case 'T': *glyph = 1; return TRUE; @@ -68,9 +68,9 @@ glyph_func (hb_font_t *font, void *font_data, } static hb_position_t -glyph_h_kerning_func (hb_font_t *font, void *font_data, +glyph_h_kerning_func (hb_font_t *font HB_UNUSED, void *font_data HB_UNUSED, hb_codepoint_t left, hb_codepoint_t right, - void *user_data) + void *user_data HB_UNUSED) { if (left == 1 && right == 2) return -2; @@ -101,7 +101,7 @@ test_shape (void) ffuncs = hb_font_funcs_create (); hb_font_funcs_set_glyph_h_advance_func (ffuncs, glyph_h_advance_func, NULL, NULL); - hb_font_funcs_set_glyph_func (ffuncs, glyph_func, malloc (10), free); + hb_font_funcs_set_nominal_glyph_func (ffuncs, glyph_func, malloc (10), free); hb_font_funcs_set_glyph_h_kerning_func (ffuncs, glyph_h_kerning_func, NULL, NULL); hb_font_set_funcs (font, ffuncs, NULL, NULL); hb_font_funcs_destroy (ffuncs); diff --git a/test/api/test-subset-cff1.c b/test/api/test-subset-cff1.c new file mode 100644 index 0000000..3ee2702 --- /dev/null +++ b/test/api/test-subset-cff1.c @@ -0,0 +1,312 @@ +/* + * Copyright © 2018 Adobe Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Adobe Author(s): Michiharu Ariza + */ + +#include "hb-test.h" +#include "hb-subset-test.h" + +/* Unit tests for CFF subsetting */ + +static void +test_subset_cff1_noop (void) +{ + hb_face_t *face_abc = hb_test_open_font_file("fonts/SourceSansPro-Regular.abc.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'b'); + hb_set_add (codepoints, 'c'); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_abc, face_abc_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); +} + +static void +test_subset_cff1 (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/SourceSansPro-Regular.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/SourceSansPro-Regular.ac.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff1_strip_hints (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/SourceSansPro-Regular.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/SourceSansPro-Regular.ac.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C', 'F', 'F', ' ')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff1_desubr (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/SourceSansPro-Regular.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/SourceSansPro-Regular.ac.nosubrs.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_desubroutinize (input, true); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff1_desubr_strip_hints (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/SourceSansPro-Regular.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/SourceSansPro-Regular.ac.nosubrs.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); + hb_subset_input_set_desubroutinize (input, true); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C', 'F', 'F', ' ')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff1_j (void) +{ + hb_face_t *face_41_3041_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,3041,4C2E.otf"); + hb_face_t *face_41_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,4C2E.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_41_3041_4c2e_subset; + hb_set_add (codepoints, 0x41); + hb_set_add (codepoints, 0x4C2E); + face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_41_4c2e, face_41_3041_4c2e_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_41_3041_4c2e_subset); + hb_face_destroy (face_41_3041_4c2e); + hb_face_destroy (face_41_4c2e); +} + +static void +test_subset_cff1_j_strip_hints (void) +{ + hb_face_t *face_41_3041_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,3041,4C2E.otf"); + hb_face_t *face_41_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,4C2E.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_41_3041_4c2e_subset; + hb_subset_input_t *input; + hb_set_add (codepoints, 0x41); + hb_set_add (codepoints, 0x4C2E); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); + face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_41_4c2e, face_41_3041_4c2e_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_41_3041_4c2e_subset); + hb_face_destroy (face_41_3041_4c2e); + hb_face_destroy (face_41_4c2e); +} + +static void +test_subset_cff1_j_desubr (void) +{ + hb_face_t *face_41_3041_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,3041,4C2E.otf"); + hb_face_t *face_41_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,4C2E.nosubrs.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_41_3041_4c2e_subset; + hb_subset_input_t *input; + hb_set_add (codepoints, 0x41); + hb_set_add (codepoints, 0x4C2E); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_desubroutinize (input, true); + face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_41_4c2e, face_41_3041_4c2e_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_41_3041_4c2e_subset); + hb_face_destroy (face_41_3041_4c2e); + hb_face_destroy (face_41_4c2e); +} + +static void +test_subset_cff1_j_desubr_strip_hints (void) +{ + hb_face_t *face_41_3041_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,3041,4C2E.otf"); + hb_face_t *face_41_4c2e = hb_test_open_font_file ("fonts/SourceHanSans-Regular.41,4C2E.nosubrs.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_41_3041_4c2e_subset; + hb_subset_input_t *input; + hb_set_add (codepoints, 0x41); + hb_set_add (codepoints, 0x4C2E); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); + hb_subset_input_set_desubroutinize (input, true); + face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_41_4c2e, face_41_3041_4c2e_subset, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_41_3041_4c2e_subset); + hb_face_destroy (face_41_3041_4c2e); + hb_face_destroy (face_41_4c2e); +} + +static void +test_subset_cff1_expert (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/cff1_expert.otf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/cff1_expert.2D,F6E9,FB00.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_test; + hb_set_add (codepoints, 0x2D); + hb_set_add (codepoints, 0xF6E9); + hb_set_add (codepoints, 0xFB00); + face_test = hb_subset_test_create_subset (face, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_subset, face_test, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_test); + hb_face_destroy (face_subset); + hb_face_destroy (face); +} + +static void +test_subset_cff1_seac (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/cff1_seac.otf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/cff1_seac.C0.otf"); + hb_face_t *face_test; + + hb_set_t *codepoints = hb_set_create (); + hb_set_add (codepoints, 0xC0); /* Agrave */ + face_test = hb_subset_test_create_subset (face, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_subset, face_test, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_test); + hb_face_destroy (face_subset); + hb_face_destroy (face); +} + +static void +test_subset_cff1_dotsection (void) +{ + hb_face_t *face = hb_test_open_font_file ("fonts/cff1_dotsect.otf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/cff1_dotsect.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_test; + hb_set_add (codepoints, 0x69); /* i */ + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); + face_test = hb_subset_test_create_subset (face, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_subset, face_test, HB_TAG ('C','F','F',' ')); + + hb_face_destroy (face_test); + hb_face_destroy (face_subset); + hb_face_destroy (face); +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + hb_test_add (test_subset_cff1_noop); + hb_test_add (test_subset_cff1); + hb_test_add (test_subset_cff1_strip_hints); + hb_test_add (test_subset_cff1_desubr); + hb_test_add (test_subset_cff1_desubr_strip_hints); + hb_test_add (test_subset_cff1_j); + hb_test_add (test_subset_cff1_j_strip_hints); + hb_test_add (test_subset_cff1_j_desubr); + hb_test_add (test_subset_cff1_j_desubr_strip_hints); + hb_test_add (test_subset_cff1_expert); + hb_test_add (test_subset_cff1_seac); + hb_test_add (test_subset_cff1_dotsection); + + return hb_test_run (); +} diff --git a/test/api/test-subset-cff2.c b/test/api/test-subset-cff2.c new file mode 100644 index 0000000..9367965 --- /dev/null +++ b/test/api/test-subset-cff2.c @@ -0,0 +1,153 @@ +/* + * Copyright © 2018 Adobe Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Adobe Author(s): Michiharu Ariza + */ + +#include "hb-test.h" +#include "hb-subset-test.h" + +/* Unit tests for CFF2 subsetting */ + +static void +test_subset_cff2_noop (void) +{ + hb_face_t *face_abc = hb_test_open_font_file("fonts/AdobeVFPrototype.abc.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'b'); + hb_set_add (codepoints, 'c'); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_abc, face_abc_subset, HB_TAG ('C','F','F','2')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); +} + +static void +test_subset_cff2 (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/AdobeVFPrototype.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/AdobeVFPrototype.ac.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C','F','F','2')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff2_strip_hints (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/AdobeVFPrototype.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/AdobeVFPrototype.ac.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C', 'F', 'F', '2')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff2_desubr (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/AdobeVFPrototype.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/AdobeVFPrototype.ac.nosubrs.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_desubroutinize (input, true); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C', 'F', 'F', '2')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +static void +test_subset_cff2_desubr_strip_hints (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/AdobeVFPrototype.abc.otf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/AdobeVFPrototype.ac.nosubrs.nohints.otf"); + + hb_set_t *codepoints = hb_set_create (); + hb_subset_input_t *input; + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + hb_set_add (codepoints, 'c'); + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_desubroutinize (input, true); + hb_subset_input_set_drop_hints (input, true); + face_abc_subset = hb_subset_test_create_subset (face_abc, input); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_ac, face_abc_subset, HB_TAG ('C', 'F', 'F', '2')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_ac); +} + +int +main (int argc, char **argv) +{ + hb_test_init (&argc, &argv); + + hb_test_add (test_subset_cff2_noop); + hb_test_add (test_subset_cff2); + hb_test_add (test_subset_cff2_strip_hints); + hb_test_add (test_subset_cff2_desubr); + hb_test_add (test_subset_cff2_desubr_strip_hints); + + return hb_test_run (); +} diff --git a/test/api/test-subset-cmap.c b/test/api/test-subset-cmap.c index 84d34bc..74e91ca 100644 --- a/test/api/test-subset-cmap.c +++ b/test/api/test-subset-cmap.c @@ -32,8 +32,8 @@ static void test_subset_cmap (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Roboto-Regular.abc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_abc_subset; @@ -52,7 +52,7 @@ test_subset_cmap (void) static void test_subset_cmap_non_consecutive_glyphs (void) { - hb_face_t *face = hb_subset_test_open_font ("fonts/Roboto-Regular.D7,D8,D9,DA,DE.ttf"); + hb_face_t *face = hb_test_open_font_file ("fonts/Roboto-Regular.D7,D8,D9,DA,DE.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_subset; @@ -74,7 +74,7 @@ test_subset_cmap_non_consecutive_glyphs (void) static void test_subset_cmap_noop (void) { - hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_abc_subset; diff --git a/test/api/test-subset-glyf.c b/test/api/test-subset-glyf.c index e4440e0..0e5c293 100644 --- a/test/api/test-subset-glyf.c +++ b/test/api/test-subset-glyf.c @@ -60,8 +60,8 @@ static void check_maxp_num_glyphs (hb_face_t *face, uint16_t expected_num_glyphs static void test_subset_glyf (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Roboto-Regular.abc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_abc_subset; @@ -82,8 +82,8 @@ test_subset_glyf (void) static void test_subset_glyf_with_components (void) { - hb_face_t *face_components = hb_subset_test_open_font ("fonts/Roboto-Regular.components.ttf"); - hb_face_t *face_subset = hb_subset_test_open_font ("fonts/Roboto-Regular.components.subset.ttf"); + hb_face_t *face_components = hb_test_open_font_file ("fonts/Roboto-Regular.components.ttf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/Roboto-Regular.components.subset.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_generated_subset; @@ -103,18 +103,20 @@ test_subset_glyf_with_components (void) static void test_subset_glyf_with_gsub (void) { - hb_face_t *face_fil = hb_subset_test_open_font ("fonts/Roboto-Regular.gsub.fil.ttf"); - hb_face_t *face_fi = hb_subset_test_open_font ("fonts/Roboto-Regular.gsub.fi.ttf"); + hb_face_t *face_fil = hb_test_open_font_file ("fonts/Roboto-Regular.gsub.fil.ttf"); + hb_face_t *face_fi = hb_test_open_font_file ("fonts/Roboto-Regular.gsub.fi.ttf"); + hb_subset_input_t *input; + hb_face_t *face_subset; hb_set_t *codepoints = hb_set_create(); hb_set_add (codepoints, 102); // f hb_set_add (codepoints, 105); // i - hb_subset_input_t *input = hb_subset_test_create_input (codepoints); + input = hb_subset_test_create_input (codepoints); hb_set_destroy (codepoints); - *hb_subset_input_drop_ot_layout (input) = false; + hb_subset_input_set_drop_layout (input, false); - hb_face_t *face_subset = hb_subset_test_create_subset (face_fil, input); + face_subset = hb_subset_test_create_subset (face_fil, input); hb_subset_test_check (face_fi, face_subset, HB_TAG ('g','l','y','f')); hb_subset_test_check (face_fi, face_subset, HB_TAG ('l','o','c', 'a')); @@ -128,18 +130,20 @@ test_subset_glyf_with_gsub (void) static void test_subset_glyf_without_gsub (void) { - hb_face_t *face_fil = hb_subset_test_open_font ("fonts/Roboto-Regular.gsub.fil.ttf"); - hb_face_t *face_fi = hb_subset_test_open_font ("fonts/Roboto-Regular.nogsub.fi.ttf"); + hb_face_t *face_fil = hb_test_open_font_file ("fonts/Roboto-Regular.gsub.fil.ttf"); + hb_face_t *face_fi = hb_test_open_font_file ("fonts/Roboto-Regular.nogsub.fi.ttf"); + hb_subset_input_t *input; + hb_face_t *face_subset; hb_set_t *codepoints = hb_set_create(); hb_set_add (codepoints, 102); // f hb_set_add (codepoints, 105); // i - hb_subset_input_t *input = hb_subset_test_create_input (codepoints); + input = hb_subset_test_create_input (codepoints); hb_set_destroy (codepoints); - *hb_subset_input_drop_ot_layout (input) = true; + hb_subset_input_set_drop_layout (input, true); - hb_face_t *face_subset = hb_subset_test_create_subset (face_fil, input); + face_subset = hb_subset_test_create_subset (face_fil, input); hb_subset_test_check (face_fi, face_subset, HB_TAG ('g','l','y','f')); hb_subset_test_check (face_fi, face_subset, HB_TAG ('l','o','c', 'a')); @@ -153,7 +157,7 @@ test_subset_glyf_without_gsub (void) static void test_subset_glyf_noop (void) { - hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_abc_subset; @@ -174,8 +178,8 @@ test_subset_glyf_noop (void) static void test_subset_glyf_strip_hints_simple (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Roboto-Regular.abc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.nohints.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.nohints.ttf"); hb_set_t *codepoints = hb_set_create(); hb_subset_input_t *input; @@ -183,7 +187,7 @@ test_subset_glyf_strip_hints_simple (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - *hb_subset_input_drop_hints(input) = true; + hb_subset_input_set_drop_hints (input, true); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -199,15 +203,15 @@ test_subset_glyf_strip_hints_simple (void) static void test_subset_glyf_strip_hints_composite (void) { - hb_face_t *face_components = hb_subset_test_open_font ("fonts/Roboto-Regular.components.ttf"); - hb_face_t *face_subset = hb_subset_test_open_font ("fonts/Roboto-Regular.components.1fc.nohints.ttf"); + hb_face_t *face_components = hb_test_open_font_file ("fonts/Roboto-Regular.components.ttf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/Roboto-Regular.components.1fc.nohints.ttf"); hb_set_t *codepoints = hb_set_create(); hb_subset_input_t *input; hb_face_t *face_generated_subset; hb_set_add (codepoints, 0x1fc); input = hb_subset_test_create_input (codepoints); - *hb_subset_input_drop_hints(input) = true; + hb_subset_input_set_drop_hints (input, true); face_generated_subset = hb_subset_test_create_subset (face_components, input); hb_set_destroy (codepoints); @@ -224,7 +228,7 @@ test_subset_glyf_strip_hints_composite (void) static void test_subset_glyf_strip_hints_invalid (void) { - hb_face_t *face = hb_subset_test_open_font ("fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a"); hb_set_t *codepoints = hb_set_create(); const hb_codepoint_t text[] = @@ -233,16 +237,19 @@ test_subset_glyf_strip_hints_invalid (void) '3', '@', '_', '%', '&', ')', '*', '$', '!' }; unsigned int i; + hb_subset_input_t *input; + hb_face_t *face_subset; + for (i = 0; i < sizeof (text) / sizeof (hb_codepoint_t); i++) { hb_set_add (codepoints, text[i]); } - hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - *hb_subset_input_drop_hints(input) = true; + input = hb_subset_test_create_input (codepoints); + hb_subset_input_set_drop_hints (input, true); hb_set_destroy (codepoints); - hb_face_t *face_subset = hb_subset_test_create_subset (face, input); + face_subset = hb_subset_test_create_subset (face, input); g_assert (face_subset); g_assert (face_subset == hb_face_get_empty ()); diff --git a/test/api/test-subset-hdmx.c b/test/api/test-subset-hdmx.c index c78009b..44e579a 100644 --- a/test/api/test-subset-hdmx.c +++ b/test/api/test-subset-hdmx.c @@ -33,8 +33,8 @@ static void test_subset_hdmx_simple_subset (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Roboto-Regular.abc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_abc_subset; @@ -51,23 +51,42 @@ test_subset_hdmx_simple_subset (void) } static void +test_subset_hdmx_multiple_device_records (void) +{ + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.multihdmx.abc.ttf"); + hb_face_t *face_a = hb_test_open_font_file ("fonts/Roboto-Regular.multihdmx.a.ttf"); + + hb_set_t *codepoints = hb_set_create (); + hb_face_t *face_abc_subset; + hb_set_add (codepoints, 'a'); + face_abc_subset = hb_subset_test_create_subset (face_abc, hb_subset_test_create_input (codepoints)); + hb_set_destroy (codepoints); + + hb_subset_test_check (face_a, face_abc_subset, HB_TAG ('h','d','m','x')); + + hb_face_destroy (face_abc_subset); + hb_face_destroy (face_abc); + hb_face_destroy (face_a); +} + +static void test_subset_hdmx_invalid (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/crash-ccc61c92d589f895174cdef6ff2e3b20e9999a1a"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/crash-ccc61c92d589f895174cdef6ff2e3b20e9999a1a"); hb_subset_input_t *input = hb_subset_input_create_or_fail (); hb_set_t *codepoints = hb_subset_input_unicode_set (input); + hb_face_t *subset; + hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (face, profile, input); + subset = hb_subset (face, input); g_assert (subset); g_assert (subset == hb_face_get_empty ()); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); hb_face_destroy (subset); hb_face_destroy (face); } @@ -75,21 +94,21 @@ test_subset_hdmx_invalid (void) static void test_subset_hdmx_fails_sanitize (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5609911946838016"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5609911946838016"); hb_subset_input_t *input = hb_subset_input_create_or_fail (); hb_set_t *codepoints = hb_subset_input_unicode_set (input); + hb_face_t *subset; + hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (face, profile, input); + subset = hb_subset (face, input); g_assert (subset); g_assert (subset == hb_face_get_empty ()); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); hb_face_destroy (subset); hb_face_destroy (face); } @@ -97,7 +116,7 @@ test_subset_hdmx_fails_sanitize (void) static void test_subset_hdmx_noop (void) { - hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_abc_subset; @@ -119,6 +138,7 @@ main (int argc, char **argv) hb_test_init (&argc, &argv); hb_test_add (test_subset_hdmx_simple_subset); + hb_test_add (test_subset_hdmx_multiple_device_records); hb_test_add (test_subset_hdmx_invalid); hb_test_add (test_subset_hdmx_fails_sanitize); hb_test_add (test_subset_hdmx_noop); diff --git a/test/api/test-subset-hmtx.c b/test/api/test-subset-hmtx.c index 0ed6256..1b51dc2 100644 --- a/test/api/test-subset-hmtx.c +++ b/test/api/test-subset-hmtx.c @@ -47,8 +47,8 @@ static void check_num_hmetrics(hb_face_t *face, uint16_t expected_num_hmetrics) static void test_subset_hmtx_simple_subset (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Roboto-Regular.abc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Roboto-Regular.ac.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_abc_subset; @@ -69,8 +69,8 @@ test_subset_hmtx_simple_subset (void) static void test_subset_hmtx_monospace (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Inconsolata-Regular.abc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Inconsolata-Regular.ac.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Inconsolata-Regular.abc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Inconsolata-Regular.ac.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_abc_subset; @@ -91,8 +91,8 @@ test_subset_hmtx_monospace (void) static void test_subset_hmtx_keep_num_metrics (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Inconsolata-Regular.abc.widerc.ttf"); - hb_face_t *face_ac = hb_subset_test_open_font ("fonts/Inconsolata-Regular.ac.widerc.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Inconsolata-Regular.abc.widerc.ttf"); + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Inconsolata-Regular.ac.widerc.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_abc_subset; @@ -112,8 +112,8 @@ test_subset_hmtx_keep_num_metrics (void) static void test_subset_hmtx_decrease_num_metrics (void) { - hb_face_t *face_abc = hb_subset_test_open_font ("fonts/Inconsolata-Regular.abc.widerc.ttf"); - hb_face_t *face_ab = hb_subset_test_open_font ("fonts/Inconsolata-Regular.ab.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Inconsolata-Regular.abc.widerc.ttf"); + hb_face_t *face_ab = hb_test_open_font_file ("fonts/Inconsolata-Regular.ab.ttf"); hb_set_t *codepoints = hb_set_create (); hb_face_t *face_abc_subset; @@ -133,7 +133,7 @@ test_subset_hmtx_decrease_num_metrics (void) static void test_subset_hmtx_noop (void) { - hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_abc_subset; @@ -153,7 +153,8 @@ test_subset_hmtx_noop (void) static void test_subset_invalid_hmtx (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/crash-e4e0bb1458a91b692eba492c907ae1f94e635480"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/crash-e4e0bb1458a91b692eba492c907ae1f94e635480"); + hb_face_t *subset; hb_subset_input_t *input = hb_subset_input_create_or_fail (); hb_set_t *codepoints = hb_subset_input_unicode_set (input); @@ -161,13 +162,11 @@ test_subset_invalid_hmtx (void) hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (face, profile, input); + subset = hb_subset (face, input); g_assert (subset); g_assert (subset == hb_face_get_empty ()); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); hb_face_destroy (subset); hb_face_destroy (face); } diff --git a/test/api/test-subset-os2.c b/test/api/test-subset-os2.c index de63a3f..dfc9461 100644 --- a/test/api/test-subset-os2.c +++ b/test/api/test-subset-os2.c @@ -31,8 +31,8 @@ static void test_subset_os2 (void) { - hb_face_t *face_abc = hb_subset_test_open_font("fonts/Roboto-Regular.abc.ttf"); - hb_face_t *face_b = hb_subset_test_open_font("fonts/Roboto-Regular.b.ttf"); + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf"); + hb_face_t *face_b = hb_test_open_font_file ("fonts/Roboto-Regular.b.ttf"); hb_set_t *codepoints = hb_set_create(); hb_face_t *face_abc_subset; diff --git a/test/api/test-subset-post.c b/test/api/test-subset-post.c index 948b18a..e31b01e 100644 --- a/test/api/test-subset-post.c +++ b/test/api/test-subset-post.c @@ -32,13 +32,14 @@ static void test_post_drops_glyph_names (void) { - hb_face_t *face_full = hb_subset_test_open_font ("fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"); - hb_face_t *face_subset = hb_subset_test_open_font ("fonts/Mplus1p-Regular.660E.ttf"); + hb_face_t *face_full = hb_test_open_font_file ("fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/Mplus1p-Regular.660E.ttf"); + hb_face_t *face_full_subset; hb_set_t *codepoints = hb_set_create (); hb_set_add (codepoints, 0x660E); - hb_face_t *face_full_subset = hb_subset_test_create_subset (face_full, hb_subset_test_create_input (codepoints)); + face_full_subset = hb_subset_test_create_subset (face_full, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); hb_subset_test_check (face_subset, face_full_subset, HB_TAG ('p','o','s','t')); diff --git a/test/api/test-subset-vmtx.c b/test/api/test-subset-vmtx.c index 437f0c2..24a4a76 100644 --- a/test/api/test-subset-vmtx.c +++ b/test/api/test-subset-vmtx.c @@ -46,13 +46,14 @@ static void check_num_vmetrics(hb_face_t *face, uint16_t expected_num_vmetrics) static void test_subset_vmtx_simple_subset (void) { - hb_face_t *face_full = hb_subset_test_open_font ("fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"); - hb_face_t *face_subset = hb_subset_test_open_font ("fonts/Mplus1p-Regular.660E.ttf"); + hb_face_t *face_full = hb_test_open_font_file ("fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"); + hb_face_t *face_subset = hb_test_open_font_file ("fonts/Mplus1p-Regular.660E.ttf"); + hb_face_t *face_full_subset; hb_set_t *codepoints = hb_set_create (); hb_set_add (codepoints, 0x660E); - hb_face_t *face_full_subset = hb_subset_test_create_subset (face_full, hb_subset_test_create_input (codepoints)); + face_full_subset = hb_subset_test_create_subset (face_full, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_vmetrics(face_full_subset, 1); /* nothing has same width */ @@ -66,7 +67,8 @@ test_subset_vmtx_simple_subset (void) static void test_subset_vmtx_noop (void) { - hb_face_t *face_full = hb_subset_test_open_font ("fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"); + hb_face_t *face_full = hb_test_open_font_file ("fonts/Mplus1p-Regular.660E,6975,73E0,5EA6,8F38,6E05.ttf"); + hb_face_t *face_full_subset; hb_set_t *codepoints = hb_set_create(); hb_set_add (codepoints, 0x660E); @@ -75,7 +77,7 @@ test_subset_vmtx_noop (void) hb_set_add (codepoints, 0x5EA6); hb_set_add (codepoints, 0x8F38); hb_set_add (codepoints, 0x6E05); - hb_face_t *face_full_subset = hb_subset_test_create_subset (face_full, hb_subset_test_create_input (codepoints)); + face_full_subset = hb_subset_test_create_subset (face_full, hb_subset_test_create_input (codepoints)); hb_set_destroy (codepoints); check_num_vmetrics(face_full_subset, 1); /* all have the same width */ diff --git a/test/api/test-subset.c b/test/api/test-subset.c index 6d2bf06..85e4fdf 100644 --- a/test/api/test-subset.c +++ b/test/api/test-subset.c @@ -32,21 +32,21 @@ static void test_subset_32_tables (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/oom-6ef8c96d3710262511bcc730dce9c00e722cb653"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/oom-6ef8c96d3710262511bcc730dce9c00e722cb653"); hb_subset_input_t *input = hb_subset_input_create_or_fail (); hb_set_t *codepoints = hb_subset_input_unicode_set (input); + hb_face_t *subset; + hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (face, profile, input); + subset = hb_subset (face, input); g_assert (subset); g_assert (subset != hb_face_get_empty ()); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); hb_face_destroy (subset); hb_face_destroy (face); } @@ -54,21 +54,21 @@ test_subset_32_tables (void) static void test_subset_no_inf_loop (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5521982557782016"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5521982557782016"); hb_subset_input_t *input = hb_subset_input_create_or_fail (); hb_set_t *codepoints = hb_subset_input_unicode_set (input); + hb_face_t *subset; + hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (face, profile, input); + subset = hb_subset (face, input); g_assert (subset); g_assert (subset == hb_face_get_empty ()); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); hb_face_destroy (subset); hb_face_destroy (face); } @@ -76,21 +76,21 @@ test_subset_no_inf_loop (void) static void test_subset_crash (void) { - hb_face_t *face = hb_subset_test_open_font("fonts/crash-4b60576767ee4d9fe1cc10959d89baf73d4e8249"); + hb_face_t *face = hb_test_open_font_file ("../fuzzing/fonts/crash-4b60576767ee4d9fe1cc10959d89baf73d4e8249"); hb_subset_input_t *input = hb_subset_input_create_or_fail (); hb_set_t *codepoints = hb_subset_input_unicode_set (input); + hb_face_t *subset; + hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'b'); hb_set_add (codepoints, 'c'); - hb_subset_profile_t *profile = hb_subset_profile_create(); - hb_face_t *subset = hb_subset (face, profile, input); + subset = hb_subset (face, input); g_assert (subset); g_assert (subset == hb_face_get_empty ()); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); hb_face_destroy (subset); hb_face_destroy (face); } diff --git a/test/api/test-unicode.c b/test/api/test-unicode.c index 88f12e7..6195bb2 100644 --- a/test/api/test-unicode.c +++ b/test/api/test-unicode.c @@ -160,69 +160,6 @@ static const test_pair_t combining_class_tests_more[] = { 0x111111, 0 } }; -static const test_pair_t eastasian_width_tests[] = -{ - /* Neutral */ - { 0x0000, 1 }, - { 0x0483, 1 }, - { 0x0641, 1 }, - { 0xFFFC, 1 }, - { 0x10000, 1 }, - { 0xE0001, 1 }, - - /* Narrow */ - { 0x0020, 1 }, - { 0x0041, 1 }, - { 0x27E6, 1 }, - - /* Halfwidth */ - { 0x20A9, 1 }, - { 0xFF61, 1 }, - { 0xFF69, 1 }, - { 0xFFEE, 1 }, - - /* Ambiguous */ - { 0x00A1, 1 }, - { 0x00D8, 1 }, - { 0x02DD, 1 }, - { 0xE0100, 1 }, - { 0x100000, 1 }, - - /* Fullwidth */ - { 0x3000, 2 }, - { 0xFF60, 2 }, - - /* Wide */ - { 0x2329, 2 }, - { 0x3001, 2 }, - { 0xFE69, 2 }, - { 0x30000, 2 }, - { 0x3FFFD, 2 }, - - { 0x111111, 1 } -}; -static const test_pair_t eastasian_width_tests_more[] = -{ - /* Default Wide blocks */ - { 0x4DBF, 2 }, - { 0x9FFF, 2 }, - { 0xFAFF, 2 }, - { 0x2A6DF, 2 }, - { 0x2B73F, 2 }, - { 0x2B81F, 2 }, - { 0x2FA1F, 2 }, - - /* Uniode-5.2 character additions */ - /* Wide */ - { 0x115F, 2 }, - - /* Uniode-6.0 character additions */ - /* Wide */ - { 0x2B740, 2 }, - { 0x1B000, 2 }, - - { 0x111111, 1 } -}; static const test_pair_t general_category_tests[] = { @@ -469,7 +406,6 @@ typedef struct { static const property_t properties[] = { PROPERTY (combining_class, 0), - PROPERTY (eastasian_width, 1), PROPERTY (general_category, (unsigned int) HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER), PROPERTY (mirroring, RETURNS_UNICODE_ITSELF), PROPERTY (script, (unsigned int) HB_SCRIPT_UNKNOWN) @@ -645,18 +581,18 @@ typedef struct { } data_fixture_t; static void -data_fixture_init (data_fixture_t *f, gconstpointer user_data) +data_fixture_init (data_fixture_t *f, gconstpointer user_data HB_UNUSED) { f->data[0].value = MAGIC0; f->data[1].value = MAGIC1; } static void -data_fixture_finish (data_fixture_t *f, gconstpointer user_data) +data_fixture_finish (data_fixture_t *f HB_UNUSED, gconstpointer user_data HB_UNUSED) { } static void -test_unicode_subclassing_nil (data_fixture_t *f, gconstpointer user_data) +test_unicode_subclassing_nil (data_fixture_t *f, gconstpointer user_data HB_UNUSED) { hb_unicode_funcs_t *uf, *aa; @@ -678,7 +614,7 @@ test_unicode_subclassing_nil (data_fixture_t *f, gconstpointer user_data) } static void -test_unicode_subclassing_default (data_fixture_t *f, gconstpointer user_data) +test_unicode_subclassing_default (data_fixture_t *f, gconstpointer user_data HB_UNUSED) { hb_unicode_funcs_t *uf, *aa; @@ -697,7 +633,7 @@ test_unicode_subclassing_default (data_fixture_t *f, gconstpointer user_data) } static void -test_unicode_subclassing_deep (data_fixture_t *f, gconstpointer user_data) +test_unicode_subclassing_deep (data_fixture_t *f, gconstpointer user_data HB_UNUSED) { hb_unicode_funcs_t *uf, *aa; @@ -786,7 +722,6 @@ test_unicode_normalization (gconstpointer user_data) { hb_unicode_funcs_t *uf = (hb_unicode_funcs_t *) user_data; gunichar a, b, ab; - hb_codepoint_t decomposed[HB_UNICODE_MAX_DECOMPOSITION_LEN]; /* Test compose() */ @@ -849,56 +784,6 @@ test_unicode_normalization (gconstpointer user_data) g_assert (hb_unicode_decompose (uf, 0xD4CC, &a, &b) && a == 0x1111 && b == 0x1171); g_assert (hb_unicode_decompose (uf, 0xCE31, &a, &b) && a == 0xCE20 && b == 0x11B8); g_assert (hb_unicode_decompose (uf, 0xCE20, &a, &b) && a == 0x110E && b == 0x1173); - - - /* Test decompose_compatibility() */ - - /* Not decomposable */ - g_assert (hb_unicode_decompose_compatibility (uf, 0x0041, decomposed) == 0); - g_assert (hb_unicode_decompose_compatibility (uf, 0x1F632, decomposed) == 0); - - /* Singletons */ - g_assert (hb_unicode_decompose_compatibility (uf, 0x00B5, decomposed) == 1 && decomposed[0] == 0x03BC); - g_assert (hb_unicode_decompose_compatibility (uf, 0x03D6, decomposed) == 1 && decomposed[0] == 0x03C0); - - /* Arabic compatibility */ - g_assert (hb_unicode_decompose_compatibility (uf, 0xFB54, decomposed) == 1 && decomposed[0] == 0x067B); - - /* Longest decomposition ever */ - g_assert (18 <= HB_UNICODE_MAX_DECOMPOSITION_LEN); - g_assert (hb_unicode_decompose_compatibility (uf, 0xFDFA, decomposed) == 18 && decomposed[17] == 0x0645); - - /* Note: we deliberately don't test characters that have canonical decompositions but no - * compatibility decomposition against the decompose_compatibility() function as that we - * leave up to implementations (for now). */ - - /* Spaces */ - g_assert (hb_unicode_decompose_compatibility (uf, 0x2002, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2003, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2004, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2005, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2006, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2008, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2009, decomposed) == 1 && decomposed[0] == 0x0020); - g_assert (hb_unicode_decompose_compatibility (uf, 0x200A, decomposed) == 1 && decomposed[0] == 0x0020); - - /* Pairs */ - g_assert (hb_unicode_decompose_compatibility (uf, 0x0587, decomposed) == 2 && - decomposed[0] == 0x0565 && decomposed[1] == 0x0582); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2017, decomposed) == 2 && - decomposed[0] == 0x0020 && decomposed[1] == 0x0333); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2025, decomposed) == 2 && - decomposed[0] == 0x002E && decomposed[1] == 0x002E); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2033, decomposed) == 2 && - decomposed[0] == 0x2032 && decomposed[1] == 0x2032); - - /* Triples */ - g_assert (hb_unicode_decompose_compatibility (uf, 0x2026, decomposed) == 3 && - decomposed[0] == 0x002E && decomposed[1] == 0x002E && decomposed[2] == 0x002E); - g_assert (hb_unicode_decompose_compatibility (uf, 0x2034, decomposed) == 3 && - decomposed[0] == 0x2032 && decomposed[1] == 0x2032 && decomposed[2] == 0x2032); - g_assert (hb_unicode_decompose_compatibility (uf, 0x213B, decomposed) == 3 && - decomposed[0] == 0x0046 && decomposed[1] == 0x0041 && decomposed[2] == 0x0058); } diff --git a/test/fuzzing/CMakeLists.txt b/test/fuzzing/CMakeLists.txt index 2a45ef6..577d13c 100644 --- a/test/fuzzing/CMakeLists.txt +++ b/test/fuzzing/CMakeLists.txt @@ -2,7 +2,6 @@ if (HB_CHECK) file (READ "${CMAKE_CURRENT_SOURCE_DIR}/Makefile.am" MAKEFILEAM) extract_make_variable (hb_shape_fuzzer_SOURCES ${MAKEFILEAM}) extract_make_variable (hb_subset_fuzzer_SOURCES ${MAKEFILEAM}) - extract_make_variable (hb_subset_get_codepoints_fuzzer_SOURCES ${MAKEFILEAM}) # TODO: enable these two #extract_make_variable (FUZZING_CPPFLAGS ${MAKEFILEAM}) # extracting regex fail @@ -16,17 +15,13 @@ if (HB_CHECK) add_executable (hb-subset-fuzzer ${hb_subset_fuzzer_SOURCES}) target_link_libraries (hb-subset-fuzzer harfbuzz-subset) - add_executable (hb-subset-get-codepoints-fuzzer ${hb_subset_get_codepoints_fuzzer_SOURCES}) - target_link_libraries (hb-subset-get-codepoints-fuzzer harfbuzz-subset) - target_compile_definitions(hb-shape-fuzzer PUBLIC ${FUZZING_CPPFLAGS}) target_compile_definitions(hb-subset-fuzzer PUBLIC ${FUZZING_CPPFLAGS}) - target_compile_definitions(hb-subset-get-codepoints-fuzzer PUBLIC ${FUZZING_CPPFLAGS}) add_test (NAME hb-shape-fuzzer COMMAND "${PYTHON_EXECUTABLE}" run-shape-fuzzer-tests.py $<TARGET_FILE:hb-shape-fuzzer> WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) add_test (NAME hb-subset-fuzzer - COMMAND "${PYTHON_EXECUTABLE}" run-subset-fuzzer-tests.py $<TARGET_FILE:hb-subset-fuzzer> $<TARGET_FILE:hb-subset-get-codepoints-fuzzer> + COMMAND "${PYTHON_EXECUTABLE}" run-subset-fuzzer-tests.py $<TARGET_FILE:hb-subset-fuzzer> WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endif () diff --git a/test/fuzzing/Makefile.am b/test/fuzzing/Makefile.am index 5af5a73..a77df70 100644 --- a/test/fuzzing/Makefile.am +++ b/test/fuzzing/Makefile.am @@ -8,22 +8,24 @@ MAINTAINERCLEANFILES = # Convenience targets: lib: - @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src fuzzing + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib +libs: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs -$(top_builddir)/src/libharfbuzz-fuzzing.la: lib -$(top_builddir)/src/libharfbuzz-subset-fuzzing.la: lib +$(top_builddir)/src/libharfbuzz.la: lib +$(top_builddir)/src/libharfbuzz-subset.la: libs EXTRA_DIST += \ README \ run-shape-fuzzer-tests.py \ run-subset-fuzzer-tests.py \ CMakeLists.txt \ + fonts \ $(NULL) check_PROGRAMS = \ hb-shape-fuzzer \ hb-subset-fuzzer \ - hb-subset-get-codepoints-fuzzer \ $(NULL) AM_CPPFLAGS = \ @@ -31,24 +33,15 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/ \ -I$(top_builddir)/src/ \ $(NULL) -LDADD = \ - $(top_builddir)/src/libharfbuzz-fuzzing.la \ - $(NULL) hb_shape_fuzzer_SOURCES = \ hb-fuzzer.hh \ hb-shape-fuzzer.cc \ main.cc \ $(NULL) -hb_shape_fuzzer_LDADD = \ - $(LDADD) \ - $(NULL) -hb_shape_fuzzer_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(NULL) -hb_shape_fuzzer_DEPENDENCIES = \ - lib \ - $(NULL) +hb_shape_fuzzer_LDADD = $(top_builddir)/src/libharfbuzz.la +hb_shape_fuzzer_CPPFLAGS = $(AM_CPPFLAGS) +hb_shape_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz.la hb_subset_fuzzer_SOURCES = \ hb-fuzzer.hh \ @@ -56,32 +49,15 @@ hb_subset_fuzzer_SOURCES = \ main.cc \ $(NULL) hb_subset_fuzzer_LDADD = \ - $(top_builddir)/src/libharfbuzz-subset-fuzzing.la \ - $(NULL) -hb_subset_fuzzer_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(NULL) -hb_subset_fuzzer_DEPENDENCIES = \ - lib \ - $(NULL) - -hb_subset_get_codepoints_fuzzer_SOURCES = \ - hb-fuzzer.hh \ - hb-subset-get-codepoints-fuzzer.cc \ - main.cc \ - $(NULL) -hb_subset_get_codepoints_fuzzer_LDADD = \ - $(top_builddir)/src/libharfbuzz-subset-fuzzing.la \ - $(NULL) -hb_subset_get_codepoints_fuzzer_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(NULL) -hb_subset_get_codepoints_fuzzer_DEPENDENCIES = \ - lib \ - $(NULL) + $(top_builddir)/src/libharfbuzz.la \ + $(top_builddir)/src/libharfbuzz-subset.la +hb_subset_fuzzer_CPPFLAGS = $(AM_CPPFLAGS) +hb_subset_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz-subset.la check: EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" $(srcdir)/run-shape-fuzzer-tests.py EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" $(srcdir)/run-subset-fuzzer-tests.py +check-valgrind: + $(AM_V_at)RUN_VALGRIND=1 $(MAKE) $(AM_MAKEFLGS) check -include $(top_srcdir)/git.mk diff --git a/test/fuzzing/Makefile.in b/test/fuzzing/Makefile.in index dcbe021..7675ade 100644 --- a/test/fuzzing/Makefile.in +++ b/test/fuzzing/Makefile.in @@ -90,7 +90,7 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = hb-shape-fuzzer$(EXEEXT) hb-subset-fuzzer$(EXEEXT) \ - hb-subset-get-codepoints-fuzzer$(EXEEXT) $(am__EXEEXT_1) + $(am__EXEEXT_1) subdir = test/fuzzing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ @@ -98,8 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -113,9 +112,6 @@ am_hb_shape_fuzzer_OBJECTS = \ hb_shape_fuzzer-hb-shape-fuzzer.$(OBJEXT) \ hb_shape_fuzzer-main.$(OBJEXT) $(am__objects_1) hb_shape_fuzzer_OBJECTS = $(am_hb_shape_fuzzer_OBJECTS) -am__DEPENDENCIES_1 = -am__DEPENDENCIES_2 = $(top_builddir)/src/libharfbuzz-fuzzing.la \ - $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent @@ -124,11 +120,6 @@ am_hb_subset_fuzzer_OBJECTS = \ hb_subset_fuzzer-hb-subset-fuzzer.$(OBJEXT) \ hb_subset_fuzzer-main.$(OBJEXT) $(am__objects_1) hb_subset_fuzzer_OBJECTS = $(am_hb_subset_fuzzer_OBJECTS) -am_hb_subset_get_codepoints_fuzzer_OBJECTS = hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.$(OBJEXT) \ - hb_subset_get_codepoints_fuzzer-main.$(OBJEXT) \ - $(am__objects_1) -hb_subset_get_codepoints_fuzzer_OBJECTS = \ - $(am_hb_subset_get_codepoints_fuzzer_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -181,10 +172,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(hb_shape_fuzzer_SOURCES) $(hb_subset_fuzzer_SOURCES) \ - $(hb_subset_get_codepoints_fuzzer_SOURCES) -DIST_SOURCES = $(hb_shape_fuzzer_SOURCES) $(hb_subset_fuzzer_SOURCES) \ - $(hb_subset_get_codepoints_fuzzer_SOURCES) +SOURCES = $(hb_shape_fuzzer_SOURCES) $(hb_subset_fuzzer_SOURCES) +DIST_SOURCES = $(hb_shape_fuzzer_SOURCES) $(hb_subset_fuzzer_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -328,6 +317,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -398,7 +389,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = EXTRA_DIST = README run-shape-fuzzer-tests.py \ - run-subset-fuzzer-tests.py CMakeLists.txt $(NULL) + run-subset-fuzzer-tests.py CMakeLists.txt fonts $(NULL) CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = @@ -408,28 +399,15 @@ AM_CPPFLAGS = \ -I$(top_builddir)/src/ \ $(NULL) -LDADD = \ - $(top_builddir)/src/libharfbuzz-fuzzing.la \ - $(NULL) - hb_shape_fuzzer_SOURCES = \ hb-fuzzer.hh \ hb-shape-fuzzer.cc \ main.cc \ $(NULL) -hb_shape_fuzzer_LDADD = \ - $(LDADD) \ - $(NULL) - -hb_shape_fuzzer_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(NULL) - -hb_shape_fuzzer_DEPENDENCIES = \ - lib \ - $(NULL) - +hb_shape_fuzzer_LDADD = $(top_builddir)/src/libharfbuzz.la +hb_shape_fuzzer_CPPFLAGS = $(AM_CPPFLAGS) +hb_shape_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz.la hb_subset_fuzzer_SOURCES = \ hb-fuzzer.hh \ hb-subset-fuzzer.cc \ @@ -437,35 +415,11 @@ hb_subset_fuzzer_SOURCES = \ $(NULL) hb_subset_fuzzer_LDADD = \ - $(top_builddir)/src/libharfbuzz-subset-fuzzing.la \ - $(NULL) - -hb_subset_fuzzer_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(NULL) - -hb_subset_fuzzer_DEPENDENCIES = \ - lib \ - $(NULL) - -hb_subset_get_codepoints_fuzzer_SOURCES = \ - hb-fuzzer.hh \ - hb-subset-get-codepoints-fuzzer.cc \ - main.cc \ - $(NULL) - -hb_subset_get_codepoints_fuzzer_LDADD = \ - $(top_builddir)/src/libharfbuzz-subset-fuzzing.la \ - $(NULL) - -hb_subset_get_codepoints_fuzzer_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(NULL) - -hb_subset_get_codepoints_fuzzer_DEPENDENCIES = \ - lib \ - $(NULL) + $(top_builddir)/src/libharfbuzz.la \ + $(top_builddir)/src/libharfbuzz-subset.la +hb_subset_fuzzer_CPPFLAGS = $(AM_CPPFLAGS) +hb_subset_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz-subset.la all: all-am .SUFFIXES: @@ -517,10 +471,6 @@ hb-subset-fuzzer$(EXEEXT): $(hb_subset_fuzzer_OBJECTS) $(hb_subset_fuzzer_DEPEND @rm -f hb-subset-fuzzer$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(hb_subset_fuzzer_OBJECTS) $(hb_subset_fuzzer_LDADD) $(LIBS) -hb-subset-get-codepoints-fuzzer$(EXEEXT): $(hb_subset_get_codepoints_fuzzer_OBJECTS) $(hb_subset_get_codepoints_fuzzer_DEPENDENCIES) $(EXTRA_hb_subset_get_codepoints_fuzzer_DEPENDENCIES) - @rm -f hb-subset-get-codepoints-fuzzer$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(hb_subset_get_codepoints_fuzzer_OBJECTS) $(hb_subset_get_codepoints_fuzzer_LDADD) $(LIBS) - mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -531,8 +481,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hb_shape_fuzzer-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hb_subset_fuzzer-hb-subset-fuzzer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hb_subset_fuzzer-main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Po@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -611,34 +559,6 @@ hb_subset_fuzzer-main.obj: main.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_subset_fuzzer-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi` -hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.o: hb-subset-get-codepoints-fuzzer.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.o -MD -MP -MF $(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Tpo -c -o hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.o `test -f 'hb-subset-get-codepoints-fuzzer.cc' || echo '$(srcdir)/'`hb-subset-get-codepoints-fuzzer.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Tpo $(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-subset-get-codepoints-fuzzer.cc' object='hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.o `test -f 'hb-subset-get-codepoints-fuzzer.cc' || echo '$(srcdir)/'`hb-subset-get-codepoints-fuzzer.cc - -hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.obj: hb-subset-get-codepoints-fuzzer.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.obj -MD -MP -MF $(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Tpo -c -o hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.obj `if test -f 'hb-subset-get-codepoints-fuzzer.cc'; then $(CYGPATH_W) 'hb-subset-get-codepoints-fuzzer.cc'; else $(CYGPATH_W) '$(srcdir)/hb-subset-get-codepoints-fuzzer.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Tpo $(DEPDIR)/hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hb-subset-get-codepoints-fuzzer.cc' object='hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_subset_get_codepoints_fuzzer-hb-subset-get-codepoints-fuzzer.obj `if test -f 'hb-subset-get-codepoints-fuzzer.cc'; then $(CYGPATH_W) 'hb-subset-get-codepoints-fuzzer.cc'; else $(CYGPATH_W) '$(srcdir)/hb-subset-get-codepoints-fuzzer.cc'; fi` - -hb_subset_get_codepoints_fuzzer-main.o: main.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hb_subset_get_codepoints_fuzzer-main.o -MD -MP -MF $(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Tpo -c -o hb_subset_get_codepoints_fuzzer-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Tpo $(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cc' object='hb_subset_get_codepoints_fuzzer-main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_subset_get_codepoints_fuzzer-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc - -hb_subset_get_codepoints_fuzzer-main.obj: main.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hb_subset_get_codepoints_fuzzer-main.obj -MD -MP -MF $(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Tpo -c -o hb_subset_get_codepoints_fuzzer-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Tpo $(DEPDIR)/hb_subset_get_codepoints_fuzzer-main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cc' object='hb_subset_get_codepoints_fuzzer-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hb_subset_get_codepoints_fuzzer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hb_subset_get_codepoints_fuzzer-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi` - mostlyclean-libtool: -rm -f *.lo @@ -857,14 +777,18 @@ uninstall-am: # Convenience targets: lib: - @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src fuzzing + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib +libs: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs -$(top_builddir)/src/libharfbuzz-fuzzing.la: lib -$(top_builddir)/src/libharfbuzz-subset-fuzzing.la: lib +$(top_builddir)/src/libharfbuzz.la: lib +$(top_builddir)/src/libharfbuzz-subset.la: libs check: EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" $(srcdir)/run-shape-fuzzer-tests.py EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" $(srcdir)/run-subset-fuzzer-tests.py +check-valgrind: + $(AM_V_at)RUN_VALGRIND=1 $(MAKE) $(AM_MAKEFLGS) check -include $(top_srcdir)/git.mk diff --git a/test/shaping/data/in-house/fonts/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf b/test/fuzzing/fonts/0509e80afb379d16560e9e47bdd7d888bebdebc6 Binary files differindex 2036031..2036031 100644 --- a/test/shaping/data/in-house/fonts/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf +++ b/test/fuzzing/fonts/0509e80afb379d16560e9e47bdd7d888bebdebc6 diff --git a/test/shaping/data/in-house/fonts/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf b/test/fuzzing/fonts/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf Binary files differindex c71e85a..c71e85a 100644 --- a/test/shaping/data/in-house/fonts/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf +++ b/test/fuzzing/fonts/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf diff --git a/test/shaping/data/in-house/fonts/205edd09bd3d141cc9580f650109556cc28b22cb.ttf b/test/fuzzing/fonts/205edd09bd3d141cc9580f650109556cc28b22cb Binary files differindex 4e0ce0a..4e0ce0a 100644 --- a/test/shaping/data/in-house/fonts/205edd09bd3d141cc9580f650109556cc28b22cb.ttf +++ b/test/fuzzing/fonts/205edd09bd3d141cc9580f650109556cc28b22cb diff --git a/test/shaping/data/in-house/fonts/217a934cfe15c548b572c203dceb2befdf026462.ttf b/test/fuzzing/fonts/217a934cfe15c548b572c203dceb2befdf026462 Binary files differindex 12b91a0..12b91a0 100644 --- a/test/shaping/data/in-house/fonts/217a934cfe15c548b572c203dceb2befdf026462.ttf +++ b/test/fuzzing/fonts/217a934cfe15c548b572c203dceb2befdf026462 diff --git a/test/shaping/data/in-house/fonts/3511ff5c1647150595846ac414c595cccac34f18.ttf b/test/fuzzing/fonts/3511ff5c1647150595846ac414c595cccac34f18 Binary files differindex 789abf7..789abf7 100644 --- a/test/shaping/data/in-house/fonts/3511ff5c1647150595846ac414c595cccac34f18.ttf +++ b/test/fuzzing/fonts/3511ff5c1647150595846ac414c595cccac34f18 diff --git a/test/shaping/data/in-house/fonts/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf b/test/fuzzing/fonts/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3 Binary files differindex b284c98..b284c98 100644 --- a/test/shaping/data/in-house/fonts/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf +++ b/test/fuzzing/fonts/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3 diff --git a/test/shaping/data/in-house/fonts/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf b/test/fuzzing/fonts/43979b90b2dd929723cf4fe1715990bcb9c9a56b Binary files differindex a5c0156..a5c0156 100644 --- a/test/shaping/data/in-house/fonts/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf +++ b/test/fuzzing/fonts/43979b90b2dd929723cf4fe1715990bcb9c9a56b diff --git a/test/shaping/data/in-house/fonts/558661aa659912f4d30ecd27bd09835171a8e2b0.ttf b/test/fuzzing/fonts/558661aa659912f4d30ecd27bd09835171a8e2b0 Binary files differindex 5d72fdf..5d72fdf 100644 --- a/test/shaping/data/in-house/fonts/558661aa659912f4d30ecd27bd09835171a8e2b0.ttf +++ b/test/fuzzing/fonts/558661aa659912f4d30ecd27bd09835171a8e2b0 diff --git a/test/shaping/data/in-house/fonts/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf b/test/fuzzing/fonts/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8 Binary files differindex 9b4d23f..9b4d23f 100644 --- a/test/shaping/data/in-house/fonts/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf +++ b/test/fuzzing/fonts/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8 diff --git a/test/shaping/data/in-house/fonts/641bd9db850193064d17575053ae2bf8ec149ddc.ttf b/test/fuzzing/fonts/641bd9db850193064d17575053ae2bf8ec149ddc Binary files differindex 66cefd4..66cefd4 100644 --- a/test/shaping/data/in-house/fonts/641bd9db850193064d17575053ae2bf8ec149ddc.ttf +++ b/test/fuzzing/fonts/641bd9db850193064d17575053ae2bf8ec149ddc diff --git a/test/shaping/data/in-house/fonts/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf b/test/fuzzing/fonts/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f Binary files differindex 8eed14d..8eed14d 100644 --- a/test/shaping/data/in-house/fonts/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf +++ b/test/fuzzing/fonts/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f diff --git a/test/shaping/data/in-house/fonts/a34a9191d9376bda419836effeef7e75c1386016.ttf b/test/fuzzing/fonts/a34a9191d9376bda419836effeef7e75c1386016 Binary files differindex a358833..a358833 100644 --- a/test/shaping/data/in-house/fonts/a34a9191d9376bda419836effeef7e75c1386016.ttf +++ b/test/fuzzing/fonts/a34a9191d9376bda419836effeef7e75c1386016 diff --git a/test/shaping/data/in-house/fonts/a69118c2c2ada48ff803d9149daa54c9ebdae30e.ttf b/test/fuzzing/fonts/a69118c2c2ada48ff803d9149daa54c9ebdae30e Binary files differindex 3cd5b56..3cd5b56 100644 --- a/test/shaping/data/in-house/fonts/a69118c2c2ada48ff803d9149daa54c9ebdae30e.ttf +++ b/test/fuzzing/fonts/a69118c2c2ada48ff803d9149daa54c9ebdae30e diff --git a/test/shaping/data/in-house/fonts/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf b/test/fuzzing/fonts/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2 Binary files differindex 500276d..500276d 100644 --- a/test/shaping/data/in-house/fonts/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf +++ b/test/fuzzing/fonts/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-5517117891805184 b/test/fuzzing/fonts/clusterfuzz-testcase-5517117891805184 Binary files differnew file mode 100644 index 0000000..0c7b518 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-5517117891805184 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-6107935408390144 b/test/fuzzing/fonts/clusterfuzz-testcase-6107935408390144 Binary files differnew file mode 100644 index 0000000..4c81a86 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-6107935408390144 diff --git a/test/shaping/data/in-house/fonts/ef2511f215aa3ca847cbfffbf861793b42170875.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-4666056377368576 Binary files differindex 6a3af46..6a3af46 100644 --- a/test/shaping/data/in-house/fonts/ef2511f215aa3ca847cbfffbf861793b42170875.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-4666056377368576 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-5662671558934528 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-5662671558934528 Binary files differnew file mode 100644 index 0000000..cbb81ac --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-5662671558934528 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6243458541944832 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6243458541944832 Binary files differnew file mode 100644 index 0000000..64864aa --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6243458541944832 diff --git a/test/shaping/data/in-house/fonts/9d8a94a67932a3ab75a596fc8b5c6d0392ca9e49.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6303297511096320 Binary files differindex 3fb9951..3fb9951 100644 --- a/test/shaping/data/in-house/fonts/9d8a94a67932a3ab75a596fc8b5c6d0392ca9e49.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6303297511096320 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6696647723581440 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6696647723581440 Binary files differnew file mode 100644 index 0000000..8b1c293 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-fuzzer-6696647723581440 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5097734906839040 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5097734906839040 Binary files differnew file mode 100644 index 0000000..8b45452 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5097734906839040 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128 Binary files differnew file mode 100644 index 0000000..cd1a293 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5634395566768128 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960 Binary files differnew file mode 100644 index 0000000..1fe962b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5688420752424960 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5728971283496960 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5728971283496960 Binary files differnew file mode 100644 index 0000000..25d7bf1 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5728971283496960 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5746142327865344 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5746142327865344 Binary files differnew file mode 100644 index 0000000..1c1607b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5746142327865344 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5750379279548416 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5750379279548416 Binary files differnew file mode 100644 index 0000000..f014d4b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-5750379279548416 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5643036478930944 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5643036478930944 Binary files differnew file mode 100644 index 0000000..9a52336 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5643036478930944 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5686186874503168 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5686186874503168 Binary files differnew file mode 100644 index 0000000..86f4ad7 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5686186874503168 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5762137968869376 b/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5762137968869376 Binary files differnew file mode 100644 index 0000000..dca0b7d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-hb-subset-fuzzer-5762137968869376 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-4884742786777088 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-4884742786777088 Binary files differnew file mode 100644 index 0000000..ac7da9f --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-4884742786777088 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5255344882188288 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5255344882188288 Binary files differnew file mode 100644 index 0000000..ab1aede --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5255344882188288 diff --git a/test/shaping/data/in-house/fonts/233c1e252e737ca79e03a9fd56b71aaa4a230f2b.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5720051798769664 Binary files differindex 999f296..999f296 100644 --- a/test/shaping/data/in-house/fonts/233c1e252e737ca79e03a9fd56b71aaa4a230f2b.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5720051798769664 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5924299061854208 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5924299061854208 Binary files differnew file mode 100644 index 0000000..a8ea332 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-5924299061854208 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-6460279560863744 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-6460279560863744 Binary files differnew file mode 100644 index 0000000..1cbe75a --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-6460279560863744 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5126525414014976 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5126525414014976 Binary files differnew file mode 100644 index 0000000..74cc027 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5126525414014976 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5166320261529600 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5166320261529600 Binary files differnew file mode 100644 index 0000000..b79765a --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5166320261529600 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5659690013556736 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5659690013556736 Binary files differnew file mode 100644 index 0000000..9293c46 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5659690013556736 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5662548265009152 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5662548265009152 Binary files differnew file mode 100644 index 0000000..0b68a30 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5662548265009152 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5973566991106048 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5973566991106048 Binary files differnew file mode 100644 index 0000000..984bb4b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-harfbuzz_fuzzer-5973566991106048 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4523479581851648 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4523479581851648 Binary files differnew file mode 100644 index 0000000..1d16d70 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4523479581851648 diff --git a/test/shaping/data/in-house/fonts/dd9f0c7c7c36f75a18be0cab1cddf8f3ab0f366b.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4535496598355968 Binary files differindex ba80928..ba80928 100644 --- a/test/shaping/data/in-house/fonts/dd9f0c7c7c36f75a18be0cab1cddf8f3ab0f366b.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4535496598355968 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4548492505645056 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4548492505645056 Binary files differnew file mode 100644 index 0000000..065080f --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4548492505645056 diff --git a/test/shaping/data/in-house/fonts/243798dd281c1c77c065958e1ff467420faa9bde.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4595692015190016 Binary files differindex dd8506e..dd8506e 100644 --- a/test/shaping/data/in-house/fonts/243798dd281c1c77c065958e1ff467420faa9bde.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4595692015190016 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4687441845813248 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4687441845813248 Binary files differnew file mode 100644 index 0000000..d3e9f46 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4687441845813248 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4706238090706944 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4706238090706944 Binary files differnew file mode 100644 index 0000000..269813a --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4706238090706944 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4769173588672512 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4769173588672512 Binary files differnew file mode 100644 index 0000000..5426914 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4769173588672512 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4827735151083520 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4827735151083520 Binary files differnew file mode 100644 index 0000000..f5f1255 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4827735151083520 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4841745322868736 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4841745322868736 Binary files differnew file mode 100644 index 0000000..5e0f74d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4841745322868736 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4884742786777088 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4884742786777088 Binary files differnew file mode 100644 index 0000000..ac7da9f --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-4884742786777088 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5216838347653120 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5216838347653120 Binary files differnew file mode 100644 index 0000000..23cc590 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5216838347653120 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5255344882188288 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5255344882188288 Binary files differnew file mode 100644 index 0000000..ab1aede --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5255344882188288 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5294584596791296 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5294584596791296 Binary files differnew file mode 100644 index 0000000..bc16579 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5294584596791296 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5303930168803328 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5303930168803328 Binary files differnew file mode 100644 index 0000000..805fe4d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5303930168803328 diff --git a/test/shaping/data/in-house/fonts/b6acef662e0beb8d5fcf5b61c6b0ca69537b7402.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5331901587914752 Binary files differindex 41897b6..41897b6 100644 --- a/test/shaping/data/in-house/fonts/b6acef662e0beb8d5fcf5b61c6b0ca69537b7402.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5331901587914752 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5388906574905344 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5388906574905344 Binary files differnew file mode 100644 index 0000000..5f7ff7c --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5388906574905344 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5517117891805184 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5517117891805184 Binary files differnew file mode 100644 index 0000000..0c7b518 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5517117891805184 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5617496443846656 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5617496443846656 Binary files differnew file mode 100644 index 0000000..aeffab5 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5617496443846656 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5672141338968064 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5672141338968064 Binary files differnew file mode 100644 index 0000000..3c8303f --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5672141338968064 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5700697074958336 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5700697074958336 Binary files differnew file mode 100644 index 0000000..2664e30 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5700697074958336 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5713868010553344 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5713868010553344 Binary files differnew file mode 100644 index 0000000..ee0a721 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5713868010553344 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5720051798769664 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5720051798769664 Binary files differnew file mode 100644 index 0000000..999f296 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5720051798769664 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5924299061854208 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5924299061854208 Binary files differnew file mode 100644 index 0000000..a8ea332 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-5924299061854208 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6023178755244032 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6023178755244032 Binary files differnew file mode 100644 index 0000000..b0da152 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6023178755244032 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6111685556305920 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6111685556305920 Binary files differnew file mode 100644 index 0000000..8c1940d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6111685556305920 diff --git a/test/shaping/data/in-house/fonts/bbf4a308c402f0678c3e82844892a4da2ebe598f.ttf b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6160439919509504 Binary files differindex eb37400..eb37400 100644 --- a/test/shaping/data/in-house/fonts/bbf4a308c402f0678c3e82844892a4da2ebe598f.ttf +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6160439919509504 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6210176798425088 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6210176798425088 Binary files differnew file mode 100644 index 0000000..1c62961 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6210176798425088 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6260579246276608 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6260579246276608 Binary files differnew file mode 100644 index 0000000..036a206 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6260579246276608 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6264625609834496 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6264625609834496 Binary files differnew file mode 100644 index 0000000..035dd72 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6264625609834496 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6278851874258944 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6278851874258944 Binary files differnew file mode 100644 index 0000000..775c918 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6278851874258944 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6424351550210048 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6424351550210048 Binary files differnew file mode 100644 index 0000000..afb08c5 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6424351550210048 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6460279560863744 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6460279560863744 Binary files differnew file mode 100644 index 0000000..1cbe75a --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6460279560863744 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6576177596596224 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6576177596596224 Binary files differnew file mode 100644 index 0000000..35171ee --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6576177596596224 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6595199411159040 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6595199411159040 Binary files differnew file mode 100644 index 0000000..a4d503d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6595199411159040 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6624904746106880 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6624904746106880 Binary files differnew file mode 100644 index 0000000..fcc1b64 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6624904746106880 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6723367514144768 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6723367514144768 Binary files differnew file mode 100644 index 0000000..55b1ef8 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-fuzzer-6723367514144768 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5175735354916864 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5175735354916864 Binary files differnew file mode 100644 index 0000000..72fdfc6 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5175735354916864 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5629524117553152 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5629524117553152 Binary files differnew file mode 100644 index 0000000..01ca517 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5629524117553152 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5630246225707008 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5630246225707008 Binary files differnew file mode 100644 index 0000000..ab534e3 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5630246225707008 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5631444412530688 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5631444412530688 Binary files differnew file mode 100644 index 0000000..25f7d69 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5631444412530688 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5633985665826816 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5633985665826816 Binary files differnew file mode 100644 index 0000000..387d7fd --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5633985665826816 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5634443633491968 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5634443633491968 Binary files differnew file mode 100644 index 0000000..c63bcc5 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5634443633491968 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5634620935110656 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5634620935110656 Binary files differnew file mode 100644 index 0000000..39f9c3c --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5634620935110656 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5635082459545600 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5635082459545600 Binary files differnew file mode 100644 index 0000000..6d0feff --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5635082459545600 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5647267827023872 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5647267827023872 Binary files differnew file mode 100644 index 0000000..068e7e8 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5647267827023872 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5649959857160192 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5649959857160192 Binary files differnew file mode 100644 index 0000000..72e702e --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5649959857160192 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5650286710882304 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5650286710882304 Binary files differnew file mode 100644 index 0000000..95322e1 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5650286710882304 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5652019562414080 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5652019562414080 Binary files differnew file mode 100644 index 0000000..8e85980 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5652019562414080 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5656511058018304 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5656511058018304 Binary files differnew file mode 100644 index 0000000..bb68572 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5656511058018304 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5659641787187200 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5659641787187200 Binary files differnew file mode 100644 index 0000000..8a63dc4 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5659641787187200 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5664873493561344 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5664873493561344 Binary files differnew file mode 100644 index 0000000..dfc36d8 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5664873493561344 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5667182741028864 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5667182741028864 Binary files differnew file mode 100644 index 0000000..0c40dd8 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5667182741028864 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5668791174823936 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5668791174823936 Binary files differnew file mode 100644 index 0000000..1f750c1 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5668791174823936 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5672261407735808 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5672261407735808 Binary files differnew file mode 100644 index 0000000..6297549 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5672261407735808 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5674361600606208 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5674361600606208 Binary files differnew file mode 100644 index 0000000..1d4f84a --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5674361600606208 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5677421274071040 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5677421274071040 Binary files differnew file mode 100644 index 0000000..3be3b91 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5677421274071040 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5679244475105280 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5679244475105280 Binary files differnew file mode 100644 index 0000000..2894bdc --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5679244475105280 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5685596677210112 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5685596677210112 Binary files differnew file mode 100644 index 0000000..d9937a3 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5685596677210112 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5686369209286656 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5686369209286656 Binary files differnew file mode 100644 index 0000000..9f47ca8 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5686369209286656 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960 Binary files differnew file mode 100644 index 0000000..e9f01a2 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5688420752424960 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5691469793329152 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5691469793329152 Binary files differnew file mode 100644 index 0000000..6c73900 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5691469793329152 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5695615258853376 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5695615258853376 Binary files differnew file mode 100644 index 0000000..af43a44 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5695615258853376 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5696686572175360 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5696686572175360 Binary files differnew file mode 100644 index 0000000..c6e8bfd --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5696686572175360 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5700264032468992 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5700264032468992 Binary files differnew file mode 100644 index 0000000..82a462b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5700264032468992 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5706010589659136 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5706010589659136 Binary files differnew file mode 100644 index 0000000..7e15f4b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5706010589659136 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5716208469409792 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5716208469409792 Binary files differnew file mode 100644 index 0000000..00915d6 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5716208469409792 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368 Binary files differnew file mode 100644 index 0000000..d511e9d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718464350650368 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718889451749376 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718889451749376 Binary files differnew file mode 100644 index 0000000..6360579 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5718889451749376 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5719982789361664 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5719982789361664 Binary files differnew file mode 100644 index 0000000..0515086 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5719982789361664 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5722888989048832 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5722888989048832 Binary files differnew file mode 100644 index 0000000..df1556b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5722888989048832 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5725129603022848 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5725129603022848 Binary files differnew file mode 100644 index 0000000..8ba0f9d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5725129603022848 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5725855502827520 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5725855502827520 Binary files differnew file mode 100644 index 0000000..5781bba --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5725855502827520 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5726089628876800 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5726089628876800 Binary files differnew file mode 100644 index 0000000..61750d4 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5726089628876800 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5729361857085440 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5729361857085440 Binary files differnew file mode 100644 index 0000000..a6ecc61 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5729361857085440 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5733166795456512 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5733166795456512 Binary files differnew file mode 100644 index 0000000..dfaf6d9 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5733166795456512 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5734736291430400 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5734736291430400 Binary files differnew file mode 100644 index 0000000..31c805c --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5734736291430400 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5735679418433536 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5735679418433536 Binary files differnew file mode 100644 index 0000000..ff6ef6e --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5735679418433536 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5736657639178240 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5736657639178240 Binary files differnew file mode 100644 index 0000000..343429c --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5736657639178240 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608 Binary files differnew file mode 100644 index 0000000..28e72df --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5738888765636608 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5740171484463104 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5740171484463104 Binary files differnew file mode 100644 index 0000000..aef0d92 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5740171484463104 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5750379279548416 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5750379279548416 Binary files differnew file mode 100644 index 0000000..b4551bf --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5750379279548416 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5754863779053568 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5754863779053568 Binary files differnew file mode 100644 index 0000000..03f240f --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5754863779053568 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5762490181353472 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5762490181353472 Binary files differnew file mode 100644 index 0000000..db06a1c --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5762490181353472 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5762953198960640 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5762953198960640 Binary files differnew file mode 100644 index 0000000..9d64eaf --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5762953198960640 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5764636557705216 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5764636557705216 Binary files differnew file mode 100644 index 0000000..b07416b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5764636557705216 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5768046065483776 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5768046065483776 Binary files differnew file mode 100644 index 0000000..0ab1447 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5768046065483776 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5768601332613120 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5768601332613120 Binary files differnew file mode 100644 index 0000000..385e670 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape-fuzzer-5768601332613120 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5067936541179904 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5067936541179904 Binary files differnew file mode 100644 index 0000000..9f57f7b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5067936541179904 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5359635656605696 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5359635656605696 Binary files differnew file mode 100644 index 0000000..8a659c6 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5359635656605696 diff --git a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5521982557782016 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5521982557782016 Binary files differindex 55541f7..55541f7 100644 --- a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5521982557782016 +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5521982557782016 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5542653037903872 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5542653037903872 Binary files differnew file mode 100644 index 0000000..6307ddd --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5542653037903872 diff --git a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5609911946838016 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5609911946838016 Binary files differindex 8c647a8..8c647a8 100644 --- a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5609911946838016 +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5609911946838016 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5629878397829120 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5629878397829120 Binary files differnew file mode 100644 index 0000000..a055cdb --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5629878397829120 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5651059347816448 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5651059347816448 Binary files differnew file mode 100644 index 0000000..b2e4034 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5651059347816448 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5660711141769216 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5660711141769216 Binary files differnew file mode 100644 index 0000000..302a1c4 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5660711141769216 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5669437462544384 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5669437462544384 Binary files differnew file mode 100644 index 0000000..c4eb909 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5669437462544384 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480 Binary files differnew file mode 100644 index 0000000..49bcb30 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5672006905757696 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5672006905757696 Binary files differnew file mode 100644 index 0000000..cb5fb83 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5672006905757696 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5672913680728064 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5672913680728064 Binary files differnew file mode 100644 index 0000000..fdb5bff --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5672913680728064 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5690658895953920 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5690658895953920 Binary files differnew file mode 100644 index 0000000..abafa4b --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5690658895953920 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5695279609675776 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5695279609675776 Binary files differnew file mode 100644 index 0000000..f016262 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5695279609675776 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5696607199166464 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5696607199166464 Binary files differnew file mode 100644 index 0000000..ca4fcd7 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5696607199166464 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5710107829075968 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5710107829075968 Binary files differnew file mode 100644 index 0000000..5fef2f8 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5710107829075968 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5711951464759296 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5711951464759296 Binary files differnew file mode 100644 index 0000000..b20e849 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5711951464759296 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5718215406125056 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5718215406125056 Binary files differnew file mode 100644 index 0000000..a6d87da --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5718215406125056 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5725847365877760 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5725847365877760 Binary files differnew file mode 100644 index 0000000..3764bed --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5725847365877760 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5743250149736448 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5743250149736448 Binary files differnew file mode 100644 index 0000000..b17c949 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5743250149736448 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5747265633779712 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5747265633779712 Binary files differnew file mode 100644 index 0000000..463e0c1 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5747265633779712 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5750092395970560 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5750092395970560 Binary files differnew file mode 100644 index 0000000..d622c25 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5750092395970560 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5750420593442816 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5750420593442816 Binary files differnew file mode 100644 index 0000000..7f41718 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5750420593442816 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5758598970343424 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5758598970343424 Binary files differnew file mode 100644 index 0000000..7087f63 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5758598970343424 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5765071062958080 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5765071062958080 Binary files differnew file mode 100644 index 0000000..1f9be04 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5765071062958080 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5768186323009536 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5768186323009536 Binary files differnew file mode 100644 index 0000000..858604d --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5768186323009536 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6543700493598720 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6543700493598720 Binary files differnew file mode 100644 index 0000000..c0e9811 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6543700493598720 diff --git a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6651660668502016 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6651660668502016 Binary files differindex 6206f07..6206f07 100644 --- a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6651660668502016 +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-6651660668502016 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5203067375976448 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5203067375976448 Binary files differnew file mode 100644 index 0000000..cf92d88 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5203067375976448 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5630904853069824 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5630904853069824 Binary files differnew file mode 100644 index 0000000..7c242ee --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5630904853069824 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5687638085337088 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5687638085337088 Binary files differnew file mode 100644 index 0000000..e8706f3 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5687638085337088 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5736539338833920 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5736539338833920 Binary files differnew file mode 100644 index 0000000..f572621 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5736539338833920 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5930139383758848 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5930139383758848 Binary files differnew file mode 100644 index 0000000..940fbd5 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5930139383758848 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5973295416475648 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5973295416475648 Binary files differnew file mode 100644 index 0000000..b506d2a --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-5973295416475648 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912 Binary files differnew file mode 100644 index 0000000..ffcea64 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912 diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6394290358976512 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6394290358976512 Binary files differnew file mode 100644 index 0000000..8ee7752 --- /dev/null +++ b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6394290358976512 diff --git a/test/api/fonts/crash-4b60576767ee4d9fe1cc10959d89baf73d4e8249 b/test/fuzzing/fonts/crash-4b60576767ee4d9fe1cc10959d89baf73d4e8249 Binary files differindex b6b47ff..b6b47ff 100644 --- a/test/api/fonts/crash-4b60576767ee4d9fe1cc10959d89baf73d4e8249 +++ b/test/fuzzing/fonts/crash-4b60576767ee4d9fe1cc10959d89baf73d4e8249 diff --git a/test/api/fonts/crash-b577db318b30f2851828a4c9ef97cb30678b1b54 b/test/fuzzing/fonts/crash-b577db318b30f2851828a4c9ef97cb30678b1b54 Binary files differindex 00be056..00be056 100644 --- a/test/api/fonts/crash-b577db318b30f2851828a4c9ef97cb30678b1b54 +++ b/test/fuzzing/fonts/crash-b577db318b30f2851828a4c9ef97cb30678b1b54 diff --git a/test/api/fonts/crash-ccc61c92d589f895174cdef6ff2e3b20e9999a1a b/test/fuzzing/fonts/crash-ccc61c92d589f895174cdef6ff2e3b20e9999a1a Binary files differindex 1af243e..1af243e 100644 --- a/test/api/fonts/crash-ccc61c92d589f895174cdef6ff2e3b20e9999a1a +++ b/test/fuzzing/fonts/crash-ccc61c92d589f895174cdef6ff2e3b20e9999a1a diff --git a/test/api/fonts/crash-e4e0bb1458a91b692eba492c907ae1f94e635480 b/test/fuzzing/fonts/crash-e4e0bb1458a91b692eba492c907ae1f94e635480 Binary files differindex 890c449..890c449 100644 --- a/test/api/fonts/crash-e4e0bb1458a91b692eba492c907ae1f94e635480 +++ b/test/fuzzing/fonts/crash-e4e0bb1458a91b692eba492c907ae1f94e635480 diff --git a/test/shaping/data/in-house/fonts/e88c339237f52d21e01c55f01b9c1b4cc14a0467.ttf b/test/fuzzing/fonts/e88c339237f52d21e01c55f01b9c1b4cc14a0467 Binary files differindex e9884ea..e9884ea 100644 --- a/test/shaping/data/in-house/fonts/e88c339237f52d21e01c55f01b9c1b4cc14a0467.ttf +++ b/test/fuzzing/fonts/e88c339237f52d21e01c55f01b9c1b4cc14a0467 diff --git a/test/shaping/data/in-house/fonts/fab39d60d758cb586db5a504f218442cd1395725.ttf b/test/fuzzing/fonts/fab39d60d758cb586db5a504f218442cd1395725 Binary files differindex 451ed04..451ed04 100644 --- a/test/shaping/data/in-house/fonts/fab39d60d758cb586db5a504f218442cd1395725.ttf +++ b/test/fuzzing/fonts/fab39d60d758cb586db5a504f218442cd1395725 diff --git a/test/api/fonts/oom-6ef8c96d3710262511bcc730dce9c00e722cb653 b/test/fuzzing/fonts/oom-6ef8c96d3710262511bcc730dce9c00e722cb653 Binary files differindex 0bb0f0f..0bb0f0f 100644 --- a/test/api/fonts/oom-6ef8c96d3710262511bcc730dce9c00e722cb653 +++ b/test/fuzzing/fonts/oom-6ef8c96d3710262511bcc730dce9c00e722cb653 diff --git a/test/api/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a b/test/fuzzing/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a Binary files differindex 1af243e..1af243e 100644 --- a/test/api/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a +++ b/test/fuzzing/fonts/oom-ccc61c92d589f895174cdef6ff2e3b20e9999a1a diff --git a/test/fuzzing/hb-shape-fuzzer.cc b/test/fuzzing/hb-shape-fuzzer.cc index 79f3222..5723db9 100644 --- a/test/fuzzing/hb-shape-fuzzer.cc +++ b/test/fuzzing/hb-shape-fuzzer.cc @@ -3,50 +3,45 @@ #include <hb-ot.h> #include <string.h> +#define TEST_OT_FACE_NO_MAIN 1 +#include "../api/test-ot-face.c" +#undef TEST_OT_FACE_NO_MAIN + extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - hb_blob_t *blob = hb_blob_create((const char *)data, size, - HB_MEMORY_MODE_READONLY, NULL, NULL); - hb_face_t *face = hb_face_create(blob, 0); - hb_font_t *font = hb_font_create(face); - hb_ot_font_set_funcs(font); - hb_font_set_scale(font, 12, 12); + hb_blob_t *blob = hb_blob_create ((const char *)data, size, + HB_MEMORY_MODE_READONLY, NULL, NULL); + hb_face_t *face = hb_face_create (blob, 0); + hb_font_t *font = hb_font_create (face); + hb_ot_font_set_funcs (font); + hb_font_set_scale (font, 12, 12); { const char text[] = "ABCDEXYZ123@_%&)*$!"; - hb_buffer_t *buffer = hb_buffer_create(); - hb_buffer_add_utf8(buffer, text, -1, 0, -1); - hb_buffer_guess_segment_properties(buffer); - hb_shape(font, buffer, NULL, 0); - hb_buffer_destroy(buffer); + hb_buffer_t *buffer = hb_buffer_create (); + hb_buffer_add_utf8 (buffer, text, -1, 0, -1); + hb_buffer_guess_segment_properties (buffer); + hb_shape (font, buffer, NULL, 0); + hb_buffer_destroy (buffer); } - uint32_t text32[16]; - if (size > sizeof(text32)) { - memcpy(text32, data + size - sizeof(text32), sizeof(text32)); - hb_buffer_t *buffer = hb_buffer_create(); - hb_buffer_add_utf32(buffer, text32, sizeof(text32)/sizeof(text32[0]), 0, -1); - hb_buffer_guess_segment_properties(buffer); - hb_shape(font, buffer, NULL, 0); - - unsigned int len = hb_buffer_get_length (buffer); - hb_glyph_info_t *infos = hb_buffer_get_glyph_infos (buffer, NULL); - //hb_glyph_position_t *positions = hb_buffer_get_glyph_positions (buffer, NULL); - for (unsigned int i = 0; i < len; i++) - { - hb_glyph_info_t info = infos[i]; - //hb_glyph_position_t pos = positions[i]; - - hb_glyph_extents_t extents; - hb_font_get_glyph_extents (font, info.codepoint, &extents); - } - - hb_buffer_destroy(buffer); - } + uint32_t text32[16] = {0}; + unsigned int len = sizeof (text32); + if (size < len) + len = size; + memcpy(text32, data + size - len, len); + + hb_buffer_t *buffer = hb_buffer_create (); + hb_buffer_add_utf32 (buffer, text32, sizeof (text32) / sizeof (text32[0]), 0, -1); + hb_buffer_guess_segment_properties (buffer); + hb_shape (font, buffer, NULL, 0); + hb_buffer_destroy (buffer); + /* Misc calls on face. */ + test_face (face, text32[15]); - hb_font_destroy(font); - hb_face_destroy(face); - hb_blob_destroy(blob); + hb_font_destroy (font); + hb_face_destroy (face); + hb_blob_destroy (blob); return 0; } diff --git a/test/fuzzing/hb-subset-fuzzer.cc b/test/fuzzing/hb-subset-fuzzer.cc index 28ce921..3a71f22 100644 --- a/test/fuzzing/hb-subset-fuzzer.cc +++ b/test/fuzzing/hb-subset-fuzzer.cc @@ -6,17 +6,16 @@ #include "hb-subset.h" -void trySubset (hb_face_t *face, - const hb_codepoint_t text[], - int text_length, - bool drop_hints, - bool drop_ot_layout) +static void +trySubset (hb_face_t *face, + const hb_codepoint_t text[], + int text_length, + bool drop_hints, + bool drop_layout) { - hb_subset_profile_t *profile = hb_subset_profile_create (); - hb_subset_input_t *input = hb_subset_input_create_or_fail (); - *hb_subset_input_drop_hints (input) = drop_hints; - *hb_subset_input_drop_ot_layout (input) = drop_ot_layout; + hb_subset_input_set_drop_hints (input, drop_hints); + hb_subset_input_set_drop_layout (input, drop_layout); hb_set_t *codepoints = hb_subset_input_unicode_set (input); for (int i = 0; i < text_length; i++) @@ -24,23 +23,23 @@ void trySubset (hb_face_t *face, hb_set_add (codepoints, text[i]); } - hb_face_t *result = hb_subset (face, profile, input); + hb_face_t *result = hb_subset (face, input); hb_face_destroy (result); hb_subset_input_destroy (input); - hb_subset_profile_destroy (profile); } -void trySubset (hb_face_t *face, - const hb_codepoint_t text[], - int text_length) +static void +trySubset (hb_face_t *face, + const hb_codepoint_t text[], + int text_length) { for (unsigned int drop_hints = 0; drop_hints < 2; drop_hints++) { - for (unsigned int drop_ot_layout = 0; drop_ot_layout < 2; drop_ot_layout++) + for (unsigned int drop_layout = 0; drop_layout < 2; drop_layout++) { trySubset (face, text, text_length, - (bool) drop_hints, (bool) drop_ot_layout); + (bool) drop_hints, (bool) drop_layout); } } } @@ -48,22 +47,27 @@ void trySubset (hb_face_t *face, extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { hb_blob_t *blob = hb_blob_create ((const char *)data, size, - HB_MEMORY_MODE_READONLY, NULL, NULL); + HB_MEMORY_MODE_READONLY, NULL, NULL); hb_face_t *face = hb_face_create (blob, 0); + /* Just test this API here quickly. */ + hb_set_t *output = hb_set_create(); + hb_face_collect_unicodes (face, output); + hb_set_destroy (output); + const hb_codepoint_t text[] = { - 'A', 'B', 'C', 'D', 'E', 'X', 'Y', 'Z', '1', '2', - '3', '@', '_', '%', '&', ')', '*', '$', '!' + 'A', 'B', 'C', 'D', 'E', 'X', 'Y', 'Z', '1', '2', + '3', '@', '_', '%', '&', ')', '*', '$', '!' }; trySubset (face, text, sizeof (text) / sizeof (hb_codepoint_t)); hb_codepoint_t text_from_data[16]; if (size > sizeof(text_from_data)) { - memcpy(text_from_data, - data + size - sizeof(text_from_data), - sizeof(text_from_data)); + memcpy (text_from_data, + data + size - sizeof(text_from_data), + sizeof(text_from_data)); unsigned int text_size = sizeof (text_from_data) / sizeof (hb_codepoint_t); trySubset (face, text_from_data, text_size); } diff --git a/test/fuzzing/hb-subset-get-codepoints-fuzzer.cc b/test/fuzzing/hb-subset-get-codepoints-fuzzer.cc deleted file mode 100644 index 38f338b..0000000 --- a/test/fuzzing/hb-subset-get-codepoints-fuzzer.cc +++ /dev/null @@ -1,23 +0,0 @@ -#include "hb-fuzzer.hh" - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -#include "hb-subset.h" - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) -{ - hb_blob_t *blob = hb_blob_create ((const char *)data, size, - HB_MEMORY_MODE_READONLY, NULL, NULL); - hb_face_t *face = hb_face_create (blob, 0); - - hb_set_t *output = hb_set_create(); - hb_subset_get_all_codepoints (face, output); - - hb_set_destroy (output); - hb_face_destroy (face); - hb_blob_destroy (blob); - - return 0; -} diff --git a/test/fuzzing/main.cc b/test/fuzzing/main.cc index 4692f7b..f15247c 100644 --- a/test/fuzzing/main.cc +++ b/test/fuzzing/main.cc @@ -1,21 +1,23 @@ #include "hb-fuzzer.hh" -#include <iostream> -#include <iterator> -#include <fstream> +#include <stdio.h> +#include <stdlib.h> #include <assert.h> -std::string FileToString(const std::string &Path) { - /* TODO This silently passes if file does not exist. Fix it! */ - std::ifstream T(Path.c_str()); - return std::string((std::istreambuf_iterator<char>(T)), - std::istreambuf_iterator<char>()); -} - int main(int argc, char **argv) { + hb_blob_t *blob = hb_blob_create_from_file (argv[1]); + unsigned int len; + const char *font_data = hb_blob_get_data (blob, &len); + if (len == 0) + { + printf ("Font not found.\n"); + exit (1); + } + for (int i = 1; i < argc; i++) { - std::string s = FileToString(argv[i]); - std::cout << argv[i] << std::endl; - LLVMFuzzerTestOneInput((const unsigned char*)s.data(), s.size()); + printf ("%s\n", argv[i]); + LLVMFuzzerTestOneInput((const uint8_t *) font_data, len); } + + hb_blob_destroy (blob); } diff --git a/test/fuzzing/run-shape-fuzzer-tests.py b/test/fuzzing/run-shape-fuzzer-tests.py index fea0b01..e3d180f 100755 --- a/test/fuzzing/run-shape-fuzzer-tests.py +++ b/test/fuzzing/run-shape-fuzzer-tests.py @@ -2,7 +2,54 @@ from __future__ import print_function, division, absolute_import -import sys, os, subprocess +import sys, os, subprocess, tempfile, threading + + +def which(program): + # https://stackoverflow.com/a/377028 + def is_exe(fpath): + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + + fpath, _ = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + return None + + +def cmd(command): + # https://stackoverflow.com/a/4408409 + # https://stackoverflow.com/a/10012262 + with tempfile.TemporaryFile() as tempf: + p = subprocess.Popen (command, stderr=tempf) + is_killed = {'value': False} + + def timeout(p, is_killed): + is_killed['value'] = True + p.kill() + timer = threading.Timer (2, timeout, [p, is_killed]) + + try: + timer.start() + p.wait () + tempf.seek (0) + text = tempf.read().decode ("utf-8").strip () + returncode = p.returncode + finally: + timer.cancel() + + if is_killed['value']: + text = 'error: timeout, ' + text + returncode = 1 + + return text, returncode + srcdir = os.environ.get ("srcdir", ".") EXEEXT = os.environ.get ("EXEEXT", "") @@ -20,14 +67,31 @@ please provide it as the first argument to the tool""") print ('hb_shape_fuzzer:', hb_shape_fuzzer) fails = 0 -parent_path = os.path.join (srcdir, "..", "shaping", "data", "in-house", "tests") -for line in open (os.path.join (parent_path, "fuzzed.tests")): - font = line.split (":")[0] - font_path = os.path.join (parent_path, font) +valgrind = None +if os.environ.get('RUN_VALGRIND', ''): + valgrind = which ('valgrind') + +parent_path = os.path.join (srcdir, "fonts") +for file in os.listdir (parent_path): + path = os.path.join(parent_path, file) + + text, returncode = cmd ([hb_shape_fuzzer, path]) + if text.strip (): + print (text) + + failed = False + if returncode != 0 or 'error' in text: + print ('failure on %s' % file) + failed = True - p = subprocess.Popen ([hb_shape_fuzzer, font_path]) + if valgrind: + text, returncode = cmd ([valgrind, '--error-exitcode=1', hb_shape_fuzzer, path]) + if returncode: + print (text) + print ('failure on %s' % file) + failed = True - if p.wait () != 0: + if failed: fails = fails + 1 if fails: diff --git a/test/fuzzing/run-subset-fuzzer-tests.py b/test/fuzzing/run-subset-fuzzer-tests.py index 0136288..7392a92 100755 --- a/test/fuzzing/run-subset-fuzzer-tests.py +++ b/test/fuzzing/run-subset-fuzzer-tests.py @@ -8,7 +8,6 @@ srcdir = os.environ.get ("srcdir", ".") EXEEXT = os.environ.get ("EXEEXT", "") top_builddir = os.environ.get ("top_builddir", ".") hb_subset_fuzzer = os.path.join (top_builddir, "hb-subset-fuzzer" + EXEEXT) -hb_subset_get_codepoints_fuzzer = os.path.join (top_builddir, "hb-subset-get-codepoints-fuzzer" + EXEEXT) if not os.path.exists (hb_subset_fuzzer): if len (sys.argv) < 2 or not os.path.exists (sys.argv[1]): @@ -18,35 +17,28 @@ please provide it as the first argument to the tool""") hb_subset_fuzzer = sys.argv[1] -if not os.path.exists (hb_subset_get_codepoints_fuzzer): - if len (sys.argv) < 3 or not os.path.exists (sys.argv[2]): - print ("""Failed to find hb-subset-get-codepoints-fuzzer binary automatically, -please provide it as the second argument to the tool""") - sys.exit (1) - - hb_subset_get_codepoints_fuzzer = sys.argv[2] - print ('hb_subset_fuzzer:', hb_subset_fuzzer) fails = 0 -parent_path = os.path.join (srcdir, "..", "subset", "data", "fonts") -print ("running subset fuzzer against fonts in %s" % parent_path) -for file in os.listdir (parent_path): - path = os.path.join(parent_path, file) +def run_dir (parent_path): + global fails + for file in os.listdir (parent_path): + path = os.path.join(parent_path, file) - print ("running subset fuzzer against %s" % path) - p = subprocess.Popen ([hb_subset_fuzzer, path]) + print ("running subset fuzzer against %s" % path) + p = subprocess.Popen ([hb_subset_fuzzer, path]) - if p.wait () != 0: - print ("failed for %s" % path) - fails = fails + 1 + if p.wait () != 0: + print ("failed for %s" % path) + fails = fails + 1 - print ("running subset get codepoints fuzzer against %s" % path) - p = subprocess.Popen ([hb_subset_get_codepoints_fuzzer, path]) + if p.wait () != 0: + print ("failed for %s" % path) + fails = fails + 1 - if p.wait () != 0: - print ("failed for %s" % path) - fails = fails + 1 +run_dir (os.path.join (srcdir, "..", "subset", "data", "fonts")) +# TODO running these tests very slow tests. Fix and re-enable +#run_dir (os.path.join (srcdir, "fonts")) if fails: print ("%i subset fuzzer related tests failed." % fails) diff --git a/test/shaping/CMakeLists.txt b/test/shaping/CMakeLists.txt index 7c2c999..8e33ede 100644 --- a/test/shaping/CMakeLists.txt +++ b/test/shaping/CMakeLists.txt @@ -5,6 +5,16 @@ if (HB_BUILD_UTILS) add_test (NAME ${test} COMMAND "${PYTHON_EXECUTABLE}" run-tests.py $<TARGET_FILE:hb-shape> "data/in-house/${test}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + set_property (TEST ${test} PROPERTY SKIP_RETURN_CODE 77) + endforeach () + + file (READ "${CMAKE_CURRENT_SOURCE_DIR}/data/aots/Makefile.sources" INHOUSE) + extract_make_variable (TESTS ${INHOUSE}) + foreach (test IN ITEMS ${TESTS}) + add_test (NAME ${test} + COMMAND "${PYTHON_EXECUTABLE}" run-tests.py $<TARGET_FILE:hb-shape> "data/aots/${test}" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + set_property (TEST ${test} PROPERTY SKIP_RETURN_CODE 77) endforeach () file (READ "${CMAKE_CURRENT_SOURCE_DIR}/data/text-rendering-tests/Makefile.sources" TEXTRENDERING) @@ -13,5 +23,6 @@ if (HB_BUILD_UTILS) add_test (NAME ${test} COMMAND "${PYTHON_EXECUTABLE}" run-tests.py $<TARGET_FILE:hb-shape> "data/text-rendering-tests/${test}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + set_property (TEST ${test} PROPERTY SKIP_RETURN_CODE 77) endforeach () endif () diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index 7320336..66272da 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -3,11 +3,15 @@ NULL = EXTRA_DIST = CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = SUBDIRS = data # Convenience targets: lib: @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib +libs: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs EXTRA_DIST += \ README.md \ diff --git a/test/shaping/Makefile.in b/test/shaping/Makefile.in index 0ddfa3c..202db22 100644 --- a/test/shaping/Makefile.in +++ b/test/shaping/Makefile.in @@ -96,8 +96,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -304,6 +303,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -380,6 +381,8 @@ EXTRA_DIST = README.md CMakeLists.txt hb-diff hb-diff-colorize \ hb-unicode-encode hb-unicode-prettyname record-test.sh \ run-tests.py texts/in-house $(NULL) hb_test_tools.py $(NULL) CLEANFILES = hb_test_tools.py[co] $(NULL) +DISTCLEANFILES = +MAINTAINERCLEANFILES = SUBDIRS = data all: all-recursive @@ -606,10 +609,12 @@ clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am @@ -697,6 +702,8 @@ uninstall-am: # Convenience targets: lib: @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib +libs: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs -include $(top_srcdir)/git.mk diff --git a/test/shaping/README.md b/test/shaping/README.md index 99498e6..f386fb9 100644 --- a/test/shaping/README.md +++ b/test/shaping/README.md @@ -25,10 +25,10 @@ what this does is: * If the outputs differ, recording fails. Otherwise, it will move the subset font file into `data/in-house/fonts` and name it after its hash, and print out the test case input, which you can then redirect - to an existing or new test file in `data/in-house/tests` using `-o=`, + to an existing or new test file in `data/in-house/tests` using `-o`, e.g.: ```sh -$ ./hb-unicode-encode 41 42 43 627 | ./record-test.sh -o=data/in-house/tests/test-name.test ../../util/hb-shape font.ttf +$ ./hb-unicode-encode 41 42 43 627 | ./record-test.sh -o data/in-house/tests/test-name.test ../../util/hb-shape font.ttf ``` If you created a new test file, add it to `data/in-house/Makefile.sources` diff --git a/test/shaping/data/Makefile.am b/test/shaping/data/Makefile.am index 4f2c113..01f6c5a 100644 --- a/test/shaping/data/Makefile.am +++ b/test/shaping/data/Makefile.am @@ -4,6 +4,7 @@ NULL = SUBDIRS = \ in-house \ text-rendering-tests \ + aots \ $(NULL) # Convenience targets: diff --git a/test/shaping/data/Makefile.in b/test/shaping/data/Makefile.in index 5839d8c..78cdb1a 100644 --- a/test/shaping/data/Makefile.in +++ b/test/shaping/data/Makefile.in @@ -96,8 +96,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -304,6 +303,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -376,6 +377,7 @@ NULL = SUBDIRS = \ in-house \ text-rendering-tests \ + aots \ $(NULL) all: all-recursive diff --git a/test/shaping/data/aots/COPYING b/test/shaping/data/aots/COPYING new file mode 100644 index 0000000..d000f23 --- /dev/null +++ b/test/shaping/data/aots/COPYING @@ -0,0 +1,13 @@ +Copyright 2000-2016 Adobe Systems Incorporated. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use these files except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/test/shaping/data/aots/Makefile.am b/test/shaping/data/aots/Makefile.am new file mode 100644 index 0000000..3b1faee --- /dev/null +++ b/test/shaping/data/aots/Makefile.am @@ -0,0 +1,37 @@ +# Process this file with automake to produce Makefile.in + +NULL = + +# Convenience targets: +lib: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib + +EXTRA_DIST = \ + COPYING \ + fonts \ + $(TESTS) \ + $(NULL) + +TEST_EXTENSIONS = .tests +TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT) + +init-aots: + git clone https://github.com/adobe-type-tools/aots $(srcdir)/aots + make -C$(srcdir)/aots + make -C$(srcdir)/aots/harfbuzz + touch $(srcdir)/init-aots + +update-tests: init-aots lib + cp $(srcdir)/hb-aots-tester.cpp $(srcdir)/aots/harfbuzz/hb-aots-tester.cpp + $(CXX) -Wno-narrowing $(srcdir)/aots/harfbuzz/hb-aots-tester.cpp \ + -I$(top_srcdir)/src/ -o $(srcdir)/aots/harfbuzz/aots \ + -L$(top_builddir)/src/.libs -lharfbuzz + rm -rf $(srcdir)/tests/ + mkdir $(srcdir)/tests/ + export LD_LIBRARY_PATH=$(realpath $(top_builddir)/src/.libs); cd $(srcdir)/aots/harfbuzz; ./aots + +.PHONY: update-tests + +include Makefile.sources + +-include $(top_srcdir)/git.mk diff --git a/test/shaping/data/aots/Makefile.in b/test/shaping/data/aots/Makefile.in new file mode 100644 index 0000000..7cc5193 --- /dev/null +++ b/test/shaping/data/aots/Makefile.in @@ -0,0 +1,1012 @@ +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Process this file with automake to produce Makefile.in +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = tests/classdef1_empty.tests tests/classdef1_multiple.tests \ + tests/classdef1_single.tests tests/classdef1.tests \ + tests/classdef2_empty.tests tests/classdef2_multiple.tests \ + tests/classdef2_single.tests tests/classdef2.tests \ + tests/gpos_chaining1_boundary.tests \ + tests/gpos_chaining1_lookupflag.tests \ + tests/gpos_chaining1_multiple_subrules.tests \ + tests/gpos_chaining1_next_glyph.tests \ + tests/gpos_chaining1_simple.tests \ + tests/gpos_chaining1_successive.tests \ + tests/gpos_chaining2_boundary.tests \ + tests/gpos_chaining2_lookupflag.tests \ + tests/gpos_chaining2_multiple_subrules.tests \ + tests/gpos_chaining2_next_glyph.tests \ + tests/gpos_chaining2_simple.tests \ + tests/gpos_chaining2_successive.tests \ + tests/gpos_chaining3_boundary.tests \ + tests/gpos_chaining3_lookupflag.tests \ + tests/gpos_chaining3_next_glyph.tests \ + tests/gpos_chaining3_simple.tests \ + tests/gpos_chaining3_successive.tests \ + tests/gpos_context1_boundary.tests \ + tests/gpos_context1_expansion.tests \ + tests/gpos_context1_lookupflag.tests \ + tests/gpos_context1_multiple_subrules.tests \ + tests/gpos_context1_next_glyph.tests \ + tests/gpos_context1_simple.tests \ + tests/gpos_context1_successive.tests \ + tests/gpos_context2_boundary.tests \ + tests/gpos_context2_classes.tests \ + tests/gpos_context2_expansion.tests \ + tests/gpos_context2_lookupflag.tests \ + tests/gpos_context2_multiple_subrules.tests \ + tests/gpos_context2_next_glyph.tests \ + tests/gpos_context2_simple.tests \ + tests/gpos_context2_successive.tests \ + tests/gpos_context3_boundary.tests \ + tests/gpos_context3_lookupflag.tests \ + tests/gpos_context3_next_glyph.tests \ + tests/gpos_context3_simple.tests \ + tests/gpos_context3_successive.tests \ + tests/gpos1_1_lookupflag.tests tests/gpos1_1_simple.tests \ + tests/gpos1_2_lookupflag.tests tests/gpos1_2.tests \ + tests/gpos2_1_lookupflag.tests tests/gpos2_1_next_glyph.tests \ + tests/gpos2_1_simple.tests tests/gpos2_1.tests \ + tests/gpos2_2.tests tests/gpos3_lookupflag.tests \ + tests/gpos3.tests tests/gpos4_lookupflag.tests \ + tests/gpos4_multiple_anchors.tests tests/gpos4_simple.tests \ + tests/gpos5.tests tests/gpos6.tests tests/gpos7_1.tests \ + tests/gpos9.tests tests/gsub_chaining1_boundary.tests \ + tests/gsub_chaining1_lookupflag.tests \ + tests/gsub_chaining1_multiple_subrules.tests \ + tests/gsub_chaining1_next_glyph.tests \ + tests/gsub_chaining1_simple.tests \ + tests/gsub_chaining1_successive.tests \ + tests/gsub_chaining2_boundary.tests \ + tests/gsub_chaining2_lookupflag.tests \ + tests/gsub_chaining2_multiple_subrules.tests \ + tests/gsub_chaining2_next_glyph.tests \ + tests/gsub_chaining2_simple.tests \ + tests/gsub_chaining2_successive.tests \ + tests/gsub_chaining3_boundary.tests \ + tests/gsub_chaining3_lookupflag.tests \ + tests/gsub_chaining3_next_glyph.tests \ + tests/gsub_chaining3_simple.tests \ + tests/gsub_chaining3_successive.tests \ + tests/gsub_context1_boundary.tests \ + tests/gsub_context1_expansion.tests \ + tests/gsub_context1_lookupflag.tests \ + tests/gsub_context1_multiple_subrules.tests \ + tests/gsub_context1_next_glyph.tests \ + tests/gsub_context1_simple.tests \ + tests/gsub_context1_successive.tests \ + tests/gsub_context2_boundary.tests \ + tests/gsub_context2_classes.tests \ + tests/gsub_context2_expansion.tests \ + tests/gsub_context2_lookupflag.tests \ + tests/gsub_context2_multiple_subrules.tests \ + tests/gsub_context2_next_glyph.tests \ + tests/gsub_context2_simple.tests \ + tests/gsub_context2_successive.tests \ + tests/gsub_context3_boundary.tests \ + tests/gsub_context3_lookupflag.tests \ + tests/gsub_context3_next_glyph.tests \ + tests/gsub_context3_simple.tests \ + tests/gsub_context3_successive.tests \ + tests/gsub1_1_lookupflag.tests tests/gsub1_1_modulo.tests \ + tests/gsub1_1_simple.tests tests/gsub1_2_lookupflag.tests \ + tests/gsub1_2_simple.tests tests/gsub2_1_lookupflag.tests \ + tests/gsub2_1_multiple_sequences.tests \ + tests/gsub2_1_simple.tests tests/gsub3_1_lookupflag.tests \ + tests/gsub3_1_multiple.tests tests/gsub3_1_simple.tests \ + tests/gsub4_1_lookupflag.tests \ + tests/gsub4_1_multiple_ligatures.tests \ + tests/gsub4_1_multiple_ligsets.tests \ + tests/gsub4_1_simple.tests tests/gsub7.tests \ + tests/lookupflag_ignore_attach.tests \ + tests/lookupflag_ignore_base.tests \ + tests/lookupflag_ignore_combination.tests \ + tests/lookupflag_ignore_ligatures.tests \ + tests/lookupflag_ignore_marks.tests $(am__EXEEXT_1) +subdir = test/shaping/data/aots +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ + $(top_srcdir)/m4/ax_code_coverage.m4 \ + $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +am__EXEEXT_1 = +TEST_SUITE_LOG = test-suite.log +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.tests.log=.log) +TESTS_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TESTS_LOG_COMPILE = $(TESTS_LOG_COMPILER) $(AM_TESTS_LOG_FLAGS) \ + $(TESTS_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.sources \ + $(top_srcdir)/test-driver COPYING +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAIRO_CFLAGS = @CAIRO_CFLAGS@ +CAIRO_FT_CFLAGS = @CAIRO_FT_CFLAGS@ +CAIRO_FT_LIBS = @CAIRO_FT_LIBS@ +CAIRO_LIBS = @CAIRO_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ +CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ +CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ +CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ +CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ +CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ +CORETEXT_CFLAGS = @CORETEXT_CFLAGS@ +CORETEXT_LIBS = @CORETEXT_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIRECTWRITE_CXXFLAGS = @DIRECTWRITE_CXXFLAGS@ +DIRECTWRITE_LIBS = @DIRECTWRITE_LIBS@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ +FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_DEPS = @FREETYPE_DEPS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +GCOV = @GCOV@ +GENHTML = @GENHTML@ +GIT = @GIT@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_DEPS = @GLIB_DEPS@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GOBJECT_CFLAGS = @GOBJECT_CFLAGS@ +GOBJECT_LIBS = @GOBJECT_LIBS@ +GRAPHITE2_CFLAGS = @GRAPHITE2_CFLAGS@ +GRAPHITE2_DEPS = @GRAPHITE2_DEPS@ +GRAPHITE2_LIBS = @GRAPHITE2_LIBS@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HB_LIBTOOL_VERSION_INFO = @HB_LIBTOOL_VERSION_INFO@ +HB_VERSION = @HB_VERSION@ +HB_VERSION_MAJOR = @HB_VERSION_MAJOR@ +HB_VERSION_MICRO = @HB_VERSION_MICRO@ +HB_VERSION_MINOR = @HB_VERSION_MINOR@ +HTML_DIR = @HTML_DIR@ +ICU_CFLAGS = @ICU_CFLAGS@ +ICU_CONFIG = @ICU_CONFIG@ +ICU_LIBS = @ICU_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ +INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ +INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ +INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ +INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ +INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ +INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ +INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ +LCOV = @LCOV@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +RAGEL = @RAGEL@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +UNISCRIBE_CFLAGS = @UNISCRIBE_CFLAGS@ +UNISCRIBE_LIBS = @UNISCRIBE_LIBS@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +ax_pthread_config = @ax_pthread_config@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +have_gobject = @have_gobject@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +EXTRA_DIST = \ + COPYING \ + fonts \ + $(TESTS) \ + $(NULL) + +TEST_EXTENSIONS = .tests +TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT) +DISABLED_TESTS = \ + $(NULL) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .log .tests .tests$(EXEEXT) .trs +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.sources $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits test/shaping/data/aots/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits test/shaping/data/aots/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/Makefile.sources $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.tests.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TESTS_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TESTS_LOG_DRIVER_FLAGS) $(TESTS_LOG_DRIVER_FLAGS) -- $(TESTS_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.tests$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TESTS_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TESTS_LOG_DRIVER_FLAGS) $(TESTS_LOG_DRIVER_FLAGS) -- $(TESTS_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: all all-am check check-TESTS check-am clean clean-generic \ + clean-libtool cscopelist-am ctags-am distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ + uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Convenience targets: +lib: + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib + +init-aots: + git clone https://github.com/adobe-type-tools/aots $(srcdir)/aots + make -C$(srcdir)/aots + make -C$(srcdir)/aots/harfbuzz + touch $(srcdir)/init-aots + +update-tests: init-aots lib + cp $(srcdir)/hb-aots-tester.cpp $(srcdir)/aots/harfbuzz/hb-aots-tester.cpp + $(CXX) -Wno-narrowing $(srcdir)/aots/harfbuzz/hb-aots-tester.cpp \ + -I$(top_srcdir)/src/ -o $(srcdir)/aots/harfbuzz/aots \ + -L$(top_builddir)/src/.libs -lharfbuzz + rm -rf $(srcdir)/tests/ + mkdir $(srcdir)/tests/ + export LD_LIBRARY_PATH=$(realpath $(top_builddir)/src/.libs); cd $(srcdir)/aots/harfbuzz; ./aots + +.PHONY: update-tests + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/shaping/data/aots/Makefile.sources b/test/shaping/data/aots/Makefile.sources new file mode 100644 index 0000000..9339682 --- /dev/null +++ b/test/shaping/data/aots/Makefile.sources @@ -0,0 +1,126 @@ +TESTS = \ + tests/classdef1_empty.tests \ + tests/classdef1_multiple.tests \ + tests/classdef1_single.tests \ + tests/classdef1.tests \ + tests/classdef2_empty.tests \ + tests/classdef2_multiple.tests \ + tests/classdef2_single.tests \ + tests/classdef2.tests \ + tests/gpos_chaining1_boundary.tests \ + tests/gpos_chaining1_lookupflag.tests \ + tests/gpos_chaining1_multiple_subrules.tests \ + tests/gpos_chaining1_next_glyph.tests \ + tests/gpos_chaining1_simple.tests \ + tests/gpos_chaining1_successive.tests \ + tests/gpos_chaining2_boundary.tests \ + tests/gpos_chaining2_lookupflag.tests \ + tests/gpos_chaining2_multiple_subrules.tests \ + tests/gpos_chaining2_next_glyph.tests \ + tests/gpos_chaining2_simple.tests \ + tests/gpos_chaining2_successive.tests \ + tests/gpos_chaining3_boundary.tests \ + tests/gpos_chaining3_lookupflag.tests \ + tests/gpos_chaining3_next_glyph.tests \ + tests/gpos_chaining3_simple.tests \ + tests/gpos_chaining3_successive.tests \ + tests/gpos_context1_boundary.tests \ + tests/gpos_context1_expansion.tests \ + tests/gpos_context1_lookupflag.tests \ + tests/gpos_context1_multiple_subrules.tests \ + tests/gpos_context1_next_glyph.tests \ + tests/gpos_context1_simple.tests \ + tests/gpos_context1_successive.tests \ + tests/gpos_context2_boundary.tests \ + tests/gpos_context2_classes.tests \ + tests/gpos_context2_expansion.tests \ + tests/gpos_context2_lookupflag.tests \ + tests/gpos_context2_multiple_subrules.tests \ + tests/gpos_context2_next_glyph.tests \ + tests/gpos_context2_simple.tests \ + tests/gpos_context2_successive.tests \ + tests/gpos_context3_boundary.tests \ + tests/gpos_context3_lookupflag.tests \ + tests/gpos_context3_next_glyph.tests \ + tests/gpos_context3_simple.tests \ + tests/gpos_context3_successive.tests \ + tests/gpos1_1_lookupflag.tests \ + tests/gpos1_1_simple.tests \ + tests/gpos1_2_lookupflag.tests \ + tests/gpos1_2.tests \ + tests/gpos2_1_lookupflag.tests \ + tests/gpos2_1_next_glyph.tests \ + tests/gpos2_1_simple.tests \ + tests/gpos2_1.tests \ + tests/gpos2_2.tests \ + tests/gpos3_lookupflag.tests \ + tests/gpos3.tests \ + tests/gpos4_lookupflag.tests \ + tests/gpos4_multiple_anchors.tests \ + tests/gpos4_simple.tests \ + tests/gpos5.tests \ + tests/gpos6.tests \ + tests/gpos7_1.tests \ + tests/gpos9.tests \ + tests/gsub_chaining1_boundary.tests \ + tests/gsub_chaining1_lookupflag.tests \ + tests/gsub_chaining1_multiple_subrules.tests \ + tests/gsub_chaining1_next_glyph.tests \ + tests/gsub_chaining1_simple.tests \ + tests/gsub_chaining1_successive.tests \ + tests/gsub_chaining2_boundary.tests \ + tests/gsub_chaining2_lookupflag.tests \ + tests/gsub_chaining2_multiple_subrules.tests \ + tests/gsub_chaining2_next_glyph.tests \ + tests/gsub_chaining2_simple.tests \ + tests/gsub_chaining2_successive.tests \ + tests/gsub_chaining3_boundary.tests \ + tests/gsub_chaining3_lookupflag.tests \ + tests/gsub_chaining3_next_glyph.tests \ + tests/gsub_chaining3_simple.tests \ + tests/gsub_chaining3_successive.tests \ + tests/gsub_context1_boundary.tests \ + tests/gsub_context1_expansion.tests \ + tests/gsub_context1_lookupflag.tests \ + tests/gsub_context1_multiple_subrules.tests \ + tests/gsub_context1_next_glyph.tests \ + tests/gsub_context1_simple.tests \ + tests/gsub_context1_successive.tests \ + tests/gsub_context2_boundary.tests \ + tests/gsub_context2_classes.tests \ + tests/gsub_context2_expansion.tests \ + tests/gsub_context2_lookupflag.tests \ + tests/gsub_context2_multiple_subrules.tests \ + tests/gsub_context2_next_glyph.tests \ + tests/gsub_context2_simple.tests \ + tests/gsub_context2_successive.tests \ + tests/gsub_context3_boundary.tests \ + tests/gsub_context3_lookupflag.tests \ + tests/gsub_context3_next_glyph.tests \ + tests/gsub_context3_simple.tests \ + tests/gsub_context3_successive.tests \ + tests/gsub1_1_lookupflag.tests \ + tests/gsub1_1_modulo.tests \ + tests/gsub1_1_simple.tests \ + tests/gsub1_2_lookupflag.tests \ + tests/gsub1_2_simple.tests \ + tests/gsub2_1_lookupflag.tests \ + tests/gsub2_1_multiple_sequences.tests \ + tests/gsub2_1_simple.tests \ + tests/gsub3_1_lookupflag.tests \ + tests/gsub3_1_multiple.tests \ + tests/gsub3_1_simple.tests \ + tests/gsub4_1_lookupflag.tests \ + tests/gsub4_1_multiple_ligatures.tests \ + tests/gsub4_1_multiple_ligsets.tests \ + tests/gsub4_1_simple.tests \ + tests/gsub7.tests \ + tests/lookupflag_ignore_attach.tests \ + tests/lookupflag_ignore_base.tests \ + tests/lookupflag_ignore_combination.tests \ + tests/lookupflag_ignore_ligatures.tests \ + tests/lookupflag_ignore_marks.tests \ + $(NULL) + +DISABLED_TESTS = \ + $(NULL) diff --git a/test/shaping/data/aots/fonts/classdef1_font1.otf b/test/shaping/data/aots/fonts/classdef1_font1.otf Binary files differnew file mode 100644 index 0000000..f0add69 --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef1_font1.otf diff --git a/test/shaping/data/aots/fonts/classdef1_font2.otf b/test/shaping/data/aots/fonts/classdef1_font2.otf Binary files differnew file mode 100644 index 0000000..f01876d --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef1_font2.otf diff --git a/test/shaping/data/aots/fonts/classdef1_font3.otf b/test/shaping/data/aots/fonts/classdef1_font3.otf Binary files differnew file mode 100644 index 0000000..2a0f9cc --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef1_font3.otf diff --git a/test/shaping/data/aots/fonts/classdef1_font4.otf b/test/shaping/data/aots/fonts/classdef1_font4.otf Binary files differnew file mode 100644 index 0000000..9c0f41c --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef1_font4.otf diff --git a/test/shaping/data/aots/fonts/classdef2_font1.otf b/test/shaping/data/aots/fonts/classdef2_font1.otf Binary files differnew file mode 100644 index 0000000..2e2faaf --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef2_font1.otf diff --git a/test/shaping/data/aots/fonts/classdef2_font2.otf b/test/shaping/data/aots/fonts/classdef2_font2.otf Binary files differnew file mode 100644 index 0000000..2e2a1af --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef2_font2.otf diff --git a/test/shaping/data/aots/fonts/classdef2_font3.otf b/test/shaping/data/aots/fonts/classdef2_font3.otf Binary files differnew file mode 100644 index 0000000..14c9119 --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef2_font3.otf diff --git a/test/shaping/data/aots/fonts/classdef2_font4.otf b/test/shaping/data/aots/fonts/classdef2_font4.otf Binary files differnew file mode 100644 index 0000000..c75c883 --- /dev/null +++ b/test/shaping/data/aots/fonts/classdef2_font4.otf diff --git a/test/shaping/data/aots/fonts/cmap0_font1.otf b/test/shaping/data/aots/fonts/cmap0_font1.otf Binary files differnew file mode 100644 index 0000000..772f9a7 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap0_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap10_font1.otf b/test/shaping/data/aots/fonts/cmap10_font1.otf Binary files differnew file mode 100644 index 0000000..023e945 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap10_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap10_font2.otf b/test/shaping/data/aots/fonts/cmap10_font2.otf Binary files differnew file mode 100644 index 0000000..5202f79 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap10_font2.otf diff --git a/test/shaping/data/aots/fonts/cmap12_font1.otf b/test/shaping/data/aots/fonts/cmap12_font1.otf Binary files differnew file mode 100644 index 0000000..2d74b3a --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap12_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap14_font1.otf b/test/shaping/data/aots/fonts/cmap14_font1.otf Binary files differnew file mode 100644 index 0000000..a8e941d --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap14_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap2_font1.otf b/test/shaping/data/aots/fonts/cmap2_font1.otf Binary files differnew file mode 100644 index 0000000..a123d9c --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap2_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap4_font1.otf b/test/shaping/data/aots/fonts/cmap4_font1.otf Binary files differnew file mode 100644 index 0000000..516ed8e --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap4_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap4_font2.otf b/test/shaping/data/aots/fonts/cmap4_font2.otf Binary files differnew file mode 100644 index 0000000..0f678a3 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap4_font2.otf diff --git a/test/shaping/data/aots/fonts/cmap4_font3.otf b/test/shaping/data/aots/fonts/cmap4_font3.otf Binary files differnew file mode 100644 index 0000000..2034ecd --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap4_font3.otf diff --git a/test/shaping/data/aots/fonts/cmap4_font4.otf b/test/shaping/data/aots/fonts/cmap4_font4.otf Binary files differnew file mode 100644 index 0000000..450508e --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap4_font4.otf diff --git a/test/shaping/data/aots/fonts/cmap6_font1.otf b/test/shaping/data/aots/fonts/cmap6_font1.otf Binary files differnew file mode 100644 index 0000000..10b64a7 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap6_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap6_font2.otf b/test/shaping/data/aots/fonts/cmap6_font2.otf Binary files differnew file mode 100644 index 0000000..2d2957f --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap6_font2.otf diff --git a/test/shaping/data/aots/fonts/cmap8_font1.otf b/test/shaping/data/aots/fonts/cmap8_font1.otf Binary files differnew file mode 100644 index 0000000..791b9e3 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap8_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap_composition_font1.otf b/test/shaping/data/aots/fonts/cmap_composition_font1.otf Binary files differnew file mode 100644 index 0000000..c790717 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap_composition_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap_subtableselection_font1.otf b/test/shaping/data/aots/fonts/cmap_subtableselection_font1.otf Binary files differnew file mode 100644 index 0000000..8929f8a --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap_subtableselection_font1.otf diff --git a/test/shaping/data/aots/fonts/cmap_subtableselection_font2.otf b/test/shaping/data/aots/fonts/cmap_subtableselection_font2.otf Binary files differnew file mode 100644 index 0000000..2611092 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap_subtableselection_font2.otf diff --git a/test/shaping/data/aots/fonts/cmap_subtableselection_font3.otf b/test/shaping/data/aots/fonts/cmap_subtableselection_font3.otf Binary files differnew file mode 100644 index 0000000..9f39331 --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap_subtableselection_font3.otf diff --git a/test/shaping/data/aots/fonts/cmap_subtableselection_font4.otf b/test/shaping/data/aots/fonts/cmap_subtableselection_font4.otf Binary files differnew file mode 100644 index 0000000..83ae88e --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap_subtableselection_font4.otf diff --git a/test/shaping/data/aots/fonts/cmap_subtableselection_font5.otf b/test/shaping/data/aots/fonts/cmap_subtableselection_font5.otf Binary files differnew file mode 100644 index 0000000..8b614ad --- /dev/null +++ b/test/shaping/data/aots/fonts/cmap_subtableselection_font5.otf diff --git a/test/shaping/data/aots/fonts/gpos1_1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos1_1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..3245425 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos1_1_simple_f1.otf b/test/shaping/data/aots/fonts/gpos1_1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..c5f8888 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos1_1_simple_f2.otf b/test/shaping/data/aots/fonts/gpos1_1_simple_f2.otf Binary files differnew file mode 100644 index 0000000..905d0a3 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_1_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos1_1_simple_f3.otf b/test/shaping/data/aots/fonts/gpos1_1_simple_f3.otf Binary files differnew file mode 100644 index 0000000..550be87 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_1_simple_f3.otf diff --git a/test/shaping/data/aots/fonts/gpos1_1_simple_f4.otf b/test/shaping/data/aots/fonts/gpos1_1_simple_f4.otf Binary files differnew file mode 100644 index 0000000..448bc8b --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_1_simple_f4.otf diff --git a/test/shaping/data/aots/fonts/gpos1_2_font1.otf b/test/shaping/data/aots/fonts/gpos1_2_font1.otf Binary files differnew file mode 100644 index 0000000..3e7b7bc --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_2_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos1_2_font2.otf b/test/shaping/data/aots/fonts/gpos1_2_font2.otf Binary files differnew file mode 100644 index 0000000..ba9d224 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos1_2_font2.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_font6.otf b/test/shaping/data/aots/fonts/gpos2_1_font6.otf Binary files differnew file mode 100644 index 0000000..cd4ea94 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_font6.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_font7.otf b/test/shaping/data/aots/fonts/gpos2_1_font7.otf Binary files differnew file mode 100644 index 0000000..2871acc --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_font7.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos2_1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..6003782 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gpos2_1_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..9d0a273 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos2_1_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..64d6c2c --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_next_glyph_f2.otf b/test/shaping/data/aots/fonts/gpos2_1_next_glyph_f2.otf Binary files differnew file mode 100644 index 0000000..3d8c37a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_next_glyph_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos2_1_simple_f1.otf b/test/shaping/data/aots/fonts/gpos2_1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..c947776 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos2_2_font1.otf b/test/shaping/data/aots/fonts/gpos2_2_font1.otf Binary files differnew file mode 100644 index 0000000..dde370a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_2_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos2_2_font2.otf b/test/shaping/data/aots/fonts/gpos2_2_font2.otf Binary files differnew file mode 100644 index 0000000..63d874a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_2_font2.otf diff --git a/test/shaping/data/aots/fonts/gpos2_2_font3.otf b/test/shaping/data/aots/fonts/gpos2_2_font3.otf Binary files differnew file mode 100644 index 0000000..b530676 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_2_font3.otf diff --git a/test/shaping/data/aots/fonts/gpos2_2_font4.otf b/test/shaping/data/aots/fonts/gpos2_2_font4.otf Binary files differnew file mode 100644 index 0000000..b549e02 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_2_font4.otf diff --git a/test/shaping/data/aots/fonts/gpos2_2_font5.otf b/test/shaping/data/aots/fonts/gpos2_2_font5.otf Binary files differnew file mode 100644 index 0000000..64c40bb --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos2_2_font5.otf diff --git a/test/shaping/data/aots/fonts/gpos3_font1.otf b/test/shaping/data/aots/fonts/gpos3_font1.otf Binary files differnew file mode 100644 index 0000000..9b6d39a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos3_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos3_font2.otf b/test/shaping/data/aots/fonts/gpos3_font2.otf Binary files differnew file mode 100644 index 0000000..dee5785 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos3_font2.otf diff --git a/test/shaping/data/aots/fonts/gpos3_font3.otf b/test/shaping/data/aots/fonts/gpos3_font3.otf Binary files differnew file mode 100644 index 0000000..7522660 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos3_font3.otf diff --git a/test/shaping/data/aots/fonts/gpos4_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos4_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..b141116 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos4_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos4_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gpos4_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..84e4843 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos4_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos4_multiple_anchors_1.otf b/test/shaping/data/aots/fonts/gpos4_multiple_anchors_1.otf Binary files differnew file mode 100644 index 0000000..025f69b --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos4_multiple_anchors_1.otf diff --git a/test/shaping/data/aots/fonts/gpos4_simple_1.otf b/test/shaping/data/aots/fonts/gpos4_simple_1.otf Binary files differnew file mode 100644 index 0000000..da54a1f --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos4_simple_1.otf diff --git a/test/shaping/data/aots/fonts/gpos5_font1.otf b/test/shaping/data/aots/fonts/gpos5_font1.otf Binary files differnew file mode 100644 index 0000000..8c48fb6 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos5_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos6_font1.otf b/test/shaping/data/aots/fonts/gpos6_font1.otf Binary files differnew file mode 100644 index 0000000..f7f92cc --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos6_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos7_1_font1.otf b/test/shaping/data/aots/fonts/gpos7_1_font1.otf Binary files differnew file mode 100644 index 0000000..ced8907 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos7_1_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos9_font1.otf b/test/shaping/data/aots/fonts/gpos9_font1.otf Binary files differnew file mode 100644 index 0000000..e99c25a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos9_font1.otf diff --git a/test/shaping/data/aots/fonts/gpos9_font2.otf b/test/shaping/data/aots/fonts/gpos9_font2.otf Binary files differnew file mode 100644 index 0000000..9ae824b --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos9_font2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..44c4117 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..431b08f --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f3.otf b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f3.otf Binary files differnew file mode 100644 index 0000000..1bac49a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f3.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f4.otf b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f4.otf Binary files differnew file mode 100644 index 0000000..3d37782 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_boundary_f4.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..a83342a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining1_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..07bf55c --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining1_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..dc3754b --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining1_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..17852c2 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_simple_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..31cbe77 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_simple_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining1_simple_f2.otf Binary files differnew file mode 100644 index 0000000..3293ad8 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining1_successive_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining1_successive_f1.otf Binary files differnew file mode 100644 index 0000000..4c86663 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining1_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..49210fb --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..456fc9b --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f3.otf b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f3.otf Binary files differnew file mode 100644 index 0000000..768492a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f3.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f4.otf b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f4.otf Binary files differnew file mode 100644 index 0000000..2670da6 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_boundary_f4.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining2_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..e8cce56 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining2_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..f182c7f --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining2_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..d24896a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining2_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..f6bbda4 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_simple_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining2_simple_f1.otf Binary files differnew file mode 100644 index 0000000..1805a03 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_simple_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining2_simple_f2.otf Binary files differnew file mode 100644 index 0000000..1df12f5 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining2_successive_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining2_successive_f1.otf Binary files differnew file mode 100644 index 0000000..a3aadaf --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining2_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..4f13bdd --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..48be5dd --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f3.otf b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f3.otf Binary files differnew file mode 100644 index 0000000..a10068b --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f3.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f4.otf b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f4.otf Binary files differnew file mode 100644 index 0000000..8030ac0 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_boundary_f4.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining3_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..7864ce0 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining3_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..20a7966 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_simple_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining3_simple_f1.otf Binary files differnew file mode 100644 index 0000000..2c63328 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_simple_f2.otf b/test/shaping/data/aots/fonts/gpos_chaining3_simple_f2.otf Binary files differnew file mode 100644 index 0000000..6ef8fb1 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_chaining3_successive_f1.otf b/test/shaping/data/aots/fonts/gpos_chaining3_successive_f1.otf Binary files differnew file mode 100644 index 0000000..8e8439d --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_chaining3_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_boundary_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..22bb3ea --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_boundary_f2.otf b/test/shaping/data/aots/fonts/gpos_context1_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..7e4c0e1 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_expansion_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_expansion_f1.otf Binary files differnew file mode 100644 index 0000000..f7c60f6 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_expansion_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..e9b03ae --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gpos_context1_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..b9998cd --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..6f1aafa --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gpos_context1_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..ed9a387 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..6007d54 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_simple_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..5e6cd9e --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_simple_f2.otf b/test/shaping/data/aots/fonts/gpos_context1_simple_f2.otf Binary files differnew file mode 100644 index 0000000..b4fddb3 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context1_successive_f1.otf b/test/shaping/data/aots/fonts/gpos_context1_successive_f1.otf Binary files differnew file mode 100644 index 0000000..eb0f962 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context1_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_boundary_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..3fce497 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_boundary_f2.otf b/test/shaping/data/aots/fonts/gpos_context2_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..5b4e012 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_classes_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_classes_f1.otf Binary files differnew file mode 100644 index 0000000..585b511 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_classes_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_classes_f2.otf b/test/shaping/data/aots/fonts/gpos_context2_classes_f2.otf Binary files differnew file mode 100644 index 0000000..411d58e --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_classes_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_expansion_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_expansion_f1.otf Binary files differnew file mode 100644 index 0000000..4b2d36a --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_expansion_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..1c0c480 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gpos_context2_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..bf20d84 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..05b6b73 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gpos_context2_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..f79712c --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..1b5a256 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_simple_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_simple_f1.otf Binary files differnew file mode 100644 index 0000000..9aaec44 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_simple_f2.otf b/test/shaping/data/aots/fonts/gpos_context2_simple_f2.otf Binary files differnew file mode 100644 index 0000000..c789b2e --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context2_successive_f1.otf b/test/shaping/data/aots/fonts/gpos_context2_successive_f1.otf Binary files differnew file mode 100644 index 0000000..b89bfb7 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context2_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_boundary_f1.otf b/test/shaping/data/aots/fonts/gpos_context3_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..f8949d4 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_boundary_f2.otf b/test/shaping/data/aots/fonts/gpos_context3_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..ceb7452 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gpos_context3_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..40b55ee --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gpos_context3_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..bcf4d17 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gpos_context3_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..6f9d919 --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_simple_f1.otf b/test/shaping/data/aots/fonts/gpos_context3_simple_f1.otf Binary files differnew file mode 100644 index 0000000..470c2ed --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gpos_context3_successive_f1.otf b/test/shaping/data/aots/fonts/gpos_context3_successive_f1.otf Binary files differnew file mode 100644 index 0000000..aeb9bbd --- /dev/null +++ b/test/shaping/data/aots/fonts/gpos_context3_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub1_1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub1_1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..a539b95 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub1_1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub1_1_modulo_f1.otf b/test/shaping/data/aots/fonts/gsub1_1_modulo_f1.otf Binary files differnew file mode 100644 index 0000000..7ba2379 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub1_1_modulo_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub1_1_simple_f1.otf b/test/shaping/data/aots/fonts/gsub1_1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..c21fcd3 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub1_1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub1_2_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub1_2_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..b13af6e --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub1_2_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub1_2_simple_f1.otf b/test/shaping/data/aots/fonts/gsub1_2_simple_f1.otf Binary files differnew file mode 100644 index 0000000..d3851b3 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub1_2_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub2_1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub2_1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..8330ad4 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub2_1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub2_1_multiple_sequences_f1.otf b/test/shaping/data/aots/fonts/gsub2_1_multiple_sequences_f1.otf Binary files differnew file mode 100644 index 0000000..c912937 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub2_1_multiple_sequences_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub2_1_simple_f1.otf b/test/shaping/data/aots/fonts/gsub2_1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..584a7f5 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub2_1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub3_1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub3_1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..4ccf55f --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub3_1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub3_1_multiple_f1.otf b/test/shaping/data/aots/fonts/gsub3_1_multiple_f1.otf Binary files differnew file mode 100644 index 0000000..075f196 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub3_1_multiple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub3_1_simple_f1.otf b/test/shaping/data/aots/fonts/gsub3_1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..201f0f2 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub3_1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub4_1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub4_1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..08ec01a --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub4_1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub4_1_multiple_ligatures_f1.otf b/test/shaping/data/aots/fonts/gsub4_1_multiple_ligatures_f1.otf Binary files differnew file mode 100644 index 0000000..90da331 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub4_1_multiple_ligatures_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub4_1_multiple_ligatures_f2.otf b/test/shaping/data/aots/fonts/gsub4_1_multiple_ligatures_f2.otf Binary files differnew file mode 100644 index 0000000..4383ba9 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub4_1_multiple_ligatures_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub4_1_multiple_ligsets_f1.otf b/test/shaping/data/aots/fonts/gsub4_1_multiple_ligsets_f1.otf Binary files differnew file mode 100644 index 0000000..cea1b1a --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub4_1_multiple_ligsets_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub4_1_simple_f1.otf b/test/shaping/data/aots/fonts/gsub4_1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..50c713a --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub4_1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub7_font1.otf b/test/shaping/data/aots/fonts/gsub7_font1.otf Binary files differnew file mode 100644 index 0000000..b920398 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub7_font1.otf diff --git a/test/shaping/data/aots/fonts/gsub7_font2.otf b/test/shaping/data/aots/fonts/gsub7_font2.otf Binary files differnew file mode 100644 index 0000000..c98bafb --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub7_font2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..444d931 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..2268647 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f3.otf b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f3.otf Binary files differnew file mode 100644 index 0000000..a592947 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f3.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f4.otf b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f4.otf Binary files differnew file mode 100644 index 0000000..f3f6b8c --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_boundary_f4.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..47e4c64 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining1_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..741362c --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining1_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..67801f2 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining1_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..655000a --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_simple_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..c770965 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_simple_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining1_simple_f2.otf Binary files differnew file mode 100644 index 0000000..8999e3f --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining1_successive_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining1_successive_f1.otf Binary files differnew file mode 100644 index 0000000..ad472ec --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining1_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..845c256 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..af0ad1f --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f3.otf b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f3.otf Binary files differnew file mode 100644 index 0000000..28679c8 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f3.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f4.otf b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f4.otf Binary files differnew file mode 100644 index 0000000..14746c6 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_boundary_f4.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining2_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..2f4feed --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining2_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..6edeb6b --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining2_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..ae0298f --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining2_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..878666f --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_simple_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining2_simple_f1.otf Binary files differnew file mode 100644 index 0000000..e860930 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_simple_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining2_simple_f2.otf Binary files differnew file mode 100644 index 0000000..4fdde33 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining2_successive_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining2_successive_f1.otf Binary files differnew file mode 100644 index 0000000..90f9f73 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining2_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..1aea8be --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..97c92c3 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f3.otf b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f3.otf Binary files differnew file mode 100644 index 0000000..3b8513e --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f3.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f4.otf b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f4.otf Binary files differnew file mode 100644 index 0000000..e81d00e --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_boundary_f4.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining3_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..47c1007 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining3_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..9160eda --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_simple_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining3_simple_f1.otf Binary files differnew file mode 100644 index 0000000..5982eb5 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_simple_f2.otf b/test/shaping/data/aots/fonts/gsub_chaining3_simple_f2.otf Binary files differnew file mode 100644 index 0000000..359b126 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_chaining3_successive_f1.otf b/test/shaping/data/aots/fonts/gsub_chaining3_successive_f1.otf Binary files differnew file mode 100644 index 0000000..ae39d92 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_chaining3_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_boundary_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..0267cab --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_boundary_f2.otf b/test/shaping/data/aots/fonts/gsub_context1_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..24b1716 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_expansion_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_expansion_f1.otf Binary files differnew file mode 100644 index 0000000..c1dda80 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_expansion_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..60676ab --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gsub_context1_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..bcb56e4 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..52cd861 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gsub_context1_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..891356a --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..2786ded --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_simple_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_simple_f1.otf Binary files differnew file mode 100644 index 0000000..ebdaf22 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_simple_f2.otf b/test/shaping/data/aots/fonts/gsub_context1_simple_f2.otf Binary files differnew file mode 100644 index 0000000..d4a3fbf --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context1_successive_f1.otf b/test/shaping/data/aots/fonts/gsub_context1_successive_f1.otf Binary files differnew file mode 100644 index 0000000..ce2dce5 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context1_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_boundary_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..6f46192 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_boundary_f2.otf b/test/shaping/data/aots/fonts/gsub_context2_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..ef19d87 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_classes_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_classes_f1.otf Binary files differnew file mode 100644 index 0000000..8507760 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_classes_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_classes_f2.otf b/test/shaping/data/aots/fonts/gsub_context2_classes_f2.otf Binary files differnew file mode 100644 index 0000000..ceb74b2 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_classes_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_expansion_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_expansion_f1.otf Binary files differnew file mode 100644 index 0000000..c12f0ac --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_expansion_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..a0fada4 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gsub_context2_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..cd40a5d --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_multiple_subrules_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_multiple_subrules_f1.otf Binary files differnew file mode 100644 index 0000000..53be20d --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_multiple_subrules_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_multiple_subrules_f2.otf b/test/shaping/data/aots/fonts/gsub_context2_multiple_subrules_f2.otf Binary files differnew file mode 100644 index 0000000..6bcc0cb --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_multiple_subrules_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..4ca4e48 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_simple_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_simple_f1.otf Binary files differnew file mode 100644 index 0000000..16aae9d --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_simple_f2.otf b/test/shaping/data/aots/fonts/gsub_context2_simple_f2.otf Binary files differnew file mode 100644 index 0000000..fc31262 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_simple_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context2_successive_f1.otf b/test/shaping/data/aots/fonts/gsub_context2_successive_f1.otf Binary files differnew file mode 100644 index 0000000..cf1a89c --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context2_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_boundary_f1.otf b/test/shaping/data/aots/fonts/gsub_context3_boundary_f1.otf Binary files differnew file mode 100644 index 0000000..01cd29d --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_boundary_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_boundary_f2.otf b/test/shaping/data/aots/fonts/gsub_context3_boundary_f2.otf Binary files differnew file mode 100644 index 0000000..6fa5f05 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_boundary_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_lookupflag_f1.otf b/test/shaping/data/aots/fonts/gsub_context3_lookupflag_f1.otf Binary files differnew file mode 100644 index 0000000..94371b4 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_lookupflag_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_lookupflag_f2.otf b/test/shaping/data/aots/fonts/gsub_context3_lookupflag_f2.otf Binary files differnew file mode 100644 index 0000000..d8150df --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_lookupflag_f2.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_next_glyph_f1.otf b/test/shaping/data/aots/fonts/gsub_context3_next_glyph_f1.otf Binary files differnew file mode 100644 index 0000000..93533b8 --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_next_glyph_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_simple_f1.otf b/test/shaping/data/aots/fonts/gsub_context3_simple_f1.otf Binary files differnew file mode 100644 index 0000000..a1cd98c --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_simple_f1.otf diff --git a/test/shaping/data/aots/fonts/gsub_context3_successive_f1.otf b/test/shaping/data/aots/fonts/gsub_context3_successive_f1.otf Binary files differnew file mode 100644 index 0000000..d8b3d5c --- /dev/null +++ b/test/shaping/data/aots/fonts/gsub_context3_successive_f1.otf diff --git a/test/shaping/data/aots/fonts/lookupflag_ignore_attach_f1.otf b/test/shaping/data/aots/fonts/lookupflag_ignore_attach_f1.otf Binary files differnew file mode 100644 index 0000000..80651f1 --- /dev/null +++ b/test/shaping/data/aots/fonts/lookupflag_ignore_attach_f1.otf diff --git a/test/shaping/data/aots/fonts/lookupflag_ignore_base_f1.otf b/test/shaping/data/aots/fonts/lookupflag_ignore_base_f1.otf Binary files differnew file mode 100644 index 0000000..3c242b0 --- /dev/null +++ b/test/shaping/data/aots/fonts/lookupflag_ignore_base_f1.otf diff --git a/test/shaping/data/aots/fonts/lookupflag_ignore_combination_f1.otf b/test/shaping/data/aots/fonts/lookupflag_ignore_combination_f1.otf Binary files differnew file mode 100644 index 0000000..b88359a --- /dev/null +++ b/test/shaping/data/aots/fonts/lookupflag_ignore_combination_f1.otf diff --git a/test/shaping/data/aots/fonts/lookupflag_ignore_ligatures_f1.otf b/test/shaping/data/aots/fonts/lookupflag_ignore_ligatures_f1.otf Binary files differnew file mode 100644 index 0000000..1dc0c23 --- /dev/null +++ b/test/shaping/data/aots/fonts/lookupflag_ignore_ligatures_f1.otf diff --git a/test/shaping/data/aots/fonts/lookupflag_ignore_marks_f1.otf b/test/shaping/data/aots/fonts/lookupflag_ignore_marks_f1.otf Binary files differnew file mode 100644 index 0000000..aa429de --- /dev/null +++ b/test/shaping/data/aots/fonts/lookupflag_ignore_marks_f1.otf diff --git a/test/shaping/data/aots/tests/classdef1.tests b/test/shaping/data/aots/tests/classdef1.tests new file mode 100644 index 0000000..40ded45 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef1.tests @@ -0,0 +1 @@ +../fonts/classdef1_font4.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18|19|20|21] diff --git a/test/shaping/data/aots/tests/classdef1_empty.tests b/test/shaping/data/aots/tests/classdef1_empty.tests new file mode 100644 index 0000000..71d87f1 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef1_empty.tests @@ -0,0 +1 @@ +../fonts/classdef1_font2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|24|25|21] diff --git a/test/shaping/data/aots/tests/classdef1_multiple.tests b/test/shaping/data/aots/tests/classdef1_multiple.tests new file mode 100644 index 0000000..c813f49 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef1_multiple.tests @@ -0,0 +1 @@ +../fonts/classdef1_font3.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+001B,U+001C,U+001D,U+001E,U+001F,U+0020,U+0021,U+0022,U+0023,U+0024:[20|23|24|25|24|26|27|28|28|29|30|31|34|33|34|35|37|38|38|39] diff --git a/test/shaping/data/aots/tests/classdef1_single.tests b/test/shaping/data/aots/tests/classdef1_single.tests new file mode 100644 index 0000000..b0196d3 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef1_single.tests @@ -0,0 +1 @@ +../fonts/classdef2_font1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|24|25|21] diff --git a/test/shaping/data/aots/tests/classdef2.tests b/test/shaping/data/aots/tests/classdef2.tests new file mode 100644 index 0000000..d8c7b14 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef2.tests @@ -0,0 +1 @@ +../fonts/classdef2_font4.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18|19|20|21] diff --git a/test/shaping/data/aots/tests/classdef2_empty.tests b/test/shaping/data/aots/tests/classdef2_empty.tests new file mode 100644 index 0000000..a8fd629 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef2_empty.tests @@ -0,0 +1 @@ +../fonts/classdef2_font2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|24|25|21] diff --git a/test/shaping/data/aots/tests/classdef2_multiple.tests b/test/shaping/data/aots/tests/classdef2_multiple.tests new file mode 100644 index 0000000..39e6835 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef2_multiple.tests @@ -0,0 +1 @@ +../fonts/classdef2_font3.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+001B,U+001C,U+001D,U+001E,U+001F,U+0020,U+0021,U+0022,U+0023,U+0024:[20|23|24|25|24|26|27|28|28|29|30|31|34|33|34|35|37|38|38|39] diff --git a/test/shaping/data/aots/tests/classdef2_single.tests b/test/shaping/data/aots/tests/classdef2_single.tests new file mode 100644 index 0000000..b0196d3 --- /dev/null +++ b/test/shaping/data/aots/tests/classdef2_single.tests @@ -0,0 +1 @@ +../fonts/classdef2_font1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|24|25|21] diff --git a/test/shaping/data/aots/tests/gpos1_1_lookupflag.tests b/test/shaping/data/aots/tests/gpos1_1_lookupflag.tests new file mode 100644 index 0000000..88d7dd7 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos1_1_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gpos1_1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1500,0|19@3000,0|20@4200,0|21@6000,0] diff --git a/test/shaping/data/aots/tests/gpos1_1_simple.tests b/test/shaping/data/aots/tests/gpos1_1_simple.tests new file mode 100644 index 0000000..101da9c --- /dev/null +++ b/test/shaping/data/aots/tests/gpos1_1_simple.tests @@ -0,0 +1,4 @@ +../fonts/gpos1_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1300,0|19@3000,0|20@4300,0|21@6000,0] +../fonts/gpos1_1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1500,-200|19@3000,0|20@4500,-200|21@6000,0] +../fonts/gpos1_1_simple_f3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1500,0|19@2800,0|20@4300,0|21@5600,0] +#../fonts/gpos1_1_simple_f4.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1500,0|19@3000,-200|20@4500,-200|21@6000,-400] diff --git a/test/shaping/data/aots/tests/gpos1_2.tests b/test/shaping/data/aots/tests/gpos1_2.tests new file mode 100644 index 0000000..3ddfa44 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos1_2.tests @@ -0,0 +1 @@ +../fonts/gpos1_2_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1300,0|19@3000,0|20@4200,0|21@6000,0] diff --git a/test/shaping/data/aots/tests/gpos1_2_lookupflag.tests b/test/shaping/data/aots/tests/gpos1_2_lookupflag.tests new file mode 100644 index 0000000..82bcc43 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos1_2_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gpos1_2_font2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1500,0|19@3000,0|20@4200,0|21@6000,0] diff --git a/test/shaping/data/aots/tests/gpos2_1.tests b/test/shaping/data/aots/tests/gpos2_1.tests new file mode 100644 index 0000000..4d8b5e9 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos2_1.tests @@ -0,0 +1,2 @@ +../fonts/gpos2_1_font6.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011,U+0012,U+0014,U+0011:[17|18@1300,0|19@3000,-100|17@4500,0|18@5700,0|20@7500,-400|17@9000,0] +../fonts/gpos2_1_font7.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011,U+0012,U+0014,U+0011,U+0015,U+0016,U+0011:[17|18@1300,0|19@3000,-100|17@4500,0|18@5700,0|20@7500,-400|17@9000,0|21@10000,0|22@12000,-600|17@13500,0] diff --git a/test/shaping/data/aots/tests/gpos2_1_lookupflag.tests b/test/shaping/data/aots/tests/gpos2_1_lookupflag.tests new file mode 100644 index 0000000..ce445a1 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos2_1_lookupflag.tests @@ -0,0 +1,2 @@ +../fonts/gpos2_1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011:[17|19@1300,0|20@3000,-100|17@4500,0|19@5800,0|18@7500,0|20@9000,-100|17@10500,0] +../fonts/gpos2_1_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011:[17|19@1500,0|20@2800,-100|17@4300,0|19@5800,0|18@7100,0|20@8600,-100|17@10100,0] diff --git a/test/shaping/data/aots/tests/gpos2_1_next_glyph.tests b/test/shaping/data/aots/tests/gpos2_1_next_glyph.tests new file mode 100644 index 0000000..7f27eee --- /dev/null +++ b/test/shaping/data/aots/tests/gpos2_1_next_glyph.tests @@ -0,0 +1,2 @@ +../fonts/gpos2_1_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0012,U+0012,U+0012,U+0012:[18@-100,0|18@1500,-100|18@2900,0|18@4500,-100] +../fonts/gpos2_1_next_glyph_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0012,U+0012,U+0012,U+0012:[18@-100,0|18@1400,0|18@2900,0|18@4500,0] diff --git a/test/shaping/data/aots/tests/gpos2_1_simple.tests b/test/shaping/data/aots/tests/gpos2_1_simple.tests new file mode 100644 index 0000000..71e8c81 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos2_1_simple.tests @@ -0,0 +1,2 @@ +../fonts/gpos2_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011,U+0012,U+0014:[17|18@1300,0|19@3000,-100|17@4500,0|18@6000,0|20@7500,0] +../fonts/gpos2_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012:[17|18@1500,0] diff --git a/test/shaping/data/aots/tests/gpos2_2.tests b/test/shaping/data/aots/tests/gpos2_2.tests new file mode 100644 index 0000000..7be07f7 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos2_2.tests @@ -0,0 +1,5 @@ +../fonts/gpos2_2_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011,U+0012,U+0014:[17|18@1300,0|19@3000,-100|17@4500,0|18@6000,0|20@7500,0] +../fonts/gpos2_2_font2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011:[17|19@1300,0|20@3000,-100|17@4500,0|19@5800,0|18@7500,0|20@9000,-100|17@10500,0] +../fonts/gpos2_2_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0014,U+0011,U+0013,U+0012,U+0014,U+0011:[17|19@1500,0|20@2800,-100|17@4300,0|19@5800,0|18@7100,0|20@8600,-100|17@10100,0] +../fonts/gpos2_2_font4.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0012,U+0012,U+0012,U+0012:[18@-100,0|18@1500,-100|18@2900,0|18@4500,-100] +../fonts/gpos2_2_font5.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0012,U+0012,U+0012,U+0012:[18@-100,0|18@1400,0|18@2900,0|18@4500,0] diff --git a/test/shaping/data/aots/tests/gpos3.tests b/test/shaping/data/aots/tests/gpos3.tests new file mode 100644 index 0000000..d6f37bf --- /dev/null +++ b/test/shaping/data/aots/tests/gpos3.tests @@ -0,0 +1,11 @@ +#../fonts/gpos3_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011:[17|18@1500,0|19@1599,99|17@4500,0] +../fonts/gpos3_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0011,U+0013,U+0011:[17|18@1500,0|17@3000,0|19@4500,0|17@6000,0] +#../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0012,U+0011:[17|18@1500,0|18@1600,100|17@4500,0] +#../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011:[17|18@1500,0|19@1599,99|17@4500,0] +#../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0014,U+0012,U+0011:[17|20@1500,0|18@1602,102|17@4500,0] +#../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0014,U+0013,U+0011:[17|20@1500,0|19@1601,101|17@4500,0] +../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0014,U+0011:[17|18@1500,0|20@3000,0|17@4500,0] +../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0012,U+0011:[17|19@1500,0|18@3000,0|17@4500,0] +../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0014,U+0011:[17|19@1500,0|20@3000,0|17@4500,0] +../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012:[17|18@1500,0] +../fonts/gpos3_font3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0015,U+0015,U+0015:[17|18@1500,0|21@3000,0|21@4500,0|21@6000,0] diff --git a/test/shaping/data/aots/tests/gpos3_lookupflag.tests b/test/shaping/data/aots/tests/gpos3_lookupflag.tests new file mode 100644 index 0000000..13d593c --- /dev/null +++ b/test/shaping/data/aots/tests/gpos3_lookupflag.tests @@ -0,0 +1,2 @@ +#../fonts/gpos3_font2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0015,U+0013,U+0011:[17|18@1500,0|21@3000,0|19@1599,99|17@6000,0] +#../fonts/gpos3_font2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0015,U+0015,U+0015,U+0013,U+0011:[17|18@1500,0|21@3000,0|21@4500,0|21@6000,0|19@1599,99|17@9000,0] diff --git a/test/shaping/data/aots/tests/gpos4_lookupflag.tests b/test/shaping/data/aots/tests/gpos4_lookupflag.tests new file mode 100644 index 0000000..9d041bf --- /dev/null +++ b/test/shaping/data/aots/tests/gpos4_lookupflag.tests @@ -0,0 +1,2 @@ +#../fonts/gpos4_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0011,U+0013,U+0011:[17|18@1500,0|17@3000,0|19@4500,0|17@6000,0] +#../fonts/gpos4_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011:[17|18@1500,0|19@3000,0|17@4500,0] diff --git a/test/shaping/data/aots/tests/gpos4_multiple_anchors.tests b/test/shaping/data/aots/tests/gpos4_multiple_anchors.tests new file mode 100644 index 0000000..af9a1f5 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos4_multiple_anchors.tests @@ -0,0 +1 @@ +#../fonts/gpos4_multiple_anchors_1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0013,U+0014,U+0015,U+0016,U+0012,U+0013,U+0014,U+0015,U+0016:[17|19@-100,-80|20@-91,-71|21@-102,-82|22@-93,-73|18@7500,0|19@7420,-60|20@7429,-51|21@7418,-62|22@7427,-53] diff --git a/test/shaping/data/aots/tests/gpos4_simple.tests b/test/shaping/data/aots/tests/gpos4_simple.tests new file mode 100644 index 0000000..5d60507 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos4_simple.tests @@ -0,0 +1,5 @@ +#../fonts/gpos4_simple_1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011:[17|18@1500,0|19@1400,-80|17@4500,0] +#../fonts/gpos4_simple_1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0011,U+0013,U+0011:[17|17@1500,0|19@3000,0|17@4500,0] +#../fonts/gpos4_simple_1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0019,U+0019,U+0013,U+0011:[25|25@1500,0|19@3000,0|17@4500,0] +#../fonts/gpos4_simple_1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0013,U+0011:[17|18@1500,0|19@1400,-80|19@1400,-80|17@6000,0] +#../fonts/gpos4_simple_1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0014,U+0013,U+0011:[17|18@1500,0|20@3000,0|19@1400,-80|17@6000,0] diff --git a/test/shaping/data/aots/tests/gpos5.tests b/test/shaping/data/aots/tests/gpos5.tests new file mode 100644 index 0000000..a20a0b9 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos5.tests @@ -0,0 +1,2 @@ +#../fonts/gpos5_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+001E,U+0013,U+001F,U+0011:[17|18@1500,0|19@1400,-80|17@4500,0] +#../fonts/gpos5_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+001E,U+001F,U+0013,U+0011:[17|18@1500,0|19@1401,-79|17@4500,0] diff --git a/test/shaping/data/aots/tests/gpos6.tests b/test/shaping/data/aots/tests/gpos6.tests new file mode 100644 index 0000000..e5f9b3c --- /dev/null +++ b/test/shaping/data/aots/tests/gpos6.tests @@ -0,0 +1,3 @@ +#../fonts/gpos6_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0011:[17|18@1500,0|19@1400,-80|17@4500,0] +#../fonts/gpos6_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0011,U+0013,U+0011:[17|17@1500,0|19@3000,0|17@4500,0] +#../fonts/gpos6_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0014,U+0014,U+0013,U+0011:[20|20@1500,0|19@3000,0|17@4500,0] diff --git a/test/shaping/data/aots/tests/gpos7_1.tests b/test/shaping/data/aots/tests/gpos7_1.tests new file mode 100644 index 0000000..954c8cb --- /dev/null +++ b/test/shaping/data/aots/tests/gpos7_1.tests @@ -0,0 +1,2 @@ +../fonts/gpos7_1_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1600,0|19@3200,0|20@4800,0|21@6000,0] +../fonts/gpos7_1_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0011,U+0012,U+0013,U+0011:[17|18@1500,0|17@3000,0|18@4500,0|19@6000,0|17@7500,0] diff --git a/test/shaping/data/aots/tests/gpos9.tests b/test/shaping/data/aots/tests/gpos9.tests new file mode 100644 index 0000000..cb20333 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos9.tests @@ -0,0 +1,2 @@ +../fonts/gpos9_font1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18@1300,0|19@3000,0|20@4300,0|21@6000,0] +../fonts/gpos9_font2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0011,U+0012,U+0013,U+0014,U+0015,U+0011:[17|18@1300,0|19@2700,0|20@4300,0|21@5700,0|17@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining1_boundary.tests b/test/shaping/data/aots/tests/gpos_chaining1_boundary.tests new file mode 100644 index 0000000..646ff2c --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining1_boundary.tests @@ -0,0 +1,4 @@ +../fonts/gpos_chaining1_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining1_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining1_boundary_f3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining1_boundary_f4.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining1_lookupflag.tests b/test/shaping/data/aots/tests/gpos_chaining1_lookupflag.tests new file mode 100644 index 0000000..d0e6e2e --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining1_lookupflag.tests @@ -0,0 +1 @@ +#../fonts/gpos_chaining1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000:[0|20@1500,0|90@3000,0|21@4500,0|91@6000,0|22@7500,0|92@9000,0|23@10520,0|93@12000,0|94@13500,0|24@15000,0|90@16500,0|25@18000,0|91@19500,0|26@21000,0|0@22500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining1_multiple_subrules.tests b/test/shaping/data/aots/tests/gpos_chaining1_multiple_subrules.tests new file mode 100644 index 0000000..51bbe03 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining1_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gpos_chaining1_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0] +../fonts/gpos_chaining1_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining1_next_glyph.tests b/test/shaping/data/aots/tests/gpos_chaining1_next_glyph.tests new file mode 100644 index 0000000..f8be404 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining1_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gpos_chaining1_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6020,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining1_simple.tests b/test/shaping/data/aots/tests/gpos_chaining1_simple.tests new file mode 100644 index 0000000..37efa11 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining1_simple.tests @@ -0,0 +1,11 @@ +../fonts/gpos_chaining1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0] +../fonts/gpos_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016:[0|20@1500,0|21@3000,0|22@4500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining1_successive.tests b/test/shaping/data/aots/tests/gpos_chaining1_successive.tests new file mode 100644 index 0000000..7a829cf --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining1_successive.tests @@ -0,0 +1 @@ +../fonts/gpos_chaining1_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000:[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining2_boundary.tests b/test/shaping/data/aots/tests/gpos_chaining2_boundary.tests new file mode 100644 index 0000000..c35b8c7 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining2_boundary.tests @@ -0,0 +1,4 @@ +../fonts/gpos_chaining2_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining2_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining2_boundary_f3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining2_boundary_f4.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining2_lookupflag.tests b/test/shaping/data/aots/tests/gpos_chaining2_lookupflag.tests new file mode 100644 index 0000000..8b50e14 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining2_lookupflag.tests @@ -0,0 +1 @@ +#../fonts/gpos_chaining2_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000:[0|20@1500,0|90@3000,0|21@4500,0|91@6000,0|22@7500,0|92@9000,0|23@10520,0|93@12000,0|94@13500,0|24@15000,0|90@16500,0|25@18000,0|91@19500,0|26@21000,0|0@22500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining2_multiple_subrules.tests b/test/shaping/data/aots/tests/gpos_chaining2_multiple_subrules.tests new file mode 100644 index 0000000..8ddc8b2 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining2_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gpos_chaining2_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0] +../fonts/gpos_chaining2_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|0@9000,0|20@10500,0|21@12000,0|22@13520,0|23@15000,0|0@16500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining2_next_glyph.tests b/test/shaping/data/aots/tests/gpos_chaining2_next_glyph.tests new file mode 100644 index 0000000..34170f2 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining2_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gpos_chaining2_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6020,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining2_simple.tests b/test/shaping/data/aots/tests/gpos_chaining2_simple.tests new file mode 100644 index 0000000..32fda1b --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining2_simple.tests @@ -0,0 +1,11 @@ +../fonts/gpos_chaining2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0] +../fonts/gpos_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016:[0|20@1500,0|21@3000,0|22@4500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining2_successive.tests b/test/shaping/data/aots/tests/gpos_chaining2_successive.tests new file mode 100644 index 0000000..e930863 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining2_successive.tests @@ -0,0 +1 @@ +../fonts/gpos_chaining2_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000:[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining3_boundary.tests b/test/shaping/data/aots/tests/gpos_chaining3_boundary.tests new file mode 100644 index 0000000..f74dedf --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining3_boundary.tests @@ -0,0 +1,4 @@ +../fonts/gpos_chaining3_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining3_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining3_boundary_f3.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining3_boundary_f4.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining3_lookupflag.tests b/test/shaping/data/aots/tests/gpos_chaining3_lookupflag.tests new file mode 100644 index 0000000..0165fb5 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining3_lookupflag.tests @@ -0,0 +1 @@ +#../fonts/gpos_chaining3_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000:[0|20@1500,0|90@3000,0|21@4500,0|91@6000,0|22@7500,0|92@9000,0|23@10520,0|93@12000,0|94@13500,0|24@15000,0|90@16500,0|25@18000,0|91@19500,0|26@21000,0|0@22500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining3_next_glyph.tests b/test/shaping/data/aots/tests/gpos_chaining3_next_glyph.tests new file mode 100644 index 0000000..614bc2e --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining3_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gpos_chaining3_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0016,U+0015,U+0016,U+0015,U+0016,U+0015,U+0000:[0|22@1500,0|21@3020,0|22@4500,0|21@6020,0|22@7500,0|21@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining3_simple.tests b/test/shaping/data/aots/tests/gpos_chaining3_simple.tests new file mode 100644 index 0000000..f5977c2 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining3_simple.tests @@ -0,0 +1,11 @@ +../fonts/gpos_chaining3_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|20@1500,0|21@3000,0|22@4520,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|0@10500,0|0@12000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|0@1500,0|21@3000,0|22@4500,0|23@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[21|22@1500,0|23@3000,0|24@4500,0|25@6000,0|26@7500,0|0@9000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[22|23@1500,0|24@3000,0|25@4500,0|26@6000,0|0@7500,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0|24@7500,0|25@9000,0|26@10500,0|0@12000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017:[0|20@1500,0|21@3000,0|22@4500,0|23@6000,0] +../fonts/gpos_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016:[0|20@1500,0|21@3000,0|22@4500,0] diff --git a/test/shaping/data/aots/tests/gpos_chaining3_successive.tests b/test/shaping/data/aots/tests/gpos_chaining3_successive.tests new file mode 100644 index 0000000..fa5a50c --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_chaining3_successive.tests @@ -0,0 +1 @@ +../fonts/gpos_chaining3_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000:[0|25@1500,0|20@3000,0|21@4520,0|22@6020,0|23@7500,0|24@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_boundary.tests b/test/shaping/data/aots/tests/gpos_context1_boundary.tests new file mode 100644 index 0000000..1db8fef --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_boundary.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context1_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0] +../fonts/gpos_context1_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_expansion.tests b/test/shaping/data/aots/tests/gpos_context1_expansion.tests new file mode 100644 index 0000000..2fc54d5 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_expansion.tests @@ -0,0 +1 @@ +../fonts/gpos_context1_expansion_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_lookupflag.tests b/test/shaping/data/aots/tests/gpos_context1_lookupflag.tests new file mode 100644 index 0000000..9e8fcd6 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_lookupflag.tests @@ -0,0 +1,2 @@ +#../fonts/gpos_context1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20@1520,0|90@3000,0|21@4520,0|91@6000,0|92@7500,0|22@9020,0|0@10500,0] +#../fonts/gpos_context1_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20@1500,0|90@3000,0|21@4520,0|91@6000,0|92@7500,0|22@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_multiple_subrules.tests b/test/shaping/data/aots/tests/gpos_context1_multiple_subrules.tests new file mode 100644 index 0000000..b994f04 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context1_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|20@1520,0|21@3000,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0] +../fonts/gpos_context1_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_next_glyph.tests b/test/shaping/data/aots/tests/gpos_context1_next_glyph.tests new file mode 100644 index 0000000..e67d635 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gpos_context1_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_simple.tests b/test/shaping/data/aots/tests/gpos_context1_simple.tests new file mode 100644 index 0000000..4a88e0a --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_simple.tests @@ -0,0 +1,3 @@ +../fonts/gpos_context1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0] +../fonts/gpos_context1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0000,U+0014,U+0015,U+0000:[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0] +../fonts/gpos_context1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1500,0|20@3020,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context1_successive.tests b/test/shaping/data/aots/tests/gpos_context1_successive.tests new file mode 100644 index 0000000..172d350 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context1_successive.tests @@ -0,0 +1 @@ +../fonts/gpos_context1_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_boundary.tests b/test/shaping/data/aots/tests/gpos_context2_boundary.tests new file mode 100644 index 0000000..ef63fbb --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_boundary.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context2_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0] +../fonts/gpos_context2_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_classes.tests b/test/shaping/data/aots/tests/gpos_context2_classes.tests new file mode 100644 index 0000000..5a3d008 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_classes.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context2_classes_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+001A,U+001C,U+0018,U+0000,U+0015,U+001B,U+001A,U+0018,U+0000,U+0016,U+001B,U+001A,U+0018:[0|20@1500,0|26@3020,0|28@4500,0|24@6000,0|0@7500,0|21@9000,0|27@10520,0|26@12000,0|24@13500,0|0@15000,0|22@16500,0|27@18000,0|26@19500,0|24@21000,0] +../fonts/gpos_context2_classes_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0016,U+001B,U+001A,U+0018,U+0000,U+0018,U+0018,U+001D,U+0016,U+0000,U+0016,U+001B,U+001A,U+0018:[0|22@1500,0|27@3020,0|26@4500,0|24@6000,0|0@7500,0|24@9000,0|24@10500,0|29@12020,0|22@13500,0|0@15000,0|22@16500,0|27@18020,0|26@19500,0|24@21000,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_expansion.tests b/test/shaping/data/aots/tests/gpos_context2_expansion.tests new file mode 100644 index 0000000..67ed978 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_expansion.tests @@ -0,0 +1 @@ +../fonts/gpos_context2_expansion_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20@1500,0|21@3000,0|22@4500,0|0@6000,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_lookupflag.tests b/test/shaping/data/aots/tests/gpos_context2_lookupflag.tests new file mode 100644 index 0000000..f48e825 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_lookupflag.tests @@ -0,0 +1,2 @@ +#../fonts/gpos_context2_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20@1520,0|90@3000,0|21@4520,0|91@6000,0|92@7500,0|22@9020,0|0@10500,0] +#../fonts/gpos_context2_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20@1500,0|90@3000,0|21@4520,0|91@6000,0|92@7500,0|22@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_multiple_subrules.tests b/test/shaping/data/aots/tests/gpos_context2_multiple_subrules.tests new file mode 100644 index 0000000..4489372 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context2_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|20@1520,0|21@3000,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0] +../fonts/gpos_context2_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|20@1500,0|21@3020,0|22@4500,0|0@6000,0|20@7500,0|21@9020,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_next_glyph.tests b/test/shaping/data/aots/tests/gpos_context2_next_glyph.tests new file mode 100644 index 0000000..e736b3b --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gpos_context2_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_simple.tests b/test/shaping/data/aots/tests/gpos_context2_simple.tests new file mode 100644 index 0000000..edbc0be --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_simple.tests @@ -0,0 +1,3 @@ +../fonts/gpos_context2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0] +../fonts/gpos_context2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0000,U+0014,U+0015,U+0000:[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0] +../fonts/gpos_context2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1500,0|20@3020,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context2_successive.tests b/test/shaping/data/aots/tests/gpos_context2_successive.tests new file mode 100644 index 0000000..8b098d5 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context2_successive.tests @@ -0,0 +1 @@ +../fonts/gpos_context2_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gpos_context3_boundary.tests b/test/shaping/data/aots/tests/gpos_context3_boundary.tests new file mode 100644 index 0000000..de3c057 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context3_boundary.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context3_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1500,0|20@3000,0|20@4500,0|20@6000,0|20@7500,0|0@9000,0] +../fonts/gpos_context3_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1520,0|20@3020,0|20@4520,0|20@6020,0|20@7520,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context3_lookupflag.tests b/test/shaping/data/aots/tests/gpos_context3_lookupflag.tests new file mode 100644 index 0000000..21f851b --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context3_lookupflag.tests @@ -0,0 +1,2 @@ +#../fonts/gpos_context3_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20@1520,0|90@3000,0|21@4520,0|91@6000,0|92@7500,0|22@9020,0|0@10500,0] +#../fonts/gpos_context3_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20@1500,0|90@3000,0|21@4520,0|91@6000,0|92@7500,0|22@9000,0|0@10500,0] diff --git a/test/shaping/data/aots/tests/gpos_context3_next_glyph.tests b/test/shaping/data/aots/tests/gpos_context3_next_glyph.tests new file mode 100644 index 0000000..049b156 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context3_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gpos_context3_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20@1520,0|20@3000,0|20@4520,0|20@6000,0|20@7500,0|0@9000,0] diff --git a/test/shaping/data/aots/tests/gpos_context3_simple.tests b/test/shaping/data/aots/tests/gpos_context3_simple.tests new file mode 100644 index 0000000..3e544f0 --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context3_simple.tests @@ -0,0 +1,2 @@ +../fonts/gpos_context3_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20@1520,0|21@3020,0|22@4520,0|0@6000,0] +../fonts/gpos_context3_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0000,U+0014,U+0015,U+0000,U+0014,U+0015,U+0016,U+0000:[0|20@1500,0|0@3000,0|20@4500,0|21@6000,0|0@7500,0|20@9020,0|21@10520,0|22@12020,0|0@13500,0] diff --git a/test/shaping/data/aots/tests/gpos_context3_successive.tests b/test/shaping/data/aots/tests/gpos_context3_successive.tests new file mode 100644 index 0000000..bfcf24a --- /dev/null +++ b/test/shaping/data/aots/tests/gpos_context3_successive.tests @@ -0,0 +1 @@ +../fonts/gpos_context3_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --ned:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20@1500,0|21@3020,0|22@4520,0|23@6000,0|0@7500,0] diff --git a/test/shaping/data/aots/tests/gsub1_1_lookupflag.tests b/test/shaping/data/aots/tests/gsub1_1_lookupflag.tests new file mode 100644 index 0000000..8865af8 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub1_1_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub1_1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18|24|20|21] diff --git a/test/shaping/data/aots/tests/gsub1_1_modulo.tests b/test/shaping/data/aots/tests/gsub1_1_modulo.tests new file mode 100644 index 0000000..bbfff5e --- /dev/null +++ b/test/shaping/data/aots/tests/gsub1_1_modulo.tests @@ -0,0 +1 @@ +../fonts/gsub1_1_modulo_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015,U+0016,U+0017,U+0018:[17|18|17|24|23|18|23|24] diff --git a/test/shaping/data/aots/tests/gsub1_1_simple.tests b/test/shaping/data/aots/tests/gsub1_1_simple.tests new file mode 100644 index 0000000..a3a1385 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub1_1_simple.tests @@ -0,0 +1 @@ +../fonts/gsub1_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|24|20|21] diff --git a/test/shaping/data/aots/tests/gsub1_2_lookupflag.tests b/test/shaping/data/aots/tests/gsub1_2_lookupflag.tests new file mode 100644 index 0000000..887e047 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub1_2_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub1_2_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|18|19|25|21] diff --git a/test/shaping/data/aots/tests/gsub1_2_simple.tests b/test/shaping/data/aots/tests/gsub1_2_simple.tests new file mode 100644 index 0000000..d657897 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub1_2_simple.tests @@ -0,0 +1 @@ +../fonts/gsub1_2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|22|19|25|21] diff --git a/test/shaping/data/aots/tests/gsub2_1_lookupflag.tests b/test/shaping/data/aots/tests/gsub2_1_lookupflag.tests new file mode 100644 index 0000000..e28e59c --- /dev/null +++ b/test/shaping/data/aots/tests/gsub2_1_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub2_1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0011:[17|18|22|23|17] diff --git a/test/shaping/data/aots/tests/gsub2_1_multiple_sequences.tests b/test/shaping/data/aots/tests/gsub2_1_multiple_sequences.tests new file mode 100644 index 0000000..12cbbf6 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub2_1_multiple_sequences.tests @@ -0,0 +1 @@ +../fonts/gsub2_1_multiple_sequences_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0011:[17|20|21|22|23|17] diff --git a/test/shaping/data/aots/tests/gsub2_1_simple.tests b/test/shaping/data/aots/tests/gsub2_1_simple.tests new file mode 100644 index 0000000..d1d0969 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub2_1_simple.tests @@ -0,0 +1,2 @@ +../fonts/gsub2_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013:[17|20|21|22|19] +../fonts/gsub2_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0012:[17|20|21|22|19|20|21|22] diff --git a/test/shaping/data/aots/tests/gsub3_1_lookupflag.tests b/test/shaping/data/aots/tests/gsub3_1_lookupflag.tests new file mode 100644 index 0000000..193c5c4 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub3_1_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub3_1_lookupflag_f1.otf:--features="-test[4],test[5],test[6]=2,-test[7]" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0012,U+0012,U+0013,U+0013,U+0013,U+0013,U+0011:[17|18|18|18|19|22|23|19|17] diff --git a/test/shaping/data/aots/tests/gsub3_1_multiple.tests b/test/shaping/data/aots/tests/gsub3_1_multiple.tests new file mode 100644 index 0000000..7b1c032 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub3_1_multiple.tests @@ -0,0 +1 @@ +../fonts/gsub3_1_multiple_f1.otf:--features="-test[1],test[2],test[3]=2,-test[4],-test[5],test[6],test[7]=2,-test[8]" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0012,U+0012,U+0012,U+0013,U+0013,U+0013,U+0013,U+0011:[17|18|20|21|18|19|22|23|19|17] diff --git a/test/shaping/data/aots/tests/gsub3_1_simple.tests b/test/shaping/data/aots/tests/gsub3_1_simple.tests new file mode 100644 index 0000000..b8a28d1 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub3_1_simple.tests @@ -0,0 +1 @@ +#../fonts/gsub3_1_simple_f1.otf:--features="-test[1],test[3],test[5]=2,test[7]=3,-test[9],test[11]" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011,U+0012,U+0011:[17|18|17|20|17|21|17|22|17|18|17|20|17] diff --git a/test/shaping/data/aots/tests/gsub4_1_lookupflag.tests b/test/shaping/data/aots/tests/gsub4_1_lookupflag.tests new file mode 100644 index 0000000..c2c5242 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub4_1_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub4_1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0018,U+0012,U+0018,U+0013,U+0018,U+0018,U+0014,U+0018,U+0011,U+0012,U+0013,U+0016,U+0014:[17|24|23|24|24|24|24|17|18|19|22|20] diff --git a/test/shaping/data/aots/tests/gsub4_1_multiple_ligatures.tests b/test/shaping/data/aots/tests/gsub4_1_multiple_ligatures.tests new file mode 100644 index 0000000..33c1a09 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub4_1_multiple_ligatures.tests @@ -0,0 +1,2 @@ +../fonts/gsub4_1_multiple_ligatures_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014:[17|23|17|24|22|20] +../fonts/gsub4_1_multiple_ligatures_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014:[17|24|20|17|24|22|20] diff --git a/test/shaping/data/aots/tests/gsub4_1_multiple_ligsets.tests b/test/shaping/data/aots/tests/gsub4_1_multiple_ligsets.tests new file mode 100644 index 0000000..a63aeed --- /dev/null +++ b/test/shaping/data/aots/tests/gsub4_1_multiple_ligsets.tests @@ -0,0 +1 @@ +../fonts/gsub4_1_multiple_ligsets_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0015,U+0014,U+0013,U+0016:[17|23|21|24|22] diff --git a/test/shaping/data/aots/tests/gsub4_1_simple.tests b/test/shaping/data/aots/tests/gsub4_1_simple.tests new file mode 100644 index 0000000..aa4bb4b --- /dev/null +++ b/test/shaping/data/aots/tests/gsub4_1_simple.tests @@ -0,0 +1 @@ +../fonts/gsub4_1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0011,U+0012,U+0013,U+0016,U+0014:[17|23|17|18|19|22|20] diff --git a/test/shaping/data/aots/tests/gsub7.tests b/test/shaping/data/aots/tests/gsub7.tests new file mode 100644 index 0000000..e95b1c7 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub7.tests @@ -0,0 +1,2 @@ +../fonts/gsub7_font1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|24|20|21] +../fonts/gsub7_font2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|29|20|21] diff --git a/test/shaping/data/aots/tests/gsub_chaining1_boundary.tests b/test/shaping/data/aots/tests/gsub_chaining1_boundary.tests new file mode 100644 index 0000000..6d99d97 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining1_boundary.tests @@ -0,0 +1,4 @@ +../fonts/gsub_chaining1_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|22|23|0] +../fonts/gsub_chaining1_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|0] +../fonts/gsub_chaining1_boundary_f3.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|0] +../fonts/gsub_chaining1_boundary_f4.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|62|23|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining1_lookupflag.tests b/test/shaping/data/aots/tests/gsub_chaining1_lookupflag.tests new file mode 100644 index 0000000..7883c0a --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining1_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000:[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining1_multiple_subrules.tests b/test/shaping/data/aots/tests/gsub_chaining1_multiple_subrules.tests new file mode 100644 index 0000000..28a5225 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining1_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gsub_chaining1_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|24|0|20|21|62|23|0] +../fonts/gsub_chaining1_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|62|23|24|0|20|21|62|23|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining1_next_glyph.tests b/test/shaping/data/aots/tests/gsub_chaining1_next_glyph.tests new file mode 100644 index 0000000..82f9d95 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining1_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining1_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|62|63|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining1_simple.tests b/test/shaping/data/aots/tests/gsub_chaining1_simple.tests new file mode 100644 index 0000000..23e091f --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining1_simple.tests @@ -0,0 +1,11 @@ +../fonts/gsub_chaining1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|62|23|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|20|21|62|23|24|25|26|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000:[0|20|21|22|23|24|25|0|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019:[0|20|21|22|23|24|25] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018:[0|20|21|22|23|24] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|0|21|22|23|24|25|26|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[21|22|23|24|25|26|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[22|23|24|25|26|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000:[0|20|21|22|0|24|25|26|0] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017:[0|20|21|22|23] +../fonts/gsub_chaining1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016:[0|20|21|22] diff --git a/test/shaping/data/aots/tests/gsub_chaining1_successive.tests b/test/shaping/data/aots/tests/gsub_chaining1_successive.tests new file mode 100644 index 0000000..ab3cfb1 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining1_successive.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining1_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000:[0|25|20|61|63|24|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining2_boundary.tests b/test/shaping/data/aots/tests/gsub_chaining2_boundary.tests new file mode 100644 index 0000000..b06c620 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining2_boundary.tests @@ -0,0 +1,4 @@ +../fonts/gsub_chaining2_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|22|23|0] +../fonts/gsub_chaining2_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|0] +../fonts/gsub_chaining2_boundary_f3.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|0] +../fonts/gsub_chaining2_boundary_f4.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|62|23|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining2_lookupflag.tests b/test/shaping/data/aots/tests/gsub_chaining2_lookupflag.tests new file mode 100644 index 0000000..372b343 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining2_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining2_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000:[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining2_multiple_subrules.tests b/test/shaping/data/aots/tests/gsub_chaining2_multiple_subrules.tests new file mode 100644 index 0000000..e2fbb5c --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining2_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gsub_chaining2_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|24|0|20|21|62|23|0] +../fonts/gsub_chaining2_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|62|23|24|0|20|21|62|23|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining2_next_glyph.tests b/test/shaping/data/aots/tests/gsub_chaining2_next_glyph.tests new file mode 100644 index 0000000..84c8252 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining2_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining2_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|62|63|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining2_simple.tests b/test/shaping/data/aots/tests/gsub_chaining2_simple.tests new file mode 100644 index 0000000..53fa7e8 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining2_simple.tests @@ -0,0 +1,11 @@ +../fonts/gsub_chaining2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|62|23|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|20|21|62|23|24|25|26|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000:[0|20|21|22|23|24|25|0|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019:[0|20|21|22|23|24|25] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018:[0|20|21|22|23|24] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|0|21|22|23|24|25|26|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[21|22|23|24|25|26|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[22|23|24|25|26|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000:[0|20|21|22|0|24|25|26|0] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017:[0|20|21|22|23] +../fonts/gsub_chaining2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016:[0|20|21|22] diff --git a/test/shaping/data/aots/tests/gsub_chaining2_successive.tests b/test/shaping/data/aots/tests/gsub_chaining2_successive.tests new file mode 100644 index 0000000..71cbe0d --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining2_successive.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining2_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000:[0|25|20|61|63|24|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining3_boundary.tests b/test/shaping/data/aots/tests/gsub_chaining3_boundary.tests new file mode 100644 index 0000000..c01dc4b --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining3_boundary.tests @@ -0,0 +1,4 @@ +../fonts/gsub_chaining3_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|22|23|0] +../fonts/gsub_chaining3_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|0] +../fonts/gsub_chaining3_boundary_f3.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|22|23|0] +../fonts/gsub_chaining3_boundary_f4.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|21|62|23|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining3_lookupflag.tests b/test/shaping/data/aots/tests/gsub_chaining3_lookupflag.tests new file mode 100644 index 0000000..be2147b --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining3_lookupflag.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining3_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+0016,U+005C,U+0017,U+005D,U+005E,U+0018,U+005A,U+0019,U+005B,U+001A,U+0000:[0|20|90|21|91|22|92|63|93|94|24|90|25|91|26|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining3_next_glyph.tests b/test/shaping/data/aots/tests/gsub_chaining3_next_glyph.tests new file mode 100644 index 0000000..2493c1e --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining3_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining3_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0016,U+0015,U+0016,U+0015,U+0016,U+0015,U+0000:[0|22|61|22|61|22|21|0] diff --git a/test/shaping/data/aots/tests/gsub_chaining3_simple.tests b/test/shaping/data/aots/tests/gsub_chaining3_simple.tests new file mode 100644 index 0000000..eb24167 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining3_simple.tests @@ -0,0 +1,11 @@ +../fonts/gsub_chaining3_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|62|23|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|20|21|62|23|24|25|26|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019,U+0000,U+0000:[0|20|21|22|23|24|25|0|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018,U+0019:[0|20|21|22|23|24|25] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0018:[0|20|21|22|23|24] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0000,U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[0|0|21|22|23|24|25|26|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0015,U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[21|22|23|24|25|26|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0016,U+0017,U+0018,U+0019,U+001A,U+0000:[22|23|24|25|26|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0018,U+0019,U+001A,U+0000:[0|20|21|22|0|24|25|26|0] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017:[0|20|21|22|23] +../fonts/gsub_chaining3_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016:[0|20|21|22] diff --git a/test/shaping/data/aots/tests/gsub_chaining3_successive.tests b/test/shaping/data/aots/tests/gsub_chaining3_successive.tests new file mode 100644 index 0000000..edcade1 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_chaining3_successive.tests @@ -0,0 +1 @@ +../fonts/gsub_chaining3_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0019,U+0014,U+0015,U+0016,U+0017,U+0018,U+0000:[0|25|20|61|63|24|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_boundary.tests b/test/shaping/data/aots/tests/gsub_context1_boundary.tests new file mode 100644 index 0000000..9b11892 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_boundary.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context1_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20|20|20|20|20|0] +../fonts/gsub_context1_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|60|60|60|60|60|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_expansion.tests b/test/shaping/data/aots/tests/gsub_context1_expansion.tests new file mode 100644 index 0000000..92714c5 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_expansion.tests @@ -0,0 +1 @@ +../fonts/gsub_context1_expansion_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20|61|62|63|22|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_lookupflag.tests b/test/shaping/data/aots/tests/gsub_context1_lookupflag.tests new file mode 100644 index 0000000..c5d9760 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_lookupflag.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context1_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|60|90|61|91|92|62|0] +../fonts/gsub_context1_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20|90|61|91|92|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_multiple_subrules.tests b/test/shaping/data/aots/tests/gsub_context1_multiple_subrules.tests new file mode 100644 index 0000000..febc419 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context1_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|60|21|22|0|20|61|0] +../fonts/gsub_context1_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|20|61|22|0|20|61|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_next_glyph.tests b/test/shaping/data/aots/tests/gsub_context1_next_glyph.tests new file mode 100644 index 0000000..12414c3 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gsub_context1_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|60|20|60|20|20|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_simple.tests b/test/shaping/data/aots/tests/gsub_context1_simple.tests new file mode 100644 index 0000000..44252ec --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_simple.tests @@ -0,0 +1,3 @@ +../fonts/gsub_context1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000:[0|60|61|62|0] +../fonts/gsub_context1_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0000,U+0014,U+0015,U+0000:[0|20|0|20|21|0] +../fonts/gsub_context1_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20|60|20|20|20|0] diff --git a/test/shaping/data/aots/tests/gsub_context1_successive.tests b/test/shaping/data/aots/tests/gsub_context1_successive.tests new file mode 100644 index 0000000..e68d6b2 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context1_successive.tests @@ -0,0 +1 @@ +../fonts/gsub_context1_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|63|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_boundary.tests b/test/shaping/data/aots/tests/gsub_context2_boundary.tests new file mode 100644 index 0000000..2054277 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_boundary.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context2_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20|20|20|20|20|0] +../fonts/gsub_context2_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|60|60|60|60|60|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_classes.tests b/test/shaping/data/aots/tests/gsub_context2_classes.tests new file mode 100644 index 0000000..2e44007 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_classes.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context2_classes_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+001A,U+001C,U+0018,U+0000,U+0015,U+001B,U+001A,U+0018,U+0000,U+0016,U+001B,U+001A,U+0018:[0|20|66|28|24|0|21|67|26|24|0|22|27|26|24] +../fonts/gsub_context2_classes_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0016,U+001B,U+001A,U+0018,U+0000,U+0018,U+0018,U+001D,U+0016,U+0000,U+0016,U+001B,U+001A,U+0018:[0|22|67|26|24|0|24|24|69|22|0|22|67|26|24] diff --git a/test/shaping/data/aots/tests/gsub_context2_expansion.tests b/test/shaping/data/aots/tests/gsub_context2_expansion.tests new file mode 100644 index 0000000..af0ce71 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_expansion.tests @@ -0,0 +1 @@ +../fonts/gsub_context2_expansion_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000:[0|20|61|62|63|22|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_lookupflag.tests b/test/shaping/data/aots/tests/gsub_context2_lookupflag.tests new file mode 100644 index 0000000..ac41949 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_lookupflag.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context2_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|60|90|61|91|92|62|0] +../fonts/gsub_context2_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20|90|61|91|92|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_multiple_subrules.tests b/test/shaping/data/aots/tests/gsub_context2_multiple_subrules.tests new file mode 100644 index 0000000..75225cd --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_multiple_subrules.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context2_multiple_subrules_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|60|21|22|0|20|61|0] +../fonts/gsub_context2_multiple_subrules_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000,U+0014,U+0015,U+0000:[0|20|61|22|0|20|61|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_next_glyph.tests b/test/shaping/data/aots/tests/gsub_context2_next_glyph.tests new file mode 100644 index 0000000..020d05f --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gsub_context2_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|60|20|60|20|20|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_simple.tests b/test/shaping/data/aots/tests/gsub_context2_simple.tests new file mode 100644 index 0000000..5863605 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_simple.tests @@ -0,0 +1,3 @@ +../fonts/gsub_context2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000:[0|60|61|62|0] +../fonts/gsub_context2_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0000,U+0014,U+0015,U+0000:[0|20|0|20|21|0] +../fonts/gsub_context2_simple_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20|60|20|20|20|0] diff --git a/test/shaping/data/aots/tests/gsub_context2_successive.tests b/test/shaping/data/aots/tests/gsub_context2_successive.tests new file mode 100644 index 0000000..9aeeac7 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context2_successive.tests @@ -0,0 +1 @@ +../fonts/gsub_context2_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|63|0] diff --git a/test/shaping/data/aots/tests/gsub_context3_boundary.tests b/test/shaping/data/aots/tests/gsub_context3_boundary.tests new file mode 100644 index 0000000..8b40afd --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context3_boundary.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context3_boundary_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|20|20|20|20|20|0] +../fonts/gsub_context3_boundary_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|60|60|60|60|60|0] diff --git a/test/shaping/data/aots/tests/gsub_context3_lookupflag.tests b/test/shaping/data/aots/tests/gsub_context3_lookupflag.tests new file mode 100644 index 0000000..03c0647 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context3_lookupflag.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context3_lookupflag_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|60|90|61|91|92|62|0] +../fonts/gsub_context3_lookupflag_f2.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+005A,U+0015,U+005B,U+005C,U+0016,U+0000:[0|20|90|61|91|92|0] diff --git a/test/shaping/data/aots/tests/gsub_context3_next_glyph.tests b/test/shaping/data/aots/tests/gsub_context3_next_glyph.tests new file mode 100644 index 0000000..b28381b --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context3_next_glyph.tests @@ -0,0 +1 @@ +../fonts/gsub_context3_next_glyph_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0014,U+0014,U+0014,U+0014,U+0000:[0|60|20|60|20|20|0] diff --git a/test/shaping/data/aots/tests/gsub_context3_simple.tests b/test/shaping/data/aots/tests/gsub_context3_simple.tests new file mode 100644 index 0000000..ec264ea --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context3_simple.tests @@ -0,0 +1,2 @@ +../fonts/gsub_context3_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0000:[0|60|61|62|0] +../fonts/gsub_context3_simple_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0000,U+0014,U+0015,U+0000,U+0014,U+0015,U+0016,U+0000:[0|20|0|20|21|0|60|61|62|0] diff --git a/test/shaping/data/aots/tests/gsub_context3_successive.tests b/test/shaping/data/aots/tests/gsub_context3_successive.tests new file mode 100644 index 0000000..b987a61 --- /dev/null +++ b/test/shaping/data/aots/tests/gsub_context3_successive.tests @@ -0,0 +1 @@ +../fonts/gsub_context3_successive_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0000,U+0014,U+0015,U+0016,U+0017,U+0000:[0|20|61|63|0] diff --git a/test/shaping/data/aots/tests/lookupflag_ignore_attach.tests b/test/shaping/data/aots/tests/lookupflag_ignore_attach.tests new file mode 100644 index 0000000..55ae538 --- /dev/null +++ b/test/shaping/data/aots/tests/lookupflag_ignore_attach.tests @@ -0,0 +1,5 @@ +#../fonts/lookupflag_ignore_attach_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+000A,U+000B,U+000D,U+001A,U+000A:[10|15|10] +#../fonts/lookupflag_ignore_attach_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+000A,U+000B,U+0015,U+000D,U+0016,U+0017,U+001D,U+001A,U+000A:[10|15|21|22|23|29|10] +#../fonts/lookupflag_ignore_attach_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+000A,U+000B,U+0015,U+000D,U+0016,U+001B,U+001A,U+000A:[10|11|21|13|22|27|26|10] +#../fonts/lookupflag_ignore_attach_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+000A,U+000B,U+001B,U+000D,U+0016,U+0017,U+001A,U+000A:[10|11|27|13|22|23|26|10] +#../fonts/lookupflag_ignore_attach_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+000A,U+000B,U+001B,U+000D,U+000E,U+0017,U+001A,U+000A:[10|11|27|13|14|23|26|10] diff --git a/test/shaping/data/aots/tests/lookupflag_ignore_base.tests b/test/shaping/data/aots/tests/lookupflag_ignore_base.tests new file mode 100644 index 0000000..5f0bfdb --- /dev/null +++ b/test/shaping/data/aots/tests/lookupflag_ignore_base.tests @@ -0,0 +1,2 @@ +../fonts/lookupflag_ignore_base_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0013,U+0014,U+0015:[17|23|21] +../fonts/lookupflag_ignore_base_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+0018,U+0018,U+0013,U+0019,U+0014,U+0015:[17|23|24|24|25|21] diff --git a/test/shaping/data/aots/tests/lookupflag_ignore_combination.tests b/test/shaping/data/aots/tests/lookupflag_ignore_combination.tests new file mode 100644 index 0000000..d34f16a --- /dev/null +++ b/test/shaping/data/aots/tests/lookupflag_ignore_combination.tests @@ -0,0 +1,3 @@ +../fonts/lookupflag_ignore_combination_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001A,U+0013,U+0014,U+0015:[17|23|26|21] +../fonts/lookupflag_ignore_combination_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001A,U+0013,U+0018,U+001E,U+001F,U+0014,U+0015:[17|23|26|24|30|31|21] +../fonts/lookupflag_ignore_combination_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001A,U+0013,U+0018,U+001E,U+0020,U+0014,U+0015:[17|18|26|19|24|30|32|20|21] diff --git a/test/shaping/data/aots/tests/lookupflag_ignore_ligatures.tests b/test/shaping/data/aots/tests/lookupflag_ignore_ligatures.tests new file mode 100644 index 0000000..feb31d8 --- /dev/null +++ b/test/shaping/data/aots/tests/lookupflag_ignore_ligatures.tests @@ -0,0 +1,3 @@ +../fonts/lookupflag_ignore_ligatures_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001A,U+001B,U+0013,U+001B,U+0014,U+0015:[17|23|26|27|27|21] +../fonts/lookupflag_ignore_ligatures_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001A,U+0018,U+0013,U+001B,U+0014,U+0015:[17|18|26|24|19|27|20|21] +../fonts/lookupflag_ignore_ligatures_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001A,U+002A,U+0013,U+001B,U+0014,U+0015:[17|18|26|42|19|27|20|21] diff --git a/test/shaping/data/aots/tests/lookupflag_ignore_marks.tests b/test/shaping/data/aots/tests/lookupflag_ignore_marks.tests new file mode 100644 index 0000000..9626599 --- /dev/null +++ b/test/shaping/data/aots/tests/lookupflag_ignore_marks.tests @@ -0,0 +1 @@ +../fonts/lookupflag_ignore_marks_f1.otf:--features="test" --no-clusters --no-glyph-names --no-positions:U+0011,U+0012,U+001C,U+001D,U+0013,U+001D,U+0014,U+0015:[17|23|28|29|29|21] diff --git a/test/shaping/data/in-house/Makefile.in b/test/shaping/data/in-house/Makefile.in index b9e702a..590807b 100644 --- a/test/shaping/data/in-house/Makefile.in +++ b/test/shaping/data/in-house/Makefile.in @@ -89,29 +89,34 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -TESTS = tests/arabic-fallback-shaping.tests \ +TESTS = tests/aat-trak.tests tests/aat-morx.tests \ + tests/arabic-fallback-shaping.tests \ tests/arabic-feature-order.tests \ - tests/arabic-like-joining.tests tests/arabic-mark-order.tests \ - tests/arabic-stch.tests tests/automatic-fractions.tests \ - tests/cluster.tests tests/color-fonts.tests \ + tests/arabic-like-joining.tests tests/arabic-mark-attach.tests \ + tests/arabic-mark-order.tests tests/arabic-stch.tests \ + tests/automatic-fractions.tests tests/cluster.tests \ + tests/collections.tests tests/color-fonts.tests \ tests/context-matching.tests tests/cursive-positioning.tests \ - tests/default-ignorables.tests tests/emoji-flag-tags.tests \ - tests/fallback-positioning.tests tests/fuzzed.tests \ - tests/hangul-jamo.tests tests/hyphens.tests \ - tests/indic-consonant-with-stacker.tests \ + tests/default-ignorables.tests tests/emoji.tests \ + tests/fallback-positioning.tests tests/hangul-jamo.tests \ + tests/hyphens.tests tests/indic-consonant-with-stacker.tests \ tests/indic-decompose.tests tests/indic-init.tests \ tests/indic-joiner-candrabindu.tests tests/indic-joiners.tests \ tests/indic-old-spec.tests tests/indic-pref-blocking.tests \ tests/indic-script-extensions.tests \ tests/indic-special-cases.tests tests/indic-syllable.tests \ - tests/language-tags.tests tests/ligature-id.tests \ + tests/indic-vowel-letter-spoofing.tests \ + tests/kern-format2.tests tests/khmer-mark-order.tests \ + tests/khmer-misc.tests tests/language-tags.tests \ + tests/ligature-id.tests tests/macos.tests \ tests/mark-attachment.tests tests/mark-filtering-sets.tests \ tests/mongolian-variation-selector.tests \ - tests/myanmar-syllable.tests tests/none-directional.tests \ + tests/myanmar-syllable.tests tests/myanmar-zawgyi.tests \ + tests/none-directional.tests tests/rand.tests \ tests/spaces.tests tests/simple.tests tests/sinhala.tests \ tests/tibetan-contractions-1.tests \ tests/tibetan-contractions-2.tests tests/tibetan-vowels.tests \ - tests/use.tests tests/use-marchen.tests \ + tests/use.tests tests/use-indic3.tests tests/use-marchen.tests \ tests/use-syllable.tests tests/variations-rvrn.tests \ tests/vertical.tests tests/zero-width-marks.tests \ $(am__EXEEXT_1) @@ -122,8 +127,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -473,6 +477,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ diff --git a/test/shaping/data/in-house/Makefile.sources b/test/shaping/data/in-house/Makefile.sources index ef16fae..0e9a3a2 100644 --- a/test/shaping/data/in-house/Makefile.sources +++ b/test/shaping/data/in-house/Makefile.sources @@ -1,18 +1,21 @@ TESTS = \ + tests/aat-trak.tests \ + tests/aat-morx.tests \ tests/arabic-fallback-shaping.tests \ tests/arabic-feature-order.tests \ tests/arabic-like-joining.tests \ + tests/arabic-mark-attach.tests \ tests/arabic-mark-order.tests \ tests/arabic-stch.tests \ tests/automatic-fractions.tests \ tests/cluster.tests \ + tests/collections.tests \ tests/color-fonts.tests \ tests/context-matching.tests \ tests/cursive-positioning.tests \ tests/default-ignorables.tests \ - tests/emoji-flag-tags.tests \ + tests/emoji.tests \ tests/fallback-positioning.tests \ - tests/fuzzed.tests \ tests/hangul-jamo.tests \ tests/hyphens.tests \ tests/indic-consonant-with-stacker.tests \ @@ -25,13 +28,20 @@ TESTS = \ tests/indic-script-extensions.tests \ tests/indic-special-cases.tests \ tests/indic-syllable.tests \ + tests/indic-vowel-letter-spoofing.tests \ + tests/kern-format2.tests \ + tests/khmer-mark-order.tests \ + tests/khmer-misc.tests \ tests/language-tags.tests \ tests/ligature-id.tests \ + tests/macos.tests \ tests/mark-attachment.tests \ tests/mark-filtering-sets.tests \ tests/mongolian-variation-selector.tests \ tests/myanmar-syllable.tests \ + tests/myanmar-zawgyi.tests \ tests/none-directional.tests \ + tests/rand.tests \ tests/spaces.tests \ tests/simple.tests \ tests/sinhala.tests \ @@ -39,6 +49,7 @@ TESTS = \ tests/tibetan-contractions-2.tests \ tests/tibetan-vowels.tests \ tests/use.tests \ + tests/use-indic3.tests \ tests/use-marchen.tests \ tests/use-syllable.tests \ tests/variations-rvrn.tests \ diff --git a/test/shaping/data/in-house/fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf b/test/shaping/data/in-house/fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf Binary files differnew file mode 100644 index 0000000..ee540f3 --- /dev/null +++ b/test/shaping/data/in-house/fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf diff --git a/test/shaping/data/in-house/fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf b/test/shaping/data/in-house/fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf Binary files differnew file mode 100644 index 0000000..383aee6 --- /dev/null +++ b/test/shaping/data/in-house/fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf diff --git a/test/shaping/data/in-house/fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf b/test/shaping/data/in-house/fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf Binary files differnew file mode 100644 index 0000000..13c4d8a --- /dev/null +++ b/test/shaping/data/in-house/fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf diff --git a/test/shaping/data/in-house/fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf b/test/shaping/data/in-house/fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf Binary files differnew file mode 100644 index 0000000..a1fef49 --- /dev/null +++ b/test/shaping/data/in-house/fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf diff --git a/test/shaping/data/in-house/fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf b/test/shaping/data/in-house/fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf Binary files differnew file mode 100644 index 0000000..ef94d3f --- /dev/null +++ b/test/shaping/data/in-house/fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf diff --git a/test/shaping/data/in-house/fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf b/test/shaping/data/in-house/fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf Binary files differnew file mode 100644 index 0000000..3dd30ed --- /dev/null +++ b/test/shaping/data/in-house/fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf diff --git a/test/shaping/data/in-house/fonts/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf b/test/shaping/data/in-house/fonts/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf Binary files differnew file mode 100644 index 0000000..cebd375 --- /dev/null +++ b/test/shaping/data/in-house/fonts/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf diff --git a/test/shaping/data/in-house/fonts/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf b/test/shaping/data/in-house/fonts/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf Binary files differnew file mode 100644 index 0000000..63c0c71 --- /dev/null +++ b/test/shaping/data/in-house/fonts/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf diff --git a/test/shaping/data/in-house/fonts/46669c8860cbfea13562a6ca0d83130ee571137b.ttf b/test/shaping/data/in-house/fonts/46669c8860cbfea13562a6ca0d83130ee571137b.ttf Binary files differnew file mode 100644 index 0000000..7d488a3 --- /dev/null +++ b/test/shaping/data/in-house/fonts/46669c8860cbfea13562a6ca0d83130ee571137b.ttf diff --git a/test/shaping/data/in-house/fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf b/test/shaping/data/in-house/fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf Binary files differnew file mode 100644 index 0000000..274fc08 --- /dev/null +++ b/test/shaping/data/in-house/fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf diff --git a/test/shaping/data/in-house/fonts/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf b/test/shaping/data/in-house/fonts/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf Binary files differnew file mode 100644 index 0000000..03166b0 --- /dev/null +++ b/test/shaping/data/in-house/fonts/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf diff --git a/test/shaping/data/in-house/fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf b/test/shaping/data/in-house/fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf Binary files differnew file mode 100644 index 0000000..14de6a1 --- /dev/null +++ b/test/shaping/data/in-house/fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf diff --git a/test/shaping/data/in-house/fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf b/test/shaping/data/in-house/fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf Binary files differnew file mode 100644 index 0000000..588ce3b --- /dev/null +++ b/test/shaping/data/in-house/fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf diff --git a/test/shaping/data/in-house/fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf b/test/shaping/data/in-house/fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf Binary files differnew file mode 100644 index 0000000..a6f1c9d --- /dev/null +++ b/test/shaping/data/in-house/fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf diff --git a/test/shaping/data/in-house/fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf b/test/shaping/data/in-house/fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf Binary files differnew file mode 100644 index 0000000..1328e13 --- /dev/null +++ b/test/shaping/data/in-house/fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf diff --git a/test/shaping/data/in-house/fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf b/test/shaping/data/in-house/fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf Binary files differnew file mode 100644 index 0000000..c3e4167 --- /dev/null +++ b/test/shaping/data/in-house/fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf diff --git a/test/shaping/data/in-house/fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf b/test/shaping/data/in-house/fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf Binary files differnew file mode 100644 index 0000000..ffdddf3 --- /dev/null +++ b/test/shaping/data/in-house/fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf diff --git a/test/shaping/data/in-house/fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf b/test/shaping/data/in-house/fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf Binary files differnew file mode 100644 index 0000000..e8512bb --- /dev/null +++ b/test/shaping/data/in-house/fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf diff --git a/test/shaping/data/in-house/fonts/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf b/test/shaping/data/in-house/fonts/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf Binary files differnew file mode 100644 index 0000000..5a47a39 --- /dev/null +++ b/test/shaping/data/in-house/fonts/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf diff --git a/test/shaping/data/in-house/fonts/881642af1667ae30a54e58de8be904566d00508f.ttf b/test/shaping/data/in-house/fonts/881642af1667ae30a54e58de8be904566d00508f.ttf Binary files differnew file mode 100644 index 0000000..a749cdf --- /dev/null +++ b/test/shaping/data/in-house/fonts/881642af1667ae30a54e58de8be904566d00508f.ttf diff --git a/test/shaping/data/in-house/fonts/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf b/test/shaping/data/in-house/fonts/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf Binary files differnew file mode 100644 index 0000000..f1b84a4 --- /dev/null +++ b/test/shaping/data/in-house/fonts/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf diff --git a/test/shaping/data/in-house/fonts/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf b/test/shaping/data/in-house/fonts/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf Binary files differnew file mode 100644 index 0000000..1841cf3 --- /dev/null +++ b/test/shaping/data/in-house/fonts/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf diff --git a/test/shaping/data/in-house/fonts/DFONT.dfont b/test/shaping/data/in-house/fonts/DFONT.dfont Binary files differnew file mode 100644 index 0000000..a6ea700 --- /dev/null +++ b/test/shaping/data/in-house/fonts/DFONT.dfont diff --git a/test/shaping/data/in-house/fonts/MORXTwentyeight.ttf b/test/shaping/data/in-house/fonts/MORXTwentyeight.ttf Binary files differnew file mode 100644 index 0000000..edabb43 --- /dev/null +++ b/test/shaping/data/in-house/fonts/MORXTwentyeight.ttf diff --git a/test/shaping/data/in-house/fonts/TRAK.ttf b/test/shaping/data/in-house/fonts/TRAK.ttf Binary files differnew file mode 100644 index 0000000..07ae3af --- /dev/null +++ b/test/shaping/data/in-house/fonts/TRAK.ttf diff --git a/test/shaping/data/in-house/fonts/TTC.ttc b/test/shaping/data/in-house/fonts/TTC.ttc Binary files differnew file mode 100644 index 0000000..a21fe89 --- /dev/null +++ b/test/shaping/data/in-house/fonts/TTC.ttc diff --git a/test/shaping/data/in-house/fonts/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf b/test/shaping/data/in-house/fonts/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf Binary files differnew file mode 100644 index 0000000..a64ecea --- /dev/null +++ b/test/shaping/data/in-house/fonts/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf diff --git a/test/shaping/data/in-house/fonts/af85624080af5627fb050f570d148a62f04fda74.ttf b/test/shaping/data/in-house/fonts/af85624080af5627fb050f570d148a62f04fda74.ttf Binary files differnew file mode 100644 index 0000000..9cd40d4 --- /dev/null +++ b/test/shaping/data/in-house/fonts/af85624080af5627fb050f570d148a62f04fda74.ttf diff --git a/test/shaping/data/in-house/fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf b/test/shaping/data/in-house/fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf Binary files differnew file mode 100644 index 0000000..a9dc202 --- /dev/null +++ b/test/shaping/data/in-house/fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf diff --git a/test/shaping/data/in-house/fonts/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf b/test/shaping/data/in-house/fonts/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf Binary files differnew file mode 100644 index 0000000..ca23ef8 --- /dev/null +++ b/test/shaping/data/in-house/fonts/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf diff --git a/test/shaping/data/in-house/fonts/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf b/test/shaping/data/in-house/fonts/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf Binary files differdeleted file mode 100644 index fba200f..0000000 --- a/test/shaping/data/in-house/fonts/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf +++ /dev/null diff --git a/test/shaping/data/in-house/fonts/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf b/test/shaping/data/in-house/fonts/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf Binary files differnew file mode 100644 index 0000000..dbd928a --- /dev/null +++ b/test/shaping/data/in-house/fonts/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf diff --git a/test/shaping/data/in-house/fonts/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf b/test/shaping/data/in-house/fonts/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf Binary files differnew file mode 100644 index 0000000..4d3e11d --- /dev/null +++ b/test/shaping/data/in-house/fonts/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf diff --git a/test/shaping/data/in-house/fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf b/test/shaping/data/in-house/fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf Binary files differnew file mode 100644 index 0000000..b1605c4 --- /dev/null +++ b/test/shaping/data/in-house/fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf diff --git a/test/shaping/data/in-house/tests/aat-morx.tests b/test/shaping/data/in-house/tests/aat-morx.tests new file mode 100644 index 0000000..27f5bcc --- /dev/null +++ b/test/shaping/data/in-house/tests/aat-morx.tests @@ -0,0 +1 @@ +../fonts/MORXTwentyeight.ttf::U+0041,U+0078,U+0045,U+0079,U+0044,U+0079,U+0079:[A_E_D=0+1394|x=0+529|y=0+510|y=5+510|y=6+510] diff --git a/test/shaping/data/in-house/tests/aat-trak.tests b/test/shaping/data/in-house/tests/aat-trak.tests new file mode 100644 index 0000000..4bbe729 --- /dev/null +++ b/test/shaping/data/in-house/tests/aat-trak.tests @@ -0,0 +1,11 @@ +../fonts/TRAK.ttf::U+0041,U+0042,U+0043:[A.alt=0+1000|B=1+1000|C.alt=2+1000] +../fonts/TRAK.ttf:--font-ptem=.5:U+0041,U+0042,U+0043:[A.alt=0@100,0+1200|B=1@100,0+1200|C.alt=2@100,0+1200] +../fonts/TRAK.ttf:--font-ptem=1:U+0041,U+0042,U+0043:[A.alt=0@100,0+1200|B=1@100,0+1200|C.alt=2@100,0+1200] +../fonts/TRAK.ttf:--font-ptem=2:U+0041,U+0042,U+0043:[A.alt=0@93,0+1187|B=1@93,0+1187|C.alt=2@93,0+1187] +../fonts/TRAK.ttf:--font-ptem=9:U+0041,U+0042,U+0043:[A.alt=0+1000|B=1+1000|C.alt=2+1000] +../fonts/TRAK.ttf:--font-ptem=24:U+0041,U+0042,U+0043:[A.alt=0@-12,0+976|B=1@-12,0+976|C.alt=2@-12,0+976] +../fonts/TRAK.ttf:--font-ptem=72:U+0041,U+0042,U+0043:[A.alt=0@-50,0+900|B=1@-50,0+900|C.alt=2@-50,0+900] +../fonts/TRAK.ttf:--font-ptem=144:U+0041,U+0042,U+0043:[A.alt=0@-107,0+786|B=1@-107,0+786|C.alt=2@-107,0+786] +../fonts/TRAK.ttf:--font-ptem=144:U+0041,U+0042,U+0043:[A.alt=0@-107,0+786|B=1@-107,0+786|C.alt=2@-107,0+786] +../fonts/TRAK.ttf:--font-ptem=144 --features=-trak:U+0041,U+0042,U+0043:[A.alt=0+1000|B=1+1000|C.alt=2+1000] +../fonts/TRAK.ttf:--font-ptem=144 --features=-trak[1;3]:U+0041,U+0042,U+0043,U+0041,U+0042,U+0043:[A.alt=0@-107,0+786|B=1+1000|C.alt=2+1000|A.alt=3@-107,0+786|B=4@-107,0+786|C.alt=5@-107,0+786] diff --git a/test/shaping/data/in-house/tests/arabic-fallback-shaping.tests b/test/shaping/data/in-house/tests/arabic-fallback-shaping.tests index 274829c..8b7ced0 100644 --- a/test/shaping/data/in-house/tests/arabic-fallback-shaping.tests +++ b/test/shaping/data/in-house/tests/arabic-fallback-shaping.tests @@ -1 +1 @@ -../fonts/df768b9c257e0c9c35786c47cae15c46571d56be.ttf::U+0633,U+064F,U+0644,U+064E,U+0651,U+0627,U+0651,U+0650,U+0645,U+062A,U+06CC:[uni06CC.fina=10+1655|uni062A.medi=9+868|uni0645.init=8+1098|uni0650=2@221,0+0|uni0651=2@260,736+0|uni064E=2@935,1259+0|uni0651=2@974,736+0|uni06440627.fina=2+1470|uni064F=0@558,-10+0|uni0633.init=0+1585] +../fonts/df768b9c257e0c9c35786c47cae15c46571d56be.ttf::U+0633,U+064F,U+0644,U+064E,U+0651,U+0627,U+0651,U+0650,U+0645,U+062A,U+06CC:[uni06CC.fina=10+1655|uni062A.medi=9+868|uni0645.init=8+1098|uni0650=2@148,0+0|uni0651=2@187,736+0|uni064E=2@883,1259+0|uni0651=2@922,736+0|uni06440627.fina=2+1470|uni064F=0@629,-10+0|uni0633.init=0+1585] diff --git a/test/shaping/data/in-house/tests/arabic-mark-attach.tests b/test/shaping/data/in-house/tests/arabic-mark-attach.tests new file mode 100644 index 0000000..a577e51 --- /dev/null +++ b/test/shaping/data/in-house/tests/arabic-mark-attach.tests @@ -0,0 +1 @@ +../fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf::U+064A,U+0633,U+06E1,U+200D,U+0654,U+064E,U+0644:[afii57444.zz04=6+1091|afii57454=1@75,925+0|uni0654=1+0|space=1+0|uni06E1=1@950,1115+0|afii57427.zz03_calt=1+1847|afii57450.zz21=0+345] diff --git a/test/shaping/data/in-house/tests/cluster.tests b/test/shaping/data/in-house/tests/cluster.tests index fd0a0fe..928843f 100644 --- a/test/shaping/data/in-house/tests/cluster.tests +++ b/test/shaping/data/in-house/tests/cluster.tests @@ -1,2 +1,2 @@ -../fonts/4fac3929fc3332834e93673780ec0fe94342d193.ttf:--cluster-level=2:U+0078,U+030A,U+0058,U+030A:[gid2=0+1083|gid3=1@-1131,-8+0|gid1=2+1200|gid3=3@-1190,349+0] +../fonts/4fac3929fc3332834e93673780ec0fe94342d193.ttf:--cluster-level=2:U+0078,U+030A,U+0058,U+030A:[gid2=0+1083|gid3=1@-1132,-8+0|gid1=2+1200|gid3=3@-1190,349+0] ../fonts/43ef465752be9af900745f72fe29cb853a1401a5.ttf:--cluster-level=1:U+05D4,U+05B7,U+05E9,U+05BC,U+05C1,U+05B8,U+05DE,U+05B4,U+05DD:[uni05DD=8+1359|uni05B4=7@111,0+0|uni05DE=6+1391|uni05B8=5+0|uni05BC=3+0|uni05C1=3+0|uni05E9=2+1451|uni05B7=1@28,0+0|uni05D4=0+1338] diff --git a/test/shaping/data/in-house/tests/collections.tests b/test/shaping/data/in-house/tests/collections.tests new file mode 100644 index 0000000..07dac9d --- /dev/null +++ b/test/shaping/data/in-house/tests/collections.tests @@ -0,0 +1,6 @@ +../fonts/DFONT.dfont:--face-index=0 --font-funcs=ot:U+2026,U+0020,U+002E:[ellipsis=0+723|space=1+250|period=2+241] +../fonts/DFONT.dfont:--face-index=1 --font-funcs=ot:U+2026,U+0020,U+002E:[gid0=0+1000|gid0=1+1000|gid0=2+1000] +../fonts/DFONT.dfont:--face-index=2 --font-funcs=ot:U+2026,U+0020,U+002E:[gid0=0+1000|gid0=1+1000|gid0=2+1000] +../fonts/TTC.ttc:--face-index=0 --font-funcs=ot:U+2026,U+0020,U+002E:[ellipsis=0+723|space=1+250|period=2+241] +../fonts/TTC.ttc:--face-index=1 --font-funcs=ot:U+2026,U+0020,U+002E:[ellipsis=0+723|space=1+250|period=2+241] +../fonts/TTC.ttc:--face-index=2 --font-funcs=ot:U+2026,U+0020,U+002E:[gid0=0+1000|gid0=1+1000|gid0=2+1000] diff --git a/test/shaping/data/in-house/tests/color-fonts.tests b/test/shaping/data/in-house/tests/color-fonts.tests index e7311bc..b325d78 100644 --- a/test/shaping/data/in-house/tests/color-fonts.tests +++ b/test/shaping/data/in-house/tests/color-fonts.tests @@ -1 +1 @@ -../fonts/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf:--font-funcs=ot --show-extents:U+1F42F:[gid1=0+2963<0,2178,2963,-2788>] +../fonts/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf:--font-funcs=ot --show-extents:U+1F42F:[gid1=0+2963<0,2179,2963,-2789>] diff --git a/test/shaping/data/in-house/tests/cursive-positioning.tests b/test/shaping/data/in-house/tests/cursive-positioning.tests index 74d283d..15a1ffc 100644 --- a/test/shaping/data/in-house/tests/cursive-positioning.tests +++ b/test/shaping/data/in-house/tests/cursive-positioning.tests @@ -2,3 +2,4 @@ ../fonts/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf::U+0643,U+0645,U+0645,U+062B,U+0644:[gid8=4+738|gid5=3@441,1197+0|gid6=3@0,432+405|gid9=2@0,477+500|gid9=1@0,577+452|gid10=0@20,1177+207] #../fonts/706c5d7b625f207bc0d874c67237aad6f1e9cd6f.ttf::U+0B1F,U+0B4D,U+0B1A,U+0B4D,U+0B1A:[ttaorya=0+1307|casubscriptorya=0@-242,104+-231|casubscriptnarroworya=0@20,104+507] ../fonts/07f054357ff8638bac3711b422a1e31180bba863.ttf:--font-funcs=ot --no-glyph-names:U+0606,U+06E1:[2=0@40,502+0|1=0+1000] +../fonts/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf::U+16F0A,U+16F57,U+16F8F:[u16F0A=0+422|u16F57=0@0,209+338|u16F8F=0+0] diff --git a/test/shaping/data/in-house/tests/emoji-flag-tags.tests b/test/shaping/data/in-house/tests/emoji-flag-tags.tests deleted file mode 100644 index 189de55..0000000 --- a/test/shaping/data/in-house/tests/emoji-flag-tags.tests +++ /dev/null @@ -1,2 +0,0 @@ -../fonts/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf::U+1F3F4,U+E0055,U+E0053,U+E0064,U+E0065,U+E007F:[u1F3F4=0+2126|space=1+0|space=2+0|space=3+0|space=4+0|space=5+0] -../fonts/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf::U+1F3F4,U+E0064,U+E0065,U+E007F:[de=0+3200] diff --git a/test/shaping/data/in-house/tests/emoji.tests b/test/shaping/data/in-house/tests/emoji.tests new file mode 100644 index 0000000..7ee01f3 --- /dev/null +++ b/test/shaping/data/in-house/tests/emoji.tests @@ -0,0 +1,5 @@ +../fonts/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf::U+1F3F4,U+E0055,U+E0053,U+E0064,U+E0065,U+E007F:[u1F3F4=0+2126|space=0+0|space=0+0|space=0+0|space=0+0|space=0+0] +../fonts/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf::U+1F3F4,U+E0064,U+E0065,U+E007F:[de=0+3200] +../fonts/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf:--font-funcs=ot --direction=l:U+1F481,U+1F3FB,U+200D,U+2642,U+FE0F:[gid7=0+2550] +../fonts/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf:--font-funcs=ot --direction=r:U+1F481,U+1F3FB,U+200D,U+2642,U+FE0F:[gid7=0+2550] +../fonts/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf::U+1F3F4,U+E0067,U+E0062,U+E0077,U+E006C,U+E0073,U+E007F:[.notdef=0+1229|space=0+0|space=0+0|space=0+0|space=0+0|space=0+0|space=0+0] diff --git a/test/shaping/data/in-house/tests/fallback-positioning.tests b/test/shaping/data/in-house/tests/fallback-positioning.tests index 5047d84..0ffee50 100644 --- a/test/shaping/data/in-house/tests/fallback-positioning.tests +++ b/test/shaping/data/in-house/tests/fallback-positioning.tests @@ -1,2 +1,2 @@ -../fonts/8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf::U+0078,U+0301,U+0058,U+0301:[x=0+1030|acutecomb=0@-21,-27+0|X=2+1295|acutecomb=2@-147,320+0] -../fonts/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf::U+0061,U+035C,U+0062:[uni0061=0+512|uni035C=0@-64,-128+0|uni0062=2+512] +../fonts/8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf::U+0078,U+0301,U+0058,U+0301:[x=0+1030|acutecomb=0@-19,-27+0|X=2+1295|acutecomb=2@-151,320+0] +../fonts/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf::U+0061,U+035C,U+0062:[uni0061=0+512|uni035C=0@0,-128+0|uni0062=2+512] diff --git a/test/shaping/data/in-house/tests/fuzzed.tests b/test/shaping/data/in-house/tests/fuzzed.tests deleted file mode 100644 index 43a1933..0000000 --- a/test/shaping/data/in-house/tests/fuzzed.tests +++ /dev/null @@ -1,23 +0,0 @@ -../fonts/1a6f1687b7a221f9f2c834b0b360d3c8463b6daf.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/5a5daf5eb5a4db77a2baa3ad9c7a6ed6e0655fa8.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/0509e80afb379d16560e9e47bdd7d888bebdebc6.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/641bd9db850193064d17575053ae2bf8ec149ddc.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/375d6ae32a3cbe52fbf81a4e5777e3377675d5a3.ttf:--font-funcs=ot:U+0041:[gid0=0+4352] -../fonts/8240789f6d12d4cfc4b5e8e6f246c3701bcf861f.ttf:--font-funcs=ot:U+0041:[gid0=0+1024] -../fonts/b9e2aaa0d75fcef6971ec3a96d806ba4a6b31fe2.ttf:--font-funcs=ot:U+0041:[gid0=0+1000|gid1=0+1000|gid8=0+1000|gid3=0+1000|gid0=0+1000|gid1=0+1000|gid1=0+1000|gid8=0+1000|gid3=0+1000|gid0=0+1000|gid1=0+1000|gid8=0+1000|gid3=0+1000|gid0=0+1000|gid1=0+1000|gid1=0+1000] -../fonts/43979b90b2dd929723cf4fe1715990bcb9c9a56b.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/3511ff5c1647150595846ac414c595cccac34f18.ttf:--font-funcs=ot --no-positions --no-clusters --no-glyph-names:U+0041:[0|512|15104|11004|3408|18244|17872|17961|0|992|15616|0|14151|20559|20992|5440|256|0|10|8960|256|1024|1490|0|768|4096|256|2216|0|256|256|0|768|10752|11004|3408|18244|17734|53248|256|0|512|14848|10793|57344|768|18227|20285|20480|0|256|0|810|0|11004|3408|18244|17734|53289|57344|768|15667|71|0|20559|21248|256|0|2816|2776|0|51516|0|32|26209|28005|65249|29690|0|51548|0|2454|28783|29556|1291|3458|80|0|2804|210|28786|25968|45763|50546|0|59136|0|38144|256|0|2560|30208|52224|580|17996|21504|6734|108|116|24846|1024|0|255|65280|256|0|8704|1345|23109|8192|10823|21076|8192|12877|20300|8192|6738|20301|8192|16980|21067|8251|18944|255|65280|15360|256|255|65280|256|768|255|65280|256|768|255|65280|256|1024|12|65280|256|1280|255|65280|256|1536|1899|25970|110|11264|27502|29285|12907|25974|28160|14443|25970|28288|3|118|18259|21826|45716|46369|0|0|1|16|17|256|4|16|18244|17734|28|12|0|284|0|28|18256|20307|45114|47616|226|10296|0|57927|1|0|0|21248|5440|256|0|10|768|256|1024|512|0|297|16|24833|28774|10794|2304|29|32|42|64515|42|42|64525|20551|17477|18128|10720|3|61|3408|18244|17734|53289|57344|768|15616|512|55|10576|20307|0|255|56063|53504|42|42|64525|12288|18176|80|20307|1|0|62] -../fonts/fab39d60d758cb586db5a504f218442cd1395725.ttf:--font-funcs=ot:U+0041,U+0041:[gid0=0+1000|gid0=1+1000] -../fonts/205edd09bd3d141cc9580f650109556cc28b22cb.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/217a934cfe15c548b572c203dceb2befdf026462.ttf:--font-funcs=ot:U+0061,U+0061,U+0061:[] -../fonts/558661aa659912f4d30ecd27bd09835171a8e2b0.ttf:--font-funcs=ot:U+FFFD,U+E0100,U+FFFD,U+E0010:[] -../fonts/a34a9191d9376bda419836effeef7e75c1386016.ttf:--font-funcs=ot:U+0041:[] -../fonts/a69118c2c2ada48ff803d9149daa54c9ebdae30e.ttf:--font-funcs=ot:U+0041:[gid0=0+1229] -../fonts/b6acef662e0beb8d5fcf5b61c6b0ca69537b7402.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/e88c339237f52d21e01c55f01b9c1b4cc14a0467.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/243798dd281c1c77c065958e1ff467420faa9bde.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/dd9f0c7c7c36f75a18be0cab1cddf8f3ab0f366b.ttf:--font-funcs=ot --no-positions --no-clusters --no-glyph-names:U+0041:[0|0|2|0|0|2|0|0|2|0|0|2|0|0|2|0|0|2|0|0|0|2|0|0|0|2|0|0|2|0|0|2|0|0|2|0|0|2|0|0|0|2|0|0|2|0|0|2|0|0|2|0] -../fonts/ef2511f215aa3ca847cbfffbf861793b42170875.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/9d8a94a67932a3ab75a596fc8b5c6d0392ca9e49.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/bbf4a308c402f0678c3e82844892a4da2ebe598f.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] -../fonts/233c1e252e737ca79e03a9fd56b71aaa4a230f2b.ttf:--font-funcs=ot:U+0041:[gid0=0+1000] diff --git a/test/shaping/data/in-house/tests/indic-joiner-candrabindu.tests b/test/shaping/data/in-house/tests/indic-joiner-candrabindu.tests index 87b3603..6b75137 100644 --- a/test/shaping/data/in-house/tests/indic-joiner-candrabindu.tests +++ b/test/shaping/data/in-house/tests/indic-joiner-candrabindu.tests @@ -1,2 +1,2 @@ ../fonts/5028afb650b1bb718ed2131e872fbcce57828fff.ttf::U+0B13,U+200D,U+0B01:[omorya=0+1450] -../fonts/5028afb650b1bb718ed2131e872fbcce57828fff.ttf::U+0B13,U+200C,U+0B01:[oorya=0+1309|space=0+0|candrabinduorya=0+0] +../fonts/5028afb650b1bb718ed2131e872fbcce57828fff.ttf::U+0B13,U+200C,U+0B01:[oorya=0+1309|space=1+0|candrabinduorya=1+0] diff --git a/test/shaping/data/in-house/tests/indic-joiners.tests b/test/shaping/data/in-house/tests/indic-joiners.tests index 57107d5..80e392c 100644 --- a/test/shaping/data/in-house/tests/indic-joiners.tests +++ b/test/shaping/data/in-house/tests/indic-joiners.tests @@ -1,2 +1,6 @@ -../fonts/f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf::U+179A,U+1784,U+17D2,U+179F,U+200C,U+17CA,U+17B8,U+0020:[uni179a=0+775|uni1784=1+1550|uni179f.sub=1+775|space=1+0|uni17ca=1+0|uni17b8=1@0,300+0|space=7+600] +../fonts/f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf::U+179A,U+1784,U+17D2,U+179F,U+200C,U+17CA,U+17B8,U+0020:[uni179a=0+775|uni1784=1+1550|uni179f.sub=1+775|space=4+0|uni17ca=4+0|uni17b8=4@0,300+0|space=7+600] ../fonts/f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf::U+179A,U+1784,U+17D2,U+179F,U+17CA,U+17B8:[uni179a=0+775|uni1784=1+1550|uni179f.sub=1+775|uni17bb=1@-75,-700+0|uni17b8=1+0] +../fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf:--font-funcs=ft:U+091F,U+094D,U+200C,U+092F,U+093F:[uni091F=0+876|uni094D=0@4,0+0|space=2+0|uni093F.750=3+397|uni092F=3+924] +../fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf:--font-funcs=ft:U+091F,U+094D,U+200D,U+092F,U+093F:[uni093F=0+398|uni091F=0+876|uni094D=0@4,0+0|space=0+0|uni092F=0+924] +../fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf:--font-funcs=ft:U+091F,U+094D,U+200D,U+091F,U+094D,U+200C,U+091F,U+094D,U+200D,U+092F,U+093F:[uni091F=0+876|uni094D=0@4,0+0|space=0+0|uni091F=3+876|uni094D=3@4,0+0|space=5+0|uni093F=6+398|uni091F=6+876|uni094D=6@4,0+0|space=6+0|uni092F=6+924] +../fonts/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf:--font-funcs=ft:U+091F,U+094D,U+200D,U+091F,U+094D,U+200D,U+091F,U+094D,U+200D,U+092F,U+093F:[uni093F=0+398|uni091F=0+876|uni094D=0@4,0+0|space=0+0|uni091F=0+876|uni094D=0@4,0+0|space=0+0|uni091F=0+876|uni094D=0@4,0+0|space=0+0|uni092F=0+924] diff --git a/test/shaping/data/in-house/tests/indic-old-spec.tests b/test/shaping/data/in-house/tests/indic-old-spec.tests index cd56319..eb967ad 100644 --- a/test/shaping/data/in-house/tests/indic-old-spec.tests +++ b/test/shaping/data/in-house/tests/indic-old-spec.tests @@ -1,2 +1,4 @@ ../fonts/57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf::U+0C9A,U+0CCD,U+0C9A,U+0CCD:[U0C9A_U0CCD.haln=0+1066|U0C9A_0CCD.blwf=0+0] ../fonts/270b89df543a7e48e206a2d830c0e10e5265c630.ttf::U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D:[glyph201=0+1183|U0D4D=0+0] +../fonts/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf::U+091F,U+094D,U+0930,U+094D,U+0020:[Tra=0+550|virAma=0@-73,-110+0|space=4+500] +../fonts/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf::U+091F,U+094D,U+0930,U+0942:[Tra=0+550|UT=0@42,-150+0] diff --git a/test/shaping/data/in-house/tests/indic-vowel-letter-spoofing.tests b/test/shaping/data/in-house/tests/indic-vowel-letter-spoofing.tests new file mode 100644 index 0000000..f8305a3 --- /dev/null +++ b/test/shaping/data/in-house/tests/indic-vowel-letter-spoofing.tests @@ -0,0 +1,53 @@ +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0904,U+0020,U+0905,U+0946:[ashortdeva=0+764|space=1+260|adeva=2+764|uni25CC=2+510|eshortvowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0906,U+0020,U+0905,U+093E:[aadeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|aavowelsigndeva=2+259] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0908,U+0020,U+0930,U+094D,U+0907:[iideva=0+491|space=1+260|uni25CC=2+510|rephdeva=2+0|ideva=2+491] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+090A,U+0020,U+0909,U+0941:[uudeva=0+765|space=1+260|udeva=2+548|uni25CC=2+510|uvowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+090D,U+0020,U+090F,U+0945:[ecandradeva=0+553|space=1+260|edeva=2+553|uni25CC=2+510|ecandravowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+090E,U+0020,U+090F,U+0946:[eshortdeva=0+553|space=1+260|edeva=2+553|uni25CC=2+510|eshortvowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0910,U+0020,U+090F,U+0947:[aideva=0+553|space=1+260|edeva=2+553|uni25CC=2+510|evowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0911,U+0020,U+0905,U+0949,U+0020,U+0906,U+0945:[ocandradeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|ocandravowelsigndeva=2+259|space=4+260|aadeva=5+1023|uni25CC=5+510|ecandravowelsigndeva=5+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0912,U+0020,U+0905,U+094A,U+0020,U+0906,U+0946:[oshortdeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|oshortvowelsigndeva=2+259|space=4+260|aadeva=5+1023|uni25CC=5+510|eshortvowelsigndeva=5+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0913,U+0020,U+0905,U+094B,U+0020,U+0906,U+0947:[odeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|ovowelsigndeva=2+259|space=4+260|aadeva=5+1023|uni25CC=5+510|evowelsigndeva=5+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0914,U+0020,U+0905,U+094C,U+0020,U+0906,U+0948:[audeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|auvowelsigndeva=2+259|space=4+260|aadeva=5+1023|uni25CC=5+510|aivowelsigndeva=5+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0972,U+0020,U+0905,U+0945:[acandradeva=0+764|space=1+260|adeva=2+764|uni25CC=2+510|ecandravowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0973,U+0020,U+0905,U+093A:[oedeva=0+764|space=1+260|adeva=2+764|uni25CC=2+510|oevowelsigndeva=2+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0974,U+0020,U+0905,U+093B,U+0020,U+0906,U+093A:[ooedeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|ooevowelsigndeva=2+259|space=4+260|aadeva=5+1023|uni25CC=5+510|oevowelsigndeva=5+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0975,U+0020,U+0905,U+094F:[awdeva=0+1023|space=1+260|adeva=2+764|uni25CC=2+510|awvowelsigndeva=2+259] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0976,U+0020,U+0905,U+0956:[uedeva=0+764|space=1+260|adeva=2+764|uni25CC=2+510|uevowelsigndeva=2@50,0+0] +../fonts/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf::U+0977,U+0020,U+0905,U+0957:[uuedeva=0+764|space=1+260|adeva=2+764|uni25CC=2+510|uuevowelsigndeva=2@50,0+0] +../fonts/881642af1667ae30a54e58de8be904566d00508f.ttf::U+0986,U+0020,U+0985,U+09BE:[aabeng=0+1158|space=1+260|abeng=2+893|uni25CC=2+510|aavowelsignbeng=2+266] +../fonts/881642af1667ae30a54e58de8be904566d00508f.ttf::U+09E0,U+0020,U+098B,U+09C3:[rrvocalicbeng=0+853|space=1+260|rvocalicbeng=2+853|uni25CC=2+510|rvocalicvowelsignbeng=2+0] +../fonts/881642af1667ae30a54e58de8be904566d00508f.ttf::U+09E1,U+0020,U+098C,U+09E2:[llvocalicbeng=0+639|space=1+260|lvocalicbeng=2+639|uni25CC=2+510|lvocalicvowelsignbeng=2+0] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A06,U+0020,U+0A05,U+0A3E:[aaguru=0+2001|space=1+532|aguru=2+1520|uni25CC=2+1044|aamatraguru=2+481] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A07,U+0020,U+0A72,U+0A3F:[iguru=0+1671|space=1+532|iriguru=2+1141|imatraguru=2+530|uni25CC=2+1044] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A08,U+0020,U+0A72,U+0A40:[iiguru=0+1671|space=1+532|iriguru=2+1141|uni25CC=2+1044|iimatraguru=2+530] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A09,U+0020,U+0A73,U+0A41:[uguru=0+1356|space=1+532|uraguru=2+1356|uni25CC=2+1044|umatraguru=2@102,0+0] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A0A,U+0020,U+0A73,U+0A42:[uuguru=0+1356|space=1+532|uraguru=2+1356|uni25CC=2+1044|uumatraguru=2@102,0+0] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A0F,U+0020,U+0A72,U+0A47:[eeguru=0+1141|space=1+532|iriguru=2+1141|uni25CC=2+1044|eematraguru=2+0] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A10,U+0020,U+0A05,U+0A48:[aiguru=0+1520|space=1+532|aguru=2+1520|uni25CC=2+1044|aimatraguru=2+0] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A13,U+0020,U+0A73,U+0A4B:[ooguru=0+1356|space=1+532|uraguru=2+1356|uni25CC=2+1044|oomatraguru=2+0] +../fonts/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf::U+0A14,U+0020,U+0A05,U+0A4C:[auguru=0+1520|space=1+532|aguru=2+1520|uni25CC=2+1044|aumatraguru=2+0] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A86,U+0020,U+0A85,U+0ABE:[gid3=0+2351|gid1=1+612|gid2=2+1808|gid17=2+1044|gid10=2+543] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A8D,U+0020,U+0A85,U+0AC5:[gid4=0+1808|gid1=1+612|gid2=2+1808|gid17=2+1044|gid11=2+0] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A8F,U+0020,U+0A85,U+0AC7:[gid5=0+1808|gid1=1+612|gid2=2+1808|gid17=2+1044|gid12=2+0] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A90,U+0020,U+0A85,U+0AC8:[gid6=0+1808|gid1=1+612|gid2=2+1808|gid17=2+1044|gid13=2+0] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A91,U+0020,U+0A85,U+0AC9:[gid7=0+2351|gid1=1+612|gid2=2+1808|gid17=2+1044|gid14=2+543] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A93,U+0020,U+0A85,U+0ACB,U+0020,U+0A85,U+0ABE,U+0AC5:[gid8=0+2351|gid1=1+612|gid2=2+1808|gid17=2+1044|gid15=2+543|gid1=4+612|gid2=5+1808|gid17=5+1044|gid11=5+0|gid10=5+543] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0A94,U+0020,U+0A85,U+0ACC,U+0020,U+0A85,U+0ABE,U+0AC8:[gid9=0+2351|gid1=1+612|gid2=2+1808|gid17=2+1044|gid16=2+543|gid1=4+612|gid2=5+1808|gid17=5+1044|gid13=5+0|gid10=5+543] +../fonts/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf::U+0AC9,U+0020,U+0AC5,U+0ABE:[gid17=0+1044|gid14=0+543|gid1=1+612|gid17=1+1044|gid11=1+0|gid17=1+1044|gid10=1+543] +../fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf::U+0B06,U+0020,U+0B05,U+0B3E:[aaorya=0+1681|space=1+881|aorya=2+1284|uni25CC=2+1044|aavowelsignorya=2+387] +../fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf::U+0B10,U+0020,U+0B0F,U+0B57:[aiorya=0+1681|space=1+881|eorya=2+1315|uni25CC=2+1044|aulengthmarkorya=2+387] +../fonts/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf::U+0B14,U+0020,U+0B13,U+0B57:[auorya=0+1679|space=1+881|oorya=2+1309|uni25CC=2+1044|aulengthmarkorya=2+387] +../fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf::U+0C13,U+0020,U+0C12,U+0C55:[gid3=0+1497|gid1=1+580|gid2=2+1497|gid13=2+1184|gid12=2+0] +../fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf::U+0C14,U+0020,U+0C12,U+0C4C:[gid4=0+1497|gid1=1+580|gid2=2+1497|gid13=2+1184|gid11=2+634] +../fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf::U+0C40,U+0020,U+0C3F,U+0C55:[gid13=0+1184|gid6=0+0|gid1=1+580|gid13=1+1184|gid5=1+0|gid13=1+1184|gid12=1+0] +../fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf::U+0C47,U+0020,U+0C46,U+0C55:[gid13=0+1184|gid8=0+0|gid1=1+580|gid13=1+1184|gid7=1+0|gid13=1+1184|gid12=1+0] +../fonts/03e3f463c3a985bc42096620cc415342818454fb.ttf::U+0C4B,U+0020,U+0C4A,U+0C55:[gid13=0+1184|gid10=0+634|gid1=1+580|gid13=1+1184|gid9=1+634|gid13=1+1184|gid12=1+0] +../fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf::U+0C8A,U+0020,U+0C89,U+0CBE:[gid3=0+3269|gid1=1+590|gid2=2+2502|gid10=2+1184|gid7=2+919] +../fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf::U+0C94,U+0020,U+0C92,U+0CCC:[gid6=0+1596|gid1=1+590|gid5=2+1590|gid10=2+1184|gid8=2+880] +../fonts/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf::U+0CE0,U+0020,U+0C8B,U+0CBE:[gid9=0+3214|gid1=1+590|gid4=2+2440|gid10=2+1184|gid7=2+919] +../fonts/af85624080af5627fb050f570d148a62f04fda74.ttf::U+0D08,U+0020,U+0D07,U+0D57:[gid3=0+3574|gid1=1+632|gid2=2+2019|gid14=2+1184|gid13=2+1555] +../fonts/af85624080af5627fb050f570d148a62f04fda74.ttf::U+0D0A,U+0020,U+0D09,U+0D57:[gid5=0+2972|gid1=1+632|gid4=2+1417|gid14=2+1184|gid13=2+1555] +../fonts/af85624080af5627fb050f570d148a62f04fda74.ttf::U+0D10,U+0020,U+0D0E,U+0D46:[gid7=0+4073|gid1=1+632|gid6=2+2608|gid12=2+1465|gid14=2+1184] +../fonts/af85624080af5627fb050f570d148a62f04fda74.ttf::U+0D13,U+0020,U+0D12,U+0D3E:[gid9=0+2557|gid1=1+632|gid8=2+1524|gid14=2+1184|gid11=2+1033] +../fonts/af85624080af5627fb050f570d148a62f04fda74.ttf::U+0D14,U+0020,U+0D12,U+0D57:[gid10=0+3073|gid1=1+632|gid8=2+1524|gid14=2+1184|gid13=2+1555] diff --git a/test/shaping/data/in-house/tests/kern-format2.tests b/test/shaping/data/in-house/tests/kern-format2.tests new file mode 100644 index 0000000..f7cd840 --- /dev/null +++ b/test/shaping/data/in-house/tests/kern-format2.tests @@ -0,0 +1,3 @@ +../fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf::U+0061,U+0062,U+0063,U+0064,U+0065,U+0066,U+0067,U+0068,U+0069,U+006A,U+006B,U+006C,U+006D,U+006E,U+006F,U+0070:[a=0+626|b=1+672|c=2+564|d=3@-15,0+657|e=4+621|f=5+403|g=6@-10,0+662|h=7+666|i=8+316|j=9+316|k=10+591|l=11+316|m=12+1021|n=13+666|o=14+644|p=15+672] +../fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf::U+0063,U+006B,U+0063,U+006B,U+0063,U+006B:[c=0+579|k=1+591|c=2+579|k=3+591|c=4+579|k=5+591] +../fonts/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf::U+0041,U+0056:[A=0+701|V=1@-40,0+703] diff --git a/test/shaping/data/in-house/tests/khmer-mark-order.tests b/test/shaping/data/in-house/tests/khmer-mark-order.tests new file mode 100644 index 0000000..d581dd1 --- /dev/null +++ b/test/shaping/data/in-house/tests/khmer-mark-order.tests @@ -0,0 +1,25 @@ +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17BE,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni1794=3+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17BE,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17C1,U+17B8,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17B8,U+17C1,U+17BB,U+1794:[uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni17C1=0+288|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17BE,U+17BB,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17C1,U+17B8,U+17BB,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=6+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17B8,U+17C1,U+17BB,U+17BB,U+1794:[uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni17C1=0+288|uni25CC=0+635|uni17BB=0@-20,-26+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=6+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17BE,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17C1,U+17B8,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17B8,U+17C1,U+17BB,U+1794:[uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni17C1=0+288|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17BE,U+17BB,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17C1,U+17B8,U+17BB,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=6+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17B8,U+17C1,U+17BB,U+17BB,U+1794:[uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni17C1=0+288|uni25CC=0+635|uni17BB=0@-20,-26+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=6+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17BE,U+17B8,U+1794:[uni17C1=0+288|uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni25CC=0+635|uni17B8=0@-20,-84+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17B8,U+17BE,U+1794:[uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni17C1=0+288|uni25CC=0+635|uni17B8=0@-20,-84+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17BE,U+17B8,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni25CC=0+635|uni17B8=0@-20,-84+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17C9,U+17B8,U+17BE,U+17BB,U+1794:[uni179F=0+928|uni17C9=0@-32,-29+0|uni17B8=0@-32,237+0|uni17C1=0+288|uni25CC=0+635|uni17B8=0@-20,-84+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17BE,U+17B8,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17B8=0@-20,-84+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17B8,U+17BE,U+1794:[uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni17C1=0+288|uni25CC=0+635|uni17B8=0@-20,-84+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17BE,U+17B8,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17B8=0@-20,-84+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17CA,U+17B8,U+17BE,U+17BB,U+1794:[uni179F=0+928|uni17BB=0@-6,-26+0|uni17B8=0@-32,-29+0|uni17C1=0+288|uni25CC=0+635|uni17B8=0@-20,-84+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=5+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17BE,U+17B8,U+17BB,U+1794:[uni17C1=0+288|uni179F=0+928|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17B8=0@-20,-84+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17BE,U+17BB,U+17B8,U+1794:[uni17C1=0+288|uni179F=0+928|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni17B8=0@-20,-84+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17B8,U+17BE,U+17BB,U+1794:[uni179F=0+928|uni17B8=0@-32,-29+0|uni17C1=0+288|uni25CC=0+635|uni17B8=0@-20,-84+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni1794=4+635] +../fonts/b6031119874ae9ff1dd65383a335e361c0962220.ttf::U+179F,U+17B8,U+17BB,U+17BE,U+1794:[uni179F=0+928|uni17B8=0@-32,-29+0|uni25CC=0+635|uni17BB=0@-20,-26+0|uni17C1=0+288|uni25CC=0+635|uni17B8=0@-20,-84+0|uni1794=4+635] diff --git a/test/shaping/data/in-house/tests/khmer-misc.tests b/test/shaping/data/in-house/tests/khmer-misc.tests new file mode 100644 index 0000000..a7a1c6d --- /dev/null +++ b/test/shaping/data/in-house/tests/khmer-misc.tests @@ -0,0 +1,89 @@ +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1781,U+17D2,U+1798,U+17C2:[uni17C2=0+288|uni1781=0+635|uni17D21798=0@22,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1787,U+17B6:[uni178717B6=0+923] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1790,U+17D2,U+1784,U+17C3:[uni17C3=0+288|uni1790=0+635|uni17D21784=0@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17B6:[uni179817B6=0+923] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17D2,U+1796,U+17BB:[uni1798=0+635|uni17D21796=0@-1,-26+0|uni17BB=0@-22,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179A:[uni179A=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179A,U+17B8:[uni179A=0+288|uni17B8.r=0@76,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179A,U+17CD:[uni179A=0+288|uni17CD.r=0@18,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17C5:[uni17C1=0+288|uni179F17C5=0+1216] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179A,U+17D2,U+17A5:[uni179A=0+288|uni17D2=0+0|uni17A5=2+635] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1784,U+17B9,U+17D2,U+1788:[uni1784=0+635|uni17B9=0@-46,30+0|uni17D21788=0+234] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1784,U+17D2,U+1788,U+17B9:[uni1784=0+635|uni17D21788=0+234|uni17B9=0@8,30+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1784,U+17D2,U+1782,U+17D2,U+179A:[uni17D2179A.low=0+287|uni1784=0+635|uni17D21782=0@0,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1784,U+17D2,U+179A,U+17D2,U+1782:[uni17D2179A.low=0+287|uni1784=0+635|uni17D21782=0@0,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17C9,U+17D2,U+179B,U+17C1,U+17C7:[uni17C1=0+288|uni1798=0+635|uni17C9=0@-46,-29+0|uni17D2179B=0@-1,-26+0|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+200C,U+17C9,U+17D2,U+179B,U+17C1,U+17C7:[uni17C1=0+288|uni1798=0+635|space=0+0|uni17C9=0@-46,-29+0|uni17D2179B=0@-1,-26+0|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1794,U+17CA,U+17D0:[uni1794=0+635|uni17CA=0@-46,-29+0|uni17D0=0@-46,113+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1793,U+17C2,U+17CE:[uni17C2=0+288|uni1793=0+635|uni17CE=0@-36,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17C1,U+17D2,U+179A:[uni17D2179A=0+287|uni17C1=0+288|uni1780=0+636] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17C0,U+17D2,U+179A:[uni17D2179A=0+287|uni17C1=0+288|uni1780=0+636|uni17C0.right1=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17C4,U+17D2,U+179A:[uni17D2179A=0+287|uni17C1=0+288|uni178017B6=0+924] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17C5,U+17D2,U+179A:[uni17D2179A=0+287|uni17C1=0+288|uni178017C5=0+924] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1796,U+17D1,U+17B6:[uni179617B6=0+923|uni17D1=0@-311,-19+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+1793,U+17D2,U+178F,U+17D2,U+179A,U+17B6,U+1780,U+17CB:[uni1780=0+636|uni17D2179A.low=1+287|uni179317B6=1+924|uni17D2178F=1@-290,-26+0|uni1780=7+636|uni17CB=7@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+1793,U+17D2,U+179A,U+17D2,U+179F,U+17B7,U+1780,U+17CB:[uni1780=0+636|uni17D2179A=1+287|uni1793=1+635|uni17D2179F=1+302|uni17B7=1@-4,30+0|uni1780=7+636|uni17CB=7@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+1793,U+17D2,U+179A,U+17D2,U+179F,U+17B8,U+1780,U+17CB:[uni1780=0+636|uni17D2179A=1+287|uni1793=1+635|uni17D2179F=1+302|uni17B8=1@-4,30+0|uni1780=7+636|uni17CB=7@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17B6,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F17B6=0+584|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17B7,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17B7=0@-4,30+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17B8,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17B8=0@-4,30+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17B9,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17B9=0@-4,30+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17BA,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17BA=0@-4,30+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17BB,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17BB=0@1,-260+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17BC,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17BC=0@1,-260+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17BD,U+1793,U+17D2,U+178F:[uni1780=0+636|uni17D2179F=0+302|uni17BD=0@1,-260+0|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1780,U+17D2,U+179F,U+17BF,U+1793,U+17D2,U+178F:[uni17C1=0+288|uni1780=0+636|uni17D2179F=0+302|uni17BF.right2=0+288|uni1793=4+635|uni17D2178F=4@-1,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17B6,U+17C6:[uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F17B6.low=0+584|uni17C6=0@39,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17B7,U+17C7:[uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F.low=0+302|uni17B7=0@-4,30+0|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17BB,U+17C6:[uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F.low=0+302|uni17BB=0+0|uni17C6=0@-4,30+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17BB,U+17C7:[uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F.low=0+302|uni17BB=0+0|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17C1,U+17C7:[uni17C1=0+288|uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F.low=0+302|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17C4,U+17C7:[uni17C1=0+288|uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F17B6.low=0+584|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17C6:[uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F.low=0+302|uni17C6=0@-4,30+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1783,U+17D2,U+179B,U+17D2,U+179F,U+17C7:[uni1783=0+928|uni17D2179B=0@15,-26+0|uni17D2179F.low=0+302|uni17C7=0+386] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1789,U+17BC:[uni1789=0+952|uni17BC=0@-173,-260+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1789,U+17D2,U+1789:[uni1789.a=0+952|uni17D21789.a=0@19,-22+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1789,U+17D2,U+1789,U+17BB:[uni1789.a=0+952|uni17D21789.a=0@19,-22+0|uni17BB=0@-160,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1789,U+17D2,U+1789,U+17BC:[uni1789.a=0+952|uni17D21789.a=0@19,-22+0|uni17BC=0@-160,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1789,U+17D2,U+1789,U+17BD:[uni1789.a=0+952|uni17D21789.a=0@19,-22+0|uni17BD=0@-160,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+178F,U+17D2,U+179A,U+17D2,U+179F,U+17C0:[uni17C1=0+288|uni17D2179A=0+287|uni178F=0+635|uni17D2179F=0+302|uni17C0.right2=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+178F,U+17D2,U+179A,U+17D2,U+179F,U+17C1:[uni17C1=0+288|uni17D2179A=0+287|uni178F=0+635|uni17D2179F=0+302] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+178F,U+17D2,U+179A,U+17D2,U+179F,U+17C2:[uni17C2=0+288|uni17D2179A=0+287|uni178F=0+635|uni17D2179F=0+302] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+178F,U+17D2,U+179A,U+17D2,U+179F,U+17C3:[uni17C3=0+288|uni17D2179A=0+287|uni178F=0+635|uni17D2179F=0+302] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+178F,U+17D2,U+179A,U+17D2,U+179F,U+17C4:[uni17C1=0+288|uni17D2179A=0+287|uni178F=0+635|uni17D2179F17B6=0+584] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+178F,U+17D2,U+179A,U+17D2,U+179F,U+17C5:[uni17C1=0+288|uni17D2179A=0+287|uni178F=0+635|uni17D2179F17C5=0+584] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1792,U+17D2,U+179B,U+17BB,U+17C6,U+1780,U+17CB:[uni1792=0+635|uni17D2179B=0@-2,-26+0|uni17BB=0@-19,-296+0|uni17C6=0@-46,-29+0|uni1780=5+636|uni17CB=5@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1792,U+17D2,U+179B,U+17C4,U+1780,U+17CB:[uni17C1=0+288|uni179217B6=0+923|uni17D2179B=0@-290,-26+0|uni1780=4+636|uni17CB=4@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1792,U+17D2,U+179B,U+17C5,U+1780,U+17CB:[uni17C1=0+288|uni179217C5=0+923|uni17D2179B=0@-290,-26+0|uni1780=4+636|uni17CB=4@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1792,U+17D2,U+179B,U+17C6,U+1780,U+17CB:[uni1792=0+635|uni17D2179B=0@-2,-26+0|uni17C6=0@-46,-29+0|uni1780=4+636|uni17CB=4@-23,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17D2,U+178F,U+17D2,U+179B,U+17C9,U+17B6:[uni179817B6=0+923|uni17D2178F=0@-289,-26+0|uni17D2179B=0@-289,-296+0|uni17C9=0@-334,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17D2,U+178F,U+17D2,U+179B,U+17C9,U+17BB:[uni1798=0+635|uni17D2178F=0@-1,-26+0|uni17D2179B=0@-1,-296+0|uni17C9=0@-46,-29+0|uni17BB=0@-18,-566+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17D2,U+178F,U+17D2,U+179B,U+17C9,U+17BF:[uni17C1=0+288|uni1798=0+635|uni17D2178F=0@-1,-26+0|uni17D2179B=0@-1,-296+0|uni17C9=0@-46,-29+0|uni17BF.right1=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1798,U+17D2,U+178F,U+17D2,U+179B,U+17C9,U+17C0:[uni17C1=0+288|uni1798=0+635|uni17D2178F=0@-1,-26+0|uni17D2179B=0@-1,-296+0|uni17C9=0@-46,-29+0|uni17C0.right1=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+1799,U+17D2,U+1799,U+17BE,U+17A0,U+17D2,U+179C,U+17D2,U+179B,U+17C3:[uni17C1=0+288|uni1799=0+953|uni17D21799=0+298|uni17B8=0@1,30+0|uni17C3=4+288|uni17A0=4+928|uni17D2179C=4@20,-26+0|uni17D2179B=4@19,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179A,U+17D2,U+179A:[uni17D2179A=0+287|uni179A=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17B6,U+179F,U+17D2,U+178F,U+17D2,U+179A,U+1783,U+17D2,U+1788,U+1784,U+17B6:[uni179F17B6=0+1216|uni17D2179A=2+287|uni179F=2+928|uni17D2178F=2@14,-26+0|uni1783=7+928|uni17D21788=7+234|uni178417B6=10+923] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17B6,U+179F,U+17D2,U+178F,U+17D2,U+179A,U+1783,U+17D2,U+1788,U+1784,U+17B7:[uni179F17B6=0+1216|uni17D2179A=2+287|uni179F=2+928|uni17D2178F=2@14,-26+0|uni1783=7+928|uni17D21788=7+234|uni1784=10+635|uni17B7=10@-46,30+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17B6,U+179F,U+17D2,U+178F,U+17D2,U+179A,U+1783,U+17D2,U+1788,U+1784,U+17B8:[uni179F17B6=0+1216|uni17D2179A=2+287|uni179F=2+928|uni17D2178F=2@14,-26+0|uni1783=7+928|uni17D21788=7+234|uni1784=10+635|uni17B8=10@-46,30+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+178F,U+17D2,U+179A,U+17B8,U+179C,U+17D0,U+1781,U+17D2,U+1789,U+17D2,U+179F,U+17B6:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17B8=0@-32,-29+0|uni179C=6+326|uni17D0=6@139,40+0|uni1781=8+635|uni17D21789=8@-4,-26+0|uni17D2179F17B6.low=8+584] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17B6:[uni17D2179A=0+287|uni179F17B6=0+1216|uni17D2178F=0@-274,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17B7:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17B7=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17B8:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17B8=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17B9:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17B9=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17BA:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17BA=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17BB:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17BB=0@-6,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17BC:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17BC=0@-6,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17BD:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17BD=0@-6,-296+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17BE:[uni17C1=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17B8=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17BF:[uni17C1=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17BF.right2=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17CA,U+17BF:[uni17C1=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17CA=0@-32,-29+0|uni17BF.right1=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17CA,U+17C0:[uni17C1=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17CA=0@-32,-29+0|uni17C0.right1.high=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17CA,U+17C1:[uni17C1=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17CA=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17CA,U+17C2:[uni17C2=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17CA=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17CA,U+17C3:[uni17C3=0+288|uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17CA=0@-32,-29+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+179F,U+17D2,U+179A,U+17D2,U+178F,U+17CA,U+17C6:[uni17D2179A=0+287|uni179F=0+928|uni17D2178F=0@14,-26+0|uni17CA=0@-32,-29+0|uni17C6=0@-32,113+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+17A0,U+17D2,U+1782,U+17D2,U+179F,U+17CA,U+17BE:[uni17C1=0+288|uni17A0=0+928|uni17D21782=0@20,-26+0|uni17D2179F.low=0+302|uni17BB=0+0|uni17B8=0@-4,30+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+17A0,U+17D2,U+1782,U+17D2,U+179F,U+17CA,U+17BF:[uni17C1=0+288|uni17A0=0+928|uni17D21782=0@20,-26+0|uni17D2179F.low=0+302|uni17CA=0@-4,30+0|uni17BF.right1=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+17A0,U+17D2,U+1782,U+17D2,U+179F,U+17CA,U+17C0:[uni17C1=0+288|uni17A0=0+928|uni17D21782=0@20,-26+0|uni17D2179F.low=0+302|uni17CA=0@-4,30+0|uni17C0.right1.high=0+288] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+17A0,U+17D2,U+179A,U+17D2,U+179C,U+1784,U+17D2,U+1780:[uni17D2179A=0+287|uni17A0=0+928|uni17D2179C=0@20,-26+0|uni1784=5+635|uni17D21780=5@0,-26+0] +../fonts/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf::U+17A0,U+17D2,U+179A,U+17D2,U+179C,U+17B6,U+17C6,U+1784:[uni17D2179A=0+287|uni17A017B6=0+1216|uni17D2179C=0@-268,-26+0|uni17C6=0@47,-29+0|uni1784=7+635] diff --git a/test/shaping/data/in-house/tests/language-tags.tests b/test/shaping/data/in-house/tests/language-tags.tests index 4c62113..c7be180 100644 --- a/test/shaping/data/in-house/tests/language-tags.tests +++ b/test/shaping/data/in-house/tests/language-tags.tests @@ -10,3 +10,4 @@ ../fonts/6991b13ce889466be6de3f66e891de2bc0f117ee.ttf:--language=zh-HK:U+004A:[gid6=0+1000] ../fonts/6991b13ce889466be6de3f66e891de2bc0f117ee.ttf:--language=zh-mo:U+004A:[gid6=0+1000] ../fonts/6991b13ce889466be6de3f66e891de2bc0f117ee.ttf:--language=zh-Hant-mo:U+004A:[gid6=0+1000] +../fonts/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf:--language=dv --no-glyph-names:U+007C:[2=0+156] diff --git a/test/shaping/data/in-house/tests/macos.tests b/test/shaping/data/in-house/tests/macos.tests new file mode 100644 index 0000000..7855c0d --- /dev/null +++ b/test/shaping/data/in-house/tests/macos.tests @@ -0,0 +1,37 @@ +# 10.12.6 https://gist.github.com/ebraminio/1704341fa16b06979e605aafd88198cf +/System/Library/Fonts/Helvetica.dfont@c7bec2785a4c402b7809b5e35337c3d24c18e281:--font-funcs ot:U+006D,U+0300:[m=0+1706|gravecmb=0@-284,10+0] +/System/Library/Fonts/LucidaGrande.ttc@d89a9d7e57767bfe3b5a4cfd22bb1e9dbe03a062:--font-funcs ot:U+006D,U+0300:[mgrave=0+1912] +/System/Library/Fonts/Times.dfont@39c954614d3f3317b28564db06d5b7b7a6ff0e39:--font-funcs ot:U+0066,U+0069:[fi=0+1139] +/Library/Fonts/Khmer MN.ttc@5f5b1072df99b7355d3066ea85fe82969d13c94a:--font-funcs ot:U+17A2,U+1780,U+17D2,U+179F,U+179A,U+1781,U+17D2,U+1798,U+17C2,U+179A:[km_qa=0+1025|km_ka=1+1025|km_sa.sub=1+517|km_ro=4+593|km_vs_ae=5+605|km_kha=5+1025|km_mo.sub=5+0|km_ro=9+593] +/Library/Fonts/Tamil MN.ttc@37a2020c3f86ebcc45e02c1de5fdf81e2676989d:--font-funcs ot:U+0BA4,U+0BCA,U+0B95,U+0BC1,U+0B95,U+0BCD,U+0B95,U+0BAA,U+0BCD,U+0BAA,U+0B9F,U+0BCD,U+0B9F,U+0BC1:[tgm_e=0+1702|tgc_ta=0+1598|tgm_aa=0+1149|tgc_ku=2+1962|tgc_k=4+1592|tgc_ka=6+1592|tgc_p=7+1370|tgc_pa=9+1370|tgc_tt=10+1596|tgc_ttu=12+1833] +/System/Library/Fonts/Times.dfont@39c954614d3f3317b28564db06d5b7b7a6ff0e39:--font-funcs ot:U+0041,U+0066,U+0300,U+0066,U+0069,U+005A:[A=0+1479|f=1+682|gravecmb=1@-551,588+0|fi=3+1139|Z=5+1251] +/System/Library/Fonts/LucidaGrande.ttc@d89a9d7e57767bfe3b5a4cfd22bb1e9dbe03a062:--font-funcs ot:U+05E1,U+05B0:[shevahebrew=0@51,0+0|samekhhebrew=0+1361] +/Library/Fonts/Apple Chancery.ttf@5fc49ae9bce39e2105864323183b68ea34c9e562:--font-funcs ot:U+0054,U+0068,U+0020,U+0074,U+0068,U+0020,U+006C,U+006C,U+0020,U+0074,U+0065,U+0020,U+0074,U+006F,U+0020,U+0074,U+0072,U+0020,U+0066,U+0072,U+0020,U+0066,U+0075,U+0020,U+0066,U+006A:[T_h=0+2308|space=2+569|t_h=3+1687|space=5+569|l_l=6+1108|space=8+569|t_e=9+1408|space=11+569|t_o=12+1531|space=14+569|t_r=15+1385|space=17+569|f_r=18+1432|space=20+569|f_u=21+1733|space=23+569|f_j=24+1098] +/Library/Fonts/Apple Chancery.ttf@5fc49ae9bce39e2105864323183b68ea34c9e562:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[T=0+1497|e=1@-62,0+699|space=2+569|A=3+1431|V=4@-37,0+1377|space=5+569|T=6+1510|r=7@-50,0+803|space=8+569|V=9+1376|a=10@-37,0+1014|space=11+569|r=12+853|T=13+1560|space=14+569|e=15+761|T=16+1560|space=17+569|T=18+1515|d=19@-45,0+1006] +/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0627,U+0644,U+0623,U+064E,U+0628,U+0652,U+062C,U+064E,U+062F,U+0650,U+064A,U+064E,U+0651,U+0629,U+0640,U+0627,U+0644,U+0639,U+064E,U+0631,U+064E,U+0628,U+0650,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=26+713|u064e_u0651.shaddaFatha=23@0,-200+0|u064a.medial.yeh=23+656|u0650.kasra=21@80,290+80|u0628.initial.beh=21@-80,0+576|u064e.fatha=19@200,-570+200|u0631.final.reh=19@-200,0+702|u064e.fatha=17@200,-200+200|u0639.medial.ain=17@-200,0+738|u0644.initial.lam=16+515|u0627.final.alef=15+647|u0640.tatweel=14+449|u0629.final.tehMarbuta=13+713|u064e_u0651.shaddaFatha=10@0,-200+0|u064a.initial.yeh=10+656|u0650.kasra=8@80,570+80|u062f.final.dal=8@-80,0+822|u064e.fatha=6@290,-160+290|u062c.medial.jeem=6@-290,0+1069|u0652.sukun=4@0,-200+0|u0628.initial.beh=4+656|u064e.fatha=1@-252,120+-252|u0644_u0623.isolated.lamHamzaOnAlef=1@120,0+1282|u0627.alef=0+647] +/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0628,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656] +/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0631,U+0628:[u0628.beh=1+1415|u0631.reh=0@-202,0+700] +/System/Library/Fonts/GeezaPro.ttc@f43ee7151c2e9f1dddfbc26cfc148609eb5c5820:--font-funcs ot:U+0628,U+064F:[u064f.damma=0@250,-250+250|u0628.beh=0@-250,0+1165] +/System/Library/Fonts/SFNSDisplay.ttf@92787c30716672737e9059bc367c15d04fbc1ced:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid225=0+1105|gid584=1@-105,0+979|gid3=2+490|gid4=3+1227|gid265=4@-65,0+1227|gid3=5+490|gid225=6+1130|gid728=7@-80,0+569|gid3=8+490|gid265=9+1227|gid505=10@-65,0+997|gid3=11+490|gid728=12+609|gid225=13@-40,0+1170|gid3=14+490|gid584=15+1004|gid225=16@-80,0+1130|gid3=17+490|gid225=18+1105|gid576=19@-105,0+1068] +/System/Library/Fonts/SFNSDisplay.ttf@92787c30716672737e9059bc367c15d04fbc1ced:--font-ptem 9 --font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid225=0@46,0+1197|gid584=1@-59,0+1071|gid3=2@46,0+582|gid4=3@46,0+1319|gid265=4@-19,0+1319|gid3=5@46,0+582|gid225=6@46,0+1222|gid728=7@-34,0+661|gid3=8@46,0+582|gid265=9@46,0+1319|gid505=10@-19,0+1089|gid3=11@46,0+582|gid728=12@46,0+701|gid225=13@6,0+1262|gid3=14@46,0+582|gid584=15@46,0+1096|gid225=16@-34,0+1222|gid3=17@46,0+582|gid225=18@46,0+1197|gid576=19@-59,0+1160] +/System/Library/Fonts/Apple Color Emoji.ttc@d2fe8a134483aa48a43a9d1e4b7204d37a4abdf5:--remove-default-ignorables --font-funcs ot:U+1F468,U+200D,U+1F469,U+200D,U+1F467,U+200D,U+1F466:[u1F46A.MWGB=0+800] +/Library/Fonts/Zapfino.ttf@9ee799ffb09516ead6b0cf6f2ca807276e150748:--font-funcs ot:U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+006F:[Z=0+416|a=1@-21,0+264|p_f=2+433|i=4+181|n=5+261|Z=6+416|a=7@-21,0+264|p_f=8+433|i=10+181|n=11+261|Z=12+416|a=13@-21,0+264|p_f=14+433|i=16+181|n=17+261|Z=18+416|a=19@-21,0+264|p_f=20+433|i=22+181|n=23+261|Z=24+416|a=25@-21,0+264|p_f=26+433|i=28+181|n=29+261|Z=30+416|a=31@-21,0+264|p_f=32+433|i=34+181|n=35+261|Z=36+416|a=37@-21,0+264|p_f=38+433|i=40+181|n=41+261|Z=42+416|a=43@-21,0+264|p_f=44+433|i=46+181|n=47+261|Z=48+416|a=49@-21,0+264|p_f=50+433|i=52+181|n=53+261|Z=54+416|a=55@-21,0+264|p_f=56+433|i=58+181|n=59+261|Z=60+416|a=61@-21,0+264|p_f=62+433|i=64+181|n=65+261|Z_a_p_f_i_n_o=66+2333] + +# 10.13.6 https://gist.github.com/ebraminio/d432e831b3f7ebe30245dde5775e1c7e +/System/Library/Fonts/Helvetica.ttc@8a928f9866299d2455f41360202b7a3b48503a5e:--font-funcs ot:U+006D,U+0300:[m=0+1706|gravecmb=0@-284,10+0] +/System/Library/Fonts/LucidaGrande.ttc@63ba1b1de4709bd832ca76bd62368dd99fc34269:--font-funcs ot:U+006D,U+0300:[mgrave=0+1912] +/System/Library/Fonts/Times.ttc@896098b6979306ad84355025459f7c68b029139c:--font-funcs ot:U+0066,U+0069:[fi=0+1139] +/Library/Fonts/Khmer MN.ttc@782ba6cf3fca0512ab348dfe08345a2d5dc5bf2c:--font-funcs ot:U+17A2,U+1780,U+17D2,U+179F,U+179A,U+1781,U+17D2,U+1798,U+17C2,U+179A:[km_qa=0+1025|km_ka=1+1025|km_sa.sub=1+517|km_ro=4+593|km_vs_ae=5+605|km_kha=5+1025|km_mo.sub=5+0|km_ro=9+593] +/Library/Fonts/Tamil MN.ttc@3de37f3f8f3cb6015b093fbd6e9d323daaf6fb1d:--font-funcs ot:U+0BA4,U+0BCA,U+0B95,U+0BC1,U+0B95,U+0BCD,U+0B95,U+0BAA,U+0BCD,U+0BAA,U+0B9F,U+0BCD,U+0B9F,U+0BC1:[tgm_e=0+1702|tgc_ta=0+1598|tgm_aa=0+1149|tgc_ku=2+1962|tgc_k=4+1592|tgc_ka=6+1592|tgc_p=7+1370|tgc_pa=9+1370|tgc_tt=10+1596|tgc_ttu=12+1833] +/System/Library/Fonts/Times.ttc@896098b6979306ad84355025459f7c68b029139c:--font-funcs ot:U+0041,U+0066,U+0300,U+0066,U+0069,U+005A:[A=0+1479|f=1+682|gravecmb=1@-551,588+0|fi=3+1139|Z=5+1251] +/System/Library/Fonts/LucidaGrande.ttc@63ba1b1de4709bd832ca76bd62368dd99fc34269:--font-funcs ot:U+05E1,U+05B0:[shevahebrew=0@51,0+0|samekhhebrew=0+1361] +/Library/Fonts/Apple Chancery.ttf@4ec49cba0d4e68d025ada0498c4df1b2f9fd57ac:--font-funcs ot:U+0054,U+0068,U+0020,U+0074,U+0068,U+0020,U+006C,U+006C,U+0020,U+0074,U+0065,U+0020,U+0074,U+006F,U+0020,U+0074,U+0072,U+0020,U+0066,U+0072,U+0020,U+0066,U+0075,U+0020,U+0066,U+006A:[T_h=0+2308|space=2+569|t_h=3+1687|space=5+569|l_l=6+1108|space=8+569|t_e=9+1408|space=11+569|t_o=12+1531|space=14+569|t_r=15+1385|space=17+569|f_r=18+1432|space=20+569|f_u=21+1733|space=23+569|f_j=24+1098] +/Library/Fonts/Apple Chancery.ttf@4ec49cba0d4e68d025ada0498c4df1b2f9fd57ac:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[T=0+1497|e=1@-62,0+699|space=2+569|A=3+1431|V=4@-37,0+1377|space=5+569|T=6+1510|r=7@-50,0+803|space=8+569|V=9+1376|a=10@-37,0+1014|space=11+569|r=12+853|T=13+1560|space=14+569|e=15+761|T=16+1560|space=17+569|T=18+1515|d=19@-45,0+1006] +/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0627,U+0644,U+0623,U+064E,U+0628,U+0652,U+062C,U+064E,U+062F,U+0650,U+064A,U+064E,U+0651,U+0629,U+0640,U+0627,U+0644,U+0639,U+064E,U+0631,U+064E,U+0628,U+0650,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=26+713|u064e_u0651.shaddaFatha=23@0,-200+0|u064a.medial.yeh=23+656|u0650.kasra=21@80,290+80|u0628.initial.beh=21@-80,0+576|u064e.fatha=19@200,-570+200|u0631.final.reh=19@-200,0+702|u064e.fatha=17@200,-200+200|u0639.medial.ain=17@-200,0+738|u0644.initial.lam=16+515|u0627.final.alef=15+647|u0640.tatweel=14+449|u0629.final.tehMarbuta=13+713|u064e_u0651.shaddaFatha=10@0,-200+0|u064a.initial.yeh=10+656|u0650.kasra=8@80,570+80|u062f.final.dal=8@-80,0+822|u064e.fatha=6@290,-160+290|u062c.medial.jeem=6@-290,0+1069|u0652.sukun=4@0,-200+0|u0628.initial.beh=4+656|u064e.fatha=1@-252,120+-252|u0644_u0623.isolated.lamHamzaOnAlef=1@120,0+1282|u0627.alef=0+647] +/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0628,U+064A,U+064E,U+0651,U+0629:[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656] +/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0631,U+0628:[u0628.beh=1+1415|u0631.reh=0@-202,0+700] +/System/Library/Fonts/GeezaPro.ttc@ab26ea45dcaa5e1c5a958e42af10e10d330e7334:--font-funcs ot:U+0628,U+064F:[u064f.damma=0@250,-250+250|u0628.beh=0@-250,0+1165] +/System/Library/Fonts/SFNSDisplay.ttf@c8948f464ff822a5f9bbf2e12d0e4e32268815aa:--font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid282=0+1055|gid658=1@-135,0+914|gid3=2+420|gid4=3+1227|gid332=4@-65,0+1227|gid3=5+420|gid282=6+1075|gid813=7@-115,0+516|gid3=8+420|gid332=9+1217|gid572=10@-75,0+953|gid3=11+420|gid813=12+546|gid282=13@-85,0+1105|gid3=14+420|gid658=15+914|gid282=16@-135,0+1055|gid3=17+420|gid282=18+1055|gid649=19@-135,0+999] +/System/Library/Fonts/SFNSDisplay.ttf@c8948f464ff822a5f9bbf2e12d0e4e32268815aa:--font-ptem 9 --font-funcs ot:U+0054,U+0065,U+0020,U+0041,U+0056,U+0020,U+0054,U+0072,U+0020,U+0056,U+0061,U+0020,U+0072,U+0054,U+0020,U+0065,U+0054,U+0020,U+0054,U+0064:[gid282=0@46,0+1147|gid658=1@-89,0+1006|gid3=2@46,0+512|gid4=3@46,0+1319|gid332=4@-19,0+1319|gid3=5@46,0+512|gid282=6@46,0+1167|gid813=7@-69,0+608|gid3=8@46,0+512|gid332=9@46,0+1309|gid572=10@-29,0+1045|gid3=11@46,0+512|gid813=12@46,0+638|gid282=13@-39,0+1197|gid3=14@46,0+512|gid658=15@46,0+1006|gid282=16@-89,0+1147|gid3=17@46,0+512|gid282=18@46,0+1147|gid649=19@-89,0+1091] +/System/Library/Fonts/Apple Color Emoji.ttc@2e09b1f3d42c3821cc6c4ac5b6ce16237ab0d496:--remove-default-ignorables --font-funcs ot:U+1F468,U+200D,U+1F469,U+200D,U+1F467,U+200D,U+1F466:[u1F46A.MWGB=0+800] +/Library/Fonts/Zapfino.ttf@99a1e15163c3e9567d5b1019c45e9254dae63b08:--font-funcs ot:U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+005A,U+0061,U+0070,U+0066,U+0069,U+006E,U+006F:[Z=0+416|a=1@-21,0+264|p_f=2+433|i=4+181|n=5+261|Z=6+416|a=7@-21,0+264|p_f=8+433|i=10+181|n=11+261|Z=12+416|a=13@-21,0+264|p_f=14+433|i=16+181|n=17+261|Z=18+416|a=19@-21,0+264|p_f=20+433|i=22+181|n=23+261|Z=24+416|a=25@-21,0+264|p_f=26+433|i=28+181|n=29+261|Z=30+416|a=31@-21,0+264|p_f=32+433|i=34+181|n=35+261|Z=36+416|a=37@-21,0+264|p_f=38+433|i=40+181|n=41+261|Z=42+416|a=43@-21,0+264|p_f=44+433|i=46+181|n=47+261|Z=48+416|a=49@-21,0+264|p_f=50+433|i=52+181|n=53+261|Z=54+416|a=55@-21,0+264|p_f=56+433|i=58+181|n=59+261|Z=60+416|a=61@-21,0+264|p_f=62+433|i=64+181|n=65+261|Z_a_p_f_i_n_o=66+2333] diff --git a/test/shaping/data/in-house/tests/mongolian-variation-selector.tests b/test/shaping/data/in-house/tests/mongolian-variation-selector.tests index efb4cf4..c5e35c8 100644 --- a/test/shaping/data/in-house/tests/mongolian-variation-selector.tests +++ b/test/shaping/data/in-house/tests/mongolian-variation-selector.tests @@ -1,4 +1,19 @@ ../fonts/37033cc5cf37bb223d7355153016b6ccece93b28.ttf::U+1826,U+180B,U+1826:[uni1826.E85E_ue.init1=0+599|uni1826.E856_ue.fina=2+750] ../fonts/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf::U+1820,U+180B:[uni1820.E821_a.isol1=0+1199] -../fonts/bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf::U+183A,U+1823,U+182E,U+182B,U+1822,U+1826,U+180B,U+1832,U+180B,U+1827,U+1837,U+0020,U+182D,U+182D,U+180B,U+0020,U+182D,U+180C,U+0020,U+182D,U+180D,U+200D,U+0020,U+182D,U+200D,U+182D,U+180B,U+200D,U+0020,U+182D,U+180C,U+200D,U+0020,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+200D,U+182D,U+180B,U+200D,U+0020,U+200D,U+182D,U+180C,U+200D,U+0020,U+200D,U+182D,U+180D,U+200D,U+0020,U+200D,U+182D,U+200D,U+182D,U+180B,U+0020,U+200D,U+182D,U+180C,U+0020,U+1820,U+200C,U+182D,U+1820,U+1837,U+0020,U+1830,U+1824,U+1837,U+200D,U+200D,U+182D,U+1820,U+200D,U+0020,U+200D,U+182D,U+1824,U+182F,U+1822,U+0020,U+182A,U+1820,U+1822,U+182D,U+180E,U+1820,U+202F,U+1836,U+1822,U+1828:[uni183A1823.E971_ko.init=0+950|uni182E.E904_m.medi=2+400|uni182B1822.E8A6_pi.medi=3+1150|uni1826.E854_ue.medi1=5+1100|uni1832.E916_t.medi1=7+1000|uni1827.E85C_ee.medi=9+750|uni1837.E931_r.fina=10+750|space=11+500|uni182D.E8E2_g.init=12+1000|uni182D.E8E8_g.fina1=13+1250|space=15+500|uni182D.EA1B_g.isol2=16+1000|space=18+500|uni182D.EA1E_g.init3=19+650|space=19+0|space=22+500|uni182D.E8E2_g.init=23+1000|space=23+0|uni182D.E8E5_g.medi1=25+800|space=25+0|space=28+500|uni182D.EA1D_g.init2=29+950|space=29+0|space=32+500|uni182D.EA1E_g.init3=33+650|space=33+0|space=36+500|space=36+0|uni182D.E8E4_g.medi=38+800|space=38+0|space=38+0|uni182D.E8E5_g.medi1=41+800|space=41+0|space=44+500|space=44+0|uni182D.E8E6_g.medi2=46+650|space=46+0|space=49+500|space=49+0|uni182D.E8E6_g.medi2=51+650|space=51+0|space=54+500|space=54+0|uni182D.E8E4_g.medi=56+800|space=56+0|uni182D.E8E8_g.fina1=58+1250|space=60+500|space=60+0|uni182D.E8E9_g.fina2=62+1050|space=64+500|uni1820.E820_a.isol=65+1550|space=65+0|uni182D.E8E2_g.init=67+1000|uni1820.E823_a.medi=68+400|uni1837.E931_r.fina=69+750|space=70+500|uni1830.E90B_s.init=71+850|uni1824.E844_u.medi=72+600|uni1837.E930_r.medi=73+600|space=73+0|space=73+0|uni182D.E8E5_g.medi1=76+800|uni1820.E823_a.medi=77+400|space=77+0|space=79+500|space=79+0|uni182D.E8E5_g.medi1=81+800|uni1824.E844_u.medi=82+600|uni182F.E908_l.medi=83+400|uni1822.E837_i.fina=84+600|space=85+500|uni182A1820.E875_ba.init=86+1000|uni1822.E836_i.medi2=88+1000|uni182D.E8E8_g.fina1=89+1250|space=90+0|uni1820.E827_a.fina2=91+600|uni202F.nobreak=92+500|uni1836.E92B_y.init1=93+500|uni1822.E834_i.medi=94+500|uni1828.E866_n.fina=95+850] ../fonts/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf::U+180A,U+1868,U+180A,U+1868,U+180B,U+180A,U+1868,U+180C,U+180A,U+1868,U+180D,U+180A:[gid1=0+268|gid10=1+778|gid1=2+268|gid9=3+575|gid1=5+268|gid10=6+778|gid1=8+268|gid8=9+575|gid1=11+268] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+183A,U+1823,U+182E,U+182B,U+1822,U+1826,U+180B,U+1832,U+180B,U+1827,U+1837:[uni183A1823.E971_ko.init=0+950|uni182E.E904_m.medi=2+400|uni182B1822.E8A6_pi.medi=3+1150|uni1826.E854_ue.medi1=5+1100|uni1832.E916_t.medi1=7+1000|uni1827.E85C_ee.medi=9+750|uni1837.E931_r.fina=10+750] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182D,U+182D,U+180B:[uni182D.E8E2_g.init=0+1000|uni182D.E8E8_g.fina1=1+1250] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182D,U+180C:[uni182D.EA1B_g.isol2=0+1000] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182D,U+180D,U+200D:[uni182D.EA1E_g.init3=0+650|space=0+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182D,U+200D,U+182D,U+180B,U+200D:[uni182D.E8E2_g.init=0+1000|space=0+0|uni182D.E8E5_g.medi1=2+800|space=2+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182D,U+180C,U+200D:[uni182D.EA1D_g.init2=0+950|space=0+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182D,U+180D,U+200D:[uni182D.EA1E_g.init3=0+650|space=0+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+200D,U+182D,U+200D,U+200D,U+182D,U+180B,U+200D:[space=0+0|uni182D.E8E4_g.medi=1+800|space=1+0|space=1+0|uni182D.E8E5_g.medi1=4+800|space=4+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+200D,U+182D,U+180C,U+200D:[space=0+0|uni182D.E8E6_g.medi2=1+650|space=1+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+200D,U+182D,U+180D,U+200D:[space=0+0|uni182D.E8E6_g.medi2=1+650|space=1+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+200D,U+182D,U+200D,U+182D,U+180B:[space=0+0|uni182D.E8E4_g.medi=1+800|space=1+0|uni182D.E8E8_g.fina1=3+1250] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+200D,U+182D,U+180C:[space=0+0|uni182D.E8E9_g.fina2=1+1050] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+1820,U+200C,U+182D,U+1820,U+1837:[uni1820.E820_a.isol=0+1550|space=1+0|uni182D.E8E2_g.init=2+1000|uni1820.E823_a.medi=3+400|uni1837.E931_r.fina=4+750] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+1830,U+1824,U+1837,U+200D,U+200D,U+182D,U+1820,U+200D:[uni1830.E90B_s.init=0+850|uni1824.E844_u.medi=1+600|uni1837.E930_r.medi=2+600|space=2+0|space=2+0|uni182D.E8E5_g.medi1=5+800|uni1820.E823_a.medi=6+400|space=6+0] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+200D,U+182D,U+1824,U+182F,U+1822:[space=0+0|uni182D.E8E5_g.medi1=1+800|uni1824.E844_u.medi=2+600|uni182F.E908_l.medi=3+400|uni1822.E837_i.fina=4+600] +../fonts/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf::U+182A,U+1820,U+1822,U+182D,U+180E,U+1820,U+202F,U+1836,U+1822,U+1828:[uni182A1820.E875_ba.init=0+1000|uni1822.E836_i.medi2=2+1000|uni182D.E8E8_g.fina1=3+1250|space=4+0|uni1820.E827_a.fina2=5+600|uni202F.nobreak=6+500|uni1836.E92B_y.init1=7+500|uni1822.E834_i.medi=8+500|uni1828.E866_n.fina=9+850] diff --git a/test/shaping/data/in-house/tests/myanmar-zawgyi.tests b/test/shaping/data/in-house/tests/myanmar-zawgyi.tests new file mode 100644 index 0000000..b79d4fb --- /dev/null +++ b/test/shaping/data/in-house/tests/myanmar-zawgyi.tests @@ -0,0 +1 @@ +../fonts/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf:--script=Qaag:U+1000,U+103A,U+1004,U+1037,U+1039,U+1041:[Ka=0+2217|Ya-Semivowel=0+286|Nga=2+1247|Dot Below=2+0|Virama-Killer=2+0|One-Myanmar=5+1247] diff --git a/test/shaping/data/in-house/tests/rand.tests b/test/shaping/data/in-house/tests/rand.tests new file mode 100644 index 0000000..df324b9 --- /dev/null +++ b/test/shaping/data/in-house/tests/rand.tests @@ -0,0 +1,3 @@ +../fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf:--no-glyph-names --features=-rand:U+0054,U+0055,U+0056:[1=0+560|2=1+602|3=2+602] +../fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf:--no-glyph-names --features=rand=2:U+0054,U+0055,U+0056:[5=0+560|8=1+602|11=2+602] +../fonts/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf:--no-glyph-names:U+0054,U+0055,U+0056,U+0054,U+0055,U+0056,U+0054,U+0055,U+0056,U+0054,U+0055,U+0056:[5=0+560|7=1+602|10=2+602|4=3+560|7=4+602|10=5+602|6=6+560|9=7+602|10=8+602|5=9+560|8=10+602|12=11+602] diff --git a/test/shaping/data/in-house/tests/spaces.tests b/test/shaping/data/in-house/tests/spaces.tests index 3ebaac5..ea90998 100644 --- a/test/shaping/data/in-house/tests/spaces.tests +++ b/test/shaping/data/in-house/tests/spaces.tests @@ -15,3 +15,20 @@ ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+202F:[gid1=0+280] ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+205F:[gid1=0+455] ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot:U+3000:[gid1=0+2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+0020:[gid1=0@-280,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+00A0:[gid1=0@-280,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+1680:[gid0=0@-346,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2000:[gid1=0@-280,0+0,-1024] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2001:[gid1=0@-280,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2002:[gid1=0@-280,0+0,-1024] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2003:[gid1=0@-280,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2004:[gid1=0@-280,0+0,-683] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2005:[gid1=0@-280,0+0,-512] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2006:[gid1=0@-280,0+0,-341] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2007:[gid1=0@-280,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2008:[gid1=0@-280,0+0,-2048] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+2009:[gid1=0@-280,0+0,-410] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+200A:[gid1=0@-280,0+0,-128] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+202F:[gid1=0@-280,0+0,-1024] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+205F:[gid1=0@-280,0+0,-455] +../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf:--font-funcs=ot --direction=ttb:U+3000:[gid1=0@-280,0+0,-2048] diff --git a/test/shaping/data/in-house/tests/use-indic3.tests b/test/shaping/data/in-house/tests/use-indic3.tests new file mode 100644 index 0000000..8c3ae13 --- /dev/null +++ b/test/shaping/data/in-house/tests/use-indic3.tests @@ -0,0 +1 @@ +../fonts/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf::U+0C95,U+0CCD,U+0CB0:[uni0C95=0+1176|uni0CB0_uni0CCD.blwf=0+275] diff --git a/test/shaping/data/in-house/tests/use-syllable.tests b/test/shaping/data/in-house/tests/use-syllable.tests index 5d2fab3..6a247ed 100644 --- a/test/shaping/data/in-house/tests/use-syllable.tests +++ b/test/shaping/data/in-house/tests/use-syllable.tests @@ -6,3 +6,7 @@ ../fonts/373e67bf41ca264e260a9716162b71a23549e885.ttf:--no-glyph-names:U+A8AC,U+A8B4,U+A8B5:[2=0+377|3=0+242|4=0+210] ../fonts/59a585a63b3df608fbeef00956c8c108deec7de6.ttf:--no-glyph-names:U+1BC7,U+1BEA,U+1BF3:[1=0+749|2=0+402|4=0+535|3=0+401] ../fonts/1ed7e9064f008f62de6ff0207bb4dd29409597a5.ttf::U+11064,U+1107F,U+11052,U+11065,U+1107F,U+11053:[brm_num100.1=0+2224|brm_num1000.2=3+1834] +../fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf::U+11013,U+11042,U+11046:[brm_KA=0+754|brm_vowelEE=0@-383,0+0|brm_virama=0@-524,0+0] +../fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf::U+11013,U+11044,U+11046:[brm_KA=0+754|brm_vowelOO=0@-647,0+0|brm_virama=0@-524,0+0] +../fonts/28f497629c04ceb15546c9a70e0730125ed6698d.ttf::U+11013,U+1103C:[brm_KA=0+754|brm_vowelU=0@-403,0+0] +../fonts/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf::U+111C8,U+111C9,U+111C9:[u111C8=0+500|u111C9=0@-500,0+0|u111C9=0@-500,0+0] diff --git a/test/shaping/data/in-house/tests/use.tests b/test/shaping/data/in-house/tests/use.tests index 172946c..dd2a3a2 100644 --- a/test/shaping/data/in-house/tests/use.tests +++ b/test/shaping/data/in-house/tests/use.tests @@ -2,4 +2,13 @@ ../fonts/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf::U+1A48,U+1A58,U+1A25,U+1A48,U+1A58,U+1A25,U+1A6E,U+1A63:[uni1A48=0+1212|uni1A25=0+1912|uni1A58=0+0|uni1A48=3+1212|uni1A6E=3+0|uni1A25=3+1912|uni1A58=3+0|uni1A63=3+1212] ../fonts/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf::U+1A48,U+1A58,U+1A25,U+1A48,U+1A58,U+1A25,U+1A6E,U+1A63:[uni1A48=0+1212|uni1A25=0+1912|uni1A58=0+0|uni1A48=3+1212|uni1A6E=3+1211|uni1A25=3+1912|uni1A58=3+0|uni1A63=3+1212] ../fonts/6ff0fbead4462d9f229167b4e6839eceb8465058.ttf:--font-funcs=ot:U+11103,U+11128:[u11103=0+837|u11128=0+0] +../fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf::U+11124,U+1112E:[u11124=0+514|u11131=0+0|u11127=0+0] +../fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf::U+11124,U+11131,U+11127:[u11124=0+514|u11131=0+0|u11127=0+0] +../fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf::U+11124,U+11127,U+11131:[u11124=0+514|u11127=0+0|uni25CC=0+547|u11131=0+0] +../fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf::U+11124,U+11134,U+11131:[u11124=0+514|u11134=0+0|u11131=0+0] +../fonts/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf::U+11124,U+11131,U+11134:[u11124=0+514|u11131=0+0|uni25CC=0+547|u11134=0+0] ../fonts/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf:--font-funcs=ft:U+11410,U+11442,U+11411,U+11440,U+11443,U+11410,U+11442,U+11411,U+11441,U+11443:[E_dv.alt=0+275|Ga.icd=0+367|Gha.diag=0@100,0+386|AA_dv.alt=0+208|Candrabindu=0@17,-8+0|E_dv.alt=5+275|Ga.icd=5+367|Gha.diag=5@100,0+386|AU_dv_part.alt=5+213|Candrabindu.sm=5@-52,179+0] +../fonts/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf::U+11328,U+1134D,U+1CF4:[gid1=0+793|gid2=0+0|gid3=0+0] +../fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf::U+1C00,U+1C27,U+1C28,U+1C34,U+1C35:[uni1C35=0+500|uni1C34=0+500|uni1C28=0+500|uni1C27=0+500|uni1C00=0+500] +../fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf::U+0D4E,U+0D15,U+0D4D,U+0D15,U+0D46:[uni0D15=0+500|uni0D4E=0+500|uni0D4D=0+500|uni0D46=3+500|uni0D15=3+500] +../fonts/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf::U+1102D,U+11046,U+11013,U+11046,U+11013,U+11046:[u11013=0+500|u11046_u11013=0+500|u1102D_u11046=0+500|u11046=0+500] diff --git a/test/shaping/data/in-house/tests/vertical.tests b/test/shaping/data/in-house/tests/vertical.tests index 17df28e..3958813 100644 --- a/test/shaping/data/in-house/tests/vertical.tests +++ b/test/shaping/data/in-house/tests/vertical.tests @@ -1,3 +1,4 @@ ../fonts/191826b9643e3f124d865d617ae609db6a2ce203.ttf:--direction=t --font-funcs=ft:U+300C:[uni300C.vert=0@-512,-578+0,-1024] ../fonts/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf:--direction=t --font-funcs=ft:U+0041,U+0042:[gid1=0@-654,-2128+0,-2789|gid2=1@-665,-2125+0,-2789] -../fonts/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf:--direction=t --font-funcs=ot:U+0041,U+0042:[gid1=0@-654,-2189+0,-2789|gid2=1@-665,-2189+0,-2789] +../fonts/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf:--direction=t --font-funcs=ot:U+0041,U+0042:[gid1=0@-654,-1468+0,-2048|gid2=1@-665,-1462+0,-2048] +../fonts/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf:--direction=t --font-funcs=ot:U+FF38:[gid2=0@-500,-867+0,-1000] diff --git a/test/shaping/data/text-rendering-tests/Makefile.in b/test/shaping/data/text-rendering-tests/Makefile.in index c164de2..ca784f5 100644 --- a/test/shaping/data/text-rendering-tests/Makefile.in +++ b/test/shaping/data/text-rendering-tests/Makefile.in @@ -94,12 +94,26 @@ TESTS = tests/AVAR-1.tests tests/CFF-1.tests tests/CFF2-1.tests \ tests/CVAR-1.tests tests/CVAR-2.tests tests/GLYF-1.tests \ tests/GPOS-1.tests tests/GPOS-2.tests tests/GPOS-3.tests \ tests/GPOS-4.tests tests/GPOS-5.tests tests/GSUB-1.tests \ - tests/GSUB-2.tests tests/GVAR-1.tests tests/GVAR-2.tests \ - tests/GVAR-3.tests tests/GVAR-4.tests tests/GVAR-5.tests \ - tests/GVAR-6.tests tests/GVAR-7.tests tests/GVAR-8.tests \ - tests/GVAR-9.tests tests/HVAR-1.tests tests/HVAR-2.tests \ - tests/KERN-1.tests tests/KERN-2.tests tests/SHBALI-3.tests \ - tests/SHKNDA-1.tests $(am__EXEEXT_1) + tests/GSUB-2.tests tests/GSUB-3.tests tests/GVAR-1.tests \ + tests/GVAR-2.tests tests/GVAR-3.tests tests/GVAR-4.tests \ + tests/GVAR-5.tests tests/GVAR-6.tests tests/GVAR-7.tests \ + tests/GVAR-8.tests tests/GVAR-9.tests tests/HVAR-1.tests \ + tests/HVAR-2.tests tests/KERN-1.tests tests/KERN-2.tests \ + tests/MORX-10.tests tests/MORX-11.tests tests/MORX-12.tests \ + tests/MORX-13.tests tests/MORX-14.tests tests/MORX-16.tests \ + tests/MORX-17.tests tests/MORX-18.tests tests/MORX-19.tests \ + tests/MORX-1.tests tests/MORX-20.tests tests/MORX-21.tests \ + tests/MORX-22.tests tests/MORX-23.tests tests/MORX-24.tests \ + tests/MORX-25.tests tests/MORX-26.tests tests/MORX-27.tests \ + tests/MORX-28.tests tests/MORX-29.tests tests/MORX-2.tests \ + tests/MORX-30.tests tests/MORX-31.tests tests/MORX-32.tests \ + tests/MORX-33.tests tests/MORX-34.tests tests/MORX-35.tests \ + tests/MORX-36.tests tests/MORX-37.tests tests/MORX-38.tests \ + tests/MORX-39.tests tests/MORX-3.tests tests/MORX-40.tests \ + tests/MORX-41.tests tests/MORX-4.tests tests/MORX-5.tests \ + tests/MORX-6.tests tests/MORX-7.tests tests/MORX-8.tests \ + tests/MORX-9.tests tests/SHBALI-3.tests tests/SHKNDA-1.tests \ + $(am__EXEEXT_1) subdir = test/shaping/data/text-rendering-tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ @@ -107,8 +121,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -458,6 +471,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -540,32 +555,8 @@ TEST_EXTENSIONS = .tests TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT) DISBALED_TESTS = \ tests/CMAP-3.tests \ - tests/MORX-10.tests \ - tests/MORX-11.tests \ - tests/MORX-12.tests \ - tests/MORX-13.tests \ - tests/MORX-14.tests \ - tests/MORX-16.tests \ - tests/MORX-17.tests \ - tests/MORX-18.tests \ - tests/MORX-19.tests \ - tests/MORX-1.tests \ - tests/MORX-20.tests \ - tests/MORX-21.tests \ - tests/MORX-22.tests \ - tests/MORX-23.tests \ - tests/MORX-25.tests \ - tests/MORX-26.tests \ - tests/MORX-27.tests \ - tests/MORX-28.tests \ - tests/MORX-2.tests \ - tests/MORX-3.tests \ - tests/MORX-4.tests \ - tests/MORX-5.tests \ - tests/MORX-6.tests \ - tests/MORX-7.tests \ - tests/MORX-8.tests \ - tests/MORX-9.tests \ + tests/MORX-31.tests \ + tests/MORX-41.tests \ tests/SHARAN-1.tests \ tests/SHBALI-1.tests \ tests/SHBALI-2.tests \ diff --git a/test/shaping/data/text-rendering-tests/Makefile.sources b/test/shaping/data/text-rendering-tests/Makefile.sources index 4be9d05..ccbbb37 100644 --- a/test/shaping/data/text-rendering-tests/Makefile.sources +++ b/test/shaping/data/text-rendering-tests/Makefile.sources @@ -15,6 +15,7 @@ TESTS = \ tests/GPOS-5.tests \ tests/GSUB-1.tests \ tests/GSUB-2.tests \ + tests/GSUB-3.tests \ tests/GVAR-1.tests \ tests/GVAR-2.tests \ tests/GVAR-3.tests \ @@ -28,12 +29,6 @@ TESTS = \ tests/HVAR-2.tests \ tests/KERN-1.tests \ tests/KERN-2.tests \ - tests/SHBALI-3.tests \ - tests/SHKNDA-1.tests \ - $(NULL) - -DISBALED_TESTS = \ - tests/CMAP-3.tests \ tests/MORX-10.tests \ tests/MORX-11.tests \ tests/MORX-12.tests \ @@ -48,18 +43,40 @@ DISBALED_TESTS = \ tests/MORX-21.tests \ tests/MORX-22.tests \ tests/MORX-23.tests \ + tests/MORX-24.tests \ tests/MORX-25.tests \ tests/MORX-26.tests \ tests/MORX-27.tests \ tests/MORX-28.tests \ + tests/MORX-29.tests \ tests/MORX-2.tests \ + tests/MORX-30.tests \ + tests/MORX-31.tests \ + tests/MORX-32.tests \ + tests/MORX-33.tests \ + tests/MORX-34.tests \ + tests/MORX-35.tests \ + tests/MORX-36.tests \ + tests/MORX-37.tests \ + tests/MORX-38.tests \ + tests/MORX-39.tests \ tests/MORX-3.tests \ + tests/MORX-40.tests \ + tests/MORX-41.tests \ tests/MORX-4.tests \ tests/MORX-5.tests \ tests/MORX-6.tests \ tests/MORX-7.tests \ tests/MORX-8.tests \ tests/MORX-9.tests \ + tests/SHBALI-3.tests \ + tests/SHKNDA-1.tests \ + $(NULL) + +DISBALED_TESTS = \ + tests/CMAP-3.tests \ + tests/MORX-31.tests \ + tests/MORX-41.tests \ tests/SHARAN-1.tests \ tests/SHBALI-1.tests \ tests/SHBALI-2.tests \ diff --git a/test/shaping/data/text-rendering-tests/extract-tests.py b/test/shaping/data/text-rendering-tests/extract-tests.py index 36963e5..f1722b5 100755 --- a/test/shaping/data/text-rendering-tests/extract-tests.py +++ b/test/shaping/data/text-rendering-tests/extract-tests.py @@ -28,12 +28,13 @@ def glyphstr(glyphs): html = ET.fromstring(sys.stdin.read()) found = False + for elt in html.findall(".//*[@class='expected'][@ft:id]", namespaces): found = True name = elt.get(ns('ft:id')) text = elt.get(ns('ft:render')) font = elt.get(ns('ft:font')) - vars = elt.get(ns('ft:var'), '').replace(':', '=').replace(';', ',') + variations = elt.get(ns('ft:var'), '').replace(':', '=').replace(';', ',') glyphs = [] for use in elt.findall(".//use"): x = int(use.get('x')) @@ -43,8 +44,19 @@ for elt in html.findall(".//*[@class='expected'][@ft:id]", namespaces): glyphname = '.'.join(href[1:].split('/')[1].split('.')[1:]) glyphs.append((glyphname, x, y)) opts = '--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft' - if vars: - opts = opts + ' --variations=%s' % vars + if variations: + opts = opts + ' --variations=%s' % variations print ("../fonts/%s:%s:%s:%s" % (font, opts, unistr(text), glyphstr(glyphs))) +for elt in html.findall(".//*[@class='expected-no-crash'][@ft:id]", namespaces): + found = True + name = elt.get(ns('ft:id')) + text = elt.get(ns('ft:render')) + font = elt.get(ns('ft:font')) + variations = elt.get(ns('ft:var'), '').replace(':', '=').replace(';', ',') + opts = '' + if variations: + opts = '--variations=%s' % variations + print ("../fonts/%s:%s:%s:*" % (font, opts, unistr(text))) + sys.exit(0 if found else 1) diff --git a/test/shaping/data/text-rendering-tests/fonts/TestGSUBThree.ttf b/test/shaping/data/text-rendering-tests/fonts/TestGSUBThree.ttf Binary files differnew file mode 100644 index 0000000..8fce4ac --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestGSUBThree.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestGVAR-Composite-0.ttf b/test/shaping/data/text-rendering-tests/fonts/TestGVAR-Composite-0.ttf Binary files differnew file mode 100644 index 0000000..07e6882 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestGVAR-Composite-0.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestGVAR-Composite-Missing.ttf b/test/shaping/data/text-rendering-tests/fonts/TestGVAR-Composite-Missing.ttf Binary files differnew file mode 100644 index 0000000..58dd961 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestGVAR-Composite-Missing.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXForty.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXForty.ttf Binary files differnew file mode 100644 index 0000000..37d0b63 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXForty.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf Binary files differnew file mode 100644 index 0000000..98ebe33 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyeight.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyeight.ttf Binary files differnew file mode 100644 index 0000000..29a41d0 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyeight.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyfive.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyfive.ttf Binary files differnew file mode 100644 index 0000000..f157063 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyfive.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyfour.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyfour.ttf Binary files differnew file mode 100644 index 0000000..a70dadc --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyfour.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtynine.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtynine.ttf Binary files differnew file mode 100644 index 0000000..c106ae9 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtynine.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyone.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyone.ttf Binary files differnew file mode 100644 index 0000000..c64c12c --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyone.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyseven.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyseven.ttf Binary files differnew file mode 100644 index 0000000..22057f1 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtyseven.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtysix.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtysix.ttf Binary files differnew file mode 100644 index 0000000..6676e52 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtysix.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtythree.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtythree.ttf Binary files differnew file mode 100644 index 0000000..5cab73e --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtythree.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtytwo.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtytwo.ttf Binary files differnew file mode 100644 index 0000000..07ed76c --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXThirtytwo.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyfour.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyfour.ttf Binary files differnew file mode 100644 index 0000000..271dddb --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentyfour.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentynine.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentynine.ttf Binary files differnew file mode 100644 index 0000000..9f015ca --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestMORXTwentynine.ttf diff --git a/test/shaping/data/text-rendering-tests/fonts/TestTRAKOne.ttf b/test/shaping/data/text-rendering-tests/fonts/TestTRAKOne.ttf Binary files differnew file mode 100644 index 0000000..425bce6 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/fonts/TestTRAKOne.ttf diff --git a/test/shaping/data/text-rendering-tests/tests/GSUB-3.tests b/test/shaping/data/text-rendering-tests/tests/GSUB-3.tests new file mode 100644 index 0000000..c2f7e6e --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/GSUB-3.tests @@ -0,0 +1 @@ +../fonts/TestGSUBThree.ttf::U+006C,U+006F,U+006C:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-1.tests b/test/shaping/data/text-rendering-tests/tests/MORX-1.tests new file mode 100644 index 0000000..794b01b --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-1.tests @@ -0,0 +1 @@ +../fonts/TestMORXOne.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043:[A.alt|B@1000,0|C.alt@2000,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-10.tests b/test/shaping/data/text-rendering-tests/tests/MORX-10.tests new file mode 100644 index 0000000..a6a5444 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-10.tests @@ -0,0 +1 @@ +../fonts/TestMORXTen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0041,U+0042,U+0041,U+0042:[A|B@638,0|A@1288,0|B@1926,0|B@2576,0|A@3226,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-11.tests b/test/shaping/data/text-rendering-tests/tests/MORX-11.tests new file mode 100644 index 0000000..1fce69b --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-11.tests @@ -0,0 +1 @@ +../fonts/TestMORXEleven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042,U+0041,U+0042,U+0042,U+0041,U+0041,U+0042,U+0058:[B|A@650,0|B@1288,0|B@1938,0|A@2588,0|X@3226,0|A@3812,0|B@4450,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-12.tests b/test/shaping/data/text-rendering-tests/tests/MORX-12.tests new file mode 100644 index 0000000..8b9886f --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-12.tests @@ -0,0 +1,3 @@ +../fonts/TestMORXTwelve.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0042,U+0043,U+0058,U+0031:[X|C@598,0|A@1230,0|B@1868,0|X@2518,0|one@3116,0] +../fonts/TestMORXTwelve.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0042,U+0043,U+0058,U+0032:[X|C@598,0|A@1230,0|B@1868,0|X@2518,0|two@3116,0] +../fonts/TestMORXTwelve.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0042,U+0043,U+0058,U+0033:[X|B@598,0|C@1248,0|A@1880,0|X@2518,0|three@3116,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-13.tests b/test/shaping/data/text-rendering-tests/tests/MORX-13.tests new file mode 100644 index 0000000..42d8107 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-13.tests @@ -0,0 +1 @@ +../fonts/TestMORXThirteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[B|C@626,0|D@1222,0|E@1896,0|A@2452,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-14.tests b/test/shaping/data/text-rendering-tests/tests/MORX-14.tests new file mode 100644 index 0000000..d01f2e9 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-14.tests @@ -0,0 +1,2 @@ +../fonts/TestMORXFourteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[B|C@626,0|D@1222,0|E@1896,0|A@2452,0] +../fonts/TestMORXFourteen.ttf::U+0041,U+0042,U+0042,U+0042,U+0043,U+0043,U+0043,U+0044,U+0044,U+0044,U+0042,U+0043,U+0044,U+0043,U+0045:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-16.tests b/test/shaping/data/text-rendering-tests/tests/MORX-16.tests new file mode 100644 index 0000000..ce0d5b2 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-16.tests @@ -0,0 +1 @@ +../fonts/TestMORXSixteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[B|C@626,0|D@1222,0|E@1896,0|A@2452,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-17.tests b/test/shaping/data/text-rendering-tests/tests/MORX-17.tests new file mode 100644 index 0000000..6e1c94c --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-17.tests @@ -0,0 +1 @@ +../fonts/TestMORXSeventeen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[B|A@626,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-18.tests b/test/shaping/data/text-rendering-tests/tests/MORX-18.tests new file mode 100644 index 0000000..b032a76 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-18.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A|B.alt@639,0|C@1639,0|D.alt1@2235,0|E@3235,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0042,U+0042,U+0044,U+0045:[A|B@639,0|B@1265,0|B.alt@1891,0|D.alt1@2891,0|E@3891,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0044,U+0045:[A|B.alt@639,0|D.alt1@1639,0|E@2639,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0045:[A|B@639,0|E@1265,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-19.tests b/test/shaping/data/text-rendering-tests/tests/MORX-19.tests new file mode 100644 index 0000000..e9b9dc4 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-19.tests @@ -0,0 +1,2 @@ +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0043,U+0044,U+0045:[A.alt|C@1000,0|D.alt1@1596,0|E@2596,0] +../fonts/TestMORXEighteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0044:[D.alt] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-2.tests b/test/shaping/data/text-rendering-tests/tests/MORX-2.tests new file mode 100644 index 0000000..3e64d23 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-2.tests @@ -0,0 +1,16 @@ +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+24FF:[O|O@418,0|O@836,0|A@1254,0|B@2084,0|X@2914,0|Y@3744,0|Z@4574,0|C@5404,0|D@6234,0|O@7064,0|O@7482,0|O@7900,0|zero@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+278A:[O|O@418,0|O@836,0|B@1254,0|X@2084,0|Y@2914,0|Z@3744,0|C@4574,0|D@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|one@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+278B:[O|O@418,0|O@836,0|D@1254,0|A@2084,0|B@2914,0|X@3744,0|Y@4574,0|Z@5404,0|C@6234,0|O@7064,0|O@7482,0|O@7900,0|two@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0033:[O|O@418,0|O@836,0|D@1254,0|B@2084,0|X@2914,0|Y@3744,0|Z@4574,0|C@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|three@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0034:[O|O@418,0|O@836,0|X@1254,0|Y@2084,0|Z@2914,0|C@3744,0|D@4574,0|A@5404,0|B@6234,0|O@7064,0|O@7482,0|O@7900,0|four@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0035:[O|O@418,0|O@836,0|X@1254,0|Y@2084,0|Z@2914,0|C@3744,0|D@4574,0|B@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|five@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0036:[O|O@418,0|O@836,0|C@1254,0|D@2084,0|A@2914,0|B@3744,0|X@4574,0|Y@5404,0|Z@6234,0|O@7064,0|O@7482,0|O@7900,0|six@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0037:[O|O@418,0|O@836,0|D@1254,0|C@2084,0|A@2914,0|B@3744,0|X@4574,0|Y@5404,0|Z@6234,0|O@7064,0|O@7482,0|O@7900,0|seven@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0038:[O|O@418,0|O@836,0|C@1254,0|D@2084,0|B@2914,0|X@3744,0|Y@4574,0|Z@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|eight@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+0039:[O|O@418,0|O@836,0|D@1254,0|C@2084,0|B@2914,0|X@3744,0|Y@4574,0|Z@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|nine@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+2793:[O|O@418,0|O@836,0|D@1254,0|X@2084,0|Y@2914,0|Z@3744,0|C@4574,0|A@5404,0|B@6234,0|O@7064,0|O@7482,0|O@7900,0|one_zero@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+24EB:[O|O@418,0|O@836,0|D@1254,0|X@2084,0|Y@2914,0|Z@3744,0|C@4574,0|B@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|one_one@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+24EC:[O|O@418,0|O@836,0|C@1254,0|D@2084,0|X@2914,0|Y@3744,0|Z@4574,0|A@5404,0|B@6234,0|O@7064,0|O@7482,0|O@7900,0|one_two@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+24ED:[O|O@418,0|O@836,0|C@1254,0|D@2084,0|X@2914,0|Y@3744,0|Z@4574,0|B@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|one_three@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+24EE:[O|O@418,0|O@836,0|D@1254,0|C@2084,0|X@2914,0|Y@3744,0|Z@4574,0|A@5404,0|B@6234,0|O@7064,0|O@7482,0|O@7900,0|one_four@8318,0] +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0058,U+0059,U+005A,U+0043,U+0044,U+004F,U+004F,U+004F,U+24EF:[O|O@418,0|O@836,0|D@1254,0|C@2084,0|X@2914,0|Y@3744,0|Z@4574,0|B@5404,0|A@6234,0|O@7064,0|O@7482,0|O@7900,0|one_five@8318,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-20.tests b/test/shaping/data/text-rendering-tests/tests/MORX-20.tests new file mode 100644 index 0000000..8d04192 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-20.tests @@ -0,0 +1,7 @@ +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A|B@639,0|C.alt@1265,0|D@2265,0|E.alt1@2939,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043:[A|B@639,0|C.alt@1265,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0045:[A|B.alt@639,0|E.alt1@1639,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045:[A.alt|E.alt1@1000,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0045,U+0045:[E|E@556,0] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[A.alt] +../fonts/TestMORXTwenty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0045:[E] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-21.tests b/test/shaping/data/text-rendering-tests/tests/MORX-21.tests new file mode 100644 index 0000000..a608755 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-21.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwentyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A|B.alt@639,0|C@1639,0|D@2235,0|E@2909,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-22.tests b/test/shaping/data/text-rendering-tests/tests/MORX-22.tests new file mode 100644 index 0000000..960874c --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-22.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwentytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[C] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-23.tests b/test/shaping/data/text-rendering-tests/tests/MORX-23.tests new file mode 100644 index 0000000..9575a80 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-23.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwentythree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[E|E@556,0|E@1112,0|E@1668,0|E@2224,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-24.tests b/test/shaping/data/text-rendering-tests/tests/MORX-24.tests new file mode 100644 index 0000000..79a3d7b --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-24.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwentyfour.ttf::U+0041,U+0042,U+0043,U+0044,U+0045:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-25.tests b/test/shaping/data/text-rendering-tests/tests/MORX-25.tests new file mode 100644 index 0000000..ccd0563 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-25.tests @@ -0,0 +1,9 @@ +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[A.alt|B.alt@1000,0|C.alt@2000,0|D.alt@3000,0|E.alt@4000,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0045,U+0042,U+0043,U+0044,U+0041:[E|B@556,0|C@1182,0|D@1778,0|A@2452,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0043,U+0042,U+0041,U+0042,U+0043:[C|B@596,0|A.alt@1222,0|B.alt@2222,0|C.alt@3222,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043:[A.alt|B.alt@1000,0|C.alt@2000,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0043,U+0042,U+0041:[C|B@596,0|A@1222,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[A.alt|B.alt@1000,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042,U+0041:[B|A@626,0] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[A] +../fonts/TestMORXTwentyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042:[B] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-26.tests b/test/shaping/data/text-rendering-tests/tests/MORX-26.tests new file mode 100644 index 0000000..bebae60 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-26.tests @@ -0,0 +1,2 @@ +../fonts/TestMORXTwentysix.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[A|B@639,0] +../fonts/TestMORXTwentysix.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042:[B.alt] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-27.tests b/test/shaping/data/text-rendering-tests/tests/MORX-27.tests new file mode 100644 index 0000000..1ec96a2 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-27.tests @@ -0,0 +1,3 @@ +../fonts/TestMORXTwentyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045,U+0042:[A_E_B] +../fonts/TestMORXTwentyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045,U+0043:[A_E_C] +../fonts/TestMORXTwentyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045,U+0044:[A_E_D] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-28.tests b/test/shaping/data/text-rendering-tests/tests/MORX-28.tests new file mode 100644 index 0000000..59f5d25 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-28.tests @@ -0,0 +1,5 @@ +../fonts/TestMORXTwentyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045,U+0044:[A_E_D] +../fonts/TestMORXTwentyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0078,U+0045,U+0044:[A_E_D|x@1394,0] +../fonts/TestMORXTwentyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0045,U+0079,U+0044:[A_E_D|y@1394,0] +../fonts/TestMORXTwentyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0078,U+0045,U+0079,U+0044:[A_E_D|x@1394,0|y@1923,0] +../fonts/TestMORXTwentyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0078,U+0078,U+0078,U+0045,U+0079,U+0079,U+0079,U+0044:[A_E_D|x@1394,0|x@1923,0|x@2452,0|y@2981,0|y@3491,0|y@4001,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-29.tests b/test/shaping/data/text-rendering-tests/tests/MORX-29.tests new file mode 100644 index 0000000..82fd963 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-29.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+004D,U+004D,U+0059,U+0059,U+0041,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|M@1880,0|X@2710,0|X@3074,0|M@3438,0|I@4268,0|N@5098,0|S@5928,0|M@6758,0|Y@7588,0|Y@7920,0|A@8252,0|Z@9082,0|Z@9404,0] +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+004D,U+004D,U+0059,U+0059,U+0042,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|M@1880,0|X@2710,0|X@3074,0|M@3438,0|M@4268,0|I@5098,0|N@5928,0|S@6758,0|Y@7588,0|Y@7920,0|B@8252,0|Z@9082,0|Z@9404,0] +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+004D,U+004D,U+0059,U+0059,U+0043,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|M@1880,0|X@2710,0|X@3074,0|M@3438,0|M@4268,0|Y@5098,0|Y@5430,0|I@5762,0|N@6592,0|S@7422,0|C@8252,0|Z@9082,0|Z@9404,0] +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+004D,U+004D,U+0059,U+0059,U+0044,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|M@1880,0|X@2710,0|X@3074,0|M@3438,0|M@4268,0|Y@5098,0|Y@5430,0|D@5762,0|I@6592,0|N@7422,0|S@8252,0|Z@9082,0|Z@9404,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-3.tests b/test/shaping/data/text-rendering-tests/tests/MORX-3.tests new file mode 100644 index 0000000..fc7fe94 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-3.tests @@ -0,0 +1,16 @@ +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0030:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|zero@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0031:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0032:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|two@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0033:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|three@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0034:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|four@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0035:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|five@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0036:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|six@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0037:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|seven@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0038:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|eight@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+0039:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|nine@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+2793:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one_zero@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+24EB:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one_one@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+24EC:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one_two@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+24ED:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one_three@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+24EE:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one_four@1793,0] +../fonts/TestMORXThree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0043,U+0044,U+24EF:[A|B@363,0|X@722,0|C@1086,0|D@1402,0|one_five@1793,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-30.tests b/test/shaping/data/text-rendering-tests/tests/MORX-30.tests new file mode 100644 index 0000000..ad4ab21 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-30.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+0058,U+0041,U+0059,U+0059,U+0041,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|I@1880,0|N@2710,0|S@3540,0|I@4370,0|N@5200,0|S@6030,0|M@6860,0|X@7690,0|X@8054,0|X@8418,0|A@8782,0|Y@9612,0|Y@9944,0|A@10276,0|Z@11106,0|Z@11428,0] +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+0058,U+0041,U+0059,U+0059,U+0042,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|I@1880,0|I@2710,0|N@3540,0|S@4370,0|N@5200,0|S@6030,0|M@6860,0|X@7690,0|X@8054,0|X@8418,0|A@8782,0|Y@9612,0|Y@9944,0|B@10276,0|Z@11106,0|Z@11428,0] +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+0058,U+0042,U+0059,U+0059,U+0041,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|I@1880,0|N@2710,0|S@3540,0|M@4370,0|I@5200,0|N@6030,0|S@6860,0|X@7690,0|X@8054,0|X@8418,0|B@8782,0|Y@9612,0|Y@9944,0|A@10276,0|Z@11106,0|Z@11428,0] +../fonts/TestMORXTwentynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+004D,U+004D,U+0058,U+0058,U+0058,U+0042,U+0059,U+0059,U+0042,U+005A,U+005A:[P|Q@333,0|R@699,0|M@1050,0|M@1880,0|I@2710,0|N@3540,0|S@4370,0|I@5200,0|N@6030,0|S@6860,0|X@7690,0|X@8054,0|X@8418,0|B@8782,0|Y@9612,0|Y@9944,0|B@10276,0|Z@11106,0|Z@11428,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-31.tests b/test/shaping/data/text-rendering-tests/tests/MORX-31.tests new file mode 100644 index 0000000..ac09e27 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-31.tests @@ -0,0 +1,8 @@ +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0058,U+0041,U+0059,U+0059,U+0041,U+005A,U+005A:[I|N@830,0|I@1660,0|N@2490,0|S@3320,0|S@4150,0|X@4980,0|X@5344,0|A@5708,0|Y@6538,0|Y@6870,0|A@7202,0|Z@8032,0|Z@8354,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0058,U+0041,U+0059,U+0059,U+0042,U+0059,U+0059:[I|N@830,0|S@1660,0|I@2490,0|N@3320,0|S@4150,0|X@4980,0|X@5344,0|A@5708,0|Y@6538,0|Y@6870,0|B@7202,0|Y@8032,0|Y@8364,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0058,U+0042,U+0059,U+0059,U+0041,U+005A,U+005A:[X|I@364,0|I@1194,0|N@2024,0|S@2854,0|N@3684,0|S@4514,0|X@5344,0|B@5708,0|Y@6538,0|Y@6870,0|A@7202,0|Z@8032,0|Z@8354,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0058,U+0042,U+0059,U+0059,U+0042,U+005A,U+005A:[X|I@364,0|N@1194,0|I@2024,0|N@2854,0|S@3684,0|S@4514,0|X@5344,0|B@5708,0|Y@6538,0|Y@6870,0|B@7202,0|Z@8032,0|Z@8354,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004D,U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0041:[I|N@830,0|S@1660,0|M@2490,0|I@3320,0|N@4150,0|S@4980,0|P@5810,0|Q@6143,0|R@6509,0|A@6860,0|X@7690,0|Y@8054,0|Z@8386,0|A@8708,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004D,U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0042:[I|N@830,0|S@1660,0|M@2490,0|P@3320,0|I@3653,0|N@4483,0|S@5313,0|Q@6143,0|R@6509,0|A@6860,0|X@7690,0|Y@8054,0|Z@8386,0|B@8708,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004D,U+0050,U+0051,U+0052,U+0042,U+0058,U+0059,U+005A,U+0041:[M|I@830,0|N@1660,0|S@2490,0|I@3320,0|N@4150,0|S@4980,0|P@5810,0|Q@6143,0|R@6509,0|B@6860,0|X@7690,0|Y@8054,0|Z@8386,0|A@8708,0] +../fonts/TestMORXThirtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004D,U+0050,U+0051,U+0052,U+0042,U+0058,U+0059,U+005A,U+0042:[M|I@830,0|N@1660,0|S@2490,0|P@3320,0|I@3653,0|N@4483,0|S@5313,0|Q@6143,0|R@6509,0|B@6860,0|X@7690,0|Y@8054,0|Z@8386,0|B@8708,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-32.tests b/test/shaping/data/text-rendering-tests/tests/MORX-32.tests new file mode 100644 index 0000000..6f3ae88 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-32.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[I|N@830,0|S@1660,0|A@2490,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0059:[I|N@830,0|S@1660,0|X@2490,0|A@2854,0|Y@3684,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042:[B|I@830,0|N@1660,0|S@2490,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0042,U+0059:[X|I@364,0|N@1194,0|S@2024,0|B@2854,0|Y@3684,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-33.tests b/test/shaping/data/text-rendering-tests/tests/MORX-33.tests new file mode 100644 index 0000000..17d080a --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-33.tests @@ -0,0 +1,3 @@ +../fonts/TestMORXThirtythree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0068,U+0061:[h|a@618,0|h@1179,0|a@1797,0] +../fonts/TestMORXThirtythree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0068,U+0061,U+0068,U+0061:[h|a@618,0|h@1179,0|a@1797,0|h@2358,0|a@2976,0|h@3537,0|a@4155,0] +../fonts/TestMORXThirtythree.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0061,U+0068:[a|h@561,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-34.tests b/test/shaping/data/text-rendering-tests/tests/MORX-34.tests new file mode 100644 index 0000000..8c309df --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-34.tests @@ -0,0 +1 @@ +../fonts/TestMORXThirtyfour.ttf::U+0068,U+0061:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-35.tests b/test/shaping/data/text-rendering-tests/tests/MORX-35.tests new file mode 100644 index 0000000..a033185 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-35.tests @@ -0,0 +1,2 @@ +../fonts/TestMORXThirtyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[A|B@639,0|C@1265,0|E@1861,0] +../fonts/TestMORXThirtyfive.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0059:[X|A@586,0|B@1225,0|C@1851,0|E@2447,0|Y@3003,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-36.tests b/test/shaping/data/text-rendering-tests/tests/MORX-36.tests new file mode 100644 index 0000000..6b2340e --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-36.tests @@ -0,0 +1 @@ +../fonts/TestMORXThirtysix.ttf::U+0041:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-37.tests b/test/shaping/data/text-rendering-tests/tests/MORX-37.tests new file mode 100644 index 0000000..f28c5e2 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-37.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXThirtyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[A.alt|B.alt@1000,0] +../fonts/TestMORXThirtyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042,U+0041:[B|A@650,0] +../fonts/TestMORXThirtyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D0,U+05D1:[uni05D1|uni05D0@542,0] +../fonts/TestMORXThirtyseven.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D1,U+05D0:[uni05D0.alt|uni05D1.alt@1000,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-38.tests b/test/shaping/data/text-rendering-tests/tests/MORX-38.tests new file mode 100644 index 0000000..abefe29 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-38.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXThirtyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[A.alt|B.alt@1000,0] +../fonts/TestMORXThirtyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042,U+0041:[B|A@650,0] +../fonts/TestMORXThirtyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D0,U+05D1:[uni05D1.alt|uni05D0.alt@1000,0] +../fonts/TestMORXThirtyeight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D1,U+05D0:[uni05D0|uni05D1@606,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-39.tests b/test/shaping/data/text-rendering-tests/tests/MORX-39.tests new file mode 100644 index 0000000..83bfa52 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-39.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXThirtynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[A|B@639,0] +../fonts/TestMORXThirtynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042,U+0041:[B.alt|A.alt@1000,0] +../fonts/TestMORXThirtynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D0,U+05D1:[uni05D1.alt|uni05D0.alt@1000,0] +../fonts/TestMORXThirtynine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D1,U+05D0:[uni05D0|uni05D1@606,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-4.tests b/test/shaping/data/text-rendering-tests/tests/MORX-4.tests new file mode 100644 index 0000000..cbb1ce8 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-4.tests @@ -0,0 +1,15 @@ +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0031:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0032:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|two@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0044,U+0058,U+0059,U+005A,U+0033:[P|Q@333,0|R@699,0|D@1050,0|A@1880,0|X@2710,0|Y@3074,0|Z@3406,0|three@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+0034:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|four@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+0035:[P|Q@333,0|R@699,0|B@1050,0|A@1880,0|X@2710,0|Y@3074,0|Z@3406,0|five@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+0036:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|six@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+0037:[P|Q@333,0|R@699,0|B@1050,0|A@1880,0|X@2710,0|Y@3074,0|Z@3406,0|seven@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0043,U+0044,U+0058,U+0059,U+005A,U+0038:[P|Q@333,0|R@699,0|C@1050,0|D@1880,0|A@2710,0|X@3540,0|Y@3904,0|Z@4236,0|eight@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0043,U+0044,U+0058,U+0059,U+005A,U+0039:[P|Q@333,0|R@699,0|D@1050,0|C@1880,0|A@2710,0|X@3540,0|Y@3904,0|Z@4236,0|nine@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0044,U+0058,U+0059,U+005A,U+2793:[P|Q@333,0|R@699,0|D@1050,0|A@1880,0|B@2710,0|X@3540,0|Y@3904,0|Z@4236,0|one_zero@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0044,U+0058,U+0059,U+005A,U+24EB:[P|Q@333,0|R@699,0|D@1050,0|B@1880,0|A@2710,0|X@3540,0|Y@3904,0|Z@4236,0|one_one@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0044,U+0058,U+0059,U+005A,U+24EC:[P|Q@333,0|R@699,0|C@1050,0|D@1880,0|A@2710,0|B@3540,0|X@4370,0|Y@4734,0|Z@5066,0|one_two@5388,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0044,U+0058,U+0059,U+005A,U+24ED:[P|Q@333,0|R@699,0|C@1050,0|D@1880,0|B@2710,0|A@3540,0|X@4370,0|Y@4734,0|Z@5066,0|one_three@5388,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0044,U+0058,U+0059,U+005A,U+24EE:[P|Q@333,0|R@699,0|D@1050,0|C@1880,0|A@2710,0|B@3540,0|X@4370,0|Y@4734,0|Z@5066,0|one_four@5388,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0044,U+0058,U+0059,U+005A,U+24EF:[P|Q@333,0|R@699,0|D@1050,0|C@1880,0|B@2710,0|A@3540,0|X@4370,0|Y@4734,0|Z@5066,0|one_five@5388,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-40.tests b/test/shaping/data/text-rendering-tests/tests/MORX-40.tests new file mode 100644 index 0000000..c99155e --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-40.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXForty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042:[A|B@639,0] +../fonts/TestMORXForty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042,U+0041:[B.alt|A.alt@1000,0] +../fonts/TestMORXForty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D0,U+05D1:[uni05D1|uni05D0@542,0] +../fonts/TestMORXForty.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+05D1,U+05D0:[uni05D0.alt|uni05D1.alt@1000,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-41.tests b/test/shaping/data/text-rendering-tests/tests/MORX-41.tests new file mode 100644 index 0000000..815bebe --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-41.tests @@ -0,0 +1,4 @@ +../fonts/TestMORXFourtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0061,U+0063:[a_c] +../fonts/TestMORXFourtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0062,U+0063:[b_c] +../fonts/TestMORXFourtyone.ttf::U+0063,U+0063:* +../fonts/TestMORXFourtyone.ttf::U+0061,U+0062,U+0063,U+0063:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-5.tests b/test/shaping/data/text-rendering-tests/tests/MORX-5.tests new file mode 100644 index 0000000..ca8d086 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-5.tests @@ -0,0 +1,25 @@ +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0033:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|three@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0034:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|four@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0035:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|five@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0036:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|six@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0037:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|seven@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0038:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|eight@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+0038:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|eight@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+0039:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|nine@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+0039:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|nine@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+2793:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one_zero@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+2793:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|one_zero@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+24EB:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one_one@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+24EB:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|one_one@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+24EC:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one_two@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+24EC:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|one_two@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0058,U+0059,U+005A,U+24EC:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|C@2710,0|X@3540,0|Y@3904,0|Z@4236,0|one_two@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+24ED:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one_three@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+24ED:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|one_three@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0058,U+0059,U+005A,U+24ED:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|C@2710,0|X@3540,0|Y@3904,0|Z@4236,0|one_three@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+24EE:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one_four@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+24EE:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|one_four@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0058,U+0059,U+005A,U+24EE:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|C@2710,0|X@3540,0|Y@3904,0|Z@4236,0|one_four@4558,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0058,U+0059,U+005A,U+24EF:[P|Q@333,0|R@699,0|A@1050,0|X@1880,0|Y@2244,0|Z@2576,0|one_five@2898,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0058,U+0059,U+005A,U+24EF:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|X@2710,0|Y@3074,0|Z@3406,0|one_five@3728,0] +../fonts/TestMORXFour.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0050,U+0051,U+0052,U+0041,U+0042,U+0043,U+0058,U+0059,U+005A,U+24EF:[P|Q@333,0|R@699,0|A@1050,0|B@1880,0|C@2710,0|X@3540,0|Y@3904,0|Z@4236,0|one_five@4558,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-6.tests b/test/shaping/data/text-rendering-tests/tests/MORX-6.tests new file mode 100644 index 0000000..ff9c061 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-6.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+004F,U+004F,U+0041,U+0042,U+0043,U+0044,U+0045,U+0046,U+0047,U+004F,U+004F,U+004F,U+0033,U+0031,U+0034,U+0031:[O|O@418,0|O@836,0|E@1254,0|F@2084,0|A@2914,0|G@3744,0|B@4574,0|C@5404,0|D@6234,0|O@7064,0|O@7482,0|O@7900,0|three@8318,0|one@9168,0|four@10018,0|one@10868,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-7.tests b/test/shaping/data/text-rendering-tests/tests/MORX-7.tests new file mode 100644 index 0000000..f250848 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-7.tests @@ -0,0 +1 @@ +../fonts/TestMORXTwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+004F,U+0042,U+0043,U+0044,U+0031:[B|C@830,0|D@1660,0|O@2490,0|one@2908,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-8.tests b/test/shaping/data/text-rendering-tests/tests/MORX-8.tests new file mode 100644 index 0000000..aa0d28b --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-8.tests @@ -0,0 +1,3 @@ +../fonts/TestMORXEight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0030,U+0041,U+0042,U+0043:[zero|A@914,0|B@1552,0|C@2202,0] +../fonts/TestMORXEight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0031,U+0041,U+0042,U+0043:[one|B@914,0|C@1564,0|A@2196,0] +../fonts/TestMORXEight.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0032,U+0041,U+0042,U+0043:[two|C@914,0|A@1546,0|B@2184,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-9.tests b/test/shaping/data/text-rendering-tests/tests/MORX-9.tests new file mode 100644 index 0000000..a899908 --- /dev/null +++ b/test/shaping/data/text-rendering-tests/tests/MORX-9.tests @@ -0,0 +1 @@ +../fonts/TestMORXNine.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0058,U+0041,U+0042:[B|A@650,0|X@1288,0|A@1874,0|B@2512,0] diff --git a/test/shaping/hb_test_tools.py b/test/shaping/hb_test_tools.py index 8348dc2..feff70a 100644 --- a/test/shaping/hb_test_tools.py +++ b/test/shaping/hb_test_tools.py @@ -4,6 +4,10 @@ from __future__ import print_function, division, absolute_import import sys, os, re, difflib, unicodedata, errno, cgi from itertools import * +try: + import unicodedata2 as unicodedata +except Exception: + pass diff_symbols = "-+=*&^%$#@!~/" diff_colors = ['red', 'green', 'blue'] @@ -56,10 +60,10 @@ try: yield 0x10000 + (high_surrogate - 0xD800) * 0x400 + (cp - 0xDC00) high_surrogate = None else: - yield 0xFFFC + yield 0xFFFD else: if high_surrogate: - yield 0xFFFC + yield 0xFFFD high_surrogate = None if 0xD800 <= cp <= 0xDBFF: high_surrogate = cp @@ -67,7 +71,7 @@ try: yield cp high_surrogate = None if high_surrogate: - yield 0xFFFC + yield 0xFFFD except NameError: unichr = chr diff --git a/test/shaping/record-test.sh b/test/shaping/record-test.sh index 93ebcfc..4ab74f0 100755 --- a/test/shaping/record-test.sh +++ b/test/shaping/record-test.sh @@ -3,8 +3,9 @@ dir=`mktemp -d` out=/dev/stdout -if test "x${1:0:3}" == 'x-o='; then - out=${1:3} +if test "x$1" == 'x-o'; then + shift + out=$1 shift fi hb_shape=$1 diff --git a/test/shaping/run-tests.py b/test/shaping/run-tests.py index 73b61c2..26853e4 100755 --- a/test/shaping/run-tests.py +++ b/test/shaping/run-tests.py @@ -2,31 +2,34 @@ from __future__ import print_function, division, absolute_import -import sys, os, subprocess - +import sys, os, subprocess, hashlib, tempfile, shutil def cmd(command): - p = subprocess.Popen ( - command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - p.wait () - print (p.stderr.read (), end="") # file=sys.stderr - return p.stdout.read ().decode ("utf-8").strip (), p.returncode - + global process + process.stdin.write ((' '.join (command) + '\n').encode ("utf-8")) + process.stdin.flush () + return process.stdout.readline().decode ("utf-8").strip () args = sys.argv[1:] -if not args or sys.argv[1].find('hb-shape') == -1 or not os.path.exists (sys.argv[1]): + +reference = False +if len (args) and args[0] == "--reference": + reference = True + args = args[1:] + +if not args or args[0].find('hb-shape') == -1 or not os.path.exists (args[0]): print ("""First argument does not seem to point to usable hb-shape.""") sys.exit (1) hb_shape, args = args[0], args[1:] -extra_options = "--verify" +process = subprocess.Popen ([hb_shape, '--batch'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=sys.stdout) +passes = 0 fails = 0 - -reference = False -if len (args) and args[0] == "--reference": - reference = True - args = args[1:] +skips = 0 if not len (args): args = ['-'] @@ -44,56 +47,95 @@ for filename in args: f = open (filename) for line in f: + comment = False + if line.startswith ("#"): + comment = True + line = line[1:] + + if line.startswith (' '): + if not reference: + print ("#%s" % line) + continue + + line = line.strip () + if not line: + continue + fontfile, options, unicodes, glyphs_expected = line.split (":") - cwd = os.path.dirname(filename) - fontfile = os.path.normpath (os.path.join (cwd, fontfile)) + if fontfile.startswith ('/') or fontfile.startswith ('"/'): + fontfile, expected_hash = fontfile.split('@') + + try: + with open (fontfile, 'rb') as ff: + actual_hash = hashlib.sha1 (ff.read()).hexdigest ().strip () + if actual_hash != expected_hash: + print ('different version of %s found; Expected hash %s, got %s; skipping.' % + (fontfile, expected_hash, actual_hash)) + skips += 1 + continue + except: + print ('%s not found, skip.' % fontfile) + skips += 1 + continue + else: + cwd = os.path.dirname(filename) + fontfile = os.path.normpath (os.path.join (cwd, fontfile)) - if line.startswith ("#"): + extra_options = ["--shaper=ot"] + if glyphs_expected != '*': + extra_options.append("--verify") + + if comment: if not reference: - print ("# %s %s --unicodes %s" % (hb_shape, fontfile, unicodes)) + print ('# %s "%s" --unicodes %s' % (hb_shape, fontfile, unicodes)) continue if not reference: - print ("%s %s %s %s --unicodes %s" % - (hb_shape, fontfile, extra_options, options, unicodes)) - - glyphs1, returncode = cmd ([hb_shape, "--font-funcs=ft", - fontfile, extra_options, "--unicodes", - unicodes] + (options.split (' ') if options else [])) + print ('%s "%s" %s %s --unicodes %s' % + (hb_shape, fontfile, ' '.join(extra_options), options, unicodes)) - if returncode: - print ("hb-shape --font-funcs=ft failed.") # file=sys.stderr - fails = fails + 1 - #continue + # hack to support fonts with space on run-tests.py, after several other tries... + if ' ' in fontfile: + new_fontfile = os.path.join (tempfile.gettempdir (), 'tmpfile') + shutil.copyfile(fontfile, new_fontfile) + fontfile = new_fontfile - glyphs2, returncode = cmd ([hb_shape, "--font-funcs=ot", - fontfile, extra_options, "--unicodes", + glyphs1 = cmd ([hb_shape, "--font-funcs=ft", + fontfile] + extra_options + ["--unicodes", unicodes] + (options.split (' ') if options else [])) - if returncode: - print ("ERROR: hb-shape --font-funcs=ot failed.") # file=sys.stderr - fails = fails + 1 - #continue + glyphs2 = cmd ([hb_shape, "--font-funcs=ot", + fontfile] + extra_options + ["--unicodes", + unicodes] + (options.split (' ') if options else [])) - if glyphs1 != glyphs2: + if glyphs1 != glyphs2 and glyphs_expected != '*': print ("FT funcs: " + glyphs1) # file=sys.stderr print ("OT funcs: " + glyphs2) # file=sys.stderr - fails = fails + 1 + fails += 1 + else: + passes += 1 if reference: print (":".join ([fontfile, options, unicodes, glyphs1])) continue - if glyphs1.strip() != glyphs_expected.strip(): + if glyphs1.strip() != glyphs_expected and glyphs_expected != '*': print ("Actual: " + glyphs1) # file=sys.stderr print ("Expected: " + glyphs_expected) # file=sys.stderr - fails = fails + 1 + fails += 1 + else: + passes += 1 -if fails != 0: - if not reference: - print (str (fails) + " tests failed.") # file=sys.stderr - sys.exit (1) +if not reference: + print ("%d tests passed; %d failed; %d skipped." % (passes, fails, skips)) # file=sys.stderr + if not (fails + passes): + print ("No tests ran.") + elif not (fails + skips): + print ("All tests passed.") +if fails: + sys.exit (1) +elif passes: + sys.exit (0) else: - if not reference: - print ("All tests passed.") + sys.exit (77) diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index 2bc4fff..2bc4fff 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 0f8fa91..0f8fa91 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index ddf03c0..ddf03c0 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index 870ce26..870ce26 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 821c261..821c261 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 0afc191..0afc191 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index ebbc87d..ebbc87d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt index accebeb..accebeb 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt index 87e5ea8..87e5ea8 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-assamese/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-bengali/bengali-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/bengali-vowel-letters.txt new file mode 100644 index 0000000..f09dbc8 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/bengali-vowel-letters.txt @@ -0,0 +1,3 @@ +আ অা +ৠ ঋৃ +ৡ ঌৢ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/misc/misc.txt index aa43590..aa43590 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/misc/reph.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/misc/reph.txt index 9739eaa..9739eaa 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/misc/reph.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/misc/reph.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index fd5e6e6..fd5e6e6 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 7554b36..7554b36 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index ddf03c0..ddf03c0 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index 870ce26..870ce26 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 169ba5d..169ba5d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 0afc191..0afc191 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index 7c652be..7c652be 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt index 2fd42e0..2fd42e0 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt index b45b778..b45b778 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-bengali/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-devanagari/devanagari-atomic-consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/devanagari-atomic-consonants.txt new file mode 100644 index 0000000..4265436 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/devanagari-atomic-consonants.txt @@ -0,0 +1,33 @@ +ख ख्ा ख्ा +ग ग्ा ग्ा +घ घ्ा घ्ा +च च्ा च्ा +ज ज्ा ज्ा +झ झ्ा झ्ा +ञ ञ्ा ञ्ा +ण ण्ा ण्ा +त त्ा त्ा +थ थ्ा थ्ा +ध ध्ा ध्ा +न न्ा न्ा +ऩ ऩ्ा ऩ्ा ऩ्ा ऩ्ा +प प्ा प्ा +ब ब्ा ब्ा +भ भ्ा भ्ा +म म्ा म्ा +य य्ा य्ा +ल ल्ा ल्ा +व व्ा व्ा +श श्ा श्ा +ष ष्ा ष्ा +स स्ा स्ा +ख़ ख़्ा ख़्ा ख़्ा ख़्ा +ग़ ग़्ा ग़्ा ग़्ा ग़्ा +ज़ ज़्ा ज़्ा ज़्ा ज़्ा +य़ य़्ा य़्ा य़्ा य़्ा +ॹ ॹ्ा ॹ्ा +ॺ ॺ्ा ॺ्ा +ज़ ॻ्ा ॻ्ा +ॼ ॼ्ा ॼ्ा +ॾ ॾ्ा ॾ्ा +ॿ ॿ्ा ॿ्ा diff --git a/test/shaping/texts/in-house/shaper-indic/script-devanagari/devanagari-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/devanagari-vowel-letters.txt new file mode 100644 index 0000000..5a41252 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/devanagari-vowel-letters.txt @@ -0,0 +1,17 @@ +ऄ अॆ +आ अा +ई र्इ +ऊ उु +ऍ एॅ +ऎ एॆ +ऐ एे +ऑ अॉ आॅ +ऒ अॊ आॆ +ओ अो आे +औ अौ आै +ॲ अॅ +ॳ अऺ +ॴ अऻ आऺ +ॵ अॏ +ॶ अॖ +ॷ अॗ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/dottedcircle.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/dottedcircle.txt index fd0ebdb..fd0ebdb 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/dottedcircle.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/dottedcircle.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/eyelash.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/eyelash.txt index 8e11955..8e11955 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/eyelash.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/eyelash.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/joiners.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/joiners.txt index 75f85cc..75f85cc 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/joiners.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/joiners.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/misc.txt index 4a8326c..4a8326c 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/spec-deviations.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/spec-deviations.txt index 4814019..4814019 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/spec-deviations.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/spec-deviations.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/tricky-reordering.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/tricky-reordering.txt index 1723ced..1723ced 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/misc/tricky-reordering.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/misc/tricky-reordering.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt index 89cefb6..89cefb6 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index 9f7cda9..9f7cda9 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 3aa66ce..3aa66ce 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index 04cf0a7..04cf0a7 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt index 7b0b32c..7b0b32c 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-DevnagariSpecificAddition.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index 1427002..1427002 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-GenericPunctuation.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-GenericPunctuation.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-GenericPunctuation.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-GenericPunctuation.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index b336c35..b336c35 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 2ff3e87..2ff3e87 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index 6d57308..6d57308 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt index bff1a7b..bff1a7b 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt index 3b5e620..3b5e620 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-devanagari/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-gujarati/gujarati-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/gujarati-vowel-letters.txt new file mode 100644 index 0000000..add4332 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/gujarati-vowel-letters.txt @@ -0,0 +1,8 @@ +આ અા +ઍ અૅ +એ અે +ઐ અૈ +ઑ અૉ +ઓ અો અાૅ +ઔ અૌ અાૈ +ૉ ૅા diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index fd5e6e6..fd5e6e6 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index e91003a..e91003a 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index 3650298..3650298 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index eabae39..eabae39 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 116eb60..116eb60 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 218e507..218e507 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index f7ff3af..f7ff3af 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt index fa658cf..fa658cf 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt index 6211c9b..6211c9b 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gujarati/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/gurmukhi-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/gurmukhi-vowel-letters.txt new file mode 100644 index 0000000..b2adaab --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/gurmukhi-vowel-letters.txt @@ -0,0 +1,9 @@ +ਆ ਅਾ +ਇ ੲਿ +ਈ ੲੀ +ਉ ੳੁ +ਊ ੳੂ +ਏ ੲੇ +ਐ ਅੈ +ਓ ੳੋ +ਔ ਅੌ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/misc/misc.txt index 27a39f6..27a39f6 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index ee8b3be..ee8b3be 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index a934caa..a934caa 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index d08b7a8..d08b7a8 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt index 8565c88..8565c88 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-GurmukhiSpecific.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 05827ca..05827ca 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index adb725e..adb725e 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index 7fdf6e4..7fdf6e4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt index 63d54a5..63d54a5 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/gsub/IndicFontFeatureGSUB.txt index eb2e8ee..eb2e8ee 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-gurmukhi/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-gurmukhi/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-kannada/kannada-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/kannada-vowel-letters.txt new file mode 100644 index 0000000..cc05db9 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/kannada-vowel-letters.txt @@ -0,0 +1,3 @@ +ಊ ಉಾ +ಔ ಒೌ +ೠ ಋಾ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/misc/misc.txt index a8a6325..a8a6325 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/misc/right-matras.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/misc/right-matras.txt index 3130f35..3130f35 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/misc/right-matras.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/misc/right-matras.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt index fff748a..fff748a 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index f641547..f641547 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 650cbf7..650cbf7 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index 476f39f..476f39f 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index 57ac088..57ac088 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 38f1719..38f1719 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 6bbf23e..6bbf23e 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index 4cc0f56..4cc0f56 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt index 583072d..583072d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-kannada/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-malayalam/malayalam-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/malayalam-vowel-letters.txt new file mode 100644 index 0000000..061c642 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/malayalam-vowel-letters.txt @@ -0,0 +1,5 @@ +ഈ ഇൗ +ഊ ഉൗ +ഐ എെ +ഓ ഒാ +ഔ ഒൗ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/misc/cibu.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/misc/cibu.txt index 3d53867..3d53867 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/misc/cibu.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/misc/cibu.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/misc/dot-reph.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/misc/dot-reph.txt index fc74da9..fc74da9 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/misc/dot-reph.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/misc/dot-reph.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/misc/misc.txt index 2e732ae..2e732ae 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index 0d1a19b..0d1a19b 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 4924e56..4924e56 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index dc49691..dc49691 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index c2a9f06..c2a9f06 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index d879c3b..d879c3b 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 2c976a4..2c976a4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt index 1053215..1053215 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-malayalam/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/misc/bindu.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/misc/bindu.txt index 13de6ee..13de6ee 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/misc/bindu.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/misc/bindu.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/misc/misc.txt index 44a53df..44a53df 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-oriya/oriya-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/oriya-vowel-letters.txt new file mode 100644 index 0000000..e8d24cb --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/oriya-vowel-letters.txt @@ -0,0 +1,3 @@ +ଆ ଅା +ଐ ଏୗ +ଔ ଓୗ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt index c311f42..c311f42 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalConsonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index c15795c..c15795c 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 5692fa1..5692fa1 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index d95d909..d95d909 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index ce7af5e..ce7af5e 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 9d21b9d..9d21b9d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt index 6571b52..6571b52 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-OriyaSpecific.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index ce411d2..ce411d2 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt index fe11060..fe11060 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-oriya/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/extensive.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/extensive.txt index 231a1f7..231a1f7 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/extensive.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/extensive.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/misc.txt index c43cb95..c43cb95 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/reph.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/reph.txt index f5f2f53..f5f2f53 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/reph.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/reph.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/split-matras.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/split-matras.txt index 2a73a40..2a73a40 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/misc/split-matras.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/misc/split-matras.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 0e8810a..0e8810a 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index 27911e4..27911e4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 939be04..939be04 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Punctuation.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Punctuation.txt index d6c6809..d6c6809 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Punctuation.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-Punctuation.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index a65a9ba..a65a9ba 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt index 7cd1eac..7cd1eac 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gpos/IndicFontFeatureGPOS.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt index a100c69..a100c69 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Conjunct.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt index bf89a71..bf89a71 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Rakaaraansaya.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt index 6f0293d..6f0293d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Repaya.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt index 109c873..109c873 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Special-Cases.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt index 105b295..105b295 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-TouchingLetters.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt index 299ca9d..299ca9d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB-Yansaya.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt index fd5e6e6..fd5e6e6 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-sinhala/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/misc/misc.txt index c72be69..c72be69 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 7a26510..7a26510 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt index f70ba6a..f70ba6a 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-CurrencySymbols.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index f22470c..f22470c 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index 47b1d62..47b1d62 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 3940ad3..3940ad3 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt index 33f6850..33f6850 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Numerics.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt index a7d89e8..a7d89e8 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-Symbols.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt index 2d4bdc1..2d4bdc1 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-TamilSymbol.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index 49c469c..49c469c 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index 40b2b21..40b2b21 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt index 847495a..847495a 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/gpos/IndicFontFeatureGPOS-BelowBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt index 2ca1df3..2ca1df3 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-tamil/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/misc/misc.txt index ff522d2..ff522d2 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/misc/misc.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/misc/misc.txt diff --git a/test/shaping/texts/in-house/shaper-indic/script-telugu/telugu-vowel-letters.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/telugu-vowel-letters.txt new file mode 100644 index 0000000..c3cfc84 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/telugu-vowel-letters.txt @@ -0,0 +1,5 @@ +ఓ ఒౕ +ఔ ఒౌ +ీ ిౕ +ే ెౕ +ో ొౕ diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/LICENSE b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/LICENSE index 2cf8228..2cf8228 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/LICENSE +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/LICENSE diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/README b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/README index 8bad337..8bad337 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/README +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/README diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/SOURCES b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/SOURCES index 0ed1a89..0ed1a89 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/SOURCES +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/SOURCES diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt index a92b179..a92b179 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-AdditionalVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt index 9b8ff69..9b8ff69 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Consonants.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt index b48ed5d..b48ed5d 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-DependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt index 8751b40..8751b40 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Digits.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt index 53c6daf..53c6daf 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-IndependentVowels.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt index 66a7ca4..66a7ca4 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-Reserved.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt index ebefb52..ebefb52 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/codepoint/IndicFontFeatureCodepoint-VariousSigns.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt index 939e44a..939e44a 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/gpos/IndicFontFeatureGPOS-AboveBase.txt diff --git a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt index 50b630b..50b630b 100644 --- a/test/shaping/texts/in-house/shaper-indic/indic/script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt +++ b/test/shaping/texts/in-house/shaper-indic/script-telugu/utrrs/gsub/IndicFontFeatureGSUB.txt diff --git a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/misc.txt b/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/misc.txt deleted file mode 100644 index 945dd1d..0000000 --- a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/misc.txt +++ /dev/null @@ -1,23 +0,0 @@ -ខ្មែ -ជា -ថ្ងៃ -មា -ម្ពុ -រ -រី -រ៍ -សៅ -រ្ឥ -ងឹ្ឈ -ង្ឈឹ -ង្គ្រ -ង្រ្គ -ម៉្លេះ -ម៉្លេះ -ប៊័ -នែ៎ -កេ្រ -កៀ្រ -កោ្រ -កៅ្រ -ព៑ា diff --git a/test/shaping/texts/in-house/shaper-khmer/misc.txt b/test/shaping/texts/in-house/shaper-khmer/misc.txt new file mode 100644 index 0000000..3bbffe7 --- /dev/null +++ b/test/shaping/texts/in-house/shaper-khmer/misc.txt @@ -0,0 +1,89 @@ +ខ្មែ +ជា +ថ្ងៃ +មា +ម្ពុ +រ +រី +រ៍ +សៅ +រ្ឥ +ងឹ្ឈ +ង្ឈឹ +ង្គ្រ +ង្រ្គ +ម៉្លេះ +ម៉្លេះ +ប៊័ +នែ៎ +កេ្រ +កៀ្រ +កោ្រ +កៅ្រ +ព៑ា +កន្ត្រាក់ +កន្រ្សិក់ +កន្រ្សីក់ +ក្សាន្ត +ក្សិន្ត +ក្សីន្ត +ក្សឹន្ត +ក្សឺន្ត +ក្សុន្ត +ក្សូន្ត +ក្សួន្ត +ក្សឿន្ត +ឃ្ល្សាំ +ឃ្ល្សិះ +ឃ្ល្សុំ +ឃ្ល្សុះ +ឃ្ល្សេះ +ឃ្ល្សោះ +ឃ្ល្សំ +ឃ្ល្សះ +ញូ +ញ្ញ +ញ្ញុ +ញ្ញូ +ញ្ញួ +ត្រ្សៀ +ត្រ្សេ +ត្រ្សែ +ត្រ្សៃ +ត្រ្សោ +ត្រ្សៅ +ធ្លុំក់ +ធ្លោក់ +ធ្លៅក់ +ធ្លំក់ +ម្ត្ល៉ា +ម្ត្ល៉ុ +ម្ត្ល៉ឿ +ម្ត្ល៉ៀ +យ្យើហ្វ្លៃ +រ្រ +សាស្ត្រឃ្ឈងា +សាស្ត្រឃ្ឈងិ +សាស្ត្រឃ្ឈងី +ស្ត្រីវ័ខ្ញ្សា +ស្រ្តា +ស្រ្តិ +ស្រ្តី +ស្រ្តឹ +ស្រ្តឺ +ស្រ្តុ +ស្រ្តូ +ស្រ្តួ +ស្រ្តើ +ស្រ្តឿ +ស្រ្ត៊ឿ +ស្រ្ត៊ៀ +ស្រ្ត៊េ +ស្រ្ត៊ែ +ស្រ្ត៊ៃ +ស្រ្ត៊ំ +ហ្គ្ស៊ើ +ហ្គ្ស៊ឿ +ហ្គ្ស៊ៀ +ហ្រ្វង្ក +ហ្រ្វាំង diff --git a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/other-marks-invalid.txt b/test/shaping/texts/in-house/shaper-khmer/other-marks-invalid.txt index 213cfc2..213cfc2 100644 --- a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/other-marks-invalid.txt +++ b/test/shaping/texts/in-house/shaper-khmer/other-marks-invalid.txt diff --git a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/other-marks.txt b/test/shaping/texts/in-house/shaper-khmer/other-marks.txt index 1fd350c..1fd350c 100644 --- a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-khmer/misc/other-marks.txt +++ b/test/shaping/texts/in-house/shaper-khmer/other-marks.txt diff --git a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-javanese/misc.txt b/test/shaping/texts/in-house/shaper-use/script-javanese/misc.txt index 16c3d9c..16c3d9c 100644 --- a/test/shaping/texts/in-house/shaper-indic/south-east-asian/script-javanese/misc.txt +++ b/test/shaping/texts/in-house/shaper-use/script-javanese/misc.txt diff --git a/test/subset/Makefile.am b/test/subset/Makefile.am index 336d33d..1673cfb 100644 --- a/test/subset/Makefile.am +++ b/test/subset/Makefile.am @@ -7,7 +7,7 @@ SUBDIRS = data # Convenience targets: lib: - @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs EXTRA_DIST += \ CMakeLists.txt \ diff --git a/test/subset/Makefile.in b/test/subset/Makefile.in index 95ab828..71f7a82 100644 --- a/test/subset/Makefile.in +++ b/test/subset/Makefile.in @@ -96,8 +96,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -304,6 +303,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -691,7 +692,7 @@ uninstall-am: # Convenience targets: lib: - @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib + @$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs -include $(top_srcdir)/git.mk diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 0d1b2f0..0677120 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am @@ -5,7 +5,7 @@ EXTRA_DIST = CLEANFILES = SUBDIRS = -EXTRA_DIST = \ +EXTRA_DIST += \ $(TESTS) \ expected/basics \ expected/full-font \ diff --git a/test/subset/data/Makefile.in b/test/subset/data/Makefile.in index 0988d97..957bb34 100644 --- a/test/subset/data/Makefile.in +++ b/test/subset/data/Makefile.in @@ -99,8 +99,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -509,6 +508,8 @@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ @@ -578,15 +579,8 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = -EXTRA_DIST = \ - $(TESTS) \ - expected/basics \ - expected/full-font \ - expected/japanese \ - fonts \ - profiles \ - $(NULL) - +EXTRA_DIST = $(TESTS) expected/basics expected/full-font \ + expected/japanese fonts profiles $(NULL) CLEANFILES = SUBDIRS = TEST_EXTENSIONS = .tests diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf Binary files differnew file mode 100644 index 0000000..1bd287d --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.default.61,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.default.61,62,63.otf Binary files differnew file mode 100644 index 0000000..328c6ee --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.default.61,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf Binary files differnew file mode 100644 index 0000000..4602847 --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf Binary files differnew file mode 100644 index 0000000..18a9bcc --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf Binary files differnew file mode 100644 index 0000000..edd389b --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf Binary files differnew file mode 100644 index 0000000..65fa1da --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf Binary files differnew file mode 100644 index 0000000..53109e2 --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf Binary files differnew file mode 100644 index 0000000..dd908c2 --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf Binary files differnew file mode 100644 index 0000000..5422d32 --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.1FC,21,41,20,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.1FC,21,41,20,62,63.otf Binary files differnew file mode 100644 index 0000000..604e140 --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.1FC,21,41,20,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.61,62,63.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.61,62,63.otf Binary files differnew file mode 100644 index 0000000..a0b2c2f --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.61,62,63.otf diff --git a/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.D7,D8,D9,DA,DE.otf Binary files differnew file mode 100644 index 0000000..8055328 --- /dev/null +++ b/test/subset/data/expected/full-font/SourceSansPro-Regular.drop-hints.desubroutinize.D7,D8,D9,DA,DE.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.default.3042,3044,3046,3048,304A,304B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.3042,3044,3046,3048,304A,304B.otf Binary files differnew file mode 100644 index 0000000..8d717cc --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.3042,3044,3046,3048,304A,304B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.default.3042,3044,3046,73E0,5EA6,8F38.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.3042,3044,3046,73E0,5EA6,8F38.otf Binary files differnew file mode 100644 index 0000000..3d570cd --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.3042,3044,3046,73E0,5EA6,8F38.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.default.61,63,65,6B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.61,63,65,6B.otf Binary files differnew file mode 100644 index 0000000..216ed17 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.61,63,65,6B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.default.660E,6975,73E0,5EA6,8F38,6E05.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.660E,6975,73E0,5EA6,8F38,6E05.otf Binary files differnew file mode 100644 index 0000000..f548f48 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.660E,6975,73E0,5EA6,8F38,6E05.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.default.660E.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.660E.otf Binary files differnew file mode 100644 index 0000000..6362d21 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.default.660E.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize..otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize..otf Binary files differnew file mode 100644 index 0000000..7c0c5fd --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize..otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.3042,3044,3046,3048,304A,304B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.3042,3044,3046,3048,304A,304B.otf Binary files differnew file mode 100644 index 0000000..e51866a --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.3042,3044,3046,3048,304A,304B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf Binary files differnew file mode 100644 index 0000000..c4f6bb2 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.61,63,65,6B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.61,63,65,6B.otf Binary files differnew file mode 100644 index 0000000..62ddb60 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.61,63,65,6B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf Binary files differnew file mode 100644 index 0000000..7ce9d40 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.660E.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.660E.otf Binary files differnew file mode 100644 index 0000000..35d9eea --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.desubroutinize.660E.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.3042,3044,3046,3048,304A,304B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.3042,3044,3046,3048,304A,304B.otf Binary files differnew file mode 100644 index 0000000..9e1041d --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.3042,3044,3046,3048,304A,304B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf Binary files differnew file mode 100644 index 0000000..6a3bff1 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.3042,3044,3046,73E0,5EA6,8F38.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.61,63,65,6B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.61,63,65,6B.otf Binary files differnew file mode 100644 index 0000000..06d28b6 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.61,63,65,6B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf Binary files differnew file mode 100644 index 0000000..ce9d287 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.660E,6975,73E0,5EA6,8F38,6E05.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.660E.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.660E.otf Binary files differnew file mode 100644 index 0000000..27c4676 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.660E.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize..otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize..otf Binary files differnew file mode 100644 index 0000000..a73617a --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize..otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.3042,3044,3046,3048,304A,304B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.3042,3044,3046,3048,304A,304B.otf Binary files differnew file mode 100644 index 0000000..790b714 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.3042,3044,3046,3048,304A,304B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf Binary files differnew file mode 100644 index 0000000..c707bcd --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.3042,3044,3046,73E0,5EA6,8F38.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.61,63,65,6B.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.61,63,65,6B.otf Binary files differnew file mode 100644 index 0000000..591d139 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.61,63,65,6B.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf Binary files differnew file mode 100644 index 0000000..efc98b6 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.660E,6975,73E0,5EA6,8F38,6E05.otf diff --git a/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.660E.otf b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.660E.otf Binary files differnew file mode 100644 index 0000000..27c4676 --- /dev/null +++ b/test/subset/data/expected/japanese/SourceHanSans-Regular.drop-hints.desubroutinize.660E.otf diff --git a/test/subset/data/fonts/SourceHanSans-Regular.otf b/test/subset/data/fonts/SourceHanSans-Regular.otf Binary files differnew file mode 100755 index 0000000..dd807db --- /dev/null +++ b/test/subset/data/fonts/SourceHanSans-Regular.otf diff --git a/test/subset/data/fonts/SourceSansPro-Regular.otf b/test/subset/data/fonts/SourceSansPro-Regular.otf Binary files differnew file mode 100644 index 0000000..279e691 --- /dev/null +++ b/test/subset/data/fonts/SourceSansPro-Regular.otf diff --git a/test/subset/data/profiles/desubroutinize.txt b/test/subset/data/profiles/desubroutinize.txt new file mode 100644 index 0000000..67f3a84 --- /dev/null +++ b/test/subset/data/profiles/desubroutinize.txt @@ -0,0 +1 @@ +--desubroutinize diff --git a/test/subset/data/profiles/drop-hints-desubroutinize.txt b/test/subset/data/profiles/drop-hints-desubroutinize.txt new file mode 100644 index 0000000..279d466 --- /dev/null +++ b/test/subset/data/profiles/drop-hints-desubroutinize.txt @@ -0,0 +1,2 @@ +--no-hinting +--desubroutinize diff --git a/test/subset/data/tests/full-font.tests b/test/subset/data/tests/full-font.tests index ff195ce..f422ff5 100644 --- a/test/subset/data/tests/full-font.tests +++ b/test/subset/data/tests/full-font.tests @@ -1,5 +1,6 @@ FONTS: Roboto-Regular.ttf +SourceSansPro-Regular.otf PROFILES: default.txt diff --git a/test/subset/data/tests/japanese.tests b/test/subset/data/tests/japanese.tests index 5a04380..fc58646 100644 --- a/test/subset/data/tests/japanese.tests +++ b/test/subset/data/tests/japanese.tests @@ -1,5 +1,6 @@ FONTS: Mplus1p-Regular.ttf +SourceHanSans-Regular.otf PROFILES: default.txt diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py index 1cd1a19..fb4684c 100755 --- a/test/subset/run-tests.py +++ b/test/subset/run-tests.py @@ -15,90 +15,108 @@ import tempfile from subset_test_suite import SubsetTestSuite +# https://stackoverflow.com/a/377028 +def which(program): + def is_exe(fpath): + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + + fpath, _ = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + return None + +ttx = which ("ttx") +ots_sanitize = which ("ots-sanitize") + +if not ttx: + print("TTX is not present, skipping test.") + sys.exit (77) def cmd(command): p = subprocess.Popen ( command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - (stdoutdata, stderrdata) = p.communicate() + (stdoutdata, stderrdata) = p.communicate () print (stderrdata, end="") # file=sys.stderr return stdoutdata, p.returncode -def read_binary(file_path): - with open(file_path, 'rb') as f: - return f.read() +def read_binary (file_path): + with open (file_path, 'rb') as f: + return f.read () def fail_test(test, cli_args, message): print ('ERROR: %s' % message) print ('Test State:') - print (' test.font_path %s' % os.path.abspath(test.font_path)) - print (' test.profile_path %s' % os.path.abspath(test.profile_path)) - print (' test.unicodes %s' % test.unicodes()) - expected_file = os.path.join(test_suite.get_output_directory(), - test.get_font_name()) - print (' expected_file %s' % os.path.abspath(expected_file)) + print (' test.font_path %s' % os.path.abspath (test.font_path)) + print (' test.profile_path %s' % os.path.abspath (test.profile_path)) + print (' test.unicodes %s' % test.unicodes ()) + expected_file = os.path.join(test_suite.get_output_directory (), + test.get_font_name ()) + print (' expected_file %s' % os.path.abspath (expected_file)) return 1 def run_test(test, should_check_ots): - out_file = os.path.join(tempfile.mkdtemp(), test.get_font_name() + '-subset.ttf') + out_file = os.path.join(tempfile.mkdtemp (), test.get_font_name () + '-subset' + test.get_font_extension ()) cli_args = [hb_subset, "--font-file=" + test.font_path, "--output-file=" + out_file, - "--unicodes=%s" % test.unicodes()] - cli_args.extend (test.get_profile_flags()) - print (' '.join(cli_args)) - _, return_code = cmd(cli_args) + "--unicodes=%s" % test.unicodes ()] + cli_args.extend (test.get_profile_flags ()) + print (' '.join (cli_args)) + _, return_code = cmd (cli_args) if return_code: - return fail_test(test, cli_args, "%s returned %d" % (' '.join(cli_args), return_code)) + return fail_test (test, cli_args, "%s returned %d" % (' '.join (cli_args), return_code)) - expected_ttx, return_code = run_ttx(os.path.join(test_suite.get_output_directory(), - test.get_font_name())) + expected_ttx, return_code = run_ttx (os.path.join (test_suite.get_output_directory (), + test.get_font_name ())) if return_code: - return fail_test(test, cli_args, "ttx (expected) returned %d" % (return_code)) + return fail_test (test, cli_args, "ttx (expected) returned %d" % (return_code)) actual_ttx, return_code = run_ttx(out_file) if return_code: - return fail_test(test, cli_args, "ttx (actual) returned %d" % (return_code)) + return fail_test (test, cli_args, "ttx (actual) returned %d" % (return_code)) print ("stripping checksums.") expected_ttx = strip_check_sum (expected_ttx) actual_ttx = strip_check_sum (actual_ttx) if not actual_ttx == expected_ttx: - for line in unified_diff(expected_ttx.splitlines(1), actual_ttx.splitlines(1)): - sys.stdout.write(line) - sys.stdout.flush() + for line in unified_diff (expected_ttx.splitlines (1), actual_ttx.splitlines (1)): + sys.stdout.write (line) + sys.stdout.flush () return fail_test(test, cli_args, 'ttx for expected and actual does not match.') if should_check_ots: print ("Checking output with ots-sanitize.") - if not check_ots(out_file): - return fail_test(test, cli_args, 'ots for subsetted file fails.') + if not check_ots (out_file): + return fail_test (test, cli_args, 'ots for subsetted file fails.') return 0 -def run_ttx(file): +def run_ttx (file): print ("ttx %s" % file) - cli_args = ["ttx", - "-q", - "-o-", - file] - return cmd(cli_args) + return cmd([ttx, "-q", "-o-", file]) def strip_check_sum (ttx_string): return re.sub ('checkSumAdjustment value=["]0x([0-9a-fA-F])+["]', 'checkSumAdjustment value="0x00000000"', - ttx_string.decode (), count=1) + ttx_string.decode ("utf-8"), count=1) def has_ots (): - _, returncode = cmd(["which", "ots-sanitize"]) - if returncode: + if not ots_sanitize: print("OTS is not present, skipping all ots checks.") return False return True def check_ots (path): - ots_report, returncode = cmd(["ots-sanitize", path]) + ots_report, returncode = cmd ([ots_sanitize, path]) if returncode: print("OTS Failure: %s" % ots_report); return False @@ -110,24 +128,19 @@ if not args or sys.argv[1].find('hb-subset') == -1 or not os.path.exists (sys.ar sys.exit (1) hb_subset, args = args[0], args[1:] -if not len(args): +if not len (args): print ("No tests supplied.") sys.exit (1) -_, returncode = cmd(["which", "ttx"]) -if returncode: - print("TTX is not present, skipping test.") - sys.exit (77) - has_ots = has_ots() fails = 0 for path in args: - with io.open(path, mode="r", encoding="utf-8") as f: + with io.open (path, mode="r", encoding="utf-8") as f: print ("Running tests in " + path) - test_suite = SubsetTestSuite(path, f.read()) - for test in test_suite.tests(): - fails += run_test(test, has_ots) + test_suite = SubsetTestSuite (path, f.read()) + for test in test_suite.tests (): + fails += run_test (test, has_ots) if fails != 0: print (str (fails) + " test(s) failed.") diff --git a/test/subset/subset_test_suite.py b/test/subset/subset_test_suite.py index 3538650..5e3368e 100644 --- a/test/subset/subset_test_suite.py +++ b/test/subset/subset_test_suite.py @@ -28,6 +28,14 @@ class Test: self.unicodes(), font_base_name_parts[1]) + def get_font_extension(self): + font_base_name = os.path.basename(self.font_path) + font_base_name_parts = os.path.splitext(font_base_name) + return font_base_name_parts[1] + + def applicable(self): + return self.profile_path.find("desubroutinize") < 0 or self.get_font_extension() == "otf" + # A group of tests to perform on the subsetter. Each test # Identifies a font a subsetting profile, and a subset to be cut. class SubsetTestSuite: @@ -47,7 +55,7 @@ class SubsetTestSuite: if not os.path.exists(output_dir): os.mkdir(output_dir) if not os.path.isdir(output_dir): - raise Error("%s is not a directory." % output_dir) + raise Exception("%s is not a directory." % output_dir) return output_dir @@ -57,7 +65,9 @@ class SubsetTestSuite: for profile in self.profiles: profile = os.path.join(self._base_path(), "profiles", profile) for subset in self.subsets: - yield Test(font, profile, subset) + test = Test(font, profile, subset) + if test.applicable(): + yield test def _base_path(self): return os.path.dirname(os.path.dirname(self.test_path)) |