1 /* 2 * Copyright 2015 Mozilla Foundation. 3 * Copyright 2015 Google, Inc. 4 * 5 * This is part of HarfBuzz, a text shaping library. 6 * 7 * Permission is hereby granted, without written agreement and without 8 * license or royalty fees, to use, copy, modify, and distribute this 9 * software and its documentation for any purpose, provided that the 10 * above copyright notice and the following two paragraphs appear in 11 * all copies of this software. 12 * 13 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 14 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 15 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 16 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 17 * DAMAGE. 18 * 19 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 20 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 21 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 22 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 23 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 24 * 25 * Mozilla Author(s): Jonathan Kew 26 * Google Author(s): Behdad Esfahbod 27 */ 28 29 #ifndef HB_OT_SHAPE_COMPLEX_USE_PRIVATE_HH 30 #define HB_OT_SHAPE_COMPLEX_USE_PRIVATE_HH 31 32 #include "hb-private.hh" 33 34 35 #include "hb-ot-shape-complex-private.hh" 36 37 38 #define USE_TABLE_ELEMENT_TYPE uint8_t 39 40 /* Cateories used in the Universal Shaping Engine spec: 41 * https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm 42 */ 43 /* Note: This enum is duplicated in the -machine.rl source file. 44 * Not sure how to avoid duplication. */ 45 enum use_category_t { 46 USE_O = 0, /* OTHER */ 47 48 USE_B = 1, /* BASE */ 49 USE_IV = 2, /* BASE_VOWEL */ 50 USE_IND = 3, /* BASE_IND */ 51 USE_N = 4, /* BASE_NUM */ 52 USE_GB = 5, /* BASE_OTHER */ 53 USE_CGJ = 6, /* CGJ */ 54 // USE_F = 7, /* CONS_FINAL */ 55 USE_FM = 8, /* CONS_FINAL_MOD */ 56 // USE_M = 9, /* CONS_MED */ 57 // USE_CM = 10, /* CONS_MOD */ 58 USE_SUB = 11, /* CONS_SUB */ 59 USE_H = 12, /* HALANT */ 60 61 USE_HN = 13, /* HALANT_NUM */ 62 USE_ZWNJ = 14, /* Zero width non-joiner */ 63 USE_ZWJ = 15, /* Zero width joiner */ 64 USE_WJ = 16, /* Word joiner */ 65 USE_Rsv = 17, /* Reserved characters */ 66 USE_R = 18, /* REPHA */ 67 USE_S = 19, /* SYM */ 68 // USE_SM = 20, /* SYM_MOD */ 69 USE_VS = 21, /* VARIATION_SELECTOR */ 70 // USE_V = 36, /* VOWEL */ 71 // USE_VM = 40, /* VOWEL_MOD */ 72 73 USE_FAbv = 24, /* CONS_FINAL_ABOVE */ 74 USE_FBlw = 25, /* CONS_FINAL_BELOW */ 75 USE_FPst = 26, /* CONS_FINAL_POST */ 76 USE_MAbv = 27, /* CONS_MED_ABOVE */ 77 USE_MBlw = 28, /* CONS_MED_BELOW */ 78 USE_MPst = 29, /* CONS_MED_POST */ 79 USE_MPre = 30, /* CONS_MED_PRE */ 80 USE_CMAbv = 31, /* CONS_MOD_ABOVE */ 81 USE_CMBlw = 32, /* CONS_MOD_BELOW */ 82 USE_VAbv = 33, /* VOWEL_ABOVE / VOWEL_ABOVE_BELOW / VOWEL_ABOVE_BELOW_POST / VOWEL_ABOVE_POST */ 83 USE_VBlw = 34, /* VOWEL_BELOW / VOWEL_BELOW_POST */ 84 USE_VPst = 35, /* VOWEL_POST UIPC = Right */ 85 USE_VPre = 22, /* VOWEL_PRE / VOWEL_PRE_ABOVE / VOWEL_PRE_ABOVE_POST / VOWEL_PRE_POST */ 86 USE_VMAbv = 37, /* VOWEL_MOD_ABOVE */ 87 USE_VMBlw = 38, /* VOWEL_MOD_BELOW */ 88 USE_VMPst = 39, /* VOWEL_MOD_POST */ 89 USE_VMPre = 23, /* VOWEL_MOD_PRE */ 90 USE_SMAbv = 41, /* SYM_MOD_ABOVE */ 91 USE_SMBlw = 42 /* SYM_MOD_BELOW */ 92 }; 93 94 HB_INTERNAL USE_TABLE_ELEMENT_TYPE 95 hb_use_get_categories (hb_codepoint_t u); 96 97 #endif /* HB_OT_SHAPE_COMPLEX_USE_PRIVATE_HH */ 98