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

📄 ttdriver.c

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 C
📖 第 1 页 / 共 2 页
字号:
  /*    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( FT_Size  ttsize,         /* TT_Size */                   FT_UInt  pixel_width,                   FT_UInt  pixel_height )  {    TT_Size  size = (TT_Size)ttsize;    FT_UNUSED( pixel_width );    FT_UNUSED( pixel_height );    /* 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( FT_GlyphSlot  ttslot,         /* TT_GlyphSlot */              FT_Size       ttsize,         /* TT_Size      */              FT_UInt       glyph_index,              FT_Int32      load_flags )  {    TT_GlyphSlot  slot = (TT_GlyphSlot)ttslot;    TT_Size       size = (TT_Size)ttsize;    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                   ****/  /****                                                                 ****/  /****                                                                 ****/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT  static const FT_Service_MultiMastersRec  tt_service_gx_multi_masters =  {    (FT_Get_MM_Func)        NULL,    (FT_Set_MM_Design_Func) NULL,    (FT_Set_MM_Blend_Func)  TT_Set_MM_Blend,    (FT_Get_MM_Var_Func)    TT_Get_MM_Var,    (FT_Set_Var_Design_Func)TT_Set_Var_Design  };#endif  static const FT_ServiceDescRec  tt_services[] =  {    { FT_SERVICE_ID_XF86_NAME,     FT_XF86_FORMAT_TRUETYPE },#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT    { FT_SERVICE_ID_MULTI_MASTERS, &tt_service_gx_multi_masters },#endif    { NULL, NULL }  };  FT_CALLBACK_DEF( FT_Module_Interface )  tt_get_interface( FT_Module    driver,    /* TT_Driver */                    const char*  tt_interface )  {    FT_Module_Interface  result;    FT_Module            sfntd;    SFNT_Service         sfnt;    result = ft_service_list_lookup( tt_services, tt_interface );    if ( result != NULL )      return result;    /* only return the default interface from the SFNT module */    sfntd = FT_Get_Module( driver->library, "sfnt" );    if ( sfntd )    {      sfnt = (SFNT_Service)( sfntd->clazz->module_interface );      if ( sfnt )        return sfnt->get_interface( 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 */      tt_driver_init,      tt_driver_done,      tt_get_interface,    },    sizeof ( TT_FaceRec ),    sizeof ( TT_SizeRec ),    sizeof ( FT_GlyphSlotRec ),    tt_face_init,    tt_face_done,    tt_size_init,    tt_size_done,    0,                      /* FT_Slot_InitFunc        */    0,                      /* FT_Slot_DoneFunc        */    Set_Char_Sizes,    Set_Pixel_Sizes,    Load_Glyph,    tt_get_kerning,    0,                      /* FT_Face_AttachFunc      */    0                       /* FT_Face_GetAdvancesFunc */  };/* END */

⌨️ 快捷键说明

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