1 /***************************************************************************/
5 /* Basic Type1/Type2 type definitions and interface (specification */
8 /* Copyright 1996-2001, 2002 by */
9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
11 /* This file is part of the FreeType project, and may only be used, */
12 /* modified, and distributed under the terms of the FreeType project */
13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
14 /* this file you indicate that you have read the license and */
15 /* understand and accept it fully. */
17 /***************************************************************************/
25 #include FT_TYPE1_TABLES_H
26 #include FT_INTERNAL_POSTSCRIPT_NAMES_H
27 #include FT_INTERNAL_POSTSCRIPT_HINTS_H
33 /*************************************************************************/
34 /*************************************************************************/
35 /*************************************************************************/
38 /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
41 /*************************************************************************/
42 /*************************************************************************/
43 /*************************************************************************/
46 /*************************************************************************/
52 /* A structure modeling a custom encoding. */
55 /* num_chars :: The number of character codes in the encoding. */
58 /* code_first :: The lowest valid character code in the encoding. */
60 /* code_last :: The highest valid character code in the encoding. */
62 /* char_index :: An array of corresponding glyph indices. */
64 /* char_name :: An array of corresponding glyph names. */
66 typedef struct T1_EncodingRecRec_
72 FT_UShort* char_index;
73 FT_String** char_name;
75 } T1_EncodingRec, *T1_Encoding;
78 typedef enum T1_EncodingType_
80 T1_ENCODING_TYPE_NONE = 0,
81 T1_ENCODING_TYPE_ARRAY,
82 T1_ENCODING_TYPE_STANDARD,
83 T1_ENCODING_TYPE_ISOLATIN1,
84 T1_ENCODING_TYPE_EXPERT
89 typedef struct T1_FontRec_
91 PS_FontInfoRec font_info; /* font info dictionary */
92 PS_PrivateRec private_dict; /* private dictionary */
93 FT_String* font_name; /* top-level dictionary */
95 T1_EncodingType encoding_type;
96 T1_EncodingRec encoding;
99 FT_Byte* charstrings_block;
100 FT_Byte* glyph_names_block;
107 FT_String** glyph_names; /* array of glyph names */
108 FT_Byte** charstrings; /* array of glyph charstrings */
109 FT_Int* charstrings_len;
113 FT_Matrix font_matrix;
114 FT_Vector font_offset;
120 } T1_FontRec, *T1_Font;
123 typedef struct CID_SubrsRec_
128 } CID_SubrsRec, *CID_Subrs;
131 /*************************************************************************/
132 /*************************************************************************/
133 /*************************************************************************/
136 /*** ORIGINAL T1_FACE CLASS DEFINITION ***/
139 /*************************************************************************/
140 /*************************************************************************/
141 /*************************************************************************/
144 /*************************************************************************/
146 /* This structure/class is defined here because it is common to the */
147 /* following formats: TTF, OpenType-TT, and OpenType-CFF. */
149 /* Note, however, that the classes TT_Size, TT_GlyphSlot, and TT_CharMap */
150 /* are not shared between font drivers, and are thus defined normally in */
153 /*************************************************************************/
155 typedef struct T1_FaceRec_* T1_Face;
156 typedef struct CID_FaceRec_* CID_Face;
159 typedef struct T1_FaceRec_
165 const void* afm_data;
166 FT_CharMapRec charmaprecs[2];
167 FT_CharMap charmaps[2];
168 PS_Unicodes unicode_map;
170 /* support for Multiple Masters fonts */
173 /* since FT 2.1 - interface to PostScript hinter */
174 const void* pshinter;
179 typedef struct CID_FaceRec_
188 /* since FT 2.1 - interface to PostScript hinter */
196 #endif /* __T1TYPES_H__ */