summaryrefslogtreecommitdiffstats
path: root/include/freetype/ftadvanc.h
blob: 108b1ce603618fbffa00356d00d492f4d7151826 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/***************************************************************************/
/*                                                                         */
/*  ftadvanc.h                                                             */
/*                                                                         */
/*    FreeType access the glyph advances       (specification only).       */
/*                                                                         */
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by             */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/

#ifndef __FREETYPE_ADVANCE_H__
#define __FREETYPE_ADVANCE_H__

#include <ft2build.h>
#include FT_FREETYPE_H

  /*************************************************************************/
  /*                                                                       */
  /* <Const>                                                               */
  /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
  /*                                                                       */
  /* <Description>                                                         */
  /*    a bit-flag to be or-ed to the 'flags' parameter of the             */
  /*    @FT_Get_Advance and @FT_Get_Advances.                              */
  /*                                                                       */
  /*    when set, it indicates that you want these functions to fail       */
  /*    if the corresponding hinting mode or font driver doesn't           */
  /*    allow for very quick advance computation.                          */
  /*                                                                       */
  /*    typically, unscaled, unhinted, bitmapped and light-hinted glyphs   */
  /*    can have their advance width(s) computed very quickly.             */
  /*                                                                       */
  /*    not so for normal and bytecode hinted modes, which require         */
  /*    loading/scaling/hinting the glyph outline instead, which is        */
  /*    extremely slow by comparison                                       */
  /*                                                                       */
#define  FT_ADVANCE_FLAG_FAST_ONLY   0x20000000U


  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    FT_Get_Advance                                                     */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Retrieve the advance of a given glyph outline in a FT_Face.        */
  /*    by default, the unhinted advance is returned in font units         */
  /*                                                                       */
  /* <Input>                                                               */
  /*    face       :: source FT_Face handle                                */
  /*    gindex     :: glyph index                                          */
  /*    load_flags :: a set of bit-flags similar to those used             */
  /*                  when calling @FT_Load_Glyph, used to determine       */
  /*                  what kind of advances you need.                      */
  /* <Output>                                                              */
  /*    padvance :: the advance value, in either font units or 16.16       */
  /*                format.                                                */
  /*                                                                       */
  /*                if @FT_LOAD_VERTICAL_LAYOUT is set, this is the        */
  /*                vertical advance corresponding to a vertical layout.   */
  /*                otherwise, it's the horizontal advance in an           */
  /*                horizontal layout.                                     */
  /* <Return>                                                              */
  /*    FreeType error code.  0 means success.                             */
  /*                                                                       */
  /* <Note>                                                                */
  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
  /*    if the corresponding's font backend doesn't have a quick way to    */
  /*    retrieve the advances.                                             */
  /*                                                                       */
  /*    A scaled advance is returned in 16.16 format, but isn't            */
  /*    transformed by the affine transform specified by @FT_Set_Transform */
  /*                                                                       */
  FT_EXPORT( FT_Error )
  FT_Get_Advance( FT_Face    face,
                  FT_UInt    gindex,
                  FT_UInt    load_flags,
                  FT_Fixed  *padvance );

  /*************************************************************************/
  /*                                                                       */
  /* <Function>                                                            */
  /*    FT_Get_Advances                                                    */
  /*                                                                       */
  /* <Description>                                                         */
  /*    Retrieve the advance of several glyph outlines in a FT_Face.       */
  /*    by default, the unhinted advances are returned in font units       */
  /*                                                                       */
  /* <Input>                                                               */
  /*    face        :: source FT_Face handle                               */
  /*    start       :: first glyph index                                   */
  /*    count       :: number of advances you want to retrieve             */
  /*    load_flags  :: a set of bit-flags similar to those used when       */
  /*                   calling @FT_Load_Glyph.                             */
  /*                                                                       */
  /* <Output>                                                              */
  /*    padvance :: the advances, in either font units or 16.16 format.    */
  /*                this array must contain at least 'count' elements      */
  /*                                                                       */
  /*                if @FT_LOAD_VERTICAL_LAYOUT is set, these are the      */
  /*                vertical advances corresponding to a vertical layout.  */
  /*                otherwise, they are the horizontal advances in an      */
  /*                horizontal layout.                                     */
  /* <Return>                                                              */
  /*    FreeType error code.  0 means success.                             */
  /*                                                                       */
  /* <Note>                                                                */
  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
  /*    if the corresponding's font backend doesn't have a quick way to    */
  /*    retrieve the advances.                                             */
  /*                                                                       */
  /*    Scaled advances are returned in 16.16 format, but aren't           */
  /*    transformed by the affine transform specified by @FT_Set_Transform */
  /*                                                                       */
  FT_EXPORT( FT_Error )
  FT_Get_Advances( FT_Face    face,
                   FT_UInt    start,
                   FT_UInt    count,
                   FT_UInt    load_flags,
                   FT_Fixed  *padvances );

/* */

#endif /* __FREETYPE_ADVANCE_H__ */