这篇教程C++ FT_Get_Module函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中FT_Get_Module函数的典型用法代码示例。如果您正苦于以下问题:C++ FT_Get_Module函数的具体用法?C++ FT_Get_Module怎么用?C++ FT_Get_Module使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了FT_Get_Module函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: FontManagerbool CWin32Font::Create(const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags){ FT_Library library = FontManager().GetFTLibrary(); if (!library) return false; const unsigned char *file = FontManager().GetFontFile(windowsFontName); if (!file) { m_szName = UTL_INVAL_SYMBOL; return false; } FT_Face face; FT_Open_Args args; args.flags = FT_OPEN_MEMORY | FT_OPEN_DRIVER; args.memory_base = file + sizeof(int); args.memory_size = *((const int *)file); args.stream = NULL; args.driver = FT_Get_Module(library, "truetype"); if (FT_Open_Face(library, &args, 0, &face)) { m_szName = UTL_INVAL_SYMBOL; return false; } m_FTFace = face; m_szName = windowsFontName; m_iTall = tall; m_iFlags = flags & WIN32FONT_FLAGS_MASK; m_iScanLines = scanlines; m_iBlur = blur; m_iDropShadowOffset = (flags & vgui::ISurface::FONTFLAG_DROPSHADOW) ? 1 : 0; m_iOutlineSize = (flags & vgui::ISurface::FONTFLAG_OUTLINE) ? 1 : 0; m_bRotary = (flags & vgui::ISurface::FONTFLAG_ROTARY) ? 1 : 0; m_bAdditive = (flags & vgui::ISurface::FONTFLAG_ADDITIVE) ? 1 : 0; tall <<= 6; FT_Set_Char_Size(face, tall, tall, 72, 72); float scale = ((float)(face->size->metrics.ascender) * (1.0f / 64.0f)) / (float)(face->ascender); m_iBaseline = (int)(ceilf((float)(face->bbox.yMax) * scale)); m_iHeight = m_iBaseline + (int)(ceilf((float)(-face->bbox.yMin) * scale)) + m_iDropShadowOffset + (m_iOutlineSize << 1); m_iMaxCharWidth = (face->size->metrics.max_advance + 127) >> 6; m_iAscent = (int)(ceilf((float)(face->ascender) * scale)); m_rgiBitmapSize[0] = m_iMaxCharWidth + (m_iOutlineSize << 1); m_rgiBitmapSize[1] = m_iHeight; return true;}
开发者ID:TrentSterling,项目名称:D0G,代码行数:52,
示例2: T1_Size_Get_Globals_Funcsstatic PSH_Globals_FuncsT1_Size_Get_Globals_Funcs( T1_Size size ){ T1_Face face = (T1_Face)size->root.face; PSHinter_Service pshinter = (PSHinter_Service)face->pshinter; FT_Module module; module = FT_Get_Module( size->root.face->driver->root.library, "pshinter" ); return ( module && pshinter && pshinter->get_globals_funcs ) ? pshinter->get_globals_funcs( module ) : 0 ;}
开发者ID:rcombs,项目名称:freetype-fpu,代码行数:14,
示例3: open_face_from_buffer /* Create a new FT_Face given a buffer and a driver name. */ static FT_Error open_face_from_buffer( FT_Library library, FT_Byte* base, FT_ULong size, FT_Long face_index, char* driver_name, FT_Face* aface ) { FT_Open_Args args; FT_Error error; FT_Stream stream; FT_Memory memory = library->memory; error = new_memory_stream( library, base, size, memory_stream_close, &stream ); if ( error ) { FT_FREE( base ); return error; } args.flags = FT_OPEN_STREAM; args.stream = stream; if ( driver_name ) { args.flags = args.flags | FT_OPEN_DRIVER; args.driver = FT_Get_Module( library, driver_name ); } /* At this point, face_index has served its purpose; */ /* whoever calls this function has already used it to */ /* locate the correct font data. We should not propagate */ /* this index to FT_Open_Face() (unless it is negative). */ if ( face_index > 0 ) face_index = 0; error = FT_Open_Face( library, &args, face_index, aface ); if ( error == FT_Err_Ok ) (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; else FT_Stream_Free( stream, 0 ); return error; }
开发者ID:gorlak,项目名称:panda3d-thirdparty,代码行数:50,
示例4: cff_size_get_globals_funcs static PSH_Globals_Funcs cff_size_get_globals_funcs( CFF_Size size ) { CFF_Face face = (CFF_Face)size->root.face; CFF_Font font = (CFF_Font)face->extra.data; PSHinter_Service pshinter = font->pshinter; FT_Module module; module = FT_Get_Module( size->root.face->driver->root.library, "pshinter" ); return ( module && pshinter && pshinter->get_globals_funcs ) ? pshinter->get_globals_funcs( module ) : 0; }
开发者ID:litao1009,项目名称:SimpleRoom,代码行数:15,
示例5: cff_get_interface cff_get_interface( FT_Module driver, /* CFF_Driver */ const char* module_interface ) { FT_Module sfnt; FT_Module_Interface result; result = ft_service_list_lookup( cff_services, module_interface ); if ( result != NULL ) return result; /* we pass our request to the `sfnt' module */ sfnt = FT_Get_Module( driver->library, "sfnt" ); return sfnt ? sfnt->clazz->get_interface( sfnt, module_interface ) : 0; }
开发者ID:AVarfolomeev,项目名称:picasso-graphic,代码行数:16,
示例6: T42_Driver_Init T42_Driver_Init( FT_Module module ) /* T42_Driver */ { T42_Driver driver = (T42_Driver)module; FT_Module ttmodule; ttmodule = FT_Get_Module( module->library, "truetype" ); if ( !ttmodule ) { FT_ERROR(( "T42_Driver_Init: cannot access `truetype' module/n" )); return FT_THROW( Missing_Module ); } driver->ttclazz = (FT_Driver_Class)ttmodule->clazz; return FT_Err_Ok; }
开发者ID:03050903,项目名称:libgdx,代码行数:17,
示例7: open_face_from_buffer /* Create a new FT_Face given a buffer and a driver name. */ static FT_Error open_face_from_buffer( FT_Library library, FT_Byte* base, FT_ULong size, FT_Long face_index, char* driver_name, FT_Face *aface ) { FT_Open_Args args; FT_Error error; FT_Stream stream; FT_Memory memory = library->memory; error = new_memory_stream( library, base, size, memory_stream_close, &stream ); if ( error ) { FT_FREE( base ); return error; } args.flags = ft_open_stream; args.stream = stream; if ( driver_name ) { args.flags = args.flags | ft_open_driver; args.driver = FT_Get_Module( library, driver_name ); } error = FT_Open_Face( library, &args, face_index, aface ); if ( error == FT_Err_Ok ) (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; else { FT_Stream_CloseFunc( stream ); FT_FREE( stream ); } return error; }
开发者ID:dikerex,项目名称:theqvd,代码行数:45,
示例8: tt_get_interface tt_get_interface( FT_Module driver, /* TT_Driver */ const char* tt_interface ) { FT_Library library; FT_Module_Interface result; FT_Module sfntd; SFNT_Service sfnt; /* TT_SERVICES_GET derefers `library' in PIC mode */#ifdef FT_CONFIG_OPTION_PIC if ( !driver ) return NULL; library = driver->library; if ( !library ) return NULL;#endif result = ft_service_list_lookup( TT_SERVICES_GET, tt_interface ); if ( result != NULL ) return result;#ifndef FT_CONFIG_OPTION_PIC if ( !driver ) return NULL; library = driver->library; if ( !library ) return NULL;#endif /* only return the default interface from the SFNT module */ sfntd = FT_Get_Module( library, "sfnt" ); if ( sfntd ) { sfnt = (SFNT_Service)( sfntd->clazz->module_interface ); if ( sfnt ) return sfnt->get_interface( driver, tt_interface ); } return 0; }
开发者ID:WHS-TechOps,项目名称:Aviator,代码行数:41,
示例9: T1_GlyphSlot_Init FT_LOCAL_DEF FT_Error T1_GlyphSlot_Init( T1_GlyphSlot slot ) { T1_Face face; PSHinter_Interface* pshinter; face = (T1_Face) slot->root.face; pshinter = face->pshinter; if (pshinter) { FT_Module module; module = FT_Get_Module( slot->root.face->driver->root.library, "pshinter" ); if (module) { T1_Hints_Funcs funcs; funcs = pshinter->get_t1_funcs( module ); slot->root.internal->glyph_hints = (void*)funcs; } } return 0; }
开发者ID:Skiles,项目名称:aseprite,代码行数:23,
示例10: tt_get_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; }
开发者ID:allanw1,项目名称:Arianrhod,代码行数:23,
示例11: cff_get_interface cff_get_interface( FT_Module driver, /* CFF_Driver */ const char* module_interface ) { FT_Library library; FT_Module sfnt; FT_Module_Interface result; result = ft_service_list_lookup( cff_services, module_interface ); if ( result ) return result; /* `driver' is not yet evaluated */ if ( !driver ) return NULL; library = driver->library; if ( !library ) return NULL; /* we pass our request to the `sfnt' module */ sfnt = FT_Get_Module( library, "sfnt" ); return sfnt ? sfnt->clazz->get_interface( sfnt, module_interface ) : 0; }
开发者ID:GWRon,项目名称:pub.mod-NG,代码行数:24,
示例12: cff_get_name_index static FT_UInt cff_get_name_index( CFF_Face face, FT_String* glyph_name ) { CFF_Font cff; CFF_Charset charset; FT_Service_PsCMaps psnames; FT_String* name; FT_UShort sid; FT_UInt i; cff = (CFF_FontRec *)face->extra.data; charset = &cff->charset; /* CFF2 table does not have glyph names; */ /* we need to use `post' table method */ if ( cff->version_major == 2 ) { FT_Library library = FT_FACE_LIBRARY( face ); FT_Module sfnt_module = FT_Get_Module( library, "sfnt" ); FT_Service_GlyphDict service = (FT_Service_GlyphDict)ft_module_get_service( sfnt_module, FT_SERVICE_ID_GLYPH_DICT, 0 ); if ( service && service->name_index ) return service->name_index( FT_FACE( face ), glyph_name ); else { FT_ERROR(( "cff_get_name_index:" " cannot get glyph index from a CFF2 font/n" " " " without the `psnames' module/n" )); return 0; } } FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); if ( !psnames ) return 0; for ( i = 0; i < cff->num_glyphs; i++ ) { sid = charset->sids[i]; if ( sid > 390 ) name = cff_index_get_string( cff, sid - 391 ); else name = (FT_String *)psnames->adobe_std_strings( sid ); if ( !name ) continue; if ( !ft_strcmp( glyph_name, name ) ) return i; } return 0; }
开发者ID:GWRon,项目名称:pub.mod-NG,代码行数:62,
示例13: cff_get_glyph_name static FT_Error cff_get_glyph_name( CFF_Face face, FT_UInt glyph_index, FT_Pointer buffer, FT_UInt buffer_max ) { CFF_Font font = (CFF_Font)face->extra.data; FT_String* gname; FT_UShort sid; FT_Error error; /* CFF2 table does not have glyph names; */ /* we need to use `post' table method */ if ( font->version_major == 2 ) { FT_Library library = FT_FACE_LIBRARY( face ); FT_Module sfnt_module = FT_Get_Module( library, "sfnt" ); FT_Service_GlyphDict service = (FT_Service_GlyphDict)ft_module_get_service( sfnt_module, FT_SERVICE_ID_GLYPH_DICT, 0 ); if ( service && service->get_name ) return service->get_name( FT_FACE( face ), glyph_index, buffer, buffer_max ); else { FT_ERROR(( "cff_get_glyph_name:" " cannot get glyph name from a CFF2 font/n" " " " without the `psnames' module/n" )); error = FT_THROW( Missing_Module ); goto Exit; } } if ( !font->psnames ) { FT_ERROR(( "cff_get_glyph_name:" " cannot get glyph name from CFF & CEF fonts/n" " " " without the `psnames' module/n" )); error = FT_THROW( Missing_Module ); goto Exit; } /* first, locate the sid in the charset table */ sid = font->charset.sids[glyph_index]; /* now, lookup the name itself */ gname = cff_index_get_sid_string( font, sid ); if ( gname ) FT_STRCPYN( buffer, gname, buffer_max ); error = FT_Err_Ok; Exit: return error; }
开发者ID:GWRon,项目名称:pub.mod-NG,代码行数:65,
示例14: T42_Face_Init T42_Face_Init( FT_Stream stream, FT_Face t42face, /* T42_Face */ FT_Int face_index, FT_Int num_params, FT_Parameter* params ) { T42_Face face = (T42_Face)t42face; FT_Error error; FT_Service_PsCMaps psnames; PSAux_Service psaux; FT_Face root = (FT_Face)&face->root; T1_Font type1 = &face->type1; PS_FontInfo info = &type1->font_info; FT_UNUSED( num_params ); FT_UNUSED( params ); FT_UNUSED( stream ); face->ttf_face = NULL; face->root.num_faces = 1; FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); face->psnames = psnames; face->psaux = FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), "psaux" ); psaux = (PSAux_Service)face->psaux; if ( !psaux ) { FT_ERROR(( "T42_Face_Init: cannot access `psaux' module/n" )); error = FT_THROW( Missing_Module ); goto Exit; } FT_TRACE2(( "Type 42 driver/n" )); /* open the tokenizer, this will also check the font format */ error = T42_Open_Face( face ); if ( error ) goto Exit; /* if we just wanted to check the format, leave successfully now */ if ( face_index < 0 ) goto Exit; /* check the face index */ if ( face_index > 0 ) { FT_ERROR(( "T42_Face_Init: invalid face index/n" )); error = FT_THROW( Invalid_Argument ); goto Exit; } /* Now load the font program into the face object */ /* Init the face object fields */ /* Now set up root face fields */ root->num_glyphs = type1->num_glyphs; root->num_charmaps = 0; root->face_index = 0; root->face_flags |= FT_FACE_FLAG_SCALABLE | FT_FACE_FLAG_HORIZONTAL | FT_FACE_FLAG_GLYPH_NAMES; if ( info->is_fixed_pitch ) root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; /* We only set this flag if we have the patented bytecode interpreter. */ /* There are no known `tricky' Type42 fonts that could be loaded with */ /* the unpatented interpreter. */#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER root->face_flags |= FT_FACE_FLAG_HINTER;#endif /* XXX: TODO -- add kerning with .afm support */ /* get style name -- be careful, some broken fonts only */ /* have a `/FontName' dictionary entry! */ root->family_name = info->family_name; /* assume "Regular" style if we don't know better */ root->style_name = (char *)"Regular"; if ( root->family_name ) { char* full = info->full_name; char* family = root->family_name; if ( full ) { while ( *full ) { if ( *full == *family ) { family++; full++; } else//.........这里部分代码省略.........
开发者ID:03050903,项目名称:libgdx,代码行数:101,
注:本文中的FT_Get_Module函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ FT_Glyph_To_Bitmap函数代码示例 C++ FT_Get_Kerning函数代码示例 |