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

📄 ttobjs.c

📁 qt-embedded-2.3.8.tar.gz源码
💻 C
📖 第 1 页 / 共 3 页
字号:
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    {      TT_ExecContext  exec;      FT_UInt         i, j;      /* 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 ( j = 0; j < (FT_UInt)size->twilight.n_points; j++ )      {        size->twilight.org[j].x = 0;        size->twilight.org[j].y = 0;        size->twilight.cur[j].x = 0;        size->twilight.cur[j].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;      /* get execution context and run prep program */      if ( size->debug )        exec = size->context;      else        exec = TT_New_Context( face );      /* debugging instances have their own context */      if ( !exec )        return TT_Err_Could_Not_Find_Context;      TT_Load_Context( exec, face, size );      TT_Set_CodeRange( exec,                        tt_coderange_cvt,                        face->cvt_program,                        face->cvt_program_size );      TT_Clear_CodeRange( exec, tt_coderange_glyph );      exec->instruction_trap = FALSE;      exec->top     = 0;      exec->callTop = 0;      if ( face->cvt_program_size > 0 )      {        error = TT_Goto_CodeRange( exec, tt_coderange_cvt, 0 );        if ( error )          goto End;        if ( !size->debug )          error = face->interpreter( exec );      }      else        error = TT_Err_Ok;      size->GS = exec->GS;      /* save default graphics state */    End:      TT_Save_Context( exec, size );      if ( !size->debug )        TT_Done_Context( exec );      /* debugging instances keep their context */    }#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */    if ( !error )      size->ttmetrics.valid = TRUE;    return error;  }#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Reset_SBit_Size                                                    */  /*                                                                       */  /* <Description>                                                         */  /*    Resets a TrueType sbit size when resolutions and character         */  /*    dimensions have been changed.                                      */  /*                                                                       */  /* <Input>                                                               */  /*    size :: A handle to the target size object.                        */  /*                                                                       */  static  FT_Error  Reset_SBit_Size( TT_Size size )  {    TT_Face           face;    FT_Error          error = TT_Err_Ok;    FT_ULong          strike_index;    FT_Size_Metrics*  metrics;    FT_Size_Metrics*  sbit_metrics;    SFNT_Interface*   sfnt;    metrics = &size->root.metrics;    if ( size->strike_index != 0xFFFF )      return TT_Err_Ok;    face = (TT_Face)size->root.face;    sfnt = (SFNT_Interface*)face->sfnt;    sbit_metrics = &size->strike_metrics;    error = sfnt->set_sbit_strike(face,                                  metrics->x_ppem, metrics->y_ppem,                                  &strike_index);    if ( !error )    {      TT_SBit_Strike*  strike = face->sbit_strikes + strike_index;                  sbit_metrics->x_ppem      = metrics->x_ppem;      sbit_metrics->y_ppem      = metrics->y_ppem;#if 0      /*       * sbit_metrics->?_scale       * are not used now.       */      sbit_metrics->x_scale     = 1 << 16;      sbit_metrics->y_scale     = 1 << 16;#endif            sbit_metrics->ascender    = strike->hori.ascender << 6;      sbit_metrics->descender   = strike->hori.descender << 6;            /* XXX: Is this correct? */      sbit_metrics->height      = sbit_metrics->ascender -                                  sbit_metrics->descender;            /* XXX: Is this correct? */      sbit_metrics->max_advance = ( strike->hori.min_origin_SB +                                    strike->hori.max_width     +                                    strike->hori.min_advance_SB ) << 6;      size->strike_index = strike_index;    }    else    {      size->strike_index = 0xFFFF;            sbit_metrics->x_ppem      = 0;      sbit_metrics->y_ppem      = 0;      sbit_metrics->ascender    = 0;      sbit_metrics->descender   = 0;      sbit_metrics->height      = 0;      sbit_metrics->max_advance = 0;    }    return error;  }#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Reset_Size                                                      */  /*                                                                       */  /* <Description>                                                         */  /*    Resets 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_Reset_Size( TT_Size  size )  {    FT_Face   face;    FT_Error  error = TT_Err_Ok;    face = size->root.face;    if ( face->face_flags & FT_FACE_FLAG_SCALABLE )    {      if ( !size->ttmetrics.valid )        error = Reset_Outline_Size( size );      if ( error )        return error;    }#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS    if ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )    {      if ( size->strike_index == 0xFFFF )        error = Reset_SBit_Size( size );      if ( !error && !( face->face_flags & FT_FACE_FLAG_SCALABLE ) )        size->root.metrics = size->strike_metrics;    }#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */    if ( face->face_flags & FT_FACE_FLAG_SCALABLE )      return TT_Err_Ok;    else      return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Init_Driver                                                     */  /*                                                                       */  /* <Description>                                                         */  /*    Initializes 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_Init_Driver( TT_Driver  driver )  {    FT_Error  error;    /* set `extra' in glyph loader */    error = FT_GlyphLoader_Create_Extra( FT_DRIVER( driver )->glyph_loader );    /* init extension registry if needed */#ifdef TT_CONFIG_OPTION_EXTEND_ENGINE    if ( !error )      return TT_Init_Extensions( driver );#endif    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Done_Driver                                                     */  /*                                                                       */  /* <Description>                                                         */  /*    Finalizes a given TrueType driver.                                 */  /*                                                                       */  /* <Input>                                                               */  /*    driver :: A handle to the target TrueType driver.                  */  /*                                                                       */  FT_LOCAL_DEF  void  TT_Done_Driver( TT_Driver  driver )  {    /* destroy extensions registry if needed */#ifdef TT_CONFIG_OPTION_EXTEND_ENGINE    TT_Done_Extensions( driver );#endif#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    /* destroy the execution context */    if ( driver->context )    {      TT_Destroy_Context( driver->context, driver->root.root.memory );      driver->context = NULL;    }#else    FT_UNUSED( driver );#endif  }/* END */

⌨️ 快捷键说明

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