219 lines
5.6 KiB
C
219 lines
5.6 KiB
C
/***************************************************************************/
|
|
/* */
|
|
/* 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 <freetype/freetype.h>
|
|
|
|
/* Note that we separate font data in T1_FontInfo and T1_Private structures */
|
|
/* in order to later support multiple master fonts.. */
|
|
|
|
/*************************************************************************
|
|
*
|
|
* <Struct>
|
|
* T1_FontInfo
|
|
*
|
|
* <Description>
|
|
* 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;
|
|
|
|
|
|
/*************************************************************************
|
|
*
|
|
* <Struct>
|
|
* T1_Private
|
|
*
|
|
* <Description>
|
|
* 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;
|
|
|
|
|
|
/*************************************************************************
|
|
*
|
|
* <Enum>
|
|
* T1_Blend_Flags
|
|
*
|
|
* <Description>
|
|
* 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;
|
|
|
|
/*************************************************************************
|
|
*
|
|
* <Struct>
|
|
* T1_Blend
|
|
*
|
|
* <Description>
|
|
* 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 */
|