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

📄 ttinterp.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 5 页
字号:
  /*    Only the glyph loader and debugger should call this function.      */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  TT_Run_Context( TT_ExecContext  exec,                  FT_Bool         debug )  {    FT_Error  error;    if ( ( error = TT_Goto_CodeRange( exec, tt_coderange_glyph, 0  ) )           != TT_Err_Ok )      return error;    exec->zp0 = exec->pts;    exec->zp1 = exec->pts;    exec->zp2 = exec->pts;    exec->GS.gep0 = 1;    exec->GS.gep1 = 1;    exec->GS.gep2 = 1;    exec->GS.projVector.x = 0x4000;    exec->GS.projVector.y = 0x0000;    exec->GS.freeVector = exec->GS.projVector;    exec->GS.dualVector = exec->GS.projVector;#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING    exec->GS.both_x_axis = TRUE;#endif    exec->GS.round_state = 1;    exec->GS.loop        = 1;    /* some glyphs leave something on the stack. so we clean it */    /* before a new execution.                                  */    exec->top     = 0;    exec->callTop = 0;#if 1    FT_UNUSED( debug );    return exec->face->interpreter( exec );#else    if ( !debug )      return TT_RunIns( exec );    else      return TT_Err_Ok;#endif  }  const TT_GraphicsState  tt_default_graphics_state =  {    0, 0, 0,    { 0x4000, 0 },    { 0x4000, 0 },    { 0x4000, 0 },#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING    TRUE,#endif    1, 64, 1,    TRUE, 68, 0, 0, 9, 3,    0, FALSE, 2, 1, 1, 1  };  /* documentation is in ttinterp.h */  FT_EXPORT_DEF( TT_ExecContext )  TT_New_Context( TT_Driver  driver )  {    TT_ExecContext  exec;    FT_Memory       memory;    memory = driver->root.root.memory;    exec   = driver->context;    if ( !driver->context )    {      FT_Error  error;      /* allocate object */      if ( FT_NEW( exec ) )        goto Exit;      /* initialize it */      error = Init_Context( exec, memory );      if ( error )        goto Fail;      /* store it into the driver */      driver->context = exec;    }  Exit:    return driver->context;  Fail:    FT_FREE( exec );    return 0;  }  /*************************************************************************/  /*                                                                       */  /* Before an opcode is executed, the interpreter verifies that there are */  /* enough arguments on the stack, with the help of the `Pop_Push_Count'  */  /* table.                                                                */  /*                                                                       */  /* For each opcode, the first column gives the number of arguments that  */  /* are popped from the stack; the second one gives the number of those   */  /* that are pushed in result.                                            */  /*                                                                       */  /* Opcodes which have a varying number of parameters in the data stream  */  /* (NPUSHB, NPUSHW) are handled specially; they have a negative value in */  /* the `opcode_length' table, and the value in `Pop_Push_Count' is set   */  /* to zero.                                                              */  /*                                                                       */  /*************************************************************************/#undef  PACK#define PACK( x, y )  ( ( x << 4 ) | y )  static  const FT_Byte  Pop_Push_Count[256] =  {    /* opcodes are gathered in groups of 16 */    /* please keep the spaces as they are   */    /*  SVTCA  y  */  PACK( 0, 0 ),    /*  SVTCA  x  */  PACK( 0, 0 ),    /*  SPvTCA y  */  PACK( 0, 0 ),    /*  SPvTCA x  */  PACK( 0, 0 ),    /*  SFvTCA y  */  PACK( 0, 0 ),    /*  SFvTCA x  */  PACK( 0, 0 ),    /*  SPvTL //  */  PACK( 2, 0 ),    /*  SPvTL +   */  PACK( 2, 0 ),    /*  SFvTL //  */  PACK( 2, 0 ),    /*  SFvTL +   */  PACK( 2, 0 ),    /*  SPvFS     */  PACK( 2, 0 ),    /*  SFvFS     */  PACK( 2, 0 ),    /*  GPV       */  PACK( 0, 2 ),    /*  GFV       */  PACK( 0, 2 ),    /*  SFvTPv    */  PACK( 0, 0 ),    /*  ISECT     */  PACK( 5, 0 ),    /*  SRP0      */  PACK( 1, 0 ),    /*  SRP1      */  PACK( 1, 0 ),    /*  SRP2      */  PACK( 1, 0 ),    /*  SZP0      */  PACK( 1, 0 ),    /*  SZP1      */  PACK( 1, 0 ),    /*  SZP2      */  PACK( 1, 0 ),    /*  SZPS      */  PACK( 1, 0 ),    /*  SLOOP     */  PACK( 1, 0 ),    /*  RTG       */  PACK( 0, 0 ),    /*  RTHG      */  PACK( 0, 0 ),    /*  SMD       */  PACK( 1, 0 ),    /*  ELSE      */  PACK( 0, 0 ),    /*  JMPR      */  PACK( 1, 0 ),    /*  SCvTCi    */  PACK( 1, 0 ),    /*  SSwCi     */  PACK( 1, 0 ),    /*  SSW       */  PACK( 1, 0 ),    /*  DUP       */  PACK( 1, 2 ),    /*  POP       */  PACK( 1, 0 ),    /*  CLEAR     */  PACK( 0, 0 ),    /*  SWAP      */  PACK( 2, 2 ),    /*  DEPTH     */  PACK( 0, 1 ),    /*  CINDEX    */  PACK( 1, 1 ),    /*  MINDEX    */  PACK( 1, 0 ),    /*  AlignPTS  */  PACK( 2, 0 ),    /*  INS_$28   */  PACK( 0, 0 ),    /*  UTP       */  PACK( 1, 0 ),    /*  LOOPCALL  */  PACK( 2, 0 ),    /*  CALL      */  PACK( 1, 0 ),    /*  FDEF      */  PACK( 1, 0 ),    /*  ENDF      */  PACK( 0, 0 ),    /*  MDAP[0]   */  PACK( 1, 0 ),    /*  MDAP[1]   */  PACK( 1, 0 ),    /*  IUP[0]    */  PACK( 0, 0 ),    /*  IUP[1]    */  PACK( 0, 0 ),    /*  SHP[0]    */  PACK( 0, 0 ),    /*  SHP[1]    */  PACK( 0, 0 ),    /*  SHC[0]    */  PACK( 1, 0 ),    /*  SHC[1]    */  PACK( 1, 0 ),    /*  SHZ[0]    */  PACK( 1, 0 ),    /*  SHZ[1]    */  PACK( 1, 0 ),    /*  SHPIX     */  PACK( 1, 0 ),    /*  IP        */  PACK( 0, 0 ),    /*  MSIRP[0]  */  PACK( 2, 0 ),    /*  MSIRP[1]  */  PACK( 2, 0 ),    /*  AlignRP   */  PACK( 0, 0 ),    /*  RTDG      */  PACK( 0, 0 ),    /*  MIAP[0]   */  PACK( 2, 0 ),    /*  MIAP[1]   */  PACK( 2, 0 ),    /*  NPushB    */  PACK( 0, 0 ),    /*  NPushW    */  PACK( 0, 0 ),    /*  WS        */  PACK( 2, 0 ),    /*  RS        */  PACK( 1, 1 ),    /*  WCvtP     */  PACK( 2, 0 ),    /*  RCvt      */  PACK( 1, 1 ),    /*  GC[0]     */  PACK( 1, 1 ),    /*  GC[1]     */  PACK( 1, 1 ),    /*  SCFS      */  PACK( 2, 0 ),    /*  MD[0]     */  PACK( 2, 1 ),    /*  MD[1]     */  PACK( 2, 1 ),    /*  MPPEM     */  PACK( 0, 1 ),    /*  MPS       */  PACK( 0, 1 ),    /*  FlipON    */  PACK( 0, 0 ),    /*  FlipOFF   */  PACK( 0, 0 ),    /*  DEBUG     */  PACK( 1, 0 ),    /*  LT        */  PACK( 2, 1 ),    /*  LTEQ      */  PACK( 2, 1 ),    /*  GT        */  PACK( 2, 1 ),    /*  GTEQ      */  PACK( 2, 1 ),    /*  EQ        */  PACK( 2, 1 ),    /*  NEQ       */  PACK( 2, 1 ),    /*  ODD       */  PACK( 1, 1 ),    /*  EVEN      */  PACK( 1, 1 ),    /*  IF        */  PACK( 1, 0 ),    /*  EIF       */  PACK( 0, 0 ),    /*  AND       */  PACK( 2, 1 ),    /*  OR        */  PACK( 2, 1 ),    /*  NOT       */  PACK( 1, 1 ),    /*  DeltaP1   */  PACK( 1, 0 ),    /*  SDB       */  PACK( 1, 0 ),    /*  SDS       */  PACK( 1, 0 ),    /*  ADD       */  PACK( 2, 1 ),    /*  SUB       */  PACK( 2, 1 ),    /*  DIV       */  PACK( 2, 1 ),    /*  MUL       */  PACK( 2, 1 ),    /*  ABS       */  PACK( 1, 1 ),    /*  NEG       */  PACK( 1, 1 ),    /*  FLOOR     */  PACK( 1, 1 ),    /*  CEILING   */  PACK( 1, 1 ),    /*  ROUND[0]  */  PACK( 1, 1 ),    /*  ROUND[1]  */  PACK( 1, 1 ),    /*  ROUND[2]  */  PACK( 1, 1 ),    /*  ROUND[3]  */  PACK( 1, 1 ),    /*  NROUND[0] */  PACK( 1, 1 ),    /*  NROUND[1] */  PACK( 1, 1 ),    /*  NROUND[2] */  PACK( 1, 1 ),    /*  NROUND[3] */  PACK( 1, 1 ),    /*  WCvtF     */  PACK( 2, 0 ),    /*  DeltaP2   */  PACK( 1, 0 ),    /*  DeltaP3   */  PACK( 1, 0 ),    /*  DeltaCn[0] */ PACK( 1, 0 ),    /*  DeltaCn[1] */ PACK( 1, 0 ),    /*  DeltaCn[2] */ PACK( 1, 0 ),    /*  SROUND    */  PACK( 1, 0 ),    /*  S45Round  */  PACK( 1, 0 ),    /*  JROT      */  PACK( 2, 0 ),    /*  JROF      */  PACK( 2, 0 ),    /*  ROFF      */  PACK( 0, 0 ),    /*  INS_$7B   */  PACK( 0, 0 ),    /*  RUTG      */  PACK( 0, 0 ),    /*  RDTG      */  PACK( 0, 0 ),    /*  SANGW     */  PACK( 1, 0 ),    /*  AA        */  PACK( 1, 0 ),    /*  FlipPT    */  PACK( 0, 0 ),    /*  FlipRgON  */  PACK( 2, 0 ),    /*  FlipRgOFF */  PACK( 2, 0 ),    /*  INS_$83   */  PACK( 0, 0 ),    /*  INS_$84   */  PACK( 0, 0 ),    /*  ScanCTRL  */  PACK( 1, 0 ),    /*  SDVPTL[0] */  PACK( 2, 0 ),    /*  SDVPTL[1] */  PACK( 2, 0 ),    /*  GetINFO   */  PACK( 1, 1 ),    /*  IDEF      */  PACK( 1, 0 ),    /*  ROLL      */  PACK( 3, 3 ),    /*  MAX       */  PACK( 2, 1 ),    /*  MIN       */  PACK( 2, 1 ),    /*  ScanTYPE  */  PACK( 1, 0 ),    /*  InstCTRL  */  PACK( 2, 0 ),    /*  INS_$8F   */  PACK( 0, 0 ),    /*  INS_$90  */   PACK( 0, 0 ),    /*  INS_$91  */   PACK( 0, 0 ),    /*  INS_$92  */   PACK( 0, 0 ),    /*  INS_$93  */   PACK( 0, 0 ),    /*  INS_$94  */   PACK( 0, 0 ),    /*  INS_$95  */   PACK( 0, 0 ),    /*  INS_$96  */   PACK( 0, 0 ),    /*  INS_$97  */   PACK( 0, 0 ),    /*  INS_$98  */   PACK( 0, 0 ),    /*  INS_$99  */   PACK( 0, 0 ),    /*  INS_$9A  */   PACK( 0, 0 ),    /*  INS_$9B  */   PACK( 0, 0 ),    /*  INS_$9C  */   PACK( 0, 0 ),    /*  INS_$9D  */   PACK( 0, 0 ),    /*  INS_$9E  */   PACK( 0, 0 ),    /*  INS_$9F  */   PACK( 0, 0 ),    /*  INS_$A0  */   PACK( 0, 0 ),    /*  INS_$A1  */   PACK( 0, 0 ),    /*  INS_$A2  */   PACK( 0, 0 ),    /*  INS_$A3  */   PACK( 0, 0 ),    /*  INS_$A4  */   PACK( 0, 0 ),    /*  INS_$A5  */   PACK( 0, 0 ),    /*  INS_$A6  */   PACK( 0, 0 ),    /*  INS_$A7  */   PACK( 0, 0 ),    /*  INS_$A8  */   PACK( 0, 0 ),    /*  INS_$A9  */   PACK( 0, 0 ),    /*  INS_$AA  */   PACK( 0, 0 ),    /*  INS_$AB  */   PACK( 0, 0 ),    /*  INS_$AC  */   PACK( 0, 0 ),    /*  INS_$AD  */   PACK( 0, 0 ),    /*  INS_$AE  */   PACK( 0, 0 ),    /*  INS_$AF  */   PACK( 0, 0 ),    /*  PushB[0]  */  PACK( 0, 1 ),    /*  PushB[1]  */  PACK( 0, 2 ),    /*  PushB[2]  */  PACK( 0, 3 ),    /*  PushB[3]  */  PACK( 0, 4 ),    /*  PushB[4]  */  PACK( 0, 5 ),    /*  PushB[5]  */  PACK( 0, 6 ),    /*  PushB[6]  */  PACK( 0, 7 ),    /*  PushB[7]  */  PACK( 0, 8 ),    /*  PushW[0]  */  PACK( 0, 1 ),    /*  PushW[1]  */  PACK( 0, 2 ),    /*  PushW[2]  */  PACK( 0, 3 ),    /*  PushW[3]  */  PACK( 0, 4 ),    /*  PushW[4]  */  PACK( 0, 5 ),    /*  PushW[5]  */  PACK( 0, 6 ),    /*  PushW[6]  */  PACK( 0, 7 ),    /*  PushW[7]  */  PACK( 0, 8 ),    /*  MDRP[00]  */  PACK( 1, 0 ),    /*  MDRP[01]  */  PACK( 1, 0 ),    /*  MDRP[02]  */  PACK( 1, 0 ),    /*  MDRP[03]  */  PACK( 1, 0 ),    /*  MDRP[04]  */  PACK( 1, 0 ),    /*  MDRP[05]  */  PACK( 1, 0 ),

⌨️ 快捷键说明

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