1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftpfr.h                                                                */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType API for accessing PFR-specific data (specification only).   */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
70a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project/*  Copyright 2002, 2003, 2004, 2006, 2008, 2009 by                        */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTPFR_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTPFR_H__
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!"
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files"
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first."
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Section>                                                             */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    pfr_fonts                                                          */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Title>                                                               */
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    PFR Fonts                                                          */
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Abstract>                                                            */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    PFR/TrueDoc specific API.                                          */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This section contains the declaration of PFR-specific functions.   */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_Get_PFR_Metrics
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Return the outline and metrics resolutions of a given PFR face.
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face :: Handle to the input face.  It can be a non-PFR face.
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    aoutline_resolution ::
650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *      Outline resolution.  This is equivalent to `face->units_per_EM'
660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *      for non-PFR fonts.  Optional (parameter can be NULL).
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    ametrics_resolution ::
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Metrics resolution.  This is equivalent to `outline_resolution'
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      for non-PFR fonts.  Optional (parameter can be NULL).
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    ametrics_x_scale ::
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      A 16.16 fixed-point number used to scale distance expressed
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      in metrics units to device sub-pixels.  This is equivalent to
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      `face->size->x_scale', but for metrics only.  Optional (parameter
760a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *      can be NULL).
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    ametrics_y_scale ::
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Same as `ametrics_x_scale' but for the vertical direction.
800a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *      optional (parameter can be NULL).
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
830a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    FreeType error code.  0~means success.
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   If the input face is not a PFR, this function will return an error.
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   However, in all cases, it will return valid values.
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_PFR_Metrics( FT_Face    face,
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_UInt   *aoutline_resolution,
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_UInt   *ametrics_resolution,
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Fixed  *ametrics_x_scale,
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Fixed  *ametrics_y_scale );
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_Get_PFR_Kerning
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Return the kerning pair corresponding to two glyphs in a PFR face.
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    The distance is expressed in metrics units, unlike the result of
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    @FT_Get_Kerning.
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face  :: A handle to the input face.
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    left  :: Index of the left glyph.
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    right :: Index of the right glyph.
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    avector :: A kerning vector.
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
1180a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    FreeType error code.  0~means success.
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    This function always return distances in original PFR metrics
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    units.  This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    mode, which always returns distances converted to outline units.
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    You can use the value of the `x_scale' and `y_scale' parameters
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_PFR_Kerning( FT_Face     face,
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_UInt     left,
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_UInt     right,
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Vector  *avector );
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_Get_PFR_Advance
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Return a given glyph advance, expressed in original metrics units,
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    from a PFR font.
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face   :: A handle to the input face.
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    gindex :: The glyph index.
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    aadvance :: The glyph advance in metrics units.
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
1530a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    FreeType error code.  0~means success.
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Get_PFR_Advance( FT_Face   face,
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_UInt   gindex,
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Pos   *aadvance );
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTPFR_H__ */
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
173