The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 1 | /***************************************************************************/ |
| 2 | /* */ |
| 3 | /* t1types.h */ |
| 4 | /* */ |
| 5 | /* Basic Type1/Type2 type definitions and interface (specification */ |
| 6 | /* only). */ |
| 7 | /* */ |
Victoria Lease | 727dee1 | 2013-06-10 13:55:54 -0700 | [diff] [blame] | 8 | /* Copyright 1996-2004, 2006, 2008, 2009, 2011, 2013 by */ |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 9 | /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
| 10 | /* */ |
| 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. */ |
| 16 | /* */ |
| 17 | /***************************************************************************/ |
| 18 | |
| 19 | |
| 20 | #ifndef __T1TYPES_H__ |
| 21 | #define __T1TYPES_H__ |
| 22 | |
| 23 | |
| 24 | #include <ft2build.h> |
| 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 |
| 29 | |
| 30 | |
| 31 | FT_BEGIN_HEADER |
| 32 | |
| 33 | |
| 34 | /*************************************************************************/ |
| 35 | /*************************************************************************/ |
| 36 | /*************************************************************************/ |
| 37 | /*** ***/ |
| 38 | /*** ***/ |
| 39 | /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/ |
| 40 | /*** ***/ |
| 41 | /*** ***/ |
| 42 | /*************************************************************************/ |
| 43 | /*************************************************************************/ |
| 44 | /*************************************************************************/ |
| 45 | |
| 46 | |
| 47 | /*************************************************************************/ |
| 48 | /* */ |
| 49 | /* <Struct> */ |
| 50 | /* T1_EncodingRec */ |
| 51 | /* */ |
| 52 | /* <Description> */ |
| 53 | /* A structure modeling a custom encoding. */ |
| 54 | /* */ |
| 55 | /* <Fields> */ |
| 56 | /* num_chars :: The number of character codes in the encoding. */ |
| 57 | /* Usually 256. */ |
| 58 | /* */ |
| 59 | /* code_first :: The lowest valid character code in the encoding. */ |
| 60 | /* */ |
David 'Digit' Turner | 295ffce | 2010-03-03 14:24:57 -0800 | [diff] [blame] | 61 | /* code_last :: The highest valid character code in the encoding */ |
| 62 | /* + 1. When equal to code_first there are no valid */ |
| 63 | /* character codes. */ |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 64 | /* */ |
| 65 | /* char_index :: An array of corresponding glyph indices. */ |
| 66 | /* */ |
| 67 | /* char_name :: An array of corresponding glyph names. */ |
| 68 | /* */ |
| 69 | typedef struct T1_EncodingRecRec_ |
| 70 | { |
| 71 | FT_Int num_chars; |
| 72 | FT_Int code_first; |
| 73 | FT_Int code_last; |
| 74 | |
| 75 | FT_UShort* char_index; |
| 76 | FT_String** char_name; |
| 77 | |
| 78 | } T1_EncodingRec, *T1_Encoding; |
| 79 | |
| 80 | |
David 'Digit' Turner | 77f63d2 | 2009-06-08 15:18:21 +0200 | [diff] [blame] | 81 | /* used to hold extra data of PS_FontInfoRec that |
| 82 | * cannot be stored in the publicly defined structure. |
| 83 | * |
| 84 | * Note these can't be blended with multiple-masters. |
| 85 | */ |
| 86 | typedef struct PS_FontExtraRec_ |
| 87 | { |
| 88 | FT_UShort fs_type; |
| 89 | |
| 90 | } PS_FontExtraRec; |
| 91 | |
| 92 | |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 93 | typedef struct T1_FontRec_ |
| 94 | { |
David 'Digit' Turner | 77f63d2 | 2009-06-08 15:18:21 +0200 | [diff] [blame] | 95 | PS_FontInfoRec font_info; /* font info dictionary */ |
| 96 | PS_FontExtraRec font_extra; /* font info extra fields */ |
| 97 | PS_PrivateRec private_dict; /* private dictionary */ |
| 98 | FT_String* font_name; /* top-level dictionary */ |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 99 | |
| 100 | T1_EncodingType encoding_type; |
| 101 | T1_EncodingRec encoding; |
| 102 | |
| 103 | FT_Byte* subrs_block; |
| 104 | FT_Byte* charstrings_block; |
| 105 | FT_Byte* glyph_names_block; |
| 106 | |
| 107 | FT_Int num_subrs; |
| 108 | FT_Byte** subrs; |
| 109 | FT_PtrDist* subrs_len; |
| 110 | |
| 111 | FT_Int num_glyphs; |
| 112 | FT_String** glyph_names; /* array of glyph names */ |
| 113 | FT_Byte** charstrings; /* array of glyph charstrings */ |
| 114 | FT_PtrDist* charstrings_len; |
| 115 | |
| 116 | FT_Byte paint_type; |
| 117 | FT_Byte font_type; |
| 118 | FT_Matrix font_matrix; |
| 119 | FT_Vector font_offset; |
| 120 | FT_BBox font_bbox; |
| 121 | FT_Long font_id; |
| 122 | |
| 123 | FT_Fixed stroke_width; |
| 124 | |
| 125 | } T1_FontRec, *T1_Font; |
| 126 | |
| 127 | |
| 128 | typedef struct CID_SubrsRec_ |
| 129 | { |
| 130 | FT_UInt num_subrs; |
| 131 | FT_Byte** code; |
| 132 | |
| 133 | } CID_SubrsRec, *CID_Subrs; |
| 134 | |
| 135 | |
| 136 | /*************************************************************************/ |
| 137 | /*************************************************************************/ |
| 138 | /*************************************************************************/ |
| 139 | /*** ***/ |
| 140 | /*** ***/ |
| 141 | /*** AFM FONT INFORMATION STRUCTURES ***/ |
| 142 | /*** ***/ |
| 143 | /*** ***/ |
| 144 | /*************************************************************************/ |
| 145 | /*************************************************************************/ |
| 146 | /*************************************************************************/ |
| 147 | |
| 148 | typedef struct AFM_TrackKernRec_ |
| 149 | { |
| 150 | FT_Int degree; |
| 151 | FT_Fixed min_ptsize; |
| 152 | FT_Fixed min_kern; |
| 153 | FT_Fixed max_ptsize; |
| 154 | FT_Fixed max_kern; |
| 155 | |
| 156 | } AFM_TrackKernRec, *AFM_TrackKern; |
| 157 | |
| 158 | typedef struct AFM_KernPairRec_ |
| 159 | { |
| 160 | FT_Int index1; |
| 161 | FT_Int index2; |
| 162 | FT_Int x; |
| 163 | FT_Int y; |
| 164 | |
| 165 | } AFM_KernPairRec, *AFM_KernPair; |
| 166 | |
| 167 | typedef struct AFM_FontInfoRec_ |
| 168 | { |
| 169 | FT_Bool IsCIDFont; |
| 170 | FT_BBox FontBBox; |
| 171 | FT_Fixed Ascender; |
| 172 | FT_Fixed Descender; |
| 173 | AFM_TrackKern TrackKerns; /* free if non-NULL */ |
| 174 | FT_Int NumTrackKern; |
| 175 | AFM_KernPair KernPairs; /* free if non-NULL */ |
| 176 | FT_Int NumKernPair; |
| 177 | |
| 178 | } AFM_FontInfoRec, *AFM_FontInfo; |
| 179 | |
| 180 | |
| 181 | /*************************************************************************/ |
| 182 | /*************************************************************************/ |
| 183 | /*************************************************************************/ |
| 184 | /*** ***/ |
| 185 | /*** ***/ |
| 186 | /*** ORIGINAL T1_FACE CLASS DEFINITION ***/ |
| 187 | /*** ***/ |
| 188 | /*** ***/ |
| 189 | /*************************************************************************/ |
| 190 | /*************************************************************************/ |
| 191 | /*************************************************************************/ |
| 192 | |
| 193 | |
| 194 | typedef struct T1_FaceRec_* T1_Face; |
| 195 | typedef struct CID_FaceRec_* CID_Face; |
| 196 | |
| 197 | |
| 198 | typedef struct T1_FaceRec_ |
| 199 | { |
| 200 | FT_FaceRec root; |
| 201 | T1_FontRec type1; |
| 202 | const void* psnames; |
| 203 | const void* psaux; |
| 204 | const void* afm_data; |
| 205 | FT_CharMapRec charmaprecs[2]; |
| 206 | FT_CharMap charmaps[2]; |
| 207 | |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 208 | /* support for Multiple Masters fonts */ |
| 209 | PS_Blend blend; |
| 210 | |
| 211 | /* undocumented, optional: indices of subroutines that express */ |
| 212 | /* the NormalizeDesignVector and the ConvertDesignVector procedure, */ |
| 213 | /* respectively, as Type 2 charstrings; -1 if keywords not present */ |
| 214 | FT_Int ndv_idx; |
| 215 | FT_Int cdv_idx; |
| 216 | |
| 217 | /* undocumented, optional: has the same meaning as len_buildchar */ |
| 218 | /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */ |
| 219 | FT_UInt len_buildchar; |
David 'Digit' Turner | 295ffce | 2010-03-03 14:24:57 -0800 | [diff] [blame] | 220 | FT_Long* buildchar; |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 221 | |
| 222 | /* since version 2.1 - interface to PostScript hinter */ |
| 223 | const void* pshinter; |
| 224 | |
| 225 | } T1_FaceRec; |
| 226 | |
| 227 | |
| 228 | typedef struct CID_FaceRec_ |
| 229 | { |
| 230 | FT_FaceRec root; |
| 231 | void* psnames; |
| 232 | void* psaux; |
| 233 | CID_FaceInfoRec cid; |
David 'Digit' Turner | 77f63d2 | 2009-06-08 15:18:21 +0200 | [diff] [blame] | 234 | PS_FontExtraRec font_extra; |
| 235 | #if 0 |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 236 | void* afm_data; |
David 'Digit' Turner | 77f63d2 | 2009-06-08 15:18:21 +0200 | [diff] [blame] | 237 | #endif |
The Android Open Source Project | 049d6fe | 2009-03-03 19:29:31 -0800 | [diff] [blame] | 238 | CID_Subrs subrs; |
| 239 | |
| 240 | /* since version 2.1 - interface to PostScript hinter */ |
| 241 | void* pshinter; |
| 242 | |
| 243 | /* since version 2.1.8, but was originally positioned after `afm_data' */ |
| 244 | FT_Byte* binary_data; /* used if hex data has been converted */ |
| 245 | FT_Stream cid_stream; |
| 246 | |
| 247 | } CID_FaceRec; |
| 248 | |
| 249 | |
| 250 | FT_END_HEADER |
| 251 | |
| 252 | #endif /* __T1TYPES_H__ */ |
| 253 | |
| 254 | |
| 255 | /* END */ |