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

📄 ttdriver.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 2 页
字号:
    return error;  }  /*************************************************************************/  /*                                                                       */  /* <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_Face       face = ttslot->face;    FT_Error      error;    if ( !slot )      return TT_Err_Invalid_Slot_Handle;    if ( !size )      return TT_Err_Invalid_Size_Handle;    if ( !face || glyph_index >= (FT_UInt)face->num_glyphs )      return TT_Err_Invalid_Argument;    if ( load_flags & ( FT_LOAD_NO_RECURSE | FT_LOAD_NO_SCALE ) )    {      load_flags |= FT_LOAD_NO_HINTING |                    FT_LOAD_NO_BITMAP  |                    FT_LOAD_NO_SCALE;    }    /* 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_Service_TrueTypeEngineRec  tt_service_truetype_engine =  {#ifdef TT_USE_BYTECODE_INTERPRETER#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED#else    FT_TRUETYPE_ENGINE_TYPE_PATENTED#endif#else /* !TT_USE_BYTECODE_INTERPRETER */    FT_TRUETYPE_ENGINE_TYPE_NONE#endif /* TT_USE_BYTECODE_INTERPRETER */  };  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    { FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine },    { 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_USE_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,    tt_slot_init,    0,                      /* FT_Slot_DoneFunc */#ifdef FT_CONFIG_OPTION_OLD_INTERNALS    ft_stub_set_char_sizes,    ft_stub_set_pixel_sizes,#endif    Load_Glyph,    tt_get_kerning,    0,                      /* FT_Face_AttachFunc      */    0,                      /* FT_Face_GetAdvancesFunc */    tt_size_request,#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS    tt_size_select#else    0                       /* FT_Size_SelectFunc      */#endif  };/* END */

⌨️ 快捷键说明

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