📄 ttobjs.h
字号:
/***************************************************************************//* *//* ttobjs.h *//* *//* Objects manager (specification). *//* *//* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 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 __TTOBJS_H__#define __TTOBJS_H__#include <ft2build.h>#include FT_INTERNAL_OBJECTS_H#include FT_INTERNAL_TRUETYPE_TYPES_HFT_BEGIN_HEADER /*************************************************************************/ /* */ /* <Type> */ /* TT_Driver */ /* */ /* <Description> */ /* A handle to a TrueType driver object. */ /* */ typedef struct TT_DriverRec_* TT_Driver; /*************************************************************************/ /* */ /* <Type> */ /* TT_Instance */ /* */ /* <Description> */ /* A handle to a TrueType size object. */ /* */ typedef struct TT_SizeRec_* TT_Size; /*************************************************************************/ /* */ /* <Type> */ /* TT_GlyphSlot */ /* */ /* <Description> */ /* A handle to a TrueType glyph slot object. */ /* */ /* <Note> */ /* This is a direct typedef of FT_GlyphSlot, as there is nothing */ /* specific about the TrueType glyph slot. */ /* */ typedef FT_GlyphSlot TT_GlyphSlot; /*************************************************************************/ /* */ /* <Struct> */ /* TT_GraphicsState */ /* */ /* <Description> */ /* The TrueType graphics state used during bytecode interpretation. */ /* */ typedef struct TT_GraphicsState_ { FT_UShort rp0; FT_UShort rp1; FT_UShort rp2; FT_UnitVector dualVector; FT_UnitVector projVector; FT_UnitVector freeVector;#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING FT_Bool both_x_axis;#endif FT_Long loop; FT_F26Dot6 minimum_distance; FT_Int round_state; FT_Bool auto_flip; FT_F26Dot6 control_value_cutin; FT_F26Dot6 single_width_cutin; FT_F26Dot6 single_width_value; FT_Short delta_base; FT_Short delta_shift; FT_Byte instruct_control; FT_Bool scan_control; FT_Int scan_type; FT_UShort gep0; FT_UShort gep1; FT_UShort gep2; } TT_GraphicsState;#ifdef TT_USE_BYTECODE_INTERPRETER FT_LOCAL( void ) tt_glyphzone_done( TT_GlyphZone zone ); FT_LOCAL( FT_Error ) tt_glyphzone_new( FT_Memory memory, FT_UShort maxPoints, FT_Short maxContours, TT_GlyphZone zone );#endif /* TT_USE_BYTECODE_INTERPRETER */ /*************************************************************************/ /* */ /* EXECUTION SUBTABLES */ /* */ /* These sub-tables relate to instruction execution. */ /* */ /*************************************************************************/#define TT_MAX_CODE_RANGES 3 /*************************************************************************/ /* */ /* There can only be 3 active code ranges at once: */ /* - the Font Program */ /* - the CVT Program */ /* - a glyph's instructions set */ /* */ typedef enum TT_CodeRange_Tag_ { tt_coderange_none = 0, tt_coderange_font, tt_coderange_cvt, tt_coderange_glyph } TT_CodeRange_Tag; typedef struct TT_CodeRange_ { FT_Byte* base; FT_ULong size; } TT_CodeRange; typedef TT_CodeRange TT_CodeRangeTable[TT_MAX_CODE_RANGES]; /*************************************************************************/ /* */ /* Defines a function/instruction definition record. */ /* */ typedef struct TT_DefRecord_ { FT_Int range; /* in which code range is it located? */ FT_Long start; /* where does it start? */ FT_UInt opc; /* function #, or instruction code */ FT_Bool active; /* is it active? */ } TT_DefRecord, *TT_DefArray; /*************************************************************************/ /* */ /* Subglyph transformation record. */ /* */ typedef struct TT_Transform_ { FT_Fixed xx, xy; /* transformation matrix coefficients */ FT_Fixed yx, yy; FT_F26Dot6 ox, oy; /* offsets */ } TT_Transform; /*************************************************************************/ /* */ /* Subglyph loading record. Used to load composite components. */ /* */ typedef struct TT_SubglyphRec_ { FT_Long index; /* subglyph index; initialized with -1 */ FT_Bool is_scaled; /* is the subglyph scaled? */ FT_Bool is_hinted; /* should it be hinted? */ FT_Bool preserve_pps; /* preserve phantom points? */ FT_Long file_offset; FT_BBox bbox; FT_Pos left_bearing; FT_Pos advance; TT_GlyphZoneRec zone; FT_Long arg1; /* first argument */ FT_Long arg2; /* second argument */ FT_UShort element_flag; /* current load element flag */ TT_Transform transform; /* transformation matrix */ FT_Vector pp1, pp2; /* phantom points (horizontal) */ FT_Vector pp3, pp4; /* phantom points (vertical) */ } TT_SubGlyphRec, *TT_SubGlyph_Stack; /*************************************************************************/ /* */ /* A note regarding non-squared pixels: */ /* */ /* (This text will probably go into some docs at some time; for now, it */ /* is kept here to explain some definitions in the TIns_Metrics */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -