fontservices/freetypefontrasteriser/freetype2/include/freetype/internal/pshints.h
author hgs
Wed, 27 Oct 2010 16:14:22 +0800
changeset 71 6cc5529d4a89
permissions -rw-r--r--
201033_10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     1
/***************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     2
/*                                                                         */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     3
/*  pshints.h                                                              */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     4
/*                                                                         */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     5
/*    Interface to Postscript-specific (Type 1 and Type 2) hints           */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     6
/*    recorders (specification only).  These are used to support native    */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     7
/*    T1/T2 hints in the `type1', `cid', and `cff' font drivers.           */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     8
/*                                                                         */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
     9
/*  Copyright 2001, 2002, 2003, 2005, 2006 by                              */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    10
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    11
/*                                                                         */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    12
/*  This file is part of the FreeType project, and may only be used,       */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    13
/*  modified, and distributed under the terms of the FreeType project      */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    14
/*  license, FTL.TXT.  By continuing to use, modify, or distribute     */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    15
/*  this file you indicate that you have read the license and              */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    16
/*  understand and accept it fully.                                        */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    17
/*                                                                         */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    18
/***************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    19
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    20
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    21
#ifndef __PSHINTS_H__
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    22
#define __PSHINTS_H__
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    23
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    24
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    25
#include <ft2build.h>
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    26
#include FT_FREETYPE_H
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    27
#include FT_TYPE1_TABLES_H
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    28
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    29
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    30
FT_BEGIN_HEADER
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    31
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    32
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    33
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    34
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    35
  /*****                                                               *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    36
  /*****               INTERNAL REPRESENTATION OF GLOBALS              *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    37
  /*****                                                               *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    38
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    39
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    40
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    41
  typedef struct PSH_GlobalsRec_*  PSH_Globals;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    42
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    43
  typedef FT_Error
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    44
  (*PSH_Globals_NewFunc)( FT_Memory     memory,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    45
                          T1_Private*   private_dict,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    46
                          PSH_Globals*  aglobals );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    47
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    48
  typedef FT_Error
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    49
  (*PSH_Globals_SetScaleFunc)( PSH_Globals  globals,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    50
                               FT_Fixed     x_scale,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    51
                               FT_Fixed     y_scale,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    52
                               FT_Fixed     x_delta,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    53
                               FT_Fixed     y_delta );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    54
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    55
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    56
  (*PSH_Globals_DestroyFunc)( PSH_Globals  globals );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    57
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    58
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    59
  typedef struct  PSH_Globals_FuncsRec_
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    60
  {
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    61
    PSH_Globals_NewFunc       create;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    62
    PSH_Globals_SetScaleFunc  set_scale;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    63
    PSH_Globals_DestroyFunc   destroy;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    64
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    65
  } PSH_Globals_FuncsRec, *PSH_Globals_Funcs;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    66
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    67
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    68
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    69
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    70
  /*****                                                               *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    71
  /*****                  PUBLIC TYPE 1 HINTS RECORDER                 *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    72
  /*****                                                               *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    73
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    74
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    75
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    76
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    77
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    78
   * @type:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    79
   *   T1_Hints
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    80
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    81
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    82
   *   This is a handle to an opaque structure used to record glyph hints
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    83
   *   from a Type 1 character glyph character string.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    84
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    85
   *   The methods used to operate on this object are defined by the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    86
   *   @T1_Hints_FuncsRec structure.  Recording glyph hints is normally
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    87
   *   achieved through the following scheme:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    88
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    89
   *   - Open a new hint recording session by calling the `open' method.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    90
   *     This rewinds the recorder and prepare it for new input.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    91
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    92
   *   - For each hint found in the glyph charstring, call the corresponding
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    93
   *     method (`stem', `stem3', or `reset').  Note that these functions do
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    94
   *     not return an error code.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    95
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    96
   *   - Close the recording session by calling the `close' method.  It
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    97
   *     returns an error code if the hints were invalid or something
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    98
   *     strange happened (e.g., memory shortage).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
    99
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   100
   *   The hints accumulated in the object can later be used by the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   101
   *   PostScript hinter.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   102
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   103
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   104
  typedef struct T1_HintsRec_*  T1_Hints;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   105
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   106
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   107
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   108
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   109
   * @type:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   110
   *   T1_Hints_Funcs
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   111
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   112
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   113
   *   A pointer to the @T1_Hints_FuncsRec structure that defines the API of
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   114
   *   a given @T1_Hints object.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   115
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   116
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   117
  typedef const struct T1_Hints_FuncsRec_*  T1_Hints_Funcs;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   118
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   119
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   120
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   121
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   122
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   123
   *   T1_Hints_OpenFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   124
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   125
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   126
   *   A method of the @T1_Hints class used to prepare it for a new Type 1
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   127
   *   hints recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   128
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   129
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   130
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   131
   *     A handle to the Type 1 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   132
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   133
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   134
   *   You should always call the @T1_Hints_CloseFunc method in order to
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   135
   *   close an opened recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   136
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   137
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   138
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   139
  (*T1_Hints_OpenFunc)( T1_Hints  hints );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   140
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   141
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   142
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   143
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   144
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   145
   *   T1_Hints_SetStemFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   146
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   147
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   148
   *   A method of the @T1_Hints class used to record a new horizontal or
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   149
   *   vertical stem.  This corresponds to the Type 1 `hstem' and `vstem'
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   150
   *   operators.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   151
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   152
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   153
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   154
   *     A handle to the Type 1 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   155
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   156
   *   dimension ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   157
   *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   158
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   159
   *   coords ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   160
   *     Array of 2 integers, used as (position,length) stem descriptor.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   161
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   162
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   163
   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   164
   *   horizontal coordinates (x) for vertical stems (dim=1).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   165
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   166
   *   `coords[0]' is the absolute stem position (lowest coordinate);
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   167
   *   `coords[1]' is the length.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   168
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   169
   *   The length can be negative, in which case it must be either -20 or
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   170
   *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   171
   *   specification.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   172
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   173
   *   If the length is -21 (corresponding to a bottom ghost stem), then
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   174
   *   the real stem position is `coords[0]+coords[1]'.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   175
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   176
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   177
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   178
  (*T1_Hints_SetStemFunc)( T1_Hints  hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   179
                           FT_UInt   dimension,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   180
                           FT_Long*  coords );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   181
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   182
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   183
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   184
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   185
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   186
   *   T1_Hints_SetStem3Func
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   187
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   188
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   189
   *   A method of the @T1_Hints class used to record three
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   190
   *   counter-controlled horizontal or vertical stems at once.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   191
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   192
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   193
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   194
   *     A handle to the Type 1 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   195
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   196
   *   dimension ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   197
   *     0 for horizontal stems, 1 for vertical ones.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   198
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   199
   *   coords ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   200
   *     An array of 6 integers, holding 3 (position,length) pairs for the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   201
   *     counter-controlled stems.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   202
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   203
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   204
   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   205
   *   horizontal coordinates (x) for vertical stems (dim=1).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   206
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   207
   *   The lengths cannot be negative (ghost stems are never
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   208
   *   counter-controlled).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   209
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   210
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   211
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   212
  (*T1_Hints_SetStem3Func)( T1_Hints  hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   213
                            FT_UInt   dimension,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   214
                            FT_Long*  coords );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   215
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   216
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   217
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   218
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   219
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   220
   *   T1_Hints_ResetFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   221
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   222
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   223
   *   A method of the @T1_Hints class used to reset the stems hints in a
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   224
   *   recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   225
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   226
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   227
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   228
   *     A handle to the Type 1 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   229
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   230
   *   end_point ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   231
   *     The index of the last point in the input glyph in which the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   232
   *     previously defined hints apply.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   233
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   234
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   235
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   236
  (*T1_Hints_ResetFunc)( T1_Hints  hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   237
                         FT_UInt   end_point );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   238
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   239
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   240
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   241
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   242
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   243
   *   T1_Hints_CloseFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   244
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   245
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   246
   *   A method of the @T1_Hints class used to close a hint recording
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   247
   *   session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   248
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   249
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   250
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   251
   *     A handle to the Type 1 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   252
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   253
   *   end_point ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   254
   *     The index of the last point in the input glyph.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   255
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   256
   * @return:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   257
   *   FreeType error code.  0 means success.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   258
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   259
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   260
   *   The error code is set to indicate that an error occurred during the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   261
   *   recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   262
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   263
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   264
  typedef FT_Error
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   265
  (*T1_Hints_CloseFunc)( T1_Hints  hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   266
                         FT_UInt   end_point );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   267
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   268
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   269
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   270
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   271
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   272
   *   T1_Hints_ApplyFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   273
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   274
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   275
   *   A method of the @T1_Hints class used to apply hints to the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   276
   *   corresponding glyph outline.  Must be called once all hints have been
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   277
   *   recorded.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   278
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   279
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   280
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   281
   *     A handle to the Type 1 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   282
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   283
   *   outline ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   284
   *     A pointer to the target outline descriptor.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   285
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   286
   *   globals ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   287
   *     The hinter globals for this font.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   288
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   289
   *   hint_mode ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   290
   *     Hinting information.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   291
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   292
   * @return:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   293
   *   FreeType error code.  0 means success.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   294
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   295
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   296
   *   On input, all points within the outline are in font coordinates. On
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   297
   *   output, they are in 1/64th of pixels.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   298
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   299
   *   The scaling transformation is taken from the `globals' object which
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   300
   *   must correspond to the same font as the glyph.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   301
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   302
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   303
  typedef FT_Error
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   304
  (*T1_Hints_ApplyFunc)( T1_Hints        hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   305
                         FT_Outline*     outline,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   306
                         PSH_Globals     globals,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   307
                         FT_Render_Mode  hint_mode );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   308
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   309
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   310
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   311
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   312
   * @struct:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   313
   *   T1_Hints_FuncsRec
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   314
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   315
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   316
   *   The structure used to provide the API to @T1_Hints objects.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   317
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   318
   * @fields:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   319
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   320
   *     A handle to the T1 Hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   321
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   322
   *   open ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   323
   *     The function to open a recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   324
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   325
   *   close ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   326
   *     The function to close a recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   327
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   328
   *   stem ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   329
   *     The function to set a simple stem.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   330
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   331
   *   stem3 ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   332
   *     The function to set counter-controlled stems.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   333
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   334
   *   reset ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   335
   *     The function to reset stem hints.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   336
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   337
   *   apply ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   338
   *     The function to apply the hints to the corresponding glyph outline.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   339
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   340
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   341
  typedef struct  T1_Hints_FuncsRec_
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   342
  {
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   343
    T1_Hints               hints;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   344
    T1_Hints_OpenFunc      open;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   345
    T1_Hints_CloseFunc     close;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   346
    T1_Hints_SetStemFunc   stem;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   347
    T1_Hints_SetStem3Func  stem3;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   348
    T1_Hints_ResetFunc     reset;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   349
    T1_Hints_ApplyFunc     apply;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   350
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   351
  } T1_Hints_FuncsRec;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   352
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   353
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   354
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   355
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   356
  /*****                                                               *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   357
  /*****                  PUBLIC TYPE 2 HINTS RECORDER                 *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   358
  /*****                                                               *****/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   359
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   360
  /*************************************************************************/
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   361
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   362
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   363
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   364
   * @type:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   365
   *   T2_Hints
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   366
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   367
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   368
   *   This is a handle to an opaque structure used to record glyph hints
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   369
   *   from a Type 2 character glyph character string.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   370
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   371
   *   The methods used to operate on this object are defined by the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   372
   *   @T2_Hints_FuncsRec structure.  Recording glyph hints is normally
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   373
   *   achieved through the following scheme:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   374
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   375
   *   - Open a new hint recording session by calling the `open' method.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   376
   *     This rewinds the recorder and prepare it for new input.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   377
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   378
   *   - For each hint found in the glyph charstring, call the corresponding
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   379
   *     method (`stems', `hintmask', `counters').  Note that these
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   380
   *     functions do not return an error code.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   381
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   382
   *   - Close the recording session by calling the `close' method.  It
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   383
   *     returns an error code if the hints were invalid or something
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   384
   *     strange happened (e.g., memory shortage).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   385
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   386
   *   The hints accumulated in the object can later be used by the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   387
   *   Postscript hinter.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   388
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   389
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   390
  typedef struct T2_HintsRec_*  T2_Hints;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   391
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   392
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   393
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   394
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   395
   * @type:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   396
   *   T2_Hints_Funcs
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   397
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   398
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   399
   *   A pointer to the @T2_Hints_FuncsRec structure that defines the API of
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   400
   *   a given @T2_Hints object.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   401
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   402
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   403
  typedef const struct T2_Hints_FuncsRec_*  T2_Hints_Funcs;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   404
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   405
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   406
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   407
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   408
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   409
   *   T2_Hints_OpenFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   410
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   411
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   412
   *   A method of the @T2_Hints class used to prepare it for a new Type 2
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   413
   *   hints recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   414
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   415
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   416
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   417
   *     A handle to the Type 2 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   418
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   419
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   420
   *   You should always call the @T2_Hints_CloseFunc method in order to
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   421
   *   close an opened recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   422
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   423
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   424
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   425
  (*T2_Hints_OpenFunc)( T2_Hints  hints );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   426
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   427
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   428
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   429
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   430
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   431
   *   T2_Hints_StemsFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   432
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   433
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   434
   *   A method of the @T2_Hints class used to set the table of stems in
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   435
   *   either the vertical or horizontal dimension.  Equivalent to the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   436
   *   `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   437
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   438
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   439
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   440
   *     A handle to the Type 2 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   441
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   442
   *   dimension ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   443
   *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   444
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   445
   *   count ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   446
   *     The number of stems.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   447
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   448
   *   coords ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   449
   *     An array of `count' (position,length) pairs.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   450
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   451
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   452
   *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   453
   *   horizontal coordinates (x) for vertical stems (dim=1).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   454
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   455
   *   There are `2*count' elements in the `coords' aray.  Each even element
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   456
   *   is an absolute position in font units, each odd element is a length
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   457
   *   in font units.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   458
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   459
   *   A length can be negative, in which case it must be either -20 or
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   460
   *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   461
   *   specification.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   462
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   463
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   464
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   465
  (*T2_Hints_StemsFunc)( T2_Hints   hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   466
                         FT_UInt    dimension,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   467
                         FT_UInt    count,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   468
                         FT_Fixed*  coordinates );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   469
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   470
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   471
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   472
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   473
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   474
   *   T2_Hints_MaskFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   475
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   476
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   477
   *   A method of the @T2_Hints class used to set a given hintmask (this
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   478
   *   corresponds to the `hintmask' Type 2 operator).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   479
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   480
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   481
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   482
   *     A handle to the Type 2 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   483
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   484
   *   end_point ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   485
   *     The glyph index of the last point to which the previously defined
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   486
   *     or activated hints apply.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   487
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   488
   *   bit_count ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   489
   *     The number of bits in the hint mask.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   490
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   491
   *   bytes ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   492
   *     An array of bytes modelling the hint mask.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   493
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   494
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   495
   *   If the hintmask starts the charstring (before any glyph point
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   496
   *   definition), the value of `end_point' should be 0.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   497
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   498
   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   499
   *   must be equal to the total number of hints defined so far (i.e.,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   500
   *   horizontal+verticals).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   501
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   502
   *   The `bytes' array can come directly from the Type 2 charstring and
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   503
   *   respects the same format.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   504
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   505
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   506
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   507
  (*T2_Hints_MaskFunc)( T2_Hints        hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   508
                        FT_UInt         end_point,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   509
                        FT_UInt         bit_count,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   510
                        const FT_Byte*  bytes );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   511
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   512
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   513
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   514
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   515
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   516
   *   T2_Hints_CounterFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   517
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   518
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   519
   *   A method of the @T2_Hints class used to set a given counter mask
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   520
   *   (this corresponds to the `hintmask' Type 2 operator).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   521
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   522
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   523
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   524
   *     A handle to the Type 2 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   525
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   526
   *   end_point ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   527
   *     A glyph index of the last point to which the previously defined or
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   528
   *     active hints apply.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   529
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   530
   *   bit_count ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   531
   *     The number of bits in the hint mask.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   532
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   533
   *   bytes ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   534
   *     An array of bytes modelling the hint mask.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   535
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   536
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   537
   *   If the hintmask starts the charstring (before any glyph point
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   538
   *   definition), the value of `end_point' should be 0.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   539
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   540
   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   541
   *   must be equal to the total number of hints defined so far (i.e.,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   542
   *   horizontal+verticals).
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   543
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   544
   *    The `bytes' array can come directly from the Type 2 charstring and
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   545
   *    respects the same format.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   546
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   547
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   548
  typedef void
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   549
  (*T2_Hints_CounterFunc)( T2_Hints        hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   550
                           FT_UInt         bit_count,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   551
                           const FT_Byte*  bytes );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   552
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   553
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   554
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   555
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   556
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   557
   *   T2_Hints_CloseFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   558
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   559
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   560
   *   A method of the @T2_Hints class used to close a hint recording
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   561
   *   session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   562
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   563
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   564
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   565
   *     A handle to the Type 2 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   566
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   567
   *   end_point ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   568
   *     The index of the last point in the input glyph.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   569
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   570
   * @return:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   571
   *   FreeType error code.  0 means success.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   572
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   573
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   574
   *   The error code is set to indicate that an error occurred during the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   575
   *   recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   576
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   577
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   578
  typedef FT_Error
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   579
  (*T2_Hints_CloseFunc)( T2_Hints  hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   580
                         FT_UInt   end_point );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   581
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   582
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   583
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   584
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   585
   * @functype:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   586
   *   T2_Hints_ApplyFunc
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   587
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   588
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   589
   *   A method of the @T2_Hints class used to apply hints to the
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   590
   *   corresponding glyph outline.  Must be called after the `close'
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   591
   *   method.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   592
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   593
   * @input:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   594
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   595
   *     A handle to the Type 2 hints recorder.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   596
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   597
   *   outline ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   598
   *     A pointer to the target outline descriptor.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   599
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   600
   *   globals ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   601
   *     The hinter globals for this font.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   602
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   603
   *   hint_mode ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   604
   *     Hinting information.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   605
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   606
   * @return:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   607
   *   FreeType error code.  0 means success.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   608
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   609
   * @note:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   610
   *   On input, all points within the outline are in font coordinates. On
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   611
   *   output, they are in 1/64th of pixels.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   612
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   613
   *   The scaling transformation is taken from the `globals' object which
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   614
   *   must correspond to the same font than the glyph.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   615
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   616
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   617
  typedef FT_Error
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   618
  (*T2_Hints_ApplyFunc)( T2_Hints        hints,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   619
                         FT_Outline*     outline,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   620
                         PSH_Globals     globals,
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   621
                         FT_Render_Mode  hint_mode );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   622
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   623
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   624
  /*************************************************************************
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   625
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   626
   * @struct:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   627
   *   T2_Hints_FuncsRec
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   628
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   629
   * @description:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   630
   *   The structure used to provide the API to @T2_Hints objects.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   631
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   632
   * @fields:
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   633
   *   hints ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   634
   *     A handle to the T2 hints recorder object.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   635
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   636
   *   open ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   637
   *     The function to open a recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   638
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   639
   *   close ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   640
   *     The function to close a recording session.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   641
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   642
   *   stems ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   643
   *     The function to set the dimension's stems table.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   644
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   645
   *   hintmask ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   646
   *     The function to set hint masks.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   647
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   648
   *   counter ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   649
   *     The function to set counter masks.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   650
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   651
   *   apply ::
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   652
   *     The function to apply the hints on the corresponding glyph outline.
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   653
   *
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   654
   */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   655
  typedef struct  T2_Hints_FuncsRec_
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   656
  {
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   657
    T2_Hints              hints;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   658
    T2_Hints_OpenFunc     open;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   659
    T2_Hints_CloseFunc    close;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   660
    T2_Hints_StemsFunc    stems;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   661
    T2_Hints_MaskFunc     hintmask;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   662
    T2_Hints_CounterFunc  counter;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   663
    T2_Hints_ApplyFunc    apply;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   664
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   665
  } T2_Hints_FuncsRec;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   666
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   667
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   668
  /* */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   669
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   670
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   671
  typedef struct  PSHinter_Interface_
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   672
  {
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   673
    PSH_Globals_Funcs  (*get_globals_funcs)( FT_Module  module );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   674
    T1_Hints_Funcs     (*get_t1_funcs)     ( FT_Module  module );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   675
    T2_Hints_Funcs     (*get_t2_funcs)     ( FT_Module  module );
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   676
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   677
  } PSHinter_Interface;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   678
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   679
  typedef PSHinter_Interface*  PSHinter_Service;
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   680
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   681
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   682
FT_END_HEADER
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   683
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   684
#endif /* __PSHINTS_H__ */
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   685
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   686
6cc5529d4a89 201033_10
hgs
parents:
diff changeset
   687
/* END */