b48a27984bcbb30f07e948c8fee3662200747f05
[platform/upstream/harfbuzz.git] / src / hb-aat-gcid-table.hh
1 /*
2  * Copyright © 2018  Ebrahim Byagowi
3  *
4  *  This is part of HarfBuzz, a text shaping library.
5  *
6  * Permission is hereby granted, without written agreement and without
7  * license or royalty fees, to use, copy, modify, and distribute this
8  * software and its documentation for any purpose, provided that the
9  * above copyright notice and the following two paragraphs appear in
10  * all copies of this software.
11  *
12  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16  * DAMAGE.
17  *
18  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23  */
24
25 #ifndef HB_AAT_GCID_TABLE_HH
26 #define HB_AAT_GCID_TABLE_HH
27
28 #include "hb-aat-layout-common-private.hh"
29
30 /*
31  * gcid -- Glyphs CIDs
32  * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6gcid.html
33  */
34 #define HB_AAT_TAG_gcid HB_TAG('g','c','i','d')
35
36
37 namespace AAT {
38
39
40 struct gcid
41 {
42   static const hb_tag_t tableTag = HB_AAT_TAG_gcid;
43
44   inline bool sanitize (hb_sanitize_context_t *c) const
45   {
46     TRACE_SANITIZE (this);
47     return_trace (likely (c->check_struct (this) && CIDs.sanitize (c)));
48   }
49
50   protected:
51   HBUINT16      version;        /* Version number (set to 0) */
52   HBUINT16      format;         /* Data format (set to 0) */
53   HBUINT32      size;           /* Size of the table, including header */
54   HBUINT16      registry;       /* The registry ID */
55   HBUINT8       registryName[64];
56                                 /* The registry name in ASCII */
57   HBUINT16      order;          /* The order ID */
58   HBUINT8       orderName[64];  /* The order name in ASCII */
59   HBUINT16      supplementVersion;
60                                 /* The supplement version */
61   ArrayOf<HBUINT16>
62                 CIDs;           /* The CIDs for the glyphs in the font,
63                                  * starting with glyph 0. If a glyph does not correspond
64                                  * to a CID in the identified collection, 0xFFFF is used.
65                                  * This should not exceed the number of glyphs in the font. */
66   public:
67   DEFINE_SIZE_ARRAY (144, CIDs);
68 };
69
70 } /* namespace AAT */
71
72
73 #endif /* HB_AAT_GCID_TABLE_HH */