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

📄 ttdriver.c

📁 下载来的一个看图软件的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
      dim_y = ( ( char_height * vert_resolution + (36+32*72) ) / 72 ) & -64;    }    else    {      dim_x = ( ( char_width  * horz_resolution + 36 ) / 72 );      dim_y = ( ( char_height * vert_resolution + 36 ) / 72 );    }    /* we only modify "metrics2", not "metrics", so these changes have */    /* no effect on the result of the auto-hinter when it is used      */    /*                                                                 */    metrics2->x_ppem  = (FT_UShort)( dim_x >> 6 );    metrics2->y_ppem  = (FT_UShort)( dim_y >> 6 );    metrics2->x_scale = FT_DivFix( dim_x, face->root.units_per_EM );    metrics2->y_scale = FT_DivFix( dim_y, face->root.units_per_EM );    size->ttmetrics.valid = FALSE;#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS    size->strike_index    = 0xFFFFU;#endif    return tt_size_reset( size );  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Set_Pixel_Sizes                                                    */  /*                                                                       */  /* <Description>                                                         */  /*    A driver method used to reset a size's character sizes (horizontal */  /*    and vertical) expressed in integer pixels.                         */  /*                                                                       */  /* <InOut>                                                               */  /*    size         :: A handle to the target size object.                */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  static FT_Error  Set_Pixel_Sizes( TT_Size  size )  {    /* many things have been pre-computed by the base layer */    size->metrics         = size->root.metrics;    size->ttmetrics.valid = FALSE;#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS    size->strike_index    = 0xFFFFU;#endif    return tt_size_reset( size );  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    Load_Glyph                                                         */  /*                                                                       */  /* <Description>                                                         */  /*    A driver method used to load a glyph within a given glyph slot.    */  /*                                                                       */  /* <Input>                                                               */  /*    slot        :: A handle to the target slot object where the glyph  */  /*                   will be loaded.                                     */  /*                                                                       */  /*    size        :: A handle to the source face size at which the glyph */  /*                   must be scaled, loaded, etc.                        */  /*                                                                       */  /*    glyph_index :: The index of the glyph in the font file.            */  /*                                                                       */  /*    load_flags  :: A flag indicating what to load for this glyph.  The */  /*                   FTLOAD_??? constants can be used to control the     */  /*                   glyph loading process (e.g., whether the outline    */  /*                   should be scaled, whether to load bitmaps or not,   */  /*                   whether to hint the outline, etc).                  */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  static FT_Error  Load_Glyph( TT_GlyphSlot  slot,              TT_Size       size,              FT_UShort     glyph_index,              FT_Int32      load_flags )  {    FT_Error  error;    if ( !slot )      return TT_Err_Invalid_Slot_Handle;    /* check whether we want a scaled outline or bitmap */    if ( !size )      load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;    if ( load_flags & FT_LOAD_NO_SCALE )      size = NULL;    /* reset the size object if necessary */    if ( size )    {      /* these two object must have the same parent */      if ( size->root.face != slot->face )        return TT_Err_Invalid_Face_Handle;      if ( !size->ttmetrics.valid )      {        if ( FT_SET_ERROR( tt_size_reset( size ) ) )          return error;      }    }    /* now load the glyph outline if necessary */    error = TT_Load_Glyph( size, slot, glyph_index, load_flags );    /* force drop-out mode to 2 - irrelevant now */    /* slot->outline.dropout_mode = 2; */    return error;  }  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /****                                                                 ****/  /****                                                                 ****/  /****                D R I V E R  I N T E R F A C E                   ****/  /****                                                                 ****/  /****                                                                 ****/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  static FT_Module_Interface  tt_get_interface( TT_Driver    driver,                    const char*  tt_interface )  {    FT_Module     sfntd = FT_Get_Module( driver->root.root.library,                                         "sfnt" );    SFNT_Service  sfnt;    /* only return the default interface from the SFNT module */    if ( sfntd )    {      sfnt = (SFNT_Service)( sfntd->clazz->module_interface );      if ( sfnt )        return sfnt->get_interface( FT_MODULE( driver ), tt_interface );    }    return 0;  }  /* The FT_DriverInterface structure is defined in ftdriver.h. */  FT_CALLBACK_TABLE_DEF  const FT_Driver_ClassRec  tt_driver_class =  {    {      FT_MODULE_FONT_DRIVER        |      FT_MODULE_DRIVER_SCALABLE    |#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER      FT_MODULE_DRIVER_HAS_HINTER,#else      0,#endif      sizeof ( TT_DriverRec ),      "truetype",      /* driver name                           */      0x10000L,        /* driver version == 1.0                 */      0x20000L,        /* driver requires FreeType 2.0 or above */      (void*)0,        /* driver specific interface */      (FT_Module_Constructor)tt_driver_init,      (FT_Module_Destructor) tt_driver_done,      (FT_Module_Requester)  tt_get_interface,    },    sizeof ( TT_FaceRec ),    sizeof ( TT_SizeRec ),    sizeof ( FT_GlyphSlotRec ),    (FT_Face_InitFunc)        tt_face_init,    (FT_Face_DoneFunc)        tt_face_done,    (FT_Size_InitFunc)        tt_size_init,    (FT_Size_DoneFunc)        tt_size_done,    (FT_Slot_InitFunc)        0,    (FT_Slot_DoneFunc)        0,    (FT_Size_ResetPointsFunc) Set_Char_Sizes,    (FT_Size_ResetPixelsFunc) Set_Pixel_Sizes,    (FT_Slot_LoadFunc)        Load_Glyph,    (FT_Face_GetKerningFunc)  Get_Kerning,    (FT_Face_AttachFunc)      0,    (FT_Face_GetAdvancesFunc) 0  };/* END */

⌨️ 快捷键说明

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