blob: 09f669567cd3330034d5f33b2993e7e5986d962a [file] [log] [blame]
Behdad Esfahbode6582de2019-05-10 23:53:38 -07001/*
2 * Copyright © 2019 Facebook, 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 * Facebook Author(s): Behdad Esfahbod
25 */
26
27#ifndef HB_CONFIG_HH
28#define HB_CONFIG_HH
29
Behdad Esfahbod0bfd14c2019-05-11 00:06:57 -070030#if 0 /* Make test happy. */
31#include "hb.hh"
32#endif
Behdad Esfahbod5249eee2019-05-11 16:12:07 -070033
Behdad Esfahbode6582de2019-05-10 23:53:38 -070034#ifdef HAVE_CONFIG_H
35#include "config.h"
36#endif
37
Behdad Esfahbodaf450a72022-12-09 19:05:16 -070038#ifndef HB_EXPERIMENTAL_API
Behdad Esfahbod6a47ef32022-10-29 11:14:27 -060039#define HB_NO_BEYOND_64K
Behdad Esfahbod91c2f092023-02-10 14:15:16 -070040#define HB_NO_CUBIC_GLYF
Behdad Esfahbod5cf0b9a2022-12-09 18:59:43 -070041#define HB_NO_VAR_COMPOSITES
Behdad Esfahbod6a47ef32022-10-29 11:14:27 -060042#endif
43
Behdad Esfahbod784df8e2019-05-11 00:04:59 -070044#ifdef HB_TINY
Behdad Esfahbod484f6e82019-05-11 00:13:35 -070045#define HB_LEAN
Behdad Esfahbod784df8e2019-05-11 00:04:59 -070046#define HB_MINI
Behdad Esfahbod0e9ebf12023-05-05 06:57:51 -060047#define HB_OPTIMIZE_SIZE
48#define HB_OPTIMIZE_SIZE_MORE
Behdad Esfahbodda175c62023-05-05 06:51:59 -060049#define HB_MINIMIZE_MEMORY_USAGE
Behdad Esfahbod8694d602019-05-12 11:05:24 -070050#define HB_NO_MT
Behdad Esfahbodad97ec92019-06-21 00:44:29 -070051#define HB_NO_UCD_UNASSIGNED
Behdad Esfahbod42ae4682019-05-13 23:43:45 -070052#ifndef NDEBUG
53#define NDEBUG
54#endif
Behdad Esfahbod484f6e82019-05-11 00:13:35 -070055#endif
56
57#ifdef HB_LEAN
Behdad Esfahbodfca27862019-05-11 00:37:01 -070058#define HB_DISABLE_DEPRECATED
Behdad Esfahbod42a21282019-05-11 00:44:22 -070059#define HB_NO_ATEXIT
Ebrahim Byagowi815f0022019-06-05 10:38:06 +043060#define HB_NO_BUFFER_MESSAGE
Behdad Esfahboddba1ac12019-05-12 15:33:31 -070061#define HB_NO_BUFFER_SERIALIZE
Behdad Esfahbod5b1d8132022-01-28 13:49:21 -070062#define HB_NO_BUFFER_VERIFY
Behdad Esfahbod784df8e2019-05-11 00:04:59 -070063#define HB_NO_BITMAP
64#define HB_NO_CFF
Behdad Esfahbod81b79df2019-05-11 00:53:52 -070065#define HB_NO_COLOR
Ebrahim Byagowiac81e942020-01-28 12:34:47 +033066#define HB_NO_DRAW
Ebrahim Byagowi412d6ca2019-09-16 13:50:11 +043067#define HB_NO_ERRNO
Behdad Esfahbod27de7c42019-06-19 20:07:02 -070068#define HB_NO_FACE_COLLECT_UNICODES
Behdad Esfahbod42a21282019-05-11 00:44:22 -070069#define HB_NO_GETENV
Behdad Esfahbodc8f529a2019-06-19 19:33:15 -070070#define HB_NO_HINTING
Behdad Esfahbod6c725c72019-06-19 20:12:25 -070071#define HB_NO_LAYOUT_FEATURE_PARAMS
Behdad Esfahbodfce3bf82019-06-19 20:34:29 -070072#define HB_NO_LAYOUT_COLLECT_GLYPHS
Behdad Esfahbod71c6cba2022-09-01 13:43:19 -060073#define HB_NO_LAYOUT_RARELY_USED
Behdad Esfahbodf8f9cb92019-05-12 15:56:25 -070074#define HB_NO_LAYOUT_UNUSED
Behdad Esfahbod484f6e82019-05-11 00:13:35 -070075#define HB_NO_MATH
Ebrahim Byagowi3ac03bd2019-07-22 23:35:08 +043076#define HB_NO_META
Ebrahim Byagowi2e5b49d2019-07-19 11:41:07 +043077#define HB_NO_METRICS
Ebrahim Byagowib4a5a692019-06-11 01:33:09 +043078#define HB_NO_MMAP
Behdad Esfahbod0e78d4d2019-05-11 01:27:50 -070079#define HB_NO_NAME
Behdad Esfahbod0c5da572019-06-10 14:06:25 -070080#define HB_NO_OPEN
Behdad Esfahbodc8f529a2019-06-19 19:33:15 -070081#define HB_NO_OT_FONT_GLYPH_NAMES
Behdad Esfahbodd84932b2019-06-19 16:57:48 -070082#define HB_NO_OT_SHAPE_FRACTIONS
Behdad Esfahbodceba6c92022-12-30 10:44:34 -070083#define HB_NO_PAINT
84#define HB_NO_SETLOCALE
Ebrahim Byagowi22037492019-08-04 11:31:31 +043085#define HB_NO_STYLE
Behdad Esfahbodf8f9cb92019-05-12 15:56:25 -070086#define HB_NO_SUBSET_LAYOUT
Behdad Esfahbod9e1239f2022-11-24 13:00:47 -070087#define HB_NO_VERTICAL
Behdad Esfahboda8498732019-06-19 19:26:22 -070088#define HB_NO_VAR
Behdad Esfahbod784df8e2019-05-11 00:04:59 -070089#endif
Behdad Esfahbode6582de2019-05-10 23:53:38 -070090
Behdad Esfahbod784df8e2019-05-11 00:04:59 -070091#ifdef HB_MINI
92#define HB_NO_AAT
Behdad Esfahbod771f1b22019-05-11 00:16:18 -070093#define HB_NO_LEGACY
Behdad Esfahbod67eb9ac2022-02-15 17:17:49 -060094#define HB_NO_BORING_EXPANSION
Behdad Esfahbod784df8e2019-05-11 00:04:59 -070095#endif
Behdad Esfahbod799c6a52019-05-10 23:55:22 -070096
Behdad Esfahbode1383192023-05-04 11:28:50 -060097#ifdef __OPTIMIZE_SIZE__
98#ifndef HB_OPTIMIZE_SIZE
99#define HB_OPTIMIZE_SIZE
100#endif
101#endif
102
Behdad Esfahbodb95d2522021-12-03 11:49:55 -0700103#if defined(HAVE_CONFIG_OVERRIDE_H) || defined(HB_CONFIG_OVERRIDE_H)
104#ifndef HB_CONFIG_OVERRIDE_H
105#define HB_CONFIG_OVERRIDE_H "config-override.h"
106#endif
107#include HB_CONFIG_OVERRIDE_H
Andrzej Perczakcab9d5a2021-03-19 22:10:50 +0100108#endif
Behdad Esfahbod23ccd002019-06-17 20:35:04 -0700109
110/* Closure of options. */
Behdad Esfahbod799c6a52019-05-10 23:55:22 -0700111
Behdad Esfahbod5a9c7932022-07-22 21:33:15 -0600112#ifdef HB_NO_BORING_EXPANSION
Behdad Esfahbodbbf4cfa2023-05-05 06:51:10 -0600113#define HB_NO_BEYOND_64K
114#define HB_NO_CUBIC_GLYF
115#define HB_NO_VAR_COMPOSITES
Behdad Esfahbod5a9c7932022-07-22 21:33:15 -0600116#endif
117
Behdad Esfahbodbf27f4a2024-03-16 14:50:27 -0600118#ifdef HB_NO_VAR
119#define HB_NO_VAR_COMPOSITES
120#endif
121
Behdad Esfahbodfca27862019-05-11 00:37:01 -0700122#ifdef HB_DISABLE_DEPRECATED
123#define HB_IF_NOT_DEPRECATED(x)
124#else
125#define HB_IF_NOT_DEPRECATED(x) x
126#endif
127
Behdad Esfahbodad5588e2022-12-04 15:27:59 -0700128#ifdef HB_NO_SHAPER
129#define HB_NO_OT_SHAPE
130#define HB_NO_AAT_SHAPE
131#endif
132
Behdad Esfahbod799c6a52019-05-10 23:55:22 -0700133#ifdef HB_NO_AAT
Behdad Esfahbod1fc07722019-05-11 01:24:23 -0700134#define HB_NO_OT_NAME_LANGUAGE_AAT
Behdad Esfahbod12092a42019-06-26 13:31:01 -0700135#define HB_NO_AAT_SHAPE
Behdad Esfahbod799c6a52019-05-10 23:55:22 -0700136#endif
137
138#ifdef HB_NO_BITMAP
139#define HB_NO_OT_FONT_BITMAP
140#endif
141
142#ifdef HB_NO_CFF
143#define HB_NO_OT_FONT_CFF
144#define HB_NO_SUBSET_CFF
145#endif
146
Behdad Esfahbod209f63b2023-02-24 16:03:23 -0700147#ifdef HB_NO_DRAW
148#define HB_NO_OUTLINE
149#endif
150
Behdad Esfahboda1394a22019-05-12 15:47:46 -0700151#ifdef HB_NO_GETENV
152#define HB_NO_UNISCRIBE_BUG_COMPATIBLE
153#endif
154
Behdad Esfahbod771f1b22019-05-11 00:16:18 -0700155#ifdef HB_NO_LEGACY
Behdad Esfahbod3caa32d2019-06-19 19:50:54 -0700156#define HB_NO_CMAP_LEGACY_SUBTABLES
Behdad Esfahbod23768a92019-06-17 20:29:29 -0700157#define HB_NO_FALLBACK_SHAPE
Behdad Esfahbod588697a2019-06-19 16:24:51 -0700158#define HB_NO_OT_KERN
Behdad Esfahbodcf9538e2021-06-04 22:33:16 -0600159#define HB_NO_OT_LAYOUT_BLOCKLIST
Behdad Esfahbod771f1b22019-05-11 00:16:18 -0700160#define HB_NO_OT_SHAPE_FALLBACK
161#endif
162
Behdad Esfahbod0e78d4d2019-05-11 01:27:50 -0700163#ifdef HB_NO_NAME
164#define HB_NO_OT_NAME_LANGUAGE
165#endif
166
Behdad Esfahbod7aad5362019-06-26 13:21:03 -0700167#ifdef HB_NO_OT
Behdad Esfahbodab40a2f2019-06-26 13:25:02 -0700168#define HB_NO_OT_FONT
Behdad Esfahbodbb4bbe62019-06-26 13:29:58 -0700169#define HB_NO_OT_LAYOUT
Behdad Esfahbod8fe15482019-06-26 13:49:42 -0700170#define HB_NO_OT_TAG
Behdad Esfahbod7aad5362019-06-26 13:21:03 -0700171#define HB_NO_OT_SHAPE
172#endif
173
Behdad Esfahbodb0fd16e2019-06-26 13:31:51 -0700174#ifdef HB_NO_OT_SHAPE
175#define HB_NO_AAT_SHAPE
176#endif
177
Behdad Esfahbod771f1b22019-05-11 00:16:18 -0700178#ifdef HB_NO_OT_SHAPE_FALLBACK
Behdad Esfahbod44be1e52022-06-03 02:54:33 -0600179#define HB_NO_OT_SHAPER_ARABIC_FALLBACK
180#define HB_NO_OT_SHAPER_HEBREW_FALLBACK
181#define HB_NO_OT_SHAPER_THAI_FALLBACK
182#define HB_NO_OT_SHAPER_VOWEL_CONSTRAINTS
Behdad Esfahbod12485742022-11-24 12:46:04 -0700183#define HB_NO_OT_SHAPER_MYANMAR_ZAWGYI
Behdad Esfahbod784df8e2019-05-11 00:04:59 -0700184#endif
185
Behdad Esfahbod0e9ebf12023-05-05 06:57:51 -0600186#ifdef HB_OPTIMIZE_SIZE_MORE
Behdad Esfahbod49730532023-07-16 13:09:49 -0600187#define HB_NO_OT_RULESETS_FAST_PATH
Behdad Esfahbod0e9ebf12023-05-05 06:57:51 -0600188#endif
189
Behdad Esfahbodda175c62023-05-05 06:51:59 -0600190#ifdef HB_MINIMIZE_MEMORY_USAGE
191#define HB_NO_GDEF_CACHE
192#define HB_NO_OT_LAYOUT_LOOKUP_CACHE
Behdad Esfahbod7e676cb2023-05-05 07:07:00 -0600193#define HB_NO_OT_FONT_ADVANCE_CACHE
Behdad Esfahbod8831ba72023-05-05 07:03:25 -0600194#define HB_NO_OT_FONT_CMAP_CACHE
Behdad Esfahbodda175c62023-05-05 06:51:59 -0600195#endif
196
Behdad Esfahbod10565902023-04-27 10:41:36 -0600197#ifdef HB_OPTIMIZE_SIZE
198#define HB_OPTIMIZE_SIZE_VAL 1
199#else
200#define HB_OPTIMIZE_SIZE_VAL 0
201#endif
Behdad Esfahbod799c6a52019-05-10 23:55:22 -0700202
Behdad Esfahbodda175c62023-05-05 06:51:59 -0600203#ifdef HB_MINIMIZE_MEMORY_USAGE
204#define HB_MINIMIZE_MEMORY_USAGE_VAL 1
205#else
206#define HB_MINIMIZE_MEMORY_USAGE_VAL 0
Behdad Esfahbod39820af2022-06-07 10:18:38 -0600207#endif
208
Behdad Esfahbode6582de2019-05-10 23:53:38 -0700209#endif /* HB_CONFIG_HH */