~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/include/freetype/internal/autohint.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  autohint.h                                                             */
 
4
/*                                                                         */
 
5
/*    High-level `autohint' module-specific interface (specification).     */
 
6
/*                                                                         */
 
7
/*  Copyright 1996-2001, 2002 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
  /*************************************************************************/
 
20
  /*                                                                       */
 
21
  /* The auto-hinter is used to load and automatically hint glyphs if a    */
 
22
  /* format-specific hinter isn't available.                               */
 
23
  /*                                                                       */
 
24
  /*************************************************************************/
 
25
 
 
26
 
 
27
#ifndef __AUTOHINT_H__
 
28
#define __AUTOHINT_H__
 
29
 
 
30
 
 
31
  /*************************************************************************/
 
32
  /*                                                                       */
 
33
  /* A small technical note regarding automatic hinting in order to        */
 
34
  /* clarify this module interface.                                        */
 
35
  /*                                                                       */
 
36
  /* An automatic hinter might compute two kinds of data for a given face: */
 
37
  /*                                                                       */
 
38
  /* - global hints: Usually some metrics that describe global properties  */
 
39
  /*                 of the face.  It is computed by scanning more or less */
 
40
  /*                 agressively the glyphs in the face, and thus can be   */
 
41
  /*                 very slow to compute (even if the size of global      */
 
42
  /*                 hints is really small).                               */
 
43
  /*                                                                       */
 
44
  /* - glyph hints:  These describe some important features of the glyph   */
 
45
  /*                 outline, as well as how to align them.  They are      */
 
46
  /*                 generally much faster to compute than global hints.   */
 
47
  /*                                                                       */
 
48
  /* The current FreeType auto-hinter does a pretty good job while         */
 
49
  /* performing fast computations for both global and glyph hints.         */
 
50
  /* However, we might be interested in introducing more complex and       */
 
51
  /* powerful algorithms in the future, like the one described in the John */
 
52
  /* D. Hobby paper, which unfortunately requires a lot more horsepower.   */
 
53
  /*                                                                       */
 
54
  /* Because a sufficiently sophisticated font management system would     */
 
55
  /* typically implement an LRU cache of opened face objects to reduce     */
 
56
  /* memory usage, it is a good idea to be able to avoid recomputing       */
 
57
  /* global hints every time the same face is re-opened.                   */
 
58
  /*                                                                       */
 
59
  /* We thus provide the ability to cache global hints outside of the face */
 
60
  /* object, in order to speed up font re-opening time.  Of course, this   */
 
61
  /* feature is purely optional, so most client programs won't even notice */
 
62
  /* it.                                                                   */
 
63
  /*                                                                       */
 
64
  /* I initially thought that it would be a good idea to cache the glyph   */
 
65
  /* hints too.  However, my general idea now is that if you really need   */
 
66
  /* to cache these too, you are simply in need of a new font format,      */
 
67
  /* where all this information could be stored within the font file and   */
 
68
  /* decoded on the fly.                                                   */
 
69
  /*                                                                       */
 
70
  /*************************************************************************/
 
71
 
 
72
 
 
73
#include <ft2build.h>
 
74
#include FT_FREETYPE_H
 
75
 
 
76
 
 
77
FT_BEGIN_HEADER
 
78
 
 
79
 
 
80
  typedef struct FT_AutoHinterRec_  *FT_AutoHinter;
 
81
 
 
82
 
 
83
  /*************************************************************************/
 
84
  /*                                                                       */
 
85
  /* <FuncType>                                                            */
 
86
  /*    FT_AutoHinter_GlobalGetFunc                                        */
 
87
  /*                                                                       */
 
88
  /* <Description>                                                         */
 
89
  /*    Retrieves the global hints computed for a given face object the    */
 
90
  /*    resulting data is dissociated from the face and will survive a     */
 
91
  /*    call to FT_Done_Face().  It must be discarded through the API      */
 
92
  /*    FT_AutoHinter_GlobalDoneFunc().                                    */
 
93
  /*                                                                       */
 
94
  /* <Input>                                                               */
 
95
  /*    hinter        :: A handle to the source auto-hinter.               */
 
96
  /*                                                                       */
 
97
  /*    face          :: A handle to the source face object.               */
 
98
  /*                                                                       */
 
99
  /* <Output>                                                              */
 
100
  /*    global_hints  :: A typeless pointer to the global hints.           */
 
101
  /*                                                                       */
 
102
  /*    global_len    :: The size in bytes of the global hints.            */
 
103
  /*                                                                       */
 
104
  typedef void
 
105
  (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter  hinter,
 
106
                                  FT_Face        face,
 
107
                                  void**         global_hints,
 
108
                                  long*          global_len );
 
109
 
 
110
 
 
111
  /*************************************************************************/
 
112
  /*                                                                       */
 
113
  /* <FuncType>                                                            */
 
114
  /*    FT_AutoHinter_GlobalDoneFunc                                       */
 
115
  /*                                                                       */
 
116
  /* <Description>                                                         */
 
117
  /*    Discards the global hints retrieved through                        */
 
118
  /*    FT_AutoHinter_GlobalGetFunc().  This is the only way these hints   */
 
119
  /*    are freed from memory.                                             */
 
120
  /*                                                                       */
 
121
  /* <Input>                                                               */
 
122
  /*    hinter :: A handle to the auto-hinter module.                      */
 
123
  /*                                                                       */
 
124
  /*    global :: A pointer to retrieved global hints to discard.          */
 
125
  /*                                                                       */
 
126
  typedef void
 
127
  (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter  hinter,
 
128
                                   void*          global );
 
129
 
 
130
 
 
131
  /*************************************************************************/
 
132
  /*                                                                       */
 
133
  /* <FuncType>                                                            */
 
134
  /*    FT_AutoHinter_GlobalResetFunc                                      */
 
135
  /*                                                                       */
 
136
  /* <Description>                                                         */
 
137
  /*    This function is used to recompute the global metrics in a given   */
 
138
  /*    font.  This is useful when global font data changes (e.g. Multiple */
 
139
  /*    Masters fonts where blend coordinates change).                     */
 
140
  /*                                                                       */
 
141
  /* <Input>                                                               */
 
142
  /*    hinter :: A handle to the source auto-hinter.                      */
 
143
  /*                                                                       */
 
144
  /*    face   :: A handle to the face.                                    */
 
145
  /*                                                                       */
 
146
  typedef void
 
147
  (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter  hinter,
 
148
                                    FT_Face        face );
 
149
 
 
150
 
 
151
  /*************************************************************************/
 
152
  /*                                                                       */
 
153
  /* <FuncType>                                                            */
 
154
  /*    FT_AutoHinter_GlyphLoadFunc                                        */
 
155
  /*                                                                       */
 
156
  /* <Description>                                                         */
 
157
  /*    This function is used to load, scale, and automatically hint a     */
 
158
  /*    glyph from a given face.                                           */
 
159
  /*                                                                       */
 
160
  /* <Input>                                                               */
 
161
  /*    face        :: A handle to the face.                               */
 
162
  /*                                                                       */
 
163
  /*    glyph_index :: The glyph index.                                    */
 
164
  /*                                                                       */
 
165
  /*    load_flags  :: The load flags.                                     */
 
166
  /*                                                                       */
 
167
  /* <Note>                                                                */
 
168
  /*    This function is capable of loading composite glyphs by hinting    */
 
169
  /*    each sub-glyph independently (which improves quality).             */
 
170
  /*                                                                       */
 
171
  /*    It will call the font driver with FT_Load_Glyph(), with            */
 
172
  /*    FT_LOAD_NO_SCALE set.                                              */
 
173
  /*                                                                       */
 
174
  typedef FT_Error
 
175
  (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter  hinter,
 
176
                                  FT_GlyphSlot   slot,
 
177
                                  FT_Size        size,
 
178
                                  FT_UInt        glyph_index,
 
179
                                  FT_Int32       load_flags );
 
180
 
 
181
 
 
182
  /*************************************************************************/
 
183
  /*                                                                       */
 
184
  /* <Struct>                                                              */
 
185
  /*    FT_AutoHinter_ServiceRec                                           */
 
186
  /*                                                                       */
 
187
  /* <Description>                                                         */
 
188
  /*    The auto-hinter module's interface.                                */
 
189
  /*                                                                       */
 
190
  typedef struct  FT_AutoHinter_ServiceRec_
 
191
  {
 
192
    FT_AutoHinter_GlobalResetFunc  reset_face;
 
193
    FT_AutoHinter_GlobalGetFunc    get_global_hints;
 
194
    FT_AutoHinter_GlobalDoneFunc   done_global_hints;
 
195
    FT_AutoHinter_GlyphLoadFunc    load_glyph;
 
196
 
 
197
  } FT_AutoHinter_ServiceRec, *FT_AutoHinter_Service;
 
198
 
 
199
 
 
200
FT_END_HEADER
 
201
 
 
202
#endif /* __AUTOHINT_H__ */
 
203
 
 
204
 
 
205
/* END */