Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 1 | /***************************************************************************/ |
| 2 | /* */ |
| 3 | /* t1types.h */ |
| 4 | /* */ |
| 5 | /* Basic Type1/Type2 type definitions and interface (specification */ |
| 6 | /* only). */ |
| 7 | /* */ |
| 8 | /* Copyright 1996-2000 by */ |
| 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 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 19 | |
David Turner | 8fba32d | 2000-11-30 23:12:33 +0000 | [diff] [blame] | 20 | #ifndef __T1TYPES_H__ |
| 21 | #define __T1TYPES_H__ |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 22 | |
Werner Lemberg | 90d9964 | 2000-12-09 00:45:38 +0000 | [diff] [blame^] | 23 | |
| 24 | #include<ft2build.h> |
| 25 | #include FT_TYPE1_TABLES_H |
| 26 | #include FT_INTERNAL_POSTSCRIPT_NAMES_H |
| 27 | |
David Turner | 8fba32d | 2000-11-30 23:12:33 +0000 | [diff] [blame] | 28 | |
| 29 | FT_BEGIN_HEADER |
Werner Lemberg | c713d92 | 2000-08-01 13:17:04 +0000 | [diff] [blame] | 30 | |
| 31 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 32 | /*************************************************************************/ |
| 33 | /*************************************************************************/ |
| 34 | /*************************************************************************/ |
| 35 | /*** ***/ |
| 36 | /*** ***/ |
| 37 | /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/ |
| 38 | /*** ***/ |
| 39 | /*** ***/ |
| 40 | /*************************************************************************/ |
| 41 | /*************************************************************************/ |
| 42 | /*************************************************************************/ |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 43 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 44 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 45 | /*************************************************************************/ |
| 46 | /* */ |
| 47 | /* <Struct> */ |
| 48 | /* T1_Encoding */ |
| 49 | /* */ |
| 50 | /* <Description> */ |
Werner Lemberg | 4c80f0c | 2000-12-01 17:25:58 +0000 | [diff] [blame] | 51 | /* A structure modeling a custom encoding. */ |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 52 | /* */ |
| 53 | /* <Fields> */ |
| 54 | /* num_chars :: The number of character codes in the encoding. */ |
| 55 | /* Usually 256. */ |
| 56 | /* */ |
| 57 | /* code_first :: The lowest valid character code in the encoding. */ |
| 58 | /* */ |
| 59 | /* code_last :: The highest valid character code in the encoding. */ |
| 60 | /* */ |
| 61 | /* char_index :: An array of corresponding glyph indices. */ |
| 62 | /* */ |
| 63 | /* char_name :: An array of corresponding glyph names. */ |
| 64 | /* */ |
| 65 | typedef struct T1_Encoding_ |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 66 | { |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 67 | FT_Int num_chars; |
| 68 | FT_Int code_first; |
| 69 | FT_Int code_last; |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 70 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 71 | FT_UShort* char_index; |
| 72 | FT_String** char_name; |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 73 | |
| 74 | } T1_Encoding; |
| 75 | |
| 76 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 77 | typedef enum T1_EncodingType_ |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 78 | { |
Werner Lemberg | 4e9dae6 | 2000-08-29 16:50:01 +0000 | [diff] [blame] | 79 | t1_encoding_none = 0, |
| 80 | t1_encoding_array, |
| 81 | t1_encoding_standard, |
| 82 | t1_encoding_expert |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 83 | |
| 84 | } T1_EncodingType; |
| 85 | |
| 86 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 87 | typedef struct T1_Font_ |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 88 | { |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 89 | /* font info dictionary */ |
| 90 | T1_FontInfo font_info; |
David Turner | e49ab25 | 2000-05-16 23:44:38 +0000 | [diff] [blame] | 91 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 92 | /* private dictionary */ |
| 93 | T1_Private private_dict; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 94 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 95 | /* top-level dictionary */ |
| 96 | FT_String* font_name; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 97 | |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 98 | T1_EncodingType encoding_type; |
| 99 | T1_Encoding encoding; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 100 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 101 | FT_Byte* subrs_block; |
| 102 | FT_Byte* charstrings_block; |
| 103 | FT_Byte* glyph_names_block; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 104 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 105 | FT_Int num_subrs; |
| 106 | FT_Byte** subrs; |
| 107 | FT_Int* subrs_len; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 108 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 109 | FT_Int num_glyphs; |
| 110 | FT_String** glyph_names; /* array of glyph names */ |
| 111 | FT_Byte** charstrings; /* array of glyph charstrings */ |
| 112 | FT_Int* charstrings_len; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 113 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 114 | FT_Byte paint_type; |
| 115 | FT_Byte font_type; |
| 116 | FT_Matrix font_matrix; |
David Turner | 24d7024 | 2000-08-17 01:09:06 +0000 | [diff] [blame] | 117 | FT_Vector font_offset; |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 118 | FT_BBox font_bbox; |
| 119 | FT_Long font_id; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 120 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 121 | FT_Int stroke_width; |
David Turner | e49ab25 | 2000-05-16 23:44:38 +0000 | [diff] [blame] | 122 | |
David Turner | d42c68e | 2000-01-27 13:56:02 +0000 | [diff] [blame] | 123 | } T1_Font; |
David Turner | e49ab25 | 2000-05-16 23:44:38 +0000 | [diff] [blame] | 124 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 125 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 126 | typedef struct CID_Subrs_ |
David Turner | 04aa800 | 2000-06-01 03:27:48 +0000 | [diff] [blame] | 127 | { |
| 128 | FT_UInt num_subrs; |
| 129 | FT_Byte** code; |
Werner Lemberg | e4b32a5 | 2000-10-31 20:42:18 +0000 | [diff] [blame] | 130 | |
David Turner | 04aa800 | 2000-06-01 03:27:48 +0000 | [diff] [blame] | 131 | } CID_Subrs; |
| 132 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 133 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 134 | /*************************************************************************/ |
| 135 | /*************************************************************************/ |
| 136 | /*************************************************************************/ |
| 137 | /*** ***/ |
| 138 | /*** ***/ |
| 139 | /*** ORIGINAL T1_FACE CLASS DEFINITION ***/ |
| 140 | /*** ***/ |
| 141 | /*** ***/ |
| 142 | /*************************************************************************/ |
| 143 | /*************************************************************************/ |
| 144 | /*************************************************************************/ |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 145 | |
| 146 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 147 | /*************************************************************************/ |
| 148 | /* */ |
| 149 | /* This structure/class is defined here because it is common to the */ |
| 150 | /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ |
| 151 | /* */ |
| 152 | /* Note, however, that the classes TT_Size, TT_GlyphSlot, and TT_CharMap */ |
| 153 | /* are not shared between font drivers, and are thus defined normally in */ |
| 154 | /* `ttobjs.h'. */ |
| 155 | /* */ |
| 156 | /*************************************************************************/ |
| 157 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 158 | typedef struct T1_FaceRec_* T1_Face; |
David Turner | 04aa800 | 2000-06-01 03:27:48 +0000 | [diff] [blame] | 159 | typedef struct CID_FaceRec_* CID_Face; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 160 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 161 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 162 | typedef struct T1_FaceRec_ |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 163 | { |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 164 | FT_FaceRec root; |
| 165 | T1_Font type1; |
| 166 | void* psnames; |
David Turner | 9748807 | 2000-08-22 22:36:33 +0000 | [diff] [blame] | 167 | void* psaux; |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 168 | void* afm_data; |
| 169 | FT_CharMapRec charmaprecs[2]; |
| 170 | FT_CharMap charmaps[2]; |
| 171 | PS_Unicodes unicode_map; |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 172 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 173 | /* support for Multiple Masters fonts */ |
| 174 | T1_Blend* blend; |
David Turner | 1c9a1ca | 2000-05-24 21:12:02 +0000 | [diff] [blame] | 175 | |
David Turner | d2b1f35 | 1999-12-16 23:11:37 +0000 | [diff] [blame] | 176 | } T1_FaceRec; |
| 177 | |
| 178 | |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 179 | typedef struct CID_FaceRec_ |
David Turner | 04aa800 | 2000-06-01 03:27:48 +0000 | [diff] [blame] | 180 | { |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 181 | FT_FaceRec root; |
| 182 | void* psnames; |
David Turner | 34f1c2f | 2000-08-23 22:47:44 +0000 | [diff] [blame] | 183 | void* psaux; |
Werner Lemberg | c8f9cf3 | 2000-07-19 02:59:31 +0000 | [diff] [blame] | 184 | CID_Info cid; |
| 185 | void* afm_data; |
| 186 | CID_Subrs* subrs; |
Werner Lemberg | e4b32a5 | 2000-10-31 20:42:18 +0000 | [diff] [blame] | 187 | |
David Turner | 04aa800 | 2000-06-01 03:27:48 +0000 | [diff] [blame] | 188 | } CID_FaceRec; |
| 189 | |
Werner Lemberg | b3880dd | 2000-06-27 05:58:22 +0000 | [diff] [blame] | 190 | |
David Turner | 8fba32d | 2000-11-30 23:12:33 +0000 | [diff] [blame] | 191 | FT_END_HEADER |
Werner Lemberg | c713d92 | 2000-08-01 13:17:04 +0000 | [diff] [blame] | 192 | |
David Turner | 8fba32d | 2000-11-30 23:12:33 +0000 | [diff] [blame] | 193 | #endif /* __T1TYPES_H__ */ |
Werner Lemberg | b3880dd | 2000-06-27 05:58:22 +0000 | [diff] [blame] | 194 | |
| 195 | |
| 196 | /* END */ |