1 /****************************************************************************
5 * Basic Type1/Type2 type definitions and interface (specification
8 * Copyright (C) 1996-2023 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.
24 #include <freetype/t1tables.h>
25 #include <freetype/internal/pshints.h>
26 #include <freetype/internal/ftserv.h>
27 #include <freetype/internal/fthash.h>
28 #include <freetype/internal/services/svpscmap.h>
34 /*************************************************************************/
35 /*************************************************************************/
36 /*************************************************************************/
39 /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
42 /*************************************************************************/
43 /*************************************************************************/
44 /*************************************************************************/
47 /**************************************************************************
53 * A structure modeling a custom encoding.
57 * The number of character codes in the encoding. Usually 256.
60 * The lowest valid character code in the encoding.
63 * The highest valid character code in the encoding + 1. When equal to
64 * code_first there are no valid character codes.
67 * An array of corresponding glyph indices.
70 * An array of corresponding glyph names.
72 typedef struct T1_EncodingRecRec_
78 FT_UShort* char_index;
79 const FT_String** char_name;
81 } T1_EncodingRec, *T1_Encoding;
84 /* used to hold extra data of PS_FontInfoRec that
85 * cannot be stored in the publicly defined structure.
87 * Note these can't be blended with multiple-masters.
89 typedef struct PS_FontExtraRec_
96 typedef struct T1_FontRec_
98 PS_FontInfoRec font_info; /* font info dictionary */
99 PS_FontExtraRec font_extra; /* font info extra fields */
100 PS_PrivateRec private_dict; /* private dictionary */
101 FT_String* font_name; /* top-level dictionary */
103 T1_EncodingType encoding_type;
104 T1_EncodingRec encoding;
106 FT_Byte* subrs_block;
107 FT_Byte* charstrings_block;
108 FT_Byte* glyph_names_block;
116 FT_String** glyph_names; /* array of glyph names */
117 FT_Byte** charstrings; /* array of glyph charstrings */
118 FT_UInt* charstrings_len;
122 FT_Matrix font_matrix;
123 FT_Vector font_offset;
127 FT_Fixed stroke_width;
129 } T1_FontRec, *T1_Font;
132 typedef struct CID_SubrsRec_
137 } CID_SubrsRec, *CID_Subrs;
140 /*************************************************************************/
141 /*************************************************************************/
142 /*************************************************************************/
145 /*** AFM FONT INFORMATION STRUCTURES ***/
148 /*************************************************************************/
149 /*************************************************************************/
150 /*************************************************************************/
152 typedef struct AFM_TrackKernRec_
160 } AFM_TrackKernRec, *AFM_TrackKern;
162 typedef struct AFM_KernPairRec_
169 } AFM_KernPairRec, *AFM_KernPair;
171 typedef struct AFM_FontInfoRec_
175 FT_Fixed Ascender; /* optional, mind the zero */
176 FT_Fixed Descender; /* optional, mind the zero */
177 AFM_TrackKern TrackKerns; /* free if non-NULL */
178 FT_UInt NumTrackKern;
179 AFM_KernPair KernPairs; /* free if non-NULL */
182 } AFM_FontInfoRec, *AFM_FontInfo;
185 /*************************************************************************/
186 /*************************************************************************/
187 /*************************************************************************/
190 /*** ORIGINAL T1_FACE CLASS DEFINITION ***/
193 /*************************************************************************/
194 /*************************************************************************/
195 /*************************************************************************/
198 typedef struct T1_FaceRec_* T1_Face;
199 typedef struct CID_FaceRec_* CID_Face;
202 typedef struct T1_FaceRec_
208 const void* afm_data;
209 FT_CharMapRec charmaprecs[2];
210 FT_CharMap charmaps[2];
212 /* support for Multiple Masters fonts */
215 /* undocumented, optional: indices of subroutines that express */
216 /* the NormalizeDesignVector and the ConvertDesignVector procedure, */
217 /* respectively, as Type 2 charstrings; -1 if keywords not present */
221 /* undocumented, optional: has the same meaning as len_buildchar */
222 /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */
223 FT_UInt len_buildchar;
226 /* since version 2.1 - interface to PostScript hinter */
227 const void* pshinter;
232 typedef struct CID_FaceRec_
238 PS_FontExtraRec font_extra;
244 /* since version 2.1 - interface to PostScript hinter */
247 /* since version 2.1.8, but was originally positioned after `afm_data' */
248 FT_Byte* binary_data; /* used if hex data has been converted */
249 FT_Stream cid_stream;
256 #endif /* T1TYPES_H_ */