vrshoot

annotate libs/ft2static/freetype/internal/t1types.h @ 0:b2f14e535253

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