"Fossies" - the Fresh Open Source Software Archive 
Member "SDL2_ttf-2.20.2/external/freetype/src/autofit/afglobal.h" (25 May 2022, 5122 Bytes) of package /linux/misc/SDL2_ttf-2.20.2.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "afglobal.h" see the
Fossies "Dox" file reference documentation.
1 /****************************************************************************
2 *
3 * afglobal.h
4 *
5 * Auto-fitter routines to compute global hinting values
6 * (specification).
7 *
8 * Copyright (C) 2003-2022 by
9 * David Turner, Robert Wilhelm, and Werner Lemberg.
10 *
11 * This file is part of the FreeType project, and may only be used,
12 * modified, and distributed under the terms of the FreeType project
13 * license, LICENSE.TXT. By continuing to use, modify, or distribute
14 * this file you indicate that you have read the license and
15 * understand and accept it fully.
16 *
17 */
18
19
20 #ifndef AFGLOBAL_H_
21 #define AFGLOBAL_H_
22
23
24 #include "aftypes.h"
25 #include "afmodule.h"
26 #include "afshaper.h"
27
28
29 FT_BEGIN_HEADER
30
31
32 FT_LOCAL_ARRAY( AF_WritingSystemClass )
33 af_writing_system_classes[];
34
35
36 #undef SCRIPT
37 #define SCRIPT( s, S, d, h, H, ss ) \
38 AF_DECLARE_SCRIPT_CLASS( af_ ## s ## _script_class )
39
40 #include "afscript.h"
41
42 FT_LOCAL_ARRAY( AF_ScriptClass )
43 af_script_classes[];
44
45
46 #undef STYLE
47 #define STYLE( s, S, d, ws, sc, ss, c ) \
48 AF_DECLARE_STYLE_CLASS( af_ ## s ## _style_class )
49
50 #include "afstyles.h"
51
52 FT_LOCAL_ARRAY( AF_StyleClass )
53 af_style_classes[];
54
55
56 #ifdef FT_DEBUG_LEVEL_TRACE
57 FT_LOCAL_ARRAY( char* )
58 af_style_names[];
59 #endif
60
61
62 /*
63 * Default values and flags for both autofitter globals (found in
64 * AF_ModuleRec) and face globals (in AF_FaceGlobalsRec).
65 */
66
67 /* index of fallback style in `af_style_classes' */
68 #ifdef AF_CONFIG_OPTION_CJK
69 #define AF_STYLE_FALLBACK AF_STYLE_HANI_DFLT
70 #else
71 #define AF_STYLE_FALLBACK AF_STYLE_NONE_DFLT
72 #endif
73 /* default script for OpenType; ignored if HarfBuzz isn't used */
74 #define AF_SCRIPT_DEFAULT AF_SCRIPT_LATN
75
76 /* a bit mask for AF_DIGIT and AF_NONBASE */
77 #define AF_STYLE_MASK 0x3FFF
78 /* an uncovered glyph */
79 #define AF_STYLE_UNASSIGNED AF_STYLE_MASK
80
81 /* if this flag is set, we have an ASCII digit */
82 #define AF_DIGIT 0x8000U
83 /* if this flag is set, we have a non-base character */
84 #define AF_NONBASE 0x4000U
85
86 /* `increase-x-height' property */
87 #define AF_PROP_INCREASE_X_HEIGHT_MIN 6
88 #define AF_PROP_INCREASE_X_HEIGHT_MAX 0
89
90
91 /************************************************************************/
92 /************************************************************************/
93 /***** *****/
94 /***** F A C E G L O B A L S *****/
95 /***** *****/
96 /************************************************************************/
97 /************************************************************************/
98
99
100 /*
101 * Note that glyph_styles[] maps each glyph to an index into the
102 * `af_style_classes' array.
103 *
104 */
105 typedef struct AF_FaceGlobalsRec_
106 {
107 FT_Face face;
108 FT_Long glyph_count; /* same as face->num_glyphs */
109 FT_UShort* glyph_styles;
110
111 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
112 hb_font_t* hb_font;
113 hb_buffer_t* hb_buf; /* for feature comparison */
114 #endif
115
116 /* per-face auto-hinter properties */
117 FT_UInt increase_x_height;
118
119 AF_StyleMetrics metrics[AF_STYLE_MAX];
120
121 /* Compute darkening amount once per size. Use this to check whether */
122 /* darken_{x,y} needs to be recomputed. */
123 FT_UShort stem_darkening_for_ppem;
124 /* Copy from e.g. AF_LatinMetrics.axis[AF_DIMENSION_HORZ] */
125 /* to compute the darkening amount. */
126 FT_Pos standard_vertical_width;
127 /* Copy from e.g. AF_LatinMetrics.axis[AF_DIMENSION_VERT] */
128 /* to compute the darkening amount. */
129 FT_Pos standard_horizontal_width;
130 /* The actual amount to darken a glyph along the X axis. */
131 FT_Pos darken_x;
132 /* The actual amount to darken a glyph along the Y axis. */
133 FT_Pos darken_y;
134 /* Amount to scale down by to keep emboldened points */
135 /* on the Y-axis in pre-computed blue zones. */
136 FT_Fixed scale_down_factor;
137 AF_Module module; /* to access global properties */
138
139 } AF_FaceGlobalsRec;
140
141
142 /*
143 * model the global hints data for a given face, decomposed into
144 * style-specific items
145 */
146
147 FT_LOCAL( FT_Error )
148 af_face_globals_new( FT_Face face,
149 AF_FaceGlobals *aglobals,
150 AF_Module module );
151
152 FT_LOCAL( FT_Error )
153 af_face_globals_get_metrics( AF_FaceGlobals globals,
154 FT_UInt gindex,
155 FT_UInt options,
156 AF_StyleMetrics *ametrics );
157
158 FT_LOCAL( void )
159 af_face_globals_free( AF_FaceGlobals globals );
160
161 FT_LOCAL_DEF( FT_Bool )
162 af_face_globals_is_digit( AF_FaceGlobals globals,
163 FT_UInt gindex );
164
165 /* */
166
167
168 FT_END_HEADER
169
170 #endif /* AFGLOBAL_H_ */
171
172
173 /* END */