[aat] Remove lcar support

Very low use, only two distinct font files, Apple Chancery.ttf and Hoefler Text.ttc
have it so it really doesn't worth the size addition and so, but one may argue that
whole ligature caret is low use but guess we better to encourage GDEF one anyway.
diff --git a/src/Makefile.sources b/src/Makefile.sources
index c3ec7e8..4ad11e2 100644
--- a/src/Makefile.sources
+++ b/src/Makefile.sources
@@ -7,7 +7,6 @@
 	hb-aat-layout-feat-table.hh \
 	hb-aat-layout-just-table.hh \
 	hb-aat-layout-kerx-table.hh \
-	hb-aat-layout-lcar-table.hh \
 	hb-aat-layout-morx-table.hh \
 	hb-aat-layout-opbd-table.hh \
 	hb-aat-layout-trak-table.hh \
diff --git a/src/hb-aat-layout-lcar-table.hh b/src/hb-aat-layout-lcar-table.hh
deleted file mode 100644
index 25458a1..0000000
--- a/src/hb-aat-layout-lcar-table.hh
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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.
- */
-#ifndef HB_AAT_LAYOUT_LCAR_TABLE_HH
-#define HB_AAT_LAYOUT_LCAR_TABLE_HH
-
-#include "hb-open-type.hh"
-#include "hb-aat-layout-common.hh"
-
-/*
- * lcar -- Ligature caret
- * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6lcar.html
- */
-#define HB_AAT_TAG_lcar HB_TAG('l','c','a','r')
-
-
-namespace AAT {
-
-typedef ArrayOf<HBINT16> LigCaretClassEntry;
-
-struct lcarFormat0
-{
-  unsigned int get_lig_carets (hb_font_t      *font,
-			       hb_direction_t  direction,
-			       hb_codepoint_t  glyph,
-			       unsigned int    start_offset,
-			       unsigned int   *caret_count /* IN/OUT */,
-			       hb_position_t  *caret_array /* OUT */,
-			       const void     *base) const
-  {
-    const OffsetTo<LigCaretClassEntry>* entry_offset = lookupTable.get_value (glyph,
-									      font->face->get_num_glyphs ());
-    const LigCaretClassEntry& array = entry_offset ? base+*entry_offset : Null (LigCaretClassEntry);
-    if (caret_count)
-    {
-      + array.sub_array (start_offset, caret_count)
-      | hb_map ([&] (int v) { return font->em_scale_dir (v, direction); })
-      | hb_sink (hb_array (caret_array, *caret_count))
-      ;
-    }
-    return array.len;
-  }
-
-  bool sanitize (hb_sanitize_context_t *c, const void *base) const
-  {
-    TRACE_SANITIZE (this);
-    return_trace (likely (c->check_struct (this) && lookupTable.sanitize (c, base)));
-  }
-
-  protected:
-  Lookup<OffsetTo<LigCaretClassEntry>>
-		lookupTable;	/* data Lookup table associating glyphs */
-  public:
-  DEFINE_SIZE_MIN (2);
-};
-
-struct lcarFormat1
-{
-  unsigned int get_lig_carets (hb_font_t      *font,
-			       hb_direction_t  direction,
-			       hb_codepoint_t  glyph,
-			       unsigned int    start_offset,
-			       unsigned int   *caret_count /* IN/OUT */,
-			       hb_position_t  *caret_array /* OUT */,
-			       const void     *base) const
-  {
-    const OffsetTo<LigCaretClassEntry>* entry_offset = lookupTable.get_value (glyph,
-									      font->face->get_num_glyphs ());
-    const LigCaretClassEntry& array = entry_offset ? base+*entry_offset : Null (LigCaretClassEntry);
-    if (caret_count)
-    {
-      + array.sub_array (start_offset, caret_count)
-      | hb_map ([&] (unsigned int point_index)
-		{
-		  hb_position_t x = 0, y = 0;
-		  font->get_glyph_contour_point_for_origin (glyph, point_index, direction, &x, &y);
-		  return HB_DIRECTION_IS_HORIZONTAL (direction) ? x : y;
-		})
-      | hb_sink (hb_array (caret_array, *caret_count))
-      ;
-    }
-    return array.len;
-  }
-
-  bool sanitize (hb_sanitize_context_t *c, const void *base) const
-  {
-    TRACE_SANITIZE (this);
-    return_trace (likely (c->check_struct (this) && lookupTable.sanitize (c, base)));
-  }
-
-  protected:
-  Lookup<OffsetTo<LigCaretClassEntry>>
-		lookupTable;	/* data Lookup table associating glyphs */
-  public:
-  DEFINE_SIZE_MIN (2);
-};
-
-struct lcar
-{
-  static constexpr hb_tag_t tableTag = HB_AAT_TAG_lcar;
-
-  bool has_data () const { return version.major; }
-
-  unsigned int get_lig_carets (hb_font_t      *font,
-			       hb_direction_t  direction,
-			       hb_codepoint_t  glyph,
-			       unsigned int    start_offset,
-			       unsigned int   *caret_count /* IN/OUT */,
-			       hb_position_t  *caret_array /* OUT */) const
-  {
-    if (!has_data ())
-    {
-      if (caret_count)
-        *caret_count = 0;
-      return 0;
-    }
-
-    switch (format)
-    {
-    case 0: return u.format0.get_lig_carets (font, direction, glyph, start_offset,
-					     caret_count, caret_array, this);
-    case 1: return u.format1.get_lig_carets (font, direction, glyph, start_offset,
-					     caret_count, caret_array, this);
-    default:if (caret_count) *caret_count = 0; return 0;
-    }
-  }
-
-  bool sanitize (hb_sanitize_context_t *c) const
-  {
-    TRACE_SANITIZE (this);
-    if (unlikely (!c->check_struct (this) || version.major != 1))
-      return_trace (false);
-
-    switch (format) {
-    case 0: return_trace (u.format0.sanitize (c, this));
-    case 1: return_trace (u.format1.sanitize (c, this));
-    default:return_trace (true);
-    }
-  }
-
-  protected:
-  FixedVersion<>version;	/* Version number of the ligature caret table */
-  HBUINT16	format;		/* Format of the ligature caret table. */
-  union {
-  lcarFormat0	format0;
-  lcarFormat0	format1;
-  } u;
-  public:
-  DEFINE_SIZE_MIN (8);
-};
-
-} /* namespace AAT */
-
-#endif /* HB_AAT_LAYOUT_LCAR_TABLE_HH */
diff --git a/src/hb-ot-face-table-list.hh b/src/hb-ot-face-table-list.hh
index 5a2a9f1..367e143 100644
--- a/src/hb-ot-face-table-list.hh
+++ b/src/hb-ot-face-table-list.hh
@@ -113,7 +113,6 @@
 HB_OT_TABLE (AAT, kerx)
 HB_OT_TABLE (AAT, ankr)
 HB_OT_TABLE (AAT, trak)
-HB_OT_TABLE (AAT, lcar)
 HB_OT_TABLE (AAT, ltag)
 HB_OT_TABLE (AAT, feat)
 // HB_OT_TABLE (AAT, opbd)
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index 9052619..46408bb 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -51,9 +51,7 @@
 #include "hb-ot-name-table.hh"
 #include "hb-ot-os2-table.hh"
 
-#include "hb-aat-layout-lcar-table.hh"
 #include "hb-aat-layout-morx-table.hh"
-
 #include "hb-aat-layout-opbd-table.hh" // Just so we compile it; unused otherwise.
 
 /**
@@ -368,21 +366,7 @@
 				  unsigned int   *caret_count /* IN/OUT */,
 				  hb_position_t  *caret_array /* OUT */)
 {
-  unsigned int result_caret_count = caret_count ? *caret_count : 0;
-  unsigned int result = font->face->table.GDEF->table->get_lig_carets (font, direction, glyph, start_offset, &result_caret_count, caret_array);
-  if (result)
-  {
-    if (caret_count) *caret_count = result_caret_count;
-  }
-  else
-  {
-#ifndef HB_NO_AAT
-    result = font->face->table.lcar->get_lig_carets (font, direction, glyph, start_offset, caret_count, caret_array);
-#else
-    if (caret_count) *caret_count = 0;
-#endif
-  }
-  return result;
+  return font->face->table.GDEF->table->get_lig_carets (font, direction, glyph, start_offset, caret_count, caret_array);
 }
 #endif
 
diff --git a/src/meson.build b/src/meson.build
index 3af210b..cb8c49b 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -6,7 +6,6 @@
   'hb-aat-layout-feat-table.hh',
   'hb-aat-layout-just-table.hh',
   'hb-aat-layout-kerx-table.hh',
-  'hb-aat-layout-lcar-table.hh',
   'hb-aat-layout-morx-table.hh',
   'hb-aat-layout-opbd-table.hh',
   'hb-aat-layout-trak-table.hh',
diff --git a/test/api/fonts/lcar.ttf b/test/api/fonts/lcar.ttf
deleted file mode 100644
index 4d17663..0000000
--- a/test/api/fonts/lcar.ttf
+++ /dev/null
Binary files differ
diff --git a/test/api/test-ot-ligature-carets.c b/test/api/test-ot-ligature-carets.c
index 4a91643..8a8c671 100644
--- a/test/api/test-ot-ligature-carets.c
+++ b/test/api/test-ot-ligature-carets.c
@@ -28,80 +28,6 @@
 #include <hb-ot.h>
 
 static void
-test_ot_layout_get_ligature_carets_aat_lcar (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[16];
-
-  /* a normal call */
-  {
-    unsigned caret_count = 16;
-    g_assert_cmpuint (2, ==, hb_ot_layout_get_ligature_carets (font, HB_DIRECTION_LTR,
-							       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]);
-  }
-
-  /* RTL, maybe needs to be tweaked however */
-  {
-    unsigned caret_count = 16;
-    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]);
-  }
-
-  /* bottom to top call, bigger caret positions as the specified scaling */
-  {
-    unsigned caret_count = 16;
-    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]);
-  }
-
-  /* the same glyph as above but with offset */
-  {
-    caret_array[1] = 123;
-
-    unsigned caret_count = 16;
-    g_assert_cmpuint (2, ==, hb_ot_layout_get_ligature_carets (font, HB_DIRECTION_BTT,
-							       98, 1, &caret_count,
-							       caret_array));
-
-    g_assert_cmpuint (1, ==, caret_count);
-    g_assert_cmpuint (4688, ==, caret_array[0]);
-
-    g_assert_cmpuint (123, ==, caret_array[1]);
-  }
-
-  /* empty carets */
-  {
-    unsigned caret_count = 16;
-    g_assert_cmpuint (0, ==, hb_ot_layout_get_ligature_carets (font, HB_DIRECTION_LTR,
-							       97, 0, &caret_count,
-							       caret_array));
-
-    g_assert_cmpuint (0, ==, caret_count);
-  }
-
-  hb_font_destroy (font);
-  hb_face_destroy (face);
-}
-
-static void
 test_ot_layout_get_ligature_carets_ot_gsub (void)
 {
   hb_face_t *face = hb_test_open_font_file ("fonts/NotoNastaliqUrdu-Regular.ttf");
@@ -241,7 +167,6 @@
 {
   g_test_init (&argc, &argv, NULL);
 
-  hb_test_add (test_ot_layout_get_ligature_carets_aat_lcar);
   hb_test_add (test_ot_layout_get_ligature_carets_ot_gsub);
   hb_test_add (test_ot_layout_get_ligature_carets_empty);