1 /***************************************************************************/
5 /* Basic Type1/Type2 type definitions and interface (specification */
8 /* Copyright 1996-2001, 2002, 2003, 2004 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_HINTS_H
27 #include FT_INTERNAL_SERVICE_H
28 #include FT_SERVICE_POSTSCRIPT_CMAPS_H
34 /*************************************************************************/
35 /*************************************************************************/
36 /*************************************************************************/
39 /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
42 /*************************************************************************/
43 /*************************************************************************/
44 /*************************************************************************/
47 /*************************************************************************/
53 /* A structure modeling a custom encoding. */
56 /* num_chars :: The number of character codes in the encoding. */
59 /* code_first :: The lowest valid character code in the encoding. */
61 /* code_last :: The highest valid character code in the encoding. */
63 /* char_index :: An array of corresponding glyph indices. */
65 /* char_name :: An array of corresponding glyph names. */
67 typedef struct T1_EncodingRecRec_
73 FT_UShort* char_index;
74 FT_String** char_name;
76 } T1_EncodingRec, *T1_Encoding;
79 typedef enum T1_EncodingType_
81 T1_ENCODING_TYPE_NONE = 0,
82 T1_ENCODING_TYPE_ARRAY,
83 T1_ENCODING_TYPE_STANDARD,
84 T1_ENCODING_TYPE_ISOLATIN1,
85 T1_ENCODING_TYPE_EXPERT
90 typedef struct T1_FontRec_
92 PS_FontInfoRec font_info; /* font info dictionary */
93 PS_PrivateRec private_dict; /* private dictionary */
94 FT_String* font_name; /* top-level dictionary */
96 T1_EncodingType encoding_type;
97 T1_EncodingRec encoding;
100 FT_Byte* charstrings_block;
101 FT_Byte* glyph_names_block;
105 FT_PtrDist* subrs_len;
108 FT_String** glyph_names; /* array of glyph names */
109 FT_Byte** charstrings; /* array of glyph charstrings */
110 FT_PtrDist* charstrings_len;
114 FT_Matrix font_matrix;
115 FT_Vector font_offset;
119 FT_Fixed stroke_width;
121 } T1_FontRec, *T1_Font;
124 typedef struct CID_SubrsRec_
129 } CID_SubrsRec, *CID_Subrs;
132 /*************************************************************************/
133 /*************************************************************************/
134 /*************************************************************************/
137 /*** ORIGINAL T1_FACE CLASS DEFINITION ***/
140 /*************************************************************************/
141 /*************************************************************************/
142 /*************************************************************************/
145 typedef struct T1_FaceRec_* T1_Face;
146 typedef struct CID_FaceRec_* CID_Face;
149 typedef struct T1_FaceRec_
155 const void* afm_data;
156 FT_CharMapRec charmaprecs[2];
157 FT_CharMap charmaps[2];
158 PS_Unicodes unicode_map;
160 /* support for Multiple Masters fonts */
163 /* since FT 2.1 - interface to PostScript hinter */
164 const void* pshinter;
169 typedef struct CID_FaceRec_
176 FT_Byte* binary_data; /* used if hex data has been converted */
177 FT_Stream cid_stream;
180 /* since FT 2.1 - interface to PostScript hinter */
188 #endif /* __T1TYPES_H__ */