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_HH 30 #define HB_OT_SHAPE_COMPLEX_USE_HH 31 32 #include "hb.hh" 33 34 35 #include "hb-ot-shape-complex.hh" 36 37 38 #define USE_TABLE_ELEMENT_TYPE uint8_t 39 40 /* Cateories used in the Universal Shaping Engine spec: 41 * https://docs.microsoft.com/en-us/typography/script-development/use 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_IND = 3, /* BASE_IND */ 50 USE_N = 4, /* BASE_NUM */ 51 USE_GB = 5, /* BASE_OTHER */ 52 USE_CGJ = 6, /* CGJ */ 53 // USE_F = 7, /* CONS_FINAL */ 54 USE_FM = 8, /* CONS_FINAL_MOD */ 55 // USE_M = 9, /* CONS_MED */ 56 // USE_CM = 10, /* CONS_MOD */ 57 USE_SUB = 11, /* CONS_SUB */ 58 USE_H = 12, /* HALANT */ 59 60 USE_HN = 13, /* HALANT_NUM */ 61 USE_ZWNJ = 14, /* Zero width non-joiner */ 62 USE_ZWJ = 15, /* Zero width joiner */ 63 USE_WJ = 16, /* Word joiner */ 64 USE_Rsv = 17, /* Reserved characters */ 65 USE_R = 18, /* REPHA */ 66 USE_S = 19, /* SYM */ 67 // USE_SM = 20, /* SYM_MOD */ 68 USE_VS = 21, /* VARIATION_SELECTOR */ 69 // USE_V = 36, /* VOWEL */ 70 // USE_VM = 40, /* VOWEL_MOD */ 71 USE_CS = 43, /* CONS_WITH_STACKER */ 72 73 /* https://github.com/harfbuzz/harfbuzz/issues/1102 */ 74 USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */ 75 76 USE_Sk = 48, /* SAKOT */ 77 78 USE_FAbv = 24, /* CONS_FINAL_ABOVE */ 79 USE_FBlw = 25, /* CONS_FINAL_BELOW */ 80 USE_FPst = 26, /* CONS_FINAL_POST */ 81 USE_MAbv = 27, /* CONS_MED_ABOVE */ 82 USE_MBlw = 28, /* CONS_MED_BELOW */ 83 USE_MPst = 29, /* CONS_MED_POST */ 84 USE_MPre = 30, /* CONS_MED_PRE */ 85 USE_CMAbv = 31, /* CONS_MOD_ABOVE */ 86 USE_CMBlw = 32, /* CONS_MOD_BELOW */ 87 USE_VAbv = 33, /* VOWEL_ABOVE / VOWEL_ABOVE_BELOW / VOWEL_ABOVE_BELOW_POST / VOWEL_ABOVE_POST */ 88 USE_VBlw = 34, /* VOWEL_BELOW / VOWEL_BELOW_POST */ 89 USE_VPst = 35, /* VOWEL_POST UIPC = Right */ 90 USE_VPre = 22, /* VOWEL_PRE / VOWEL_PRE_ABOVE / VOWEL_PRE_ABOVE_POST / VOWEL_PRE_POST */ 91 USE_VMAbv = 37, /* VOWEL_MOD_ABOVE */ 92 USE_VMBlw = 38, /* VOWEL_MOD_BELOW */ 93 USE_VMPst = 39, /* VOWEL_MOD_POST */ 94 USE_VMPre = 23, /* VOWEL_MOD_PRE */ 95 USE_SMAbv = 41, /* SYM_MOD_ABOVE */ 96 USE_SMBlw = 42, /* SYM_MOD_BELOW */ 97 USE_FMAbv = 45, /* CONS_FINAL_MOD UIPC = Top */ 98 USE_FMBlw = 46, /* CONS_FINAL_MOD UIPC = Bottom */ 99 USE_FMPst = 47, /* CONS_FINAL_MOD UIPC = Not_Applicable */ 100 }; 101 102 HB_INTERNAL USE_TABLE_ELEMENT_TYPE 103 hb_use_get_category (hb_codepoint_t u); 104 105 #endif /* HB_OT_SHAPE_COMPLEX_USE_HH */ 106