"Fossies" - the Fresh Open Source Software Archive 
Member "SDL2_ttf-2.20.2/external/freetype/src/autofit/afcjk.h" (25 May 2022, 4191 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 "afcjk.h" see the
Fossies "Dox" file reference documentation.
1 /****************************************************************************
2 *
3 * afcjk.h
4 *
5 * Auto-fitter hinting routines for CJK writing system (specification).
6 *
7 * Copyright (C) 2006-2022 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
9 *
10 * This file is part of the FreeType project, and may only be used,
11 * modified, and distributed under the terms of the FreeType project
12 * license, LICENSE.TXT. By continuing to use, modify, or distribute
13 * this file you indicate that you have read the license and
14 * understand and accept it fully.
15 *
16 */
17
18
19 #ifndef AFCJK_H_
20 #define AFCJK_H_
21
22 #include "afhints.h"
23 #include "aflatin.h"
24
25
26 FT_BEGIN_HEADER
27
28
29 /* the CJK-specific writing system */
30
31 AF_DECLARE_WRITING_SYSTEM_CLASS( af_cjk_writing_system_class )
32
33
34 /*************************************************************************/
35 /*************************************************************************/
36 /***** *****/
37 /***** C J K G L O B A L M E T R I C S *****/
38 /***** *****/
39 /*************************************************************************/
40 /*************************************************************************/
41
42
43 /*
44 * CJK glyphs tend to fill the square. So we have both vertical and
45 * horizontal blue zones. But some glyphs have flat bounding strokes that
46 * leave some space between neighbour glyphs.
47 */
48
49 #define AF_CJK_IS_TOP_BLUE( b ) \
50 ( (b)->properties & AF_BLUE_PROPERTY_CJK_TOP )
51 #define AF_CJK_IS_HORIZ_BLUE( b ) \
52 ( (b)->properties & AF_BLUE_PROPERTY_CJK_HORIZ )
53 #define AF_CJK_IS_RIGHT_BLUE AF_CJK_IS_TOP_BLUE
54
55 #define AF_CJK_MAX_WIDTHS 16
56
57
58 #define AF_CJK_BLUE_ACTIVE ( 1U << 0 ) /* zone height is <= 3/4px */
59 #define AF_CJK_BLUE_TOP ( 1U << 1 ) /* result of AF_CJK_IS_TOP_BLUE */
60 #define AF_CJK_BLUE_ADJUSTMENT ( 1U << 2 ) /* used for scale adjustment */
61 /* optimization */
62
63
64 typedef struct AF_CJKBlueRec_
65 {
66 AF_WidthRec ref;
67 AF_WidthRec shoot; /* undershoot */
68 FT_UInt flags;
69
70 } AF_CJKBlueRec, *AF_CJKBlue;
71
72
73 typedef struct AF_CJKAxisRec_
74 {
75 FT_Fixed scale;
76 FT_Pos delta;
77
78 FT_UInt width_count; /* number of used widths */
79 AF_WidthRec widths[AF_CJK_MAX_WIDTHS]; /* widths array */
80 FT_Pos edge_distance_threshold; /* used for creating edges */
81 FT_Pos standard_width; /* the default stem thickness */
82 FT_Bool extra_light; /* is standard width very light? */
83
84 /* used for horizontal metrics too for CJK */
85 FT_Bool control_overshoot;
86 FT_UInt blue_count;
87 AF_CJKBlueRec blues[AF_BLUE_STRINGSET_MAX];
88
89 FT_Fixed org_scale;
90 FT_Pos org_delta;
91
92 } AF_CJKAxisRec, *AF_CJKAxis;
93
94
95 typedef struct AF_CJKMetricsRec_
96 {
97 AF_StyleMetricsRec root;
98 FT_UInt units_per_em;
99 AF_CJKAxisRec axis[AF_DIMENSION_MAX];
100
101 } AF_CJKMetricsRec, *AF_CJKMetrics;
102
103
104 #ifdef AF_CONFIG_OPTION_CJK
105 FT_LOCAL( FT_Error )
106 af_cjk_metrics_init( AF_CJKMetrics metrics,
107 FT_Face face );
108
109 FT_LOCAL( void )
110 af_cjk_metrics_scale( AF_CJKMetrics metrics,
111 AF_Scaler scaler );
112
113 FT_LOCAL( FT_Error )
114 af_cjk_hints_init( AF_GlyphHints hints,
115 AF_CJKMetrics metrics );
116
117 FT_LOCAL( FT_Error )
118 af_cjk_hints_apply( FT_UInt glyph_index,
119 AF_GlyphHints hints,
120 FT_Outline* outline,
121 AF_CJKMetrics metrics );
122
123 /* shared; called from afindic.c */
124 FT_LOCAL( void )
125 af_cjk_metrics_check_digits( AF_CJKMetrics metrics,
126 FT_Face face );
127
128 FT_LOCAL( void )
129 af_cjk_metrics_init_widths( AF_CJKMetrics metrics,
130 FT_Face face );
131 #endif /* AF_CONFIG_OPTION_CJK */
132
133
134 /* */
135
136 FT_END_HEADER
137
138 #endif /* AFCJK_H_ */
139
140
141 /* END */