[config] Add HB_NO_HINTING, enabled by HB_TINY
Disables HintingDevice tables and Anchors addressing contour points.
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
diff --git a/src/hb-config.hh b/src/hb-config.hh
index 8f78ede..5fac4f4 100644
--- a/src/hb-config.hh
+++ b/src/hb-config.hh
@@ -58,7 +58,7 @@
#define HB_NO_CFF
#define HB_NO_COLOR
#define HB_NO_GETENV
-#define HB_NO_OT_FONT_GLYPH_NAMES
+#define HB_NO_HINTING
#define HB_NO_LANGUAGE_PRIVATE_SUBTAG
#define HB_NO_LAYOUT_UNUSED
#define HB_NO_MATH
@@ -66,6 +66,7 @@
#define HB_NO_NAME
#define HB_NO_OPEN
#define HB_NO_SETLOCALE
+#define HB_NO_OT_FONT_GLYPH_NAMES
#define HB_NO_OT_SHAPE_FRACTIONS
#define HB_NO_STAT
#define HB_NO_SUBSET_LAYOUT
diff --git a/src/hb-ot-layout-common.hh b/src/hb-ot-layout-common.hh
index c332e28..a903bcd 100644
--- a/src/hb-ot-layout-common.hh
+++ b/src/hb-ot-layout-common.hh
@@ -2166,8 +2166,10 @@
{
switch (u.b.format)
{
+#ifndef HB_NO_HINTING
case 1: case 2: case 3:
return u.hinting.get_x_delta (font);
+#endif
#ifndef HB_NO_VAR
case 0x8000:
return u.variation.get_x_delta (font, store);
@@ -2181,7 +2183,9 @@
switch (u.b.format)
{
case 1: case 2: case 3:
+#ifndef HB_NO_HINTING
return u.hinting.get_y_delta (font);
+#endif
#ifndef HB_NO_VAR
case 0x8000:
return u.variation.get_y_delta (font, store);
@@ -2196,8 +2200,10 @@
TRACE_SANITIZE (this);
if (!u.b.format.sanitize (c)) return_trace (false);
switch (u.b.format) {
+#ifndef HB_NO_HINTING
case 1: case 2: case 3:
return_trace (u.hinting.sanitize (c));
+#endif
#ifndef HB_NO_VAR
case 0x8000:
return_trace (u.variation.sanitize (c));
diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index 86c45be..d371c4b 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -267,6 +267,13 @@
float *x, float *y) const
{
hb_font_t *font = c->font;
+
+#ifdef HB_NO_HINTING
+ *x = font->em_fscale_x (xCoordinate);
+ *y = font->em_fscale_y (yCoordinate);
+ return;
+#endif
+
unsigned int x_ppem = font->x_ppem;
unsigned int y_ppem = font->y_ppem;
hb_position_t cx = 0, cy = 0;