1*2d1272b8SAndroid Build Coastguard Worker /* 2*2d1272b8SAndroid Build Coastguard Worker * Copyright © 2022 Behdad Esfahbod 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 25*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_LIMITS_HH 26*2d1272b8SAndroid Build Coastguard Worker #define HB_LIMITS_HH 27*2d1272b8SAndroid Build Coastguard Worker 28*2d1272b8SAndroid Build Coastguard Worker #include "hb.hh" 29*2d1272b8SAndroid Build Coastguard Worker 30*2d1272b8SAndroid Build Coastguard Worker 31*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_MAX_LEN_FACTOR 32*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_MAX_LEN_FACTOR 64 33*2d1272b8SAndroid Build Coastguard Worker #endif 34*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_MAX_LEN_MIN 35*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_MAX_LEN_MIN 16384 36*2d1272b8SAndroid Build Coastguard Worker #endif 37*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_MAX_LEN_DEFAULT 38*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_MAX_LEN_DEFAULT 0x3FFFFFFF /* Shaping more than a billion chars? Let us know! */ 39*2d1272b8SAndroid Build Coastguard Worker #endif 40*2d1272b8SAndroid Build Coastguard Worker 41*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_MAX_OPS_FACTOR 42*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_MAX_OPS_FACTOR 1024 43*2d1272b8SAndroid Build Coastguard Worker #endif 44*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_MAX_OPS_MIN 45*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_MAX_OPS_MIN 16384 46*2d1272b8SAndroid Build Coastguard Worker #endif 47*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_BUFFER_MAX_OPS_DEFAULT 48*2d1272b8SAndroid Build Coastguard Worker #define HB_BUFFER_MAX_OPS_DEFAULT 0x1FFFFFFF /* Shaping more than a billion operations? Let us know! */ 49*2d1272b8SAndroid Build Coastguard Worker #endif 50*2d1272b8SAndroid Build Coastguard Worker 51*2d1272b8SAndroid Build Coastguard Worker 52*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_NESTING_LEVEL 53*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_NESTING_LEVEL 64 54*2d1272b8SAndroid Build Coastguard Worker #endif 55*2d1272b8SAndroid Build Coastguard Worker 56*2d1272b8SAndroid Build Coastguard Worker 57*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_CONTEXT_LENGTH 58*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_CONTEXT_LENGTH 64 59*2d1272b8SAndroid Build Coastguard Worker #endif 60*2d1272b8SAndroid Build Coastguard Worker 61*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_CLOSURE_MAX_STAGES 62*2d1272b8SAndroid Build Coastguard Worker /* 63*2d1272b8SAndroid Build Coastguard Worker * The maximum number of times a lookup can be applied during shaping. 64*2d1272b8SAndroid Build Coastguard Worker * Used to limit the number of iterations of the closure algorithm. 65*2d1272b8SAndroid Build Coastguard Worker * This must be larger than the number of times add_gsub_pause() is 66*2d1272b8SAndroid Build Coastguard Worker * called in a collect_features call of any shaper. 67*2d1272b8SAndroid Build Coastguard Worker */ 68*2d1272b8SAndroid Build Coastguard Worker #define HB_CLOSURE_MAX_STAGES 12 69*2d1272b8SAndroid Build Coastguard Worker #endif 70*2d1272b8SAndroid Build Coastguard Worker 71*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_SCRIPTS 72*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_SCRIPTS 500 73*2d1272b8SAndroid Build Coastguard Worker #endif 74*2d1272b8SAndroid Build Coastguard Worker 75*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_LANGSYS 76*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_LANGSYS 2000 77*2d1272b8SAndroid Build Coastguard Worker #endif 78*2d1272b8SAndroid Build Coastguard Worker 79*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_LANGSYS_FEATURE_COUNT 80*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_LANGSYS_FEATURE_COUNT 50000 81*2d1272b8SAndroid Build Coastguard Worker #endif 82*2d1272b8SAndroid Build Coastguard Worker 83*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_FEATURE_INDICES 84*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_FEATURE_INDICES 1500 85*2d1272b8SAndroid Build Coastguard Worker #endif 86*2d1272b8SAndroid Build Coastguard Worker 87*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_LOOKUP_VISIT_COUNT 88*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_LOOKUP_VISIT_COUNT 35000 89*2d1272b8SAndroid Build Coastguard Worker #endif 90*2d1272b8SAndroid Build Coastguard Worker 91*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_GRAPH_EDGE_COUNT 92*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_GRAPH_EDGE_COUNT 2048 93*2d1272b8SAndroid Build Coastguard Worker #endif 94*2d1272b8SAndroid Build Coastguard Worker 95*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_VAR_COMPOSITE_MAX_AXES 96*2d1272b8SAndroid Build Coastguard Worker #define HB_VAR_COMPOSITE_MAX_AXES 4096 97*2d1272b8SAndroid Build Coastguard Worker #endif 98*2d1272b8SAndroid Build Coastguard Worker 99*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_GLYF_MAX_POINTS 100*2d1272b8SAndroid Build Coastguard Worker #define HB_GLYF_MAX_POINTS 200000 101*2d1272b8SAndroid Build Coastguard Worker #endif 102*2d1272b8SAndroid Build Coastguard Worker 103*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_CFF_MAX_OPS 104*2d1272b8SAndroid Build Coastguard Worker #define HB_CFF_MAX_OPS 200000 105*2d1272b8SAndroid Build Coastguard Worker #endif 106*2d1272b8SAndroid Build Coastguard Worker 107*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_MAX_COMPOSITE_OPERATIONS_PER_GLYPH 108*2d1272b8SAndroid Build Coastguard Worker #define HB_MAX_COMPOSITE_OPERATIONS_PER_GLYPH 64 109*2d1272b8SAndroid Build Coastguard Worker #endif 110*2d1272b8SAndroid Build Coastguard Worker 111*2d1272b8SAndroid Build Coastguard Worker 112*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_LIMITS_HH */ 113