1 /* 2 * Copyright © 2018 Google, Inc. 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 * Google Author(s): Rod Sheeter 25 */ 26 27 #ifndef HB_SUBSET_H 28 #define HB_SUBSET_H 29 30 #include "hb.h" 31 32 HB_BEGIN_DECLS 33 34 /* 35 * hb_subset_input_t 36 * 37 * Things that change based on the input. Characters to keep, etc. 38 */ 39 40 typedef struct hb_subset_input_t hb_subset_input_t; 41 42 HB_EXTERN hb_subset_input_t * 43 hb_subset_input_create_or_fail (void); 44 45 HB_EXTERN hb_subset_input_t * 46 hb_subset_input_reference (hb_subset_input_t *subset_input); 47 48 HB_EXTERN void 49 hb_subset_input_destroy (hb_subset_input_t *subset_input); 50 51 HB_EXTERN hb_set_t * 52 hb_subset_input_unicode_set (hb_subset_input_t *subset_input); 53 54 HB_EXTERN hb_set_t * 55 hb_subset_input_glyph_set (hb_subset_input_t *subset_input); 56 57 HB_EXTERN hb_set_t * 58 hb_subset_input_nameid_set (hb_subset_input_t *subset_input); 59 60 HB_EXTERN hb_set_t * 61 hb_subset_input_namelangid_set (hb_subset_input_t *subset_input); 62 63 HB_EXTERN hb_set_t * 64 hb_subset_input_layout_features_set (hb_subset_input_t *subset_input); 65 66 HB_EXTERN void 67 hb_subset_input_set_retain_all_features (hb_subset_input_t *subset_input, 68 hb_bool_t value); 69 HB_EXTERN hb_bool_t 70 hb_subset_input_get_retain_all_features (hb_subset_input_t *subset_input); 71 72 HB_EXTERN hb_set_t * 73 hb_subset_input_drop_tables_set (hb_subset_input_t *subset_input); 74 75 HB_EXTERN void 76 hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input, 77 hb_bool_t drop_hints); 78 HB_EXTERN hb_bool_t 79 hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input); 80 81 HB_EXTERN void 82 hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input, 83 hb_bool_t desubroutinize); 84 HB_EXTERN hb_bool_t 85 hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input); 86 87 HB_EXTERN void 88 hb_subset_input_set_retain_gids (hb_subset_input_t *subset_input, 89 hb_bool_t retain_gids); 90 HB_EXTERN hb_bool_t 91 hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input); 92 93 HB_EXTERN void 94 hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input, 95 hb_bool_t name_legacy); 96 HB_EXTERN hb_bool_t 97 hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input); 98 99 HB_EXTERN void 100 hb_subset_input_set_overlaps_flag (hb_subset_input_t *subset_input, 101 hb_bool_t overlaps_flag); 102 103 HB_EXTERN hb_bool_t 104 hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input); 105 106 HB_EXTERN void 107 hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input, 108 hb_bool_t notdef_outline); 109 110 HB_EXTERN hb_bool_t 111 hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input); 112 113 HB_EXTERN void 114 hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input, 115 hb_bool_t no_prune_unicode_ranges); 116 117 HB_EXTERN hb_bool_t 118 hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input); 119 120 /* hb_subset () */ 121 HB_EXTERN hb_face_t * 122 hb_subset (hb_face_t *source, hb_subset_input_t *input); 123 124 125 HB_END_DECLS 126 127 #endif /* HB_SUBSET_H */ 128