xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-subset-plan-member-list.hh (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2018  Google, Inc.
3*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2023  Behdad Esfahbod
4*2d1272b8SAndroid Build Coastguard Worker  *
5*2d1272b8SAndroid Build Coastguard Worker  *  This is part of HarfBuzz, a text shaping library.
6*2d1272b8SAndroid Build Coastguard Worker  *
7*2d1272b8SAndroid Build Coastguard Worker  * Permission is hereby granted, without written agreement and without
8*2d1272b8SAndroid Build Coastguard Worker  * license or royalty fees, to use, copy, modify, and distribute this
9*2d1272b8SAndroid Build Coastguard Worker  * software and its documentation for any purpose, provided that the
10*2d1272b8SAndroid Build Coastguard Worker  * above copyright notice and the following two paragraphs appear in
11*2d1272b8SAndroid Build Coastguard Worker  * all copies of this software.
12*2d1272b8SAndroid Build Coastguard Worker  *
13*2d1272b8SAndroid Build Coastguard Worker  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
14*2d1272b8SAndroid Build Coastguard Worker  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
15*2d1272b8SAndroid Build Coastguard Worker  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
16*2d1272b8SAndroid Build Coastguard Worker  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
17*2d1272b8SAndroid Build Coastguard Worker  * DAMAGE.
18*2d1272b8SAndroid Build Coastguard Worker  *
19*2d1272b8SAndroid Build Coastguard Worker  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
20*2d1272b8SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21*2d1272b8SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
22*2d1272b8SAndroid Build Coastguard Worker  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
23*2d1272b8SAndroid Build Coastguard Worker  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24*2d1272b8SAndroid Build Coastguard Worker  *
25*2d1272b8SAndroid Build Coastguard Worker  * Google Author(s): Garret Rieger, Roderick Sheeter
26*2d1272b8SAndroid Build Coastguard Worker  */
27*2d1272b8SAndroid Build Coastguard Worker 
28*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_SUBSET_PLAN_MEMBER_LIST_HH
29*2d1272b8SAndroid Build Coastguard Worker #define HB_SUBSET_PLAN_MEMBER_LIST_HH
30*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_SUBSET_PLAN_MEMBER_LIST_HH */ /* Dummy header guards */
31*2d1272b8SAndroid Build Coastguard Worker 
32*2d1272b8SAndroid Build Coastguard Worker #define E(x, y) x, y
33*2d1272b8SAndroid Build Coastguard Worker 
34*2d1272b8SAndroid Build Coastguard Worker // For each cp that we'd like to retain maps to the corresponding gid.
35*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, unicodes)
36*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_sorted_vector_t<hb_codepoint_pair_t>, unicode_to_new_gid_list)
37*2d1272b8SAndroid Build Coastguard Worker 
38*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_sorted_vector_t<hb_codepoint_pair_t>, new_to_old_gid_list)
39*2d1272b8SAndroid Build Coastguard Worker 
40*2d1272b8SAndroid Build Coastguard Worker // name_ids we would like to retain
41*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, name_ids)
42*2d1272b8SAndroid Build Coastguard Worker 
43*2d1272b8SAndroid Build Coastguard Worker // name_languages we would like to retain
44*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, name_languages)
45*2d1272b8SAndroid Build Coastguard Worker 
46*2d1272b8SAndroid Build Coastguard Worker //layout features which will be preserved
47*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, layout_features)
48*2d1272b8SAndroid Build Coastguard Worker 
49*2d1272b8SAndroid Build Coastguard Worker // layout scripts which will be preserved.
50*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, layout_scripts)
51*2d1272b8SAndroid Build Coastguard Worker 
52*2d1272b8SAndroid Build Coastguard Worker //glyph ids requested to retain
53*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, glyphs_requested)
54*2d1272b8SAndroid Build Coastguard Worker 
55*2d1272b8SAndroid Build Coastguard Worker // Tables which should not be processed, just pass them through.
56*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, no_subset_tables)
57*2d1272b8SAndroid Build Coastguard Worker 
58*2d1272b8SAndroid Build Coastguard Worker // Tables which should be dropped.
59*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, drop_tables)
60*2d1272b8SAndroid Build Coastguard Worker 
61*2d1272b8SAndroid Build Coastguard Worker // Old -> New glyph id mapping
62*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, glyph_map_gsub)
63*2d1272b8SAndroid Build Coastguard Worker 
64*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, _glyphset)
65*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, _glyphset_gsub)
66*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, _glyphset_mathed)
67*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, _glyphset_colred)
68*2d1272b8SAndroid Build Coastguard Worker 
69*2d1272b8SAndroid Build Coastguard Worker //active lookups we'd like to retain
70*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, gsub_lookups)
71*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, gpos_lookups)
72*2d1272b8SAndroid Build Coastguard Worker 
73*2d1272b8SAndroid Build Coastguard Worker //use_mark_sets mapping: old->new
74*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, used_mark_sets_map)
75*2d1272b8SAndroid Build Coastguard Worker 
76*2d1272b8SAndroid Build Coastguard Worker //active langsys we'd like to retain
77*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, hb::unique_ptr<hb_set_t>>), gsub_langsys)
78*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, hb::unique_ptr<hb_set_t>>), gpos_langsys)
79*2d1272b8SAndroid Build Coastguard Worker 
80*2d1272b8SAndroid Build Coastguard Worker //active features after removing redundant langsys and prune_features
81*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, gsub_features)
82*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, gpos_features)
83*2d1272b8SAndroid Build Coastguard Worker 
84*2d1272b8SAndroid Build Coastguard Worker //active feature variation records/condition index with variations
85*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, hb::shared_ptr<hb_set_t>>), gsub_feature_record_cond_idx_map)
86*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, hb::shared_ptr<hb_set_t>>), gpos_feature_record_cond_idx_map)
87*2d1272b8SAndroid Build Coastguard Worker 
88*2d1272b8SAndroid Build Coastguard Worker //feature index-> address of substituation feature table mapping with
89*2d1272b8SAndroid Build Coastguard Worker //variations
90*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, const OT::Feature*>), gsub_feature_substitutes_map)
91*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, const OT::Feature*>), gpos_feature_substitutes_map)
92*2d1272b8SAndroid Build Coastguard Worker 
93*2d1272b8SAndroid Build Coastguard Worker // old feature_indexes set, used to reinstate the old features
94*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, gsub_old_features)
95*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, gpos_old_features)
96*2d1272b8SAndroid Build Coastguard Worker 
97*2d1272b8SAndroid Build Coastguard Worker //feature_index->pair of (address of old feature, feature tag), used for inserting a catch all record
98*2d1272b8SAndroid Build Coastguard Worker //if necessary
99*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, hb_pair_t E(<const void*, const void*>)>), gsub_old_feature_idx_tag_map)
100*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<unsigned, hb_pair_t E(<const void*, const void*>)>), gpos_old_feature_idx_tag_map)
101*2d1272b8SAndroid Build Coastguard Worker 
102*2d1272b8SAndroid Build Coastguard Worker //active layers/palettes we'd like to retain
103*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, colrv1_layers)
104*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, colr_palettes)
105*2d1272b8SAndroid Build Coastguard Worker //colrv1 varstore retained varidx mapping
106*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_vector_t<hb_inc_bimap_t>, colrv1_varstore_inner_maps)
107*2d1272b8SAndroid Build Coastguard Worker //colrv1 retained varidx -> (new varidx, delta) mapping
108*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_hashmap_t E(<unsigned, hb_pair_t E(<unsigned, int>)>), colrv1_variation_idx_delta_map)
109*2d1272b8SAndroid Build Coastguard Worker //colrv1 retained new delta set index -> new varidx mapping
110*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, colrv1_new_deltaset_idx_varidx_map)
111*2d1272b8SAndroid Build Coastguard Worker 
112*2d1272b8SAndroid Build Coastguard Worker //Old layout item variation index -> (New varidx, delta) mapping
113*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_hashmap_t E(<unsigned, hb_pair_t E(<unsigned, int>)>), layout_variation_idx_delta_map)
114*2d1272b8SAndroid Build Coastguard Worker 
115*2d1272b8SAndroid Build Coastguard Worker //gdef varstore retained varidx mapping
116*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_vector_t<hb_inc_bimap_t>, gdef_varstore_inner_maps)
117*2d1272b8SAndroid Build Coastguard Worker 
118*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<hb_tag_t, hb::unique_ptr<hb_blob_t>>), sanitized_table_cache)
119*2d1272b8SAndroid Build Coastguard Worker 
120*2d1272b8SAndroid Build Coastguard Worker //normalized axes range map
121*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<hb_tag_t, Triple>), axes_location)
122*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_vector_t<int>, normalized_coords)
123*2d1272b8SAndroid Build Coastguard Worker 
124*2d1272b8SAndroid Build Coastguard Worker //user specified axes range map
125*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<hb_tag_t, Triple>), user_axes_location)
126*2d1272b8SAndroid Build Coastguard Worker //axis->TripleDistances map (distances in the pre-normalized space)
127*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<hb_tag_t, TripleDistances>), axes_triple_distances)
128*2d1272b8SAndroid Build Coastguard Worker 
129*2d1272b8SAndroid Build Coastguard Worker //retained old axis index -> new axis index mapping in fvar axis array
130*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, axes_index_map)
131*2d1272b8SAndroid Build Coastguard Worker 
132*2d1272b8SAndroid Build Coastguard Worker //axis_index->axis_tag mapping in fvar axis array
133*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_map_t, axes_old_index_tag_map)
134*2d1272b8SAndroid Build Coastguard Worker //vector of retained axis tags in the order of axes given in the 'fvar' table
135*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_vector_t<hb_tag_t>, axis_tags)
136*2d1272b8SAndroid Build Coastguard Worker 
137*2d1272b8SAndroid Build Coastguard Worker //hmtx metrics map: new gid->(advance, lsb)
138*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_hashmap_t E(<hb_codepoint_t, hb_pair_t E(<unsigned, int>)>), hmtx_map)
139*2d1272b8SAndroid Build Coastguard Worker //vmtx metrics map: new gid->(advance, lsb)
140*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_hashmap_t E(<hb_codepoint_t, hb_pair_t E(<unsigned, int>)>), vmtx_map)
141*2d1272b8SAndroid Build Coastguard Worker //boundsWidth map: new gid->boundsWidth, boundWidth=xMax - xMin
142*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_vector_t<unsigned>, bounds_width_vec)
143*2d1272b8SAndroid Build Coastguard Worker //boundsHeight map: new gid->boundsHeight, boundsHeight=yMax - yMin
144*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_vector_t<unsigned>, bounds_height_vec)
145*2d1272b8SAndroid Build Coastguard Worker 
146*2d1272b8SAndroid Build Coastguard Worker //map: new_gid -> contour points vector
147*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_hashmap_t E(<hb_codepoint_t, contour_point_vector_t>), new_gid_contour_points_map)
148*2d1272b8SAndroid Build Coastguard Worker 
149*2d1272b8SAndroid Build Coastguard Worker //new gids set for composite glyphs
150*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_set_t, composite_new_gids)
151*2d1272b8SAndroid Build Coastguard Worker 
152*2d1272b8SAndroid Build Coastguard Worker //Old BASE item variation index -> (New varidx, 0) mapping
153*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (mutable hb_hashmap_t E(<unsigned, hb_pair_t E(<unsigned, int>)>), base_variation_idx_map)
154*2d1272b8SAndroid Build Coastguard Worker 
155*2d1272b8SAndroid Build Coastguard Worker //BASE table varstore retained varidx mapping
156*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_vector_t<hb_inc_bimap_t>, base_varstore_inner_maps)
157*2d1272b8SAndroid Build Coastguard Worker 
158*2d1272b8SAndroid Build Coastguard Worker #ifdef HB_EXPERIMENTAL_API
159*2d1272b8SAndroid Build Coastguard Worker // name table overrides map: hb_ot_name_record_ids_t-> name string new value or
160*2d1272b8SAndroid Build Coastguard Worker // None to indicate should remove
161*2d1272b8SAndroid Build Coastguard Worker HB_SUBSET_PLAN_MEMBER (hb_hashmap_t E(<hb_ot_name_record_ids_t, hb_bytes_t>), name_table_overrides)
162*2d1272b8SAndroid Build Coastguard Worker #endif
163*2d1272b8SAndroid Build Coastguard Worker 
164*2d1272b8SAndroid Build Coastguard Worker #undef E
165