/***************************************************************************//* *//* pfrtypes.h *//* *//* FreeType PFR data structures (specification only). *//* *//* Copyright 2002 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 __PFRTYPES_H__#define __PFRTYPES_H__ #include <ft2build.h>#include FT_INTERNAL_OBJECTS_H FT_BEGIN_HEADER /************************************************************************/ /* the PFR Header structure */ typedef struct PFR_HeaderRec_ { FT_UInt32 signature; FT_UInt version; FT_UInt signature2; FT_UInt header_size; FT_UInt log_dir_size; FT_UInt log_dir_offset; FT_UInt log_font_max_size; FT_UInt32 log_font_section_size; FT_UInt32 log_font_section_offset; FT_UInt32 phy_font_max_size; FT_UInt32 phy_font_section_size; FT_UInt32 phy_font_section_offset; FT_UInt gps_max_size; FT_UInt32 gps_section_size; FT_UInt32 gps_section_offset; FT_UInt max_blue_values; FT_UInt max_x_orus; FT_UInt max_y_orus; FT_UInt phy_font_max_size_high; FT_UInt color_flags; FT_UInt32 bct_max_size; FT_UInt32 bct_set_max_size; FT_UInt32 phy_bct_set_max_size; FT_UInt num_phy_fonts; FT_UInt max_vert_stem_snap; FT_UInt max_horz_stem_snap; FT_UInt max_chars; } PFR_HeaderRec, *PFR_Header; /* used in `color_flags' field of the PFR_Header */ typedef enum PFR_HeaderFlags_ { PFR_FLAG_BLACK_PIXEL = 1, PFR_FLAG_INVERT_BITMAP = 2 } PFR_HeaderFlags; /************************************************************************/ typedef struct PFR_LogFontRec_ { FT_UInt32 size; FT_UInt32 offset; FT_Int32 matrix[4]; FT_UInt stroke_flags; FT_Int stroke_thickness; FT_Int bold_thickness; FT_Int32 miter_limit; FT_UInt32 phys_size; FT_UInt32 phys_offset; } PFR_LogFontRec, *PFR_LogFont; typedef enum PFR_LogFlags_ { PFR_LOG_EXTRA_ITEMS = 0x40, PFR_LOG_2BYTE_BOLD = 0x20, PFR_LOG_BOLD = 0x10, PFR_LOG_2BYTE_STROKE = 8, PFR_LOG_STROKE = 4, PFR_LINE_JOIN_MASK = 3 } PFR_LogFlags; typedef enum PFR_LineJoinFlags_ { PFR_LINE_JOIN_MITER = 0, PFR_LINE_JOIN_ROUND = 1, PFR_LINE_JOIN_BEVEL = 2 } PFR_LineJoinFlags; /************************************************************************/ typedef enum PFR_BitmapFlags_ { PFR_BITMAP_3BYTE_OFFSET = 4, PFR_BITMAP_2BYTE_SIZE = 2, PFR_BITMAP_2BYTE_CHARCODE = 1 } PFR_BitmapFlags; typedef struct PFR_BitmapCharRec_ { FT_UInt char_code; FT_UInt gps_size; FT_UInt32 gps_offset; } PFR_BitmapCharRec, *PFR_BitmapChar; typedef enum PFR_StrikeFlags_ { PFR_STRIKE_2BYTE_COUNT = 0x10, PFR_STRIKE_3BYTE_OFFSET = 0x08, PFR_STRIKE_3BYTE_SIZE = 0x04, PFR_STRIKE_2BYTE_YPPM = 0x02, PFR_STRIKE_2BYTE_XPPM = 0x01 } PFR_StrikeFlags; typedef struct PFR_StrikeRec_ { FT_UInt x_ppm; FT_UInt y_ppm; FT_UInt flags; FT_UInt32 gps_size; FT_UInt32 gps_offset; FT_UInt32 bct_size; FT_UInt32 bct_offset; /* optional */ FT_UInt num_bitmaps; PFR_BitmapChar bitmaps; } PFR_StrikeRec, *PFR_Strike; /************************************************************************/ typedef struct PFR_CharRec_ { FT_UInt char_code; FT_Int advance; FT_UInt gps_size; FT_UInt32 gps_offset; } PFR_CharRec, *PFR_Char; /************************************************************************/ typedef struct PFR_DimensionRec_ { FT_UInt standard; FT_UInt num_stem_snaps; FT_Int* stem_snaps; } PFR_DimensionRec, *PFR_Dimension; /************************************************************************/ typedef struct PFR_KernItemRec_* PFR_KernItem; typedef struct PFR_KernItemRec_ { PFR_KernItem next; FT_UInt pair_count; FT_UInt pair_size; FT_Int base_adj; FT_UInt flags; FT_UInt32 offset; FT_UInt32 pair1; FT_UInt32 pair2; } PFR_KernItemRec; #define PFR_KERN_INDEX( g1, g2 ) \ ( ( (FT_UInt32)(g1) << 16 ) | (FT_UInt16)(g2) ) typedef struct PFR_KernPairRec_ { FT_UInt glyph1; FT_UInt glyph2; FT_Vector kerning; } PFR_KernPairRec, *PFR_KernPair; /************************************************************************/ typedef struct PFR_PhyFontRec_ { FT_Memory memory; FT_UInt32 offset; FT_UInt font_ref_number; FT_UInt outline_resolution; FT_UInt metrics_resolution; FT_BBox bbox; FT_UInt flags; FT_UInt standard_advance; PFR_DimensionRec horizontal; PFR_DimensionRec vertical; FT_String* font_id; FT_UInt num_strikes; FT_UInt max_strikes; PFR_StrikeRec* strikes; FT_UInt num_blue_values; FT_Int *blue_values; FT_UInt blue_fuzz; FT_UInt blue_scale; FT_UInt num_chars; FT_UInt32 chars_offset; PFR_Char chars; FT_UInt num_kern_pairs; PFR_KernItem kern_items; PFR_KernItem* kern_items_tail; /* not part of the spec, but used during load */ FT_UInt32 bct_offset; FT_Byte* cursor; } PFR_PhyFontRec, *PFR_PhyFont; typedef enum PFR_PhyFlags_ { PFR_PHY_EXTRA_ITEMS = 0x80, PFR_PHY_3BYTE_GPS_OFFSET = 0x20, PFR_PHY_2BYTE_GPS_SIZE = 0x10, PFR_PHY_ASCII_CODE = 0x08, PFR_PHY_PROPORTIONAL = 0x04, PFR_PHY_2BYTE_CHARCODE = 0x02, PFR_PHY_VERTICAL = 0x01 } PFR_PhyFlags; typedef enum PFR_KernFlags_ { PFR_KERN_2BYTE_ADJ = 0x01, PFR_KERN_2BYTE_CHAR = 0x02 } PFR_KernFlags; /************************************************************************/ typedef enum PFR_GlyphFlags_ { PFR_GLYPH_IS_COMPOUND = 0x80, PFR_GLYPH_EXTRA_ITEMS = 0x08, PFR_GLYPH_1BYTE_XYCOUNT = 0x04, PFR_GLYPH_XCOUNT = 0x02, PFR_GLYPH_YCOUNT = 0x01 } PFR_GlyphFlags; /* controlled coordinate */ typedef struct PFR_CoordRec_ { FT_UInt org; FT_UInt cur; } PFR_CoordRec, *PFR_Coord; typedef struct PFR_SubGlyphRec_ { FT_Fixed x_scale; FT_Fixed y_scale; FT_Int x_delta; FT_Int y_delta; FT_UInt32 gps_offset; FT_UInt gps_size; } PFR_SubGlyphRec, *PFR_SubGlyph; typedef enum PFR_SubgGlyphFlags_ { PFR_SUBGLYPH_3BYTE_OFFSET = 0x80, PFR_SUBGLYPH_2BYTE_SIZE = 0x40, PFR_SUBGLYPH_YSCALE = 0x20, PFR_SUBGLYPH_XSCALE = 0x10 } PFR_SubGlyphFlags; typedef struct PFR_GlyphRec_ { FT_Byte format; FT_UInt num_x_control; FT_UInt num_y_control; FT_UInt max_xy_control; FT_Pos* x_control; FT_Pos* y_control; FT_UInt num_subs; FT_UInt max_subs; PFR_SubGlyphRec* subs; FT_GlyphLoader loader; FT_Bool path_begun; } PFR_GlyphRec, *PFR_Glyph; FT_END_HEADER #endif /* __PFRTYPES_H__ */ /* END */
/***************************************************************************/
/* */
/* pfrtypes.h */
/* */
/* FreeType PFR data structures (specification only). */
/* */
/* Copyright 2002 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 __PFRTYPES_H__
#define __PFRTYPES_H__
#include <ft2build.h>
#include FT_INTERNAL_OBJECTS_H
FT_BEGIN_HEADER
/************************************************************************/
/* the PFR Header structure */
typedef struct PFR_HeaderRec_
{
FT_UInt32 signature;
FT_UInt version;
FT_UInt signature2;
FT_UInt header_size;
FT_UInt log_dir_size;
FT_UInt log_dir_offset;
FT_UInt log_font_max_size;
FT_UInt32 log_font_section_size;
FT_UInt32 log_font_section_offset;
FT_UInt32 phy_font_max_size;
FT_UInt32 phy_font_section_size;
FT_UInt32 phy_font_section_offset;
FT_UInt gps_max_size;
FT_UInt32 gps_section_size;
FT_UInt32 gps_section_offset;
FT_UInt max_blue_values;
FT_UInt max_x_orus;
FT_UInt max_y_orus;
FT_UInt phy_font_max_size_high;
FT_UInt color_flags;
FT_UInt32 bct_max_size;
FT_UInt32 bct_set_max_size;
FT_UInt32 phy_bct_set_max_size;
FT_UInt num_phy_fonts;
FT_UInt max_vert_stem_snap;
FT_UInt max_horz_stem_snap;
FT_UInt max_chars;
} PFR_HeaderRec, *PFR_Header;
/* used in `color_flags' field of the PFR_Header */
typedef enum PFR_HeaderFlags_
{
PFR_FLAG_BLACK_PIXEL = 1,
PFR_FLAG_INVERT_BITMAP = 2
} PFR_HeaderFlags;
/************************************************************************/
typedef struct PFR_LogFontRec_
{
FT_UInt32 size;
FT_UInt32 offset;
FT_Int32 matrix[4];
FT_UInt stroke_flags;
FT_Int stroke_thickness;
FT_Int bold_thickness;
FT_Int32 miter_limit;
FT_UInt32 phys_size;
FT_UInt32 phys_offset;
} PFR_LogFontRec, *PFR_LogFont;
typedef enum PFR_LogFlags_
{
PFR_LOG_EXTRA_ITEMS = 0x40,
PFR_LOG_2BYTE_BOLD = 0x20,
PFR_LOG_BOLD = 0x10,
PFR_LOG_2BYTE_STROKE = 8,
PFR_LOG_STROKE = 4,
PFR_LINE_JOIN_MASK = 3
} PFR_LogFlags;
typedef enum PFR_LineJoinFlags_
{
PFR_LINE_JOIN_MITER = 0,
PFR_LINE_JOIN_ROUND = 1,
PFR_LINE_JOIN_BEVEL = 2
} PFR_LineJoinFlags;
/************************************************************************/
typedef enum PFR_BitmapFlags_
{
PFR_BITMAP_3BYTE_OFFSET = 4,
PFR_BITMAP_2BYTE_SIZE = 2,
PFR_BITMAP_2BYTE_CHARCODE = 1
} PFR_BitmapFlags;
typedef struct PFR_BitmapCharRec_
{
FT_UInt char_code;
FT_UInt gps_size;
FT_UInt32 gps_offset;
} PFR_BitmapCharRec, *PFR_BitmapChar;
typedef enum PFR_StrikeFlags_
{
PFR_STRIKE_2BYTE_COUNT = 0x10,
PFR_STRIKE_3BYTE_OFFSET = 0x08,
PFR_STRIKE_3BYTE_SIZE = 0x04,
PFR_STRIKE_2BYTE_YPPM = 0x02,
PFR_STRIKE_2BYTE_XPPM = 0x01
} PFR_StrikeFlags;
typedef struct PFR_StrikeRec_
{
FT_UInt x_ppm;
FT_UInt y_ppm;
FT_UInt flags;
FT_UInt32 gps_size;
FT_UInt32 gps_offset;
FT_UInt32 bct_size;
FT_UInt32 bct_offset;
/* optional */
FT_UInt num_bitmaps;
PFR_BitmapChar bitmaps;
} PFR_StrikeRec, *PFR_Strike;
/************************************************************************/
typedef struct PFR_CharRec_
{
FT_UInt char_code;
FT_Int advance;
FT_UInt gps_size;
FT_UInt32 gps_offset;
} PFR_CharRec, *PFR_Char;
/************************************************************************/
typedef struct PFR_DimensionRec_
{
FT_UInt standard;
FT_UInt num_stem_snaps;
FT_Int* stem_snaps;
} PFR_DimensionRec, *PFR_Dimension;
/************************************************************************/
typedef struct PFR_KernItemRec_* PFR_KernItem;
typedef struct PFR_KernItemRec_
{
PFR_KernItem next;
FT_UInt pair_count;
FT_UInt pair_size;
FT_Int base_adj;
FT_UInt flags;
FT_UInt32 offset;
FT_UInt32 pair1;
FT_UInt32 pair2;
} PFR_KernItemRec;
#define PFR_KERN_INDEX( g1, g2 ) \
( ( (FT_UInt32)(g1) << 16 ) | (FT_UInt16)(g2) )
typedef struct PFR_KernPairRec_
{
FT_UInt glyph1;
FT_UInt glyph2;
FT_Vector kerning;
} PFR_KernPairRec, *PFR_KernPair;
/************************************************************************/
typedef struct PFR_PhyFontRec_
{
FT_Memory memory;
FT_UInt32 offset;
FT_UInt font_ref_number;
FT_UInt outline_resolution;
FT_UInt metrics_resolution;
FT_BBox bbox;
FT_UInt flags;
FT_UInt standard_advance;
PFR_DimensionRec horizontal;
PFR_DimensionRec vertical;
FT_String* font_id;
FT_UInt num_strikes;
FT_UInt max_strikes;
PFR_StrikeRec* strikes;
FT_UInt num_blue_values;
FT_Int *blue_values;
FT_UInt blue_fuzz;
FT_UInt blue_scale;
FT_UInt num_chars;
FT_UInt32 chars_offset;
PFR_Char chars;
FT_UInt num_kern_pairs;
PFR_KernItem kern_items;
PFR_KernItem* kern_items_tail;
/* not part of the spec, but used during load */
FT_UInt32 bct_offset;
FT_Byte* cursor;
} PFR_PhyFontRec, *PFR_PhyFont;
typedef enum PFR_PhyFlags_
{
PFR_PHY_EXTRA_ITEMS = 0x80,
PFR_PHY_3BYTE_GPS_OFFSET = 0x20,
PFR_PHY_2BYTE_GPS_SIZE = 0x10,
PFR_PHY_ASCII_CODE = 0x08,
PFR_PHY_PROPORTIONAL = 0x04,
PFR_PHY_2BYTE_CHARCODE = 0x02,
PFR_PHY_VERTICAL = 0x01
} PFR_PhyFlags;
typedef enum PFR_KernFlags_
{
PFR_KERN_2BYTE_ADJ = 0x01,
PFR_KERN_2BYTE_CHAR = 0x02
} PFR_KernFlags;
/************************************************************************/
typedef enum PFR_GlyphFlags_
{
PFR_GLYPH_IS_COMPOUND = 0x80,
PFR_GLYPH_EXTRA_ITEMS = 0x08,
PFR_GLYPH_1BYTE_XYCOUNT = 0x04,
PFR_GLYPH_XCOUNT = 0x02,
PFR_GLYPH_YCOUNT = 0x01
} PFR_GlyphFlags;
/* controlled coordinate */
typedef struct PFR_CoordRec_
{
FT_UInt org;
FT_UInt cur;
} PFR_CoordRec, *PFR_Coord;
typedef struct PFR_SubGlyphRec_
{
FT_Fixed x_scale;
FT_Fixed y_scale;
FT_Int x_delta;
FT_Int y_delta;
FT_UInt32 gps_offset;
FT_UInt gps_size;
} PFR_SubGlyphRec, *PFR_SubGlyph;
typedef enum PFR_SubgGlyphFlags_
{
PFR_SUBGLYPH_3BYTE_OFFSET = 0x80,
PFR_SUBGLYPH_2BYTE_SIZE = 0x40,
PFR_SUBGLYPH_YSCALE = 0x20,
PFR_SUBGLYPH_XSCALE = 0x10
} PFR_SubGlyphFlags;
typedef struct PFR_GlyphRec_
{
FT_Byte format;
FT_UInt num_x_control;
FT_UInt num_y_control;
FT_UInt max_xy_control;
FT_Pos* x_control;
FT_Pos* y_control;
FT_UInt num_subs;
FT_UInt max_subs;
PFR_SubGlyphRec* subs;
FT_GlyphLoader loader;
FT_Bool path_begun;
} PFR_GlyphRec, *PFR_Glyph;
FT_END_HEADER
#endif /* __PFRTYPES_H__ */
/* END */