1*2d1272b8SAndroid Build Coastguard Worker /* 2*2d1272b8SAndroid Build Coastguard Worker * Copyright © 2017 Google, Inc. 3*2d1272b8SAndroid Build Coastguard Worker * 4*2d1272b8SAndroid Build Coastguard Worker * This is part of HarfBuzz, a text shaping library. 5*2d1272b8SAndroid Build Coastguard Worker * 6*2d1272b8SAndroid Build Coastguard Worker * Permission is hereby granted, without written agreement and without 7*2d1272b8SAndroid Build Coastguard Worker * license or royalty fees, to use, copy, modify, and distribute this 8*2d1272b8SAndroid Build Coastguard Worker * software and its documentation for any purpose, provided that the 9*2d1272b8SAndroid Build Coastguard Worker * above copyright notice and the following two paragraphs appear in 10*2d1272b8SAndroid Build Coastguard Worker * all copies of this software. 11*2d1272b8SAndroid Build Coastguard Worker * 12*2d1272b8SAndroid Build Coastguard Worker * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 13*2d1272b8SAndroid Build Coastguard Worker * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 14*2d1272b8SAndroid Build Coastguard Worker * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 15*2d1272b8SAndroid Build Coastguard Worker * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 16*2d1272b8SAndroid Build Coastguard Worker * DAMAGE. 17*2d1272b8SAndroid Build Coastguard Worker * 18*2d1272b8SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 19*2d1272b8SAndroid Build Coastguard Worker * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20*2d1272b8SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 21*2d1272b8SAndroid Build Coastguard Worker * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 22*2d1272b8SAndroid Build Coastguard Worker * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 23*2d1272b8SAndroid Build Coastguard Worker * 24*2d1272b8SAndroid Build Coastguard Worker * Google Author(s): Behdad Esfahbod 25*2d1272b8SAndroid Build Coastguard Worker */ 26*2d1272b8SAndroid Build Coastguard Worker 27*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_AAT_LAYOUT_HH 28*2d1272b8SAndroid Build Coastguard Worker #define HB_AAT_LAYOUT_HH 29*2d1272b8SAndroid Build Coastguard Worker 30*2d1272b8SAndroid Build Coastguard Worker #include "hb.hh" 31*2d1272b8SAndroid Build Coastguard Worker 32*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot-shape.hh" 33*2d1272b8SAndroid Build Coastguard Worker #include "hb-aat-ltag-table.hh" 34*2d1272b8SAndroid Build Coastguard Worker 35*2d1272b8SAndroid Build Coastguard Worker struct hb_aat_feature_mapping_t 36*2d1272b8SAndroid Build Coastguard Worker { 37*2d1272b8SAndroid Build Coastguard Worker hb_tag_t otFeatureTag; 38*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_feature_type_t aatFeatureType; 39*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_feature_selector_t selectorToEnable; 40*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_feature_selector_t selectorToDisable; 41*2d1272b8SAndroid Build Coastguard Worker cmphb_aat_feature_mapping_t42*2d1272b8SAndroid Build Coastguard Worker int cmp (hb_tag_t key) const 43*2d1272b8SAndroid Build Coastguard Worker { return key < otFeatureTag ? -1 : key > otFeatureTag ? 1 : 0; } 44*2d1272b8SAndroid Build Coastguard Worker }; 45*2d1272b8SAndroid Build Coastguard Worker 46*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL const hb_aat_feature_mapping_t * 47*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_find_feature_mapping (hb_tag_t tag); 48*2d1272b8SAndroid Build Coastguard Worker 49*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void 50*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_compile_map (const hb_aat_map_builder_t *mapper, 51*2d1272b8SAndroid Build Coastguard Worker hb_aat_map_t *map); 52*2d1272b8SAndroid Build Coastguard Worker 53*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void 54*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_substitute (const hb_ot_shape_plan_t *plan, 55*2d1272b8SAndroid Build Coastguard Worker hb_font_t *font, 56*2d1272b8SAndroid Build Coastguard Worker hb_buffer_t *buffer, 57*2d1272b8SAndroid Build Coastguard Worker const hb_feature_t *features, 58*2d1272b8SAndroid Build Coastguard Worker unsigned num_features); 59*2d1272b8SAndroid Build Coastguard Worker 60*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void 61*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_zero_width_deleted_glyphs (hb_buffer_t *buffer); 62*2d1272b8SAndroid Build Coastguard Worker 63*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void 64*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_remove_deleted_glyphs (hb_buffer_t *buffer); 65*2d1272b8SAndroid Build Coastguard Worker 66*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void 67*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_position (const hb_ot_shape_plan_t *plan, 68*2d1272b8SAndroid Build Coastguard Worker hb_font_t *font, 69*2d1272b8SAndroid Build Coastguard Worker hb_buffer_t *buffer); 70*2d1272b8SAndroid Build Coastguard Worker 71*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void 72*2d1272b8SAndroid Build Coastguard Worker hb_aat_layout_track (const hb_ot_shape_plan_t *plan, 73*2d1272b8SAndroid Build Coastguard Worker hb_font_t *font, 74*2d1272b8SAndroid Build Coastguard Worker hb_buffer_t *buffer); 75*2d1272b8SAndroid Build Coastguard Worker 76*2d1272b8SAndroid Build Coastguard Worker 77*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_AAT_LAYOUT_HH */ 78