Coverage Report

Created: 2025-08-29 06:20

/src/harfbuzz/src/OT/Layout/GSUB/GSUB.hh
Line
Count
Source (jump to first uncovered line)
1
#ifndef OT_LAYOUT_GSUB_GSUB_HH
2
#define OT_LAYOUT_GSUB_GSUB_HH
3
4
#include "../../../hb-ot-layout-gsubgpos.hh"
5
#include "Common.hh"
6
#include "SubstLookup.hh"
7
8
namespace OT {
9
10
using Layout::GSUB_impl::SubstLookup;
11
12
namespace Layout {
13
14
/*
15
 * GSUB -- Glyph Substitution
16
 * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
17
 */
18
19
struct GSUB : GSUBGPOS
20
{
21
  using Lookup = SubstLookup;
22
23
  static constexpr hb_tag_t tableTag = HB_OT_TAG_GSUB;
24
25
  const SubstLookup& get_lookup (unsigned int i) const
26
29
  { return static_cast<const SubstLookup &> (GSUBGPOS::get_lookup (i)); }
27
28
  bool subset (hb_subset_context_t *c) const
29
0
  {
30
0
    hb_subset_layout_context_t l (c, tableTag);
31
0
    return GSUBGPOS::subset<SubstLookup> (&l);
32
0
  }
33
34
  bool sanitize (hb_sanitize_context_t *c) const
35
1.88k
  {
36
1.88k
    TRACE_SANITIZE (this);
37
1.88k
    return_trace (GSUBGPOS::sanitize<SubstLookup> (c));
38
1.88k
  }
39
40
  HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
41
                                   hb_face_t *face) const;
42
43
  void closure_lookups (hb_face_t      *face,
44
                        const hb_set_t *glyphs,
45
                        hb_set_t       *lookup_indexes /* IN/OUT */) const
46
0
  { GSUBGPOS::closure_lookups<SubstLookup> (face, glyphs, lookup_indexes); }
47
48
  typedef GSUBGPOS::accelerator_t<GSUB> accelerator_t;
49
};
50
51
52
}
53
54
struct GSUB_accelerator_t : Layout::GSUB::accelerator_t {
55
1.88k
  GSUB_accelerator_t (hb_face_t *face) : Layout::GSUB::accelerator_t (face) {}
56
};
57
58
59
}
60
61
#endif  /* OT_LAYOUT_GSUB_GSUB_HH */