123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- /***************************************************************************/
- /* */
- /* 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 */
|