⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttobjs.h

📁 奇趣公司比较新的qt/emd版本
💻 H
📖 第 1 页 / 共 2 页
字号:
  /*  record).                                                             */  /*                                                                       */  /* The CVT is a one-dimensional array containing values that control     */  /* certain important characteristics in a font, like the height of all   */  /* capitals, all lowercase letter, default spacing or stem width/height. */  /*                                                                       */  /* These values are found in FUnits in the font file, and must be scaled */  /* to pixel coordinates before being used by the CVT and glyph programs. */  /* Unfortunately, when using distinct x and y resolutions (or distinct x */  /* and y pointsizes), there are two possible scalings.                   */  /*                                                                       */  /* A first try was to implement a `lazy' scheme where all values were    */  /* scaled when first used.  However, while some values are always used   */  /* in the same direction, some others are used under many different      */  /* circumstances and orientations.                                       */  /*                                                                       */  /* I have found a simpler way to do the same, and it even seems to work  */  /* in most of the cases:                                                 */  /*                                                                       */  /* - All CVT values are scaled to the maximum ppem size.                 */  /*                                                                       */  /* - When performing a read or write in the CVT, a ratio factor is used  */  /*   to perform adequate scaling.  Example:                              */  /*                                                                       */  /*     x_ppem = 14                                                       */  /*     y_ppem = 10                                                       */  /*                                                                       */  /*   We choose ppem = x_ppem = 14 as the CVT scaling size.  All cvt      */  /*   entries are scaled to it.                                           */  /*                                                                       */  /*     x_ratio = 1.0                                                     */  /*     y_ratio = y_ppem/ppem (< 1.0)                                     */  /*                                                                       */  /*   We compute the current ratio like:                                  */  /*                                                                       */  /*   - If projVector is horizontal,                                      */  /*       ratio = x_ratio = 1.0                                           */  /*                                                                       */  /*   - if projVector is vertical,                                        */  /*       ratio = y_ratio                                                 */  /*                                                                       */  /*   - else,                                                             */  /*       ratio = sqrt( (proj.x * x_ratio) ^ 2 + (proj.y * y_ratio) ^ 2 ) */  /*                                                                       */  /*   Reading a cvt value returns                                         */  /*     ratio * cvt[index]                                                */  /*                                                                       */  /*   Writing a cvt value in pixels:                                      */  /*     cvt[index] / ratio                                                */  /*                                                                       */  /*   The current ppem is simply                                          */  /*     ratio * ppem                                                      */  /*                                                                       */  /*************************************************************************/  /*************************************************************************/  /*                                                                       */  /* Metrics used by the TrueType size and context objects.                */  /*                                                                       */  typedef struct  TT_Size_Metrics_  {    /* for non-square pixels */    FT_Long     x_ratio;    FT_Long     y_ratio;    FT_UShort   ppem;               /* maximum ppem size              */    FT_Long     ratio;              /* current ratio                  */    FT_Fixed    scale;    FT_F26Dot6  compensations[4];   /* device-specific compensations  */    FT_Bool     valid;    FT_Bool     rotated;            /* `is the glyph rotated?'-flag   */    FT_Bool     stretched;          /* `is the glyph stretched?'-flag */  } TT_Size_Metrics;  /*************************************************************************/  /*                                                                       */  /* TrueType size class.                                                  */  /*                                                                       */  typedef struct  TT_SizeRec_  {    FT_SizeRec         root;    /* we have our own copy of metrics so that we can modify */    /* it without affecting auto-hinting (when used)         */    FT_Size_Metrics    metrics;    TT_Size_Metrics    ttmetrics;    FT_ULong           strike_index;      /* 0xFFFFFFFF to indicate invalid */#ifdef TT_USE_BYTECODE_INTERPRETER    FT_UInt            num_function_defs; /* number of function definitions */    FT_UInt            max_function_defs;    TT_DefArray        function_defs;     /* table of function definitions  */    FT_UInt            num_instruction_defs;  /* number of ins. definitions */    FT_UInt            max_instruction_defs;    TT_DefArray        instruction_defs;      /* table of ins. definitions  */    FT_UInt            max_func;    FT_UInt            max_ins;    TT_CodeRangeTable  codeRangeTable;    TT_GraphicsState   GS;    FT_ULong           cvt_size;      /* the scaled control value table */    FT_Long*           cvt;    FT_UShort          storage_size; /* The storage area is now part of */    FT_Long*           storage;      /* the instance                    */    TT_GlyphZoneRec    twilight;     /* The instance's twilight zone    */    /* debugging variables */    /* When using the debugger, we must keep the */    /* execution context tied to the instance    */    /* object rather than asking it on demand.   */    FT_Bool            debug;    TT_ExecContext     context;    FT_Bool            bytecode_ready;    FT_Bool            cvt_ready;#endif /* TT_USE_BYTECODE_INTERPRETER */  } TT_SizeRec;  /*************************************************************************/  /*                                                                       */  /* TrueType driver class.                                                */  /*                                                                       */  typedef struct  TT_DriverRec_  {    FT_DriverRec     root;    TT_ExecContext   context;  /* execution context        */    TT_GlyphZoneRec  zone;     /* glyph loader points zone */    void*            extension_component;  } TT_DriverRec;  /* Note: All of the functions below (except tt_size_reset()) are used    */  /* as function pointers in a FT_Driver_ClassRec.  Therefore their        */  /* parameters are of types FT_Face, FT_Size, etc., rather than TT_Face,  */  /* TT_Size, etc., so that the compiler can confirm that the types and    */  /* number of parameters are correct.  In all cases the FT_xxx types are  */  /* cast to their TT_xxx counterparts inside the functions since FreeType */  /* will always use the TT driver to create them.                         */  /*************************************************************************/  /*                                                                       */  /* Face functions                                                        */  /*                                                                       */  FT_LOCAL( FT_Error )  tt_face_init( FT_Stream      stream,                FT_Face        ttface,      /* TT_Face */                FT_Int         face_index,                FT_Int         num_params,                FT_Parameter*  params );  FT_LOCAL( void )  tt_face_done( FT_Face  ttface );          /* TT_Face */  /*************************************************************************/  /*                                                                       */  /* Size functions                                                        */  /*                                                                       */  FT_LOCAL( FT_Error )  tt_size_init( FT_Size  ttsize );          /* TT_Size */  FT_LOCAL( void )  tt_size_done( FT_Size  ttsize );          /* TT_Size */#ifdef TT_USE_BYTECODE_INTERPRETER  FT_LOCAL( FT_Error )  tt_size_run_fpgm( TT_Size  size );  FT_LOCAL( FT_Error )  tt_size_run_prep( TT_Size  size );#endif /* TT_USE_BYTECODE_INTERPRETER */  FT_LOCAL( FT_Error )  tt_size_reset( TT_Size  size );  FT_LOCAL( FT_Error )  tt_size_ready_bytecode( TT_Size  size );  /*************************************************************************/  /*                                                                       */  /* Driver functions                                                      */  /*                                                                       */  FT_LOCAL( FT_Error )  tt_driver_init( FT_Module  ttdriver );    /* TT_Driver */  FT_LOCAL( void )  tt_driver_done( FT_Module  ttdriver );    /* TT_Driver */  /*************************************************************************/  /*                                                                       */  /* Slot functions                                                        */  /*                                                                       */  FT_LOCAL( FT_Error )  tt_slot_init( FT_GlyphSlot  slot );FT_END_HEADER#endif /* __TTOBJS_H__ *//* END */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -