~reviczky/luatex/texlive-bin-git

« back to all changes in this revision

Viewing changes to libs/freetype2/freetype-2.5.3/src/bdf/bdf.h

  • Committer: Adam Reviczky
  • Date: 2015-04-26 22:40:47 UTC
  • Revision ID: adam.reviczky@kclalumni.net-20150426224047-i2p26n3wqphupq6z
TeX Live 2015 import (rev. 37052)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright 2000 Computing Research Labs, New Mexico State University
3
 
 * Copyright 2001-2004, 2011 Francesco Zappa Nardelli
4
 
 *
5
 
 * Permission is hereby granted, free of charge, to any person obtaining a
6
 
 * copy of this software and associated documentation files (the "Software"),
7
 
 * to deal in the Software without restriction, including without limitation
8
 
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9
 
 * and/or sell copies of the Software, and to permit persons to whom the
10
 
 * Software is furnished to do so, subject to the following conditions:
11
 
 *
12
 
 * The above copyright notice and this permission notice shall be included in
13
 
 * all copies or substantial portions of the Software.
14
 
 *
15
 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18
 
 * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
19
 
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
20
 
 * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
21
 
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
 
 */
23
 
 
24
 
 
25
 
#ifndef __BDF_H__
26
 
#define __BDF_H__
27
 
 
28
 
 
29
 
/*
30
 
 * Based on bdf.h,v 1.16 2000/03/16 20:08:51 mleisher
31
 
 */
32
 
 
33
 
#include <ft2build.h>
34
 
#include FT_INTERNAL_OBJECTS_H
35
 
#include FT_INTERNAL_STREAM_H
36
 
 
37
 
 
38
 
FT_BEGIN_HEADER
39
 
 
40
 
 
41
 
/* Imported from bdfP.h */
42
 
 
43
 
#define _bdf_glyph_modified( map, e )                 \
44
 
          ( (map)[(e) >> 5] & ( 1 << ( (e) & 31 ) ) )
45
 
#define _bdf_set_glyph_modified( map, e )              \
46
 
          ( (map)[(e) >> 5] |= ( 1 << ( (e) & 31 ) ) )
47
 
#define _bdf_clear_glyph_modified( map, e )             \
48
 
          ( (map)[(e) >> 5] &= ~( 1 << ( (e) & 31 ) ) )
49
 
 
50
 
/* end of bdfP.h */
51
 
 
52
 
 
53
 
  /*************************************************************************/
54
 
  /*                                                                       */
55
 
  /* BDF font options macros and types.                                    */
56
 
  /*                                                                       */
57
 
  /*************************************************************************/
58
 
 
59
 
 
60
 
#define BDF_CORRECT_METRICS  0x01 /* Correct invalid metrics when loading. */
61
 
#define BDF_KEEP_COMMENTS    0x02 /* Preserve the font comments.           */
62
 
#define BDF_KEEP_UNENCODED   0x04 /* Keep the unencoded glyphs.            */
63
 
#define BDF_PROPORTIONAL     0x08 /* Font has proportional spacing.        */
64
 
#define BDF_MONOWIDTH        0x10 /* Font has mono width.                  */
65
 
#define BDF_CHARCELL         0x20 /* Font has charcell spacing.            */
66
 
 
67
 
#define BDF_ALL_SPACING  ( BDF_PROPORTIONAL | \
68
 
                           BDF_MONOWIDTH    | \
69
 
                           BDF_CHARCELL     )
70
 
 
71
 
#define BDF_DEFAULT_LOAD_OPTIONS  ( BDF_CORRECT_METRICS | \
72
 
                                    BDF_KEEP_COMMENTS   | \
73
 
                                    BDF_KEEP_UNENCODED  | \
74
 
                                    BDF_PROPORTIONAL    )
75
 
 
76
 
 
77
 
  typedef struct  bdf_options_t_
78
 
  {
79
 
    int            correct_metrics;
80
 
    int            keep_unencoded;
81
 
    int            keep_comments;
82
 
    int            font_spacing;
83
 
 
84
 
  } bdf_options_t;
85
 
 
86
 
 
87
 
  /* Callback function type for unknown configuration options. */
88
 
  typedef int
89
 
  (*bdf_options_callback_t)( bdf_options_t*  opts,
90
 
                             char**          params,
91
 
                             unsigned long   nparams,
92
 
                             void*           client_data );
93
 
 
94
 
 
95
 
  /*************************************************************************/
96
 
  /*                                                                       */
97
 
  /* BDF font property macros and types.                                   */
98
 
  /*                                                                       */
99
 
  /*************************************************************************/
100
 
 
101
 
 
102
 
#define BDF_ATOM      1
103
 
#define BDF_INTEGER   2
104
 
#define BDF_CARDINAL  3
105
 
 
106
 
 
107
 
  /* This structure represents a particular property of a font. */
108
 
  /* There are a set of defaults and each font has their own.   */
109
 
  typedef struct  bdf_property_t_
110
 
  {
111
 
    char*  name;         /* Name of the property.   */
112
 
    int    format;       /* Format of the property. */
113
 
    int    builtin;      /* A builtin property.     */
114
 
    union
115
 
    {
116
 
      char*          atom;
117
 
      long           l;
118
 
      unsigned long  ul;
119
 
 
120
 
    } value;             /* Value of the property.  */
121
 
 
122
 
  } bdf_property_t;
123
 
 
124
 
 
125
 
  /*************************************************************************/
126
 
  /*                                                                       */
127
 
  /* BDF font metric and glyph types.                                      */
128
 
  /*                                                                       */
129
 
  /*************************************************************************/
130
 
 
131
 
 
132
 
  typedef struct  bdf_bbx_t_
133
 
  {
134
 
    unsigned short  width;
135
 
    unsigned short  height;
136
 
 
137
 
    short           x_offset;
138
 
    short           y_offset;
139
 
 
140
 
    short           ascent;
141
 
    short           descent;
142
 
 
143
 
  } bdf_bbx_t;
144
 
 
145
 
 
146
 
  typedef struct  bdf_glyph_t_
147
 
  {
148
 
    char*           name;        /* Glyph name.                          */
149
 
    long            encoding;    /* Glyph encoding.                      */
150
 
    unsigned short  swidth;      /* Scalable width.                      */
151
 
    unsigned short  dwidth;      /* Device width.                        */
152
 
    bdf_bbx_t       bbx;         /* Glyph bounding box.                  */
153
 
    unsigned char*  bitmap;      /* Glyph bitmap.                        */
154
 
    unsigned long   bpr;         /* Number of bytes used per row.        */
155
 
    unsigned short  bytes;       /* Number of bytes used for the bitmap. */
156
 
 
157
 
  } bdf_glyph_t;
158
 
 
159
 
 
160
 
  typedef struct  _hashnode_
161
 
  {
162
 
    const char*  key;
163
 
    size_t       data;
164
 
 
165
 
  } _hashnode, *hashnode;
166
 
 
167
 
 
168
 
  typedef struct  hashtable_
169
 
  {
170
 
    int        limit;
171
 
    int        size;
172
 
    int        used;
173
 
    hashnode*  table;
174
 
 
175
 
  } hashtable;
176
 
 
177
 
 
178
 
  typedef struct  bdf_glyphlist_t_
179
 
  {
180
 
    unsigned short  pad;          /* Pad to 4-byte boundary.              */
181
 
    unsigned short  bpp;          /* Bits per pixel.                      */
182
 
    long            start;        /* Beginning encoding value of glyphs.  */
183
 
    long            end;          /* Ending encoding value of glyphs.     */
184
 
    bdf_glyph_t*    glyphs;       /* Glyphs themselves.                   */
185
 
    unsigned long   glyphs_size;  /* Glyph structures allocated.          */
186
 
    unsigned long   glyphs_used;  /* Glyph structures used.               */
187
 
    bdf_bbx_t       bbx;          /* Overall bounding box of glyphs.      */
188
 
 
189
 
  } bdf_glyphlist_t;
190
 
 
191
 
 
192
 
  typedef struct  bdf_font_t_
193
 
  {
194
 
    char*            name;           /* Name of the font.                   */
195
 
    bdf_bbx_t        bbx;            /* Font bounding box.                  */
196
 
 
197
 
    long             point_size;     /* Point size of the font.             */
198
 
    unsigned long    resolution_x;   /* Font horizontal resolution.         */
199
 
    unsigned long    resolution_y;   /* Font vertical resolution.           */
200
 
 
201
 
    int              spacing;        /* Font spacing value.                 */
202
 
 
203
 
    unsigned short   monowidth;      /* Logical width for monowidth font.   */
204
 
 
205
 
    long             default_char;   /* Encoding of the default glyph.      */
206
 
 
207
 
    long             font_ascent;    /* Font ascent.                        */
208
 
    long             font_descent;   /* Font descent.                       */
209
 
 
210
 
    unsigned long    glyphs_size;    /* Glyph structures allocated.         */
211
 
    unsigned long    glyphs_used;    /* Glyph structures used.              */
212
 
    bdf_glyph_t*     glyphs;         /* Glyphs themselves.                  */
213
 
 
214
 
    unsigned long    unencoded_size; /* Unencoded glyph struct. allocated.  */
215
 
    unsigned long    unencoded_used; /* Unencoded glyph struct. used.       */
216
 
    bdf_glyph_t*     unencoded;      /* Unencoded glyphs themselves.        */
217
 
 
218
 
    unsigned long    props_size;     /* Font properties allocated.          */
219
 
    unsigned long    props_used;     /* Font properties used.               */
220
 
    bdf_property_t*  props;          /* Font properties themselves.         */
221
 
 
222
 
    char*            comments;       /* Font comments.                      */
223
 
    unsigned long    comments_len;   /* Length of comment string.           */
224
 
 
225
 
    bdf_glyphlist_t  overflow;       /* Storage used for glyph insertion.   */
226
 
 
227
 
    void*            internal;       /* Internal data for the font.         */
228
 
 
229
 
    /* The size of the next two arrays must be in sync with the */
230
 
    /* size of the `have' array in the `bdf_parse_t' structure. */
231
 
    unsigned long    nmod[34816];    /* Bitmap indicating modified glyphs.  */
232
 
    unsigned long    umod[34816];    /* Bitmap indicating modified          */
233
 
                                     /* unencoded glyphs.                   */
234
 
    unsigned short   modified;       /* Boolean indicating font modified.   */
235
 
    unsigned short   bpp;            /* Bits per pixel.                     */
236
 
 
237
 
    FT_Memory        memory;
238
 
 
239
 
    bdf_property_t*  user_props;
240
 
    unsigned long    nuser_props;
241
 
    hashtable        proptbl;
242
 
 
243
 
  } bdf_font_t;
244
 
 
245
 
 
246
 
  /*************************************************************************/
247
 
  /*                                                                       */
248
 
  /* Types for load/save callbacks.                                        */
249
 
  /*                                                                       */
250
 
  /*************************************************************************/
251
 
 
252
 
 
253
 
  /* Error codes. */
254
 
#define BDF_MISSING_START       -1
255
 
#define BDF_MISSING_FONTNAME    -2
256
 
#define BDF_MISSING_SIZE        -3
257
 
#define BDF_MISSING_CHARS       -4
258
 
#define BDF_MISSING_STARTCHAR   -5
259
 
#define BDF_MISSING_ENCODING    -6
260
 
#define BDF_MISSING_BBX         -7
261
 
 
262
 
#define BDF_OUT_OF_MEMORY      -20
263
 
 
264
 
#define BDF_INVALID_LINE      -100
265
 
 
266
 
 
267
 
  /*************************************************************************/
268
 
  /*                                                                       */
269
 
  /* BDF font API.                                                         */
270
 
  /*                                                                       */
271
 
  /*************************************************************************/
272
 
 
273
 
  FT_LOCAL( FT_Error )
274
 
  bdf_load_font( FT_Stream       stream,
275
 
                 FT_Memory       memory,
276
 
                 bdf_options_t*  opts,
277
 
                 bdf_font_t*    *font );
278
 
 
279
 
  FT_LOCAL( void )
280
 
  bdf_free_font( bdf_font_t*  font );
281
 
 
282
 
  FT_LOCAL( bdf_property_t * )
283
 
  bdf_get_property( char*        name,
284
 
                    bdf_font_t*  font );
285
 
 
286
 
  FT_LOCAL( bdf_property_t * )
287
 
  bdf_get_font_property( bdf_font_t*  font,
288
 
                         const char*  name );
289
 
 
290
 
 
291
 
FT_END_HEADER
292
 
 
293
 
 
294
 
#endif /* __BDF_H__ */
295
 
 
296
 
 
297
 
/* END */