1 /****************************************************************************
5 * Quick computation of advance widths (specification only).
7 * Copyright (C) 2008-2023 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
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.
23 #include <freetype/freetype.h>
26 #error "freetype.h of FreeType 1 has been loaded!"
27 #error "Please fix the directory search order for header files"
28 #error "so that freetype.h of FreeType 2 is found first."
35 /**************************************************************************
41 * Quick retrieval of advance values
44 * Retrieve horizontal and vertical advance values without processing
45 * glyph outlines, if possible.
48 * This section contains functions to quickly extract advance values
49 * without handling glyph outlines, if possible.
58 /**************************************************************************
61 * FT_ADVANCE_FLAG_FAST_ONLY
64 * A bit-flag to be OR-ed with the `flags` parameter of the
65 * @FT_Get_Advance and @FT_Get_Advances functions.
67 * If set, it indicates that you want these functions to fail if the
68 * corresponding hinting mode or font driver doesn't allow for very quick
69 * advance computation.
71 * Typically, glyphs that are either unscaled, unhinted, bitmapped, or
72 * light-hinted can have their advance width computed very quickly.
74 * Normal and bytecode hinted modes that require loading, scaling, and
75 * hinting of the glyph outline, are extremely slow by comparison.
77 #define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L
80 /**************************************************************************
86 * Retrieve the advance value of a given glyph outline in an @FT_Face.
90 * The source @FT_Face handle.
96 * A set of bit flags similar to those used when calling
97 * @FT_Load_Glyph, used to determine what kind of advances you need.
101 * The advance value. If scaling is performed (based on the value of
102 * `load_flags`), the advance value is in 16.16 format. Otherwise, it
105 * If @FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance
106 * corresponding to a vertical layout. Otherwise, it is the horizontal
107 * advance in a horizontal layout.
110 * FreeType error code. 0 means success.
113 * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
114 * the corresponding font backend doesn't have a quick way to retrieve
117 * A scaled advance is returned in 16.16 format but isn't transformed by
118 * the affine transformation specified by @FT_Set_Transform.
120 FT_EXPORT( FT_Error )
121 FT_Get_Advance( FT_Face face,
124 FT_Fixed *padvance );
127 /**************************************************************************
133 * Retrieve the advance values of several glyph outlines in an @FT_Face.
137 * The source @FT_Face handle.
140 * The first glyph index.
143 * The number of advance values you want to retrieve.
146 * A set of bit flags similar to those used when calling
151 * The advance values. This array, to be provided by the caller, must
152 * contain at least `count` elements.
154 * If scaling is performed (based on the value of `load_flags`), the
155 * advance values are in 16.16 format. Otherwise, they are in font
158 * If @FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances
159 * corresponding to a vertical layout. Otherwise, they are the
160 * horizontal advances in a horizontal layout.
163 * FreeType error code. 0 means success.
166 * This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
167 * the corresponding font backend doesn't have a quick way to retrieve
170 * Scaled advances are returned in 16.16 format but aren't transformed by
171 * the affine transformation specified by @FT_Set_Transform.
173 FT_EXPORT( FT_Error )
174 FT_Get_Advances( FT_Face face,
178 FT_Fixed *padvances );
185 #endif /* FTADVANC_H_ */