/***************************************************************************/ /* */ /* t1tables.h */ /* */ /* Basic Type 1/Type 2 tables definitions and interface */ /* */ /* */ /* Copyright 1996-2000 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used */ /* modified and distributed under the terms of the FreeType project */ /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ /* this file you indicate that you have read the license and */ /* understand and accept it fully. */ /* */ /***************************************************************************/ #ifndef T1TABLES_H #define T1TABLES_H #include /* Note that we separate font data in T1_FontInfo and T1_Private structures */ /* in order to later support multiple master fonts.. */ /************************************************************************* * * * T1_FontInfo * * * A structure used to model a Type1/Type2 FontInfo dictionary * Note that for multiple-master fonts, each instance has its own * FontInfo. * */ typedef struct T1_FontInfo { FT_String* version; FT_String* notice; FT_String* full_name; FT_String* family_name; FT_String* weight; FT_Long italic_angle; FT_Bool is_fixed_pitch; FT_Short underline_position; FT_UShort underline_thickness; } T1_FontInfo; /************************************************************************* * * * T1_Private * * * A structure used to model a Type1/Type2 FontInfo dictionary * Note that for multiple-master fonts, each instance has its own * Private dict. * */ typedef struct T1_Private { FT_Int unique_id; FT_Int lenIV; FT_Byte num_blues; FT_Byte num_other_blues; FT_Byte num_family_blues; FT_Byte num_family_other_blues; FT_Short blue_values[14]; FT_Short other_blues[10]; FT_Short family_blues [14]; FT_Short family_other_blues[10]; FT_Fixed blue_scale; FT_Int blue_shift; FT_Int blue_fuzz; FT_UShort standard_width; FT_UShort standard_height; FT_Byte num_snap_widths; FT_Byte num_snap_heights; FT_Bool force_bold; FT_Bool round_stem_up; FT_Short stem_snap_widths [13]; /* reserve one place for the std */ FT_Short stem_snap_heights[13]; /* reserve one place for the std */ FT_Long language_group; FT_Long password; FT_Short min_feature[2]; } T1_Private; /************************************************************************* * * * T1_Blend_Flags * * * A set of flags used to indicate which fields are present in a * given blen dictionary (font info or private). Used to support * multiple masters.. * */ typedef enum { t1_blend_none = 0, /* required fields in a FontInfo blend dictionary */ t1_blend_underline_position, t1_blend_underline_thickness, t1_blend_italic_angle, /* required fields in a Private blend dictionary */ t1_blend_blue_values, t1_blend_other_blues, t1_blend_standard_width, t1_blend_standard_height, t1_blend_stem_snap_widths, t1_blend_stem_snap_heights, t1_blend_blue_scale, t1_blend_blue_shift, t1_blend_family_blues, t1_blend_family_other_blues, t1_blend_force_bold, /* never remove */ t1_blend_max } T1_Flags; typedef struct T1_Blend_Pos { FT_Fixed min; FT_Fixed max; } T1_Blend_Pos; /************************************************************************* * * * T1_Blend * * * A structure used to describe the multiple-master fonts information * of a given Type 1 font. * */ typedef struct T1_Blend_ { FT_Int num_axis; FT_String* axis_types[4]; /* XXXX : add /BlendDesignMap entries */ FT_Int num_blends; T1_Flags* flags [17]; T1_Private* privates [17]; T1_FontInfo* fontinfos[17]; } T1_Blend; typedef struct CID_FontDict_ { T1_FontInfo font_info; T1_Private private; FT_UInt num_subrs; FT_ULong subrmap_offset; FT_Int sd_bytes; } CID_FontDict; typedef struct CID_Info_ { FT_String* cid_font_name; FT_Fixed cid_version; FT_Int cid_font_type; FT_String* registry; FT_String* ordering; FT_Int supplement; FT_ULong uid_base; FT_Int num_xuid; FT_ULong xuid[16]; FT_ULong cidmap_offset; FT_Int fd_bytes; FT_Int gd_bytes; FT_ULong cid_count; FT_Int num_font_dicts; CID_FontDict* font_dicts; } CID_Info; #endif /* T1TABLES_H */