shithub: freetype+ttf2subf

ref: 4f2c5544bbbe663483544da8d15675dfce9c0f89
dir: /include/freetype/t1tables.h/

View raw version
/***************************************************************************/
/*                                                                         */
/*  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 */