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

📄 ttobjs.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 3 页
字号:
    size->GS = tt_default_graphics_state;    /* set `face->interpreter' according to the debug hook present */    {      FT_Library  library = face->root.driver->root.library;      face->interpreter = (TT_Interpreter)                            library->debug_hooks[FT_DEBUG_HOOK_TRUETYPE];      if ( !face->interpreter )        face->interpreter = (TT_Interpreter)TT_RunIns;    }    /* Fine, now run the font program! */    error = tt_size_run_fpgm( size );  Exit:    if ( error )      tt_size_done_bytecode( ftsize );    return error;  }  FT_LOCAL_DEF( FT_Error )  tt_size_ready_bytecode( TT_Size  size )  {    FT_Error  error = TT_Err_Ok;    if ( !size->bytecode_ready )    {      error = tt_size_init_bytecode( (FT_Size)size );      if ( error )        goto Exit;    }    /* rescale CVT when needed */    if ( !size->cvt_ready )    {      FT_UInt  i;      TT_Face  face = (TT_Face) size->root.face;      /* Scale the cvt values to the new ppem.          */      /* We use by default the y ppem to scale the CVT. */      for ( i = 0; i < size->cvt_size; i++ )        size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );      /* all twilight points are originally zero */      for ( i = 0; i < (FT_UInt)size->twilight.n_points; i++ )      {        size->twilight.org[i].x = 0;        size->twilight.org[i].y = 0;        size->twilight.cur[i].x = 0;        size->twilight.cur[i].y = 0;      }      /* clear storage area */      for ( i = 0; i < (FT_UInt)size->storage_size; i++ )        size->storage[i] = 0;      size->GS = tt_default_graphics_state;      error = tt_size_run_prep( size );    }  Exit:    return error;  }#else /* !TT_USE_BYTECODE_INTERPRETER */  FT_LOCAL_DEF( FT_Error )  tt_size_ready_bytecode( TT_Size  size )  {    FT_UNUSED( size );    return 0;  }#endif /* !TT_USE_BYTECODE_INTERPRETER */  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_size_init                                                       */  /*                                                                       */  /* <Description>                                                         */  /*    Initialize a new TrueType size object.                             */  /*                                                                       */  /* <InOut>                                                               */  /*    size :: A handle to the size object.                               */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_size_init( FT_Size  ttsize )           /* TT_Size */  {    TT_Size   size  = (TT_Size)ttsize;    FT_Error  error = TT_Err_Ok;#ifdef TT_USE_BYTECODE_INTERPRETER    size->bytecode_ready = 0;    size->cvt_ready      = 0;#endif    size->ttmetrics.valid = FALSE;    size->strike_index    = 0xFFFFFFFFUL;    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_size_done                                                       */  /*                                                                       */  /* <Description>                                                         */  /*    The TrueType size object finalizer.                                */  /*                                                                       */  /* <Input>                                                               */  /*    size :: A handle to the target size object.                        */  /*                                                                       */  FT_LOCAL_DEF( void )  tt_size_done( FT_Size  ttsize )           /* TT_Size */  {    TT_Size  size = (TT_Size)ttsize;#ifdef TT_USE_BYTECODE_INTERPRETER    if ( size->bytecode_ready )      tt_size_done_bytecode( ttsize );#endif    size->ttmetrics.valid = FALSE;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_size_reset                                                      */  /*                                                                       */  /* <Description>                                                         */  /*    Reset a TrueType size when resolutions and character dimensions    */  /*    have been changed.                                                 */  /*                                                                       */  /* <Input>                                                               */  /*    size :: A handle to the target size object.                        */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_size_reset( TT_Size  size )  {    TT_Face           face;    FT_Error          error = TT_Err_Ok;    FT_Size_Metrics*  metrics;    size->ttmetrics.valid = FALSE;    face = (TT_Face)size->root.face;    metrics = &size->metrics;    /* copy the result from base layer */    *metrics = size->root.metrics;    if ( metrics->x_ppem < 1 || metrics->y_ppem < 1 )      return TT_Err_Invalid_PPem;    /* This bit flag, if set, indicates that the ppems must be       */    /* rounded to integers.  Nearly all TrueType fonts have this bit */    /* set, as hinting won't work really well otherwise.             */    /*                                                               */    if ( face->header.Flags & 8 )    {      metrics->x_scale = FT_DivFix( metrics->x_ppem << 6,                                    face->root.units_per_EM );      metrics->y_scale = FT_DivFix( metrics->y_ppem << 6,                                    face->root.units_per_EM );      metrics->ascender =        FT_PIX_ROUND( FT_MulFix( face->root.ascender, metrics->y_scale ) );      metrics->descender =        FT_PIX_ROUND( FT_MulFix( face->root.descender, metrics->y_scale ) );      metrics->height =        FT_PIX_ROUND( FT_MulFix( face->root.height, metrics->y_scale ) );      metrics->max_advance =        FT_PIX_ROUND( FT_MulFix( face->root.max_advance_width,                                 metrics->x_scale ) );    }    /* compute new transformation */    if ( metrics->x_ppem >= metrics->y_ppem )    {      size->ttmetrics.scale   = metrics->x_scale;      size->ttmetrics.ppem    = metrics->x_ppem;      size->ttmetrics.x_ratio = 0x10000L;      size->ttmetrics.y_ratio = FT_MulDiv( metrics->y_ppem,                                           0x10000L,                                           metrics->x_ppem );    }    else    {      size->ttmetrics.scale   = metrics->y_scale;      size->ttmetrics.ppem    = metrics->y_ppem;      size->ttmetrics.x_ratio = FT_MulDiv( metrics->x_ppem,                                           0x10000L,                                           metrics->y_ppem );      size->ttmetrics.y_ratio = 0x10000L;    }#ifdef TT_USE_BYTECODE_INTERPRETER    size->cvt_ready = 0;#endif /* TT_USE_BYTECODE_INTERPRETER */    if ( !error )      size->ttmetrics.valid = TRUE;    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_driver_init                                                     */  /*                                                                       */  /* <Description>                                                         */  /*    Initialize a given TrueType driver object.                         */  /*                                                                       */  /* <Input>                                                               */  /*    driver :: A handle to the target driver object.                    */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_driver_init( FT_Module  ttdriver )     /* TT_Driver */  {#ifdef TT_USE_BYTECODE_INTERPRETER    TT_Driver  driver = (TT_Driver)ttdriver;    if ( !TT_New_Context( driver ) )      return TT_Err_Could_Not_Find_Context;#else    FT_UNUSED( ttdriver );#endif    return TT_Err_Ok;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_driver_done                                                     */  /*                                                                       */  /* <Description>                                                         */  /*    Finalize a given TrueType driver.                                  */  /*                                                                       */  /* <Input>                                                               */  /*    driver :: A handle to the target TrueType driver.                  */  /*                                                                       */  FT_LOCAL_DEF( void )  tt_driver_done( FT_Module  ttdriver )     /* TT_Driver */  {#ifdef TT_USE_BYTECODE_INTERPRETER    TT_Driver  driver = (TT_Driver)ttdriver;    /* destroy the execution context */    if ( driver->context )    {      TT_Done_Context( driver->context );      driver->context = NULL;    }#else    FT_UNUSED( ttdriver );#endif  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_slot_init                                                       */  /*                                                                       */  /* <Description>                                                         */  /*    Initialize a new slot object.                                      */  /*                                                                       */  /* <InOut>                                                               */  /*    slot :: A handle to the slot object.                               */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_slot_init( FT_GlyphSlot  slot )  {    return FT_GlyphLoader_CreateExtra( slot->internal->loader );  }/* END */

⌨️ 快捷键说明

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