xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-limits.hh (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
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