亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ftmac.c

?? QT 開發環境里面一個很重要的文件
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***************************************************************************//*                                                                         *//*  ftmac.c                                                                *//*                                                                         *//*    Mac FOND support.  Written by just@letterror.com.                    *//*  Heavily Fixed by mpsuzuki, George Williams and Sean McBride            *//*                                                                         *//*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by                   *//*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     *//*                                                                         *//*  This file is part of the FreeType project, and may only be used,       *//*  modified, and distributed under the terms of the FreeType project      *//*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     *//*  this file you indicate that you have read the license and              *//*  understand and accept it fully.                                        *//*                                                                         *//***************************************************************************/  /*    Notes    Mac suitcase files can (and often do!) contain multiple fonts.  To    support this I use the face_index argument of FT_(Open|New)_Face()    functions, and pretend the suitcase file is a collection.    Warning: fbit and NFNT bitmap resources are not supported yet.  In old    sfnt fonts, bitmap glyph data for each size is stored in each `NFNT'    resources instead of the `bdat' table in the sfnt resource.  Therefore,    face->num_fixed_sizes is set to 0, because bitmap data in `NFNT'    resource is unavailable at present.    The Mac FOND support works roughly like this:    - Check whether the offered stream points to a Mac suitcase file.  This      is done by checking the file type: it has to be 'FFIL' or 'tfil'.  The      stream that gets passed to our init_face() routine is a stdio stream,      which isn't usable for us, since the FOND resources live in the      resource fork.  So we just grab the stream->pathname field.    - Read the FOND resource into memory, then check whether there is a      TrueType font and/or(!) a Type 1 font available.    - If there is a Type 1 font available (as a separate `LWFN' file), read      its data into memory, massage it slightly so it becomes PFB data, wrap      it into a memory stream, load the Type 1 driver and delegate the rest      of the work to it by calling FT_Open_Face().  (XXX TODO: after this      has been done, the kerning data from the FOND resource should be      appended to the face: On the Mac there are usually no AFM files      available.  However, this is tricky since we need to map Mac char      codes to ps glyph names to glyph ID's...)    - If there is a TrueType font (an `sfnt' resource), read it into memory,      wrap it into a memory stream, load the TrueType driver and delegate      the rest of the work to it, by calling FT_Open_Face().  */#include <ft2build.h>#include FT_FREETYPE_H#include FT_INTERNAL_STREAM_H#if defined( __GNUC__ ) || defined( __IBMC__ )  /* This is for Mac OS X.  Without redefinition, OS_INLINE */  /* expands to `static inline' which doesn't survive the   */  /* -ansi compilation flag of GCC.                         */#define OS_INLINE   static __inline__#include <Carbon/Carbon.h>#else#include <Resources.h>#include <Fonts.h>#include <Errors.h>#include <Files.h>#include <TextUtils.h>#endif#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO#include <FSp_fopen.h>#endif#include FT_MAC_H  /* FSSpec functions are deprecated since Mac OS X 10.4 */#ifndef HAVE_FSSPEC#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON#define HAVE_FSSPEC  1#else#define HAVE_FSSPEC  0#endif#endif  /* most FSRef functions were introduced since Mac OS 9 */#ifndef HAVE_FSREF#if TARGET_API_MAC_OSX#define HAVE_FSREF  1#else#define HAVE_FSREF  0#endif#endif#ifndef HFS_MAXPATHLEN#define HFS_MAXPATHLEN  1024#endif  /* QuickDraw is deprecated since Mac OS X 10.4 */#ifndef HAVE_QUICKDRAW_CARBON#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON#define HAVE_QUICKDRAW_CARBON  1#else#define HAVE_QUICKDRAW_CARBON  0#endif#endif  /* AppleTypeService is available since Mac OS X */#ifndef HAVE_ATS#if TARGET_API_MAC_OSX#define HAVE_ATS  1#else#define HAVE_ATS  0#endif#endif  /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over     TrueType in case *both* are available (this is not common,     but it *is* possible). */#ifndef PREFER_LWFN#define PREFER_LWFN  1#endif#if !HAVE_QUICKDRAW_CARBON  /* QuickDraw is deprecated since Mac OS X 10.4 */  FT_EXPORT_DEF( FT_Error )  FT_GetFile_From_Mac_Name( const char*  fontName,                            FSSpec*      pathSpec,                            FT_Long*     face_index )  {    return FT_Err_Unimplemented_Feature;  }#else  FT_EXPORT_DEF( FT_Error )  FT_GetFile_From_Mac_Name( const char*  fontName,                            FSSpec*      pathSpec,                            FT_Long*     face_index )  {    OptionBits            options = kFMUseGlobalScopeOption;    FMFontFamilyIterator  famIter;    OSStatus              status = FMCreateFontFamilyIterator( NULL, NULL,                                                               options,                                                               &famIter );    FMFont                the_font = 0;    FMFontFamily          family   = 0;    *face_index = 0;    while ( status == 0 && !the_font )    {      status = FMGetNextFontFamily( &famIter, &family );      if ( status == 0 )      {        int                           stat2;        FMFontFamilyInstanceIterator  instIter;        Str255                        famNameStr;        char                          famName[256];        /* get the family name */        FMGetFontFamilyName( family, famNameStr );        CopyPascalStringToC( famNameStr, famName );        /* iterate through the styles */        FMCreateFontFamilyInstanceIterator( family, &instIter );        *face_index = 0;        stat2       = 0;        while ( stat2 == 0 && !the_font )        {          FMFontStyle  style;          FMFontSize   size;          FMFont       font;          stat2 = FMGetNextFontFamilyInstance( &instIter, &font,                                               &style, &size );          if ( stat2 == 0 && size == 0 )          {            char  fullName[256];            /* build up a complete face name */            ft_strcpy( fullName, famName );            if ( style & bold )              ft_strcat( fullName, " Bold" );            if ( style & italic )              ft_strcat( fullName, " Italic" );            /* compare with the name we are looking for */            if ( ft_strcmp( fullName, fontName ) == 0 )            {              /* found it! */              the_font = font;            }            else              ++(*face_index);          }        }        FMDisposeFontFamilyInstanceIterator( &instIter );      }    }    FMDisposeFontFamilyIterator( &famIter );    if ( the_font )    {      FMGetFontContainer( the_font, pathSpec );      return FT_Err_Ok;    }    else      return FT_Err_Unknown_File_Format;  }#endif /* HAVE_QUICKDRAW_CARBON */#if !HAVE_ATS  FT_EXPORT_DEF( FT_Error )  FT_GetFile_From_Mac_ATS_Name( const char*  fontName,                                FSSpec*      pathSpec,                                FT_Long*     face_index )  {    return FT_Err_Unimplemented_Feature;  }#else  FT_EXPORT_DEF( FT_Error )  FT_GetFile_From_Mac_ATS_Name( const char*  fontName,                                FSSpec*      pathSpec,                                FT_Long*     face_index )  {    CFStringRef  cf_fontName;    ATSFontRef   ats_font_id;    *face_index = 0;    cf_fontName = CFStringCreateWithCString( NULL, fontName,                                             kCFStringEncodingMacRoman );    ats_font_id = ATSFontFindFromName( cf_fontName,                                       kATSOptionFlagsUnRestrictedScope );    if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL )      return FT_Err_Unknown_File_Format;    if ( 0 != ATSFontGetFileSpecification( ats_font_id, pathSpec ) )      return FT_Err_Unknown_File_Format;    /* face_index calculation by searching preceding fontIDs */    /* with same FSRef                                       */    {      int     i;      FSSpec  f;      for ( i = 1; i < ats_font_id; i++ )      {        if ( 0 != ATSFontGetFileSpecification( ats_font_id - i,                                               &f               ) ||             f.vRefNum != pathSpec->vRefNum                       ||             f.parID   != pathSpec->parID                         ||             f.name[0] != pathSpec->name[0]                       ||             0 != ft_strncmp( (char *)f.name + 1,                              (char *)pathSpec->name + 1,                              f.name[0]                           ) )          break;      }      *face_index = ( i - 1 );    }    return FT_Err_Ok;  }#endif /* HAVE_ATS */#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO#define STREAM_FILE( stream )  ( (FT_FILE*)stream->descriptor.pointer )  FT_CALLBACK_DEF( void )  ft_FSp_stream_close( FT_Stream  stream )  {    ft_fclose( STREAM_FILE( stream ) );    stream->descriptor.pointer = NULL;    stream->size               = 0;    stream->base               = 0;  }  FT_CALLBACK_DEF( unsigned long )  ft_FSp_stream_io( FT_Stream       stream,                    unsigned long   offset,                    unsigned char*  buffer,                    unsigned long   count )  {    FT_FILE*  file;    file = STREAM_FILE( stream );    ft_fseek( file, offset, SEEK_SET );    return (unsigned long)ft_fread( buffer, 1, count, file );  }#endif  /* __MWERKS__ && !TARGET_RT_MAC_MACHO */#if HAVE_FSSPEC && !HAVE_FSREF  static OSErr  FT_FSPathMakeSpec( const UInt8*  pathname,                     FSSpec*       spec_p,                     Boolean       isDirectory )  {    const char  *p, *q;    short       vRefNum;    long        dirID;    Str255      nodeName;    OSErr       err;    p = q = (const char *)pathname;    dirID   = 0;    vRefNum = 0;    while ( 1 )    {      q = p + FT_MIN( 255, ft_strlen( p ) );      if ( q == p )        return 0;      if ( 255 < ft_strlen( (char *)pathname ) )      {        while ( p < q && *q != ':' )          q--;      }      if ( p < q )        *(char *)nodeName = q - p;      else if ( ft_strlen( p ) < 256 )        *(char *)nodeName = ft_strlen( p );      else        return errFSNameTooLong;      ft_strncpy( (char *)nodeName + 1, (char *)p, *(char *)nodeName );      err = FSMakeFSSpec( vRefNum, dirID, nodeName, spec_p );      if ( err || '\0' == *q )        return err;      vRefNum = spec_p->vRefNum;      dirID   = spec_p->parID;      p = q;    }  }  static OSErr  FT_FSpMakePath( const FSSpec*  spec_p,                  UInt8*         path,                  UInt32         maxPathSize )  {    OSErr   err;    FSSpec  spec = *spec_p;    short   vRefNum;    long    dirID;    Str255  parDir_name;    FT_MEM_SET( path, 0, maxPathSize );    while ( 1 )    {      int             child_namelen = ft_strlen( (char *)path );      unsigned char   node_namelen  = spec.name[0];      unsigned char*  node_name     = spec.name + 1;      if ( node_namelen + child_namelen > maxPathSize )        return errFSNameTooLong;      FT_MEM_MOVE( path + node_namelen + 1, path, child_namelen );      FT_MEM_COPY( path, node_name, node_namelen );      if ( child_namelen > 0 )        path[node_namelen] = ':';      vRefNum        = spec.vRefNum;      dirID          = spec.parID;      parDir_name[0] = '\0';      err = FSMakeFSSpec( vRefNum, dirID, parDir_name, &spec );      if ( noErr != err || dirID == spec.parID )        break;    }    return noErr;  }#endif /* HAVE_FSSPEC && !HAVE_FSREF */  static OSErr  FT_FSPathMakeRes( const UInt8*  pathname,                    short*        res )  {#if HAVE_FSREF    OSErr  err;    FSRef  ref;    if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) )      return FT_Err_Cannot_Open_Resource;    /* at present, no support for dfont format */    err = FSOpenResourceFile( &ref, 0, NULL, fsRdPerm, res );    if ( noErr == err )      return err;    /* fallback to original resource-fork font */    *res = FSOpenResFile( &ref, fsRdPerm );    err  = ResError();#else    OSErr   err;    FSSpec  spec;    if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) )      return FT_Err_Cannot_Open_Resource;    /* at present, no support for dfont format without FSRef */    /* (see above), try original resource-fork font          */    *res = FSpOpenResFile( &spec, fsRdPerm );    err  = ResError();#endif /* HAVE_FSREF */    return err;  }  /* Return the file type for given pathname */  static OSType  get_file_type_from_path( const UInt8*  pathname )  {#if HAVE_FSREF    FSRef          ref;    FSCatalogInfo  info;    if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) )      return ( OSType ) 0;    if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoFinderInfo, &info,                                    NULL, NULL, NULL ) )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人高清电影在线| 一本大道久久a久久精二百| 色婷婷精品大在线视频| 亚洲美腿欧美偷拍| 国产精品久久精品日日| 成人免费视频视频| 91麻豆精品一区二区三区| 欧美一级淫片007| 亚洲一区在线观看免费 | 日本在线不卡视频| 欧美四级电影在线观看| 国产精品国产自产拍高清av王其| 粉嫩一区二区三区性色av| 亚洲影院免费观看| 欧美大片日本大片免费观看| 激情小说欧美图片| 国产精品国产a| 欧美精品自拍偷拍| 日韩电影在线免费观看| 亚洲欧美日韩国产中文在线| 欧美日韩视频不卡| 91麻豆精东视频| 国产一区二区不卡在线| 一二三四社区欧美黄| 欧美精品一区二区三| 欧美精品777| 91丝袜美腿高跟国产极品老师 | 国产mv日韩mv欧美| 日韩成人精品视频| 亚洲精品国久久99热| 国产精品毛片无遮挡高清| 蜜臀av性久久久久av蜜臀妖精| 亚洲六月丁香色婷婷综合久久 | 国产999精品久久| 国产精品乡下勾搭老头1| 久久av资源网| 国产呦萝稀缺另类资源| 狠狠色伊人亚洲综合成人| 久久66热re国产| youjizz久久| 欧美日韩亚洲综合| 欧美一区二区视频在线观看 | 在线免费视频一区二区| 色婷婷综合久久久中文字幕| 91久久精品午夜一区二区| 美脚の诱脚舐め脚责91| 中文字幕巨乱亚洲| 亚洲你懂的在线视频| 午夜亚洲国产au精品一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品久久久精品美女| 国产美女娇喘av呻吟久久| 国产91露脸合集magnet| 91官网在线免费观看| 91麻豆精品91久久久久久清纯| 精品国产区一区| 日韩理论在线观看| 卡一卡二国产精品 | 中文幕一区二区三区久久蜜桃| 樱花草国产18久久久久| 国产综合色精品一区二区三区| 99久久99久久精品免费观看| 99riav久久精品riav| 日韩欧美国产精品| 日韩伦理电影网| 丁香另类激情小说| 欧美一级在线免费| 亚洲欧洲精品成人久久奇米网| 蜜桃久久久久久久| 欧美日韩综合不卡| 日韩一区二区三区四区五区六区| 国产一区 二区 三区一级| 成人免费的视频| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区二区综合| 国产激情精品久久久第一区二区| 色婷婷久久一区二区三区麻豆| 欧美videos中文字幕| 亚洲高清免费观看高清完整版在线观看| 精品在线你懂的| 日韩一区二区在线观看| voyeur盗摄精品| 亚洲视频综合在线| 一本久久综合亚洲鲁鲁五月天| 日韩视频在线一区二区| 亚洲一区二区视频| 欧美日韩情趣电影| 日韩av电影天堂| 日韩美女一区二区三区| 狠狠色丁香久久婷婷综合_中| 欧美吻胸吃奶大尺度电影| 亚洲综合精品久久| 欧美日韩卡一卡二| 欧美精品一区二区精品网| 成人手机在线视频| 香蕉影视欧美成人| 欧美不卡一区二区三区| 成人小视频免费在线观看| 亚洲精品福利视频网站| 91精品国产品国语在线不卡| 国产精品资源网站| 欧洲一区在线电影| 男女激情视频一区| 国产精品久久久久天堂| 欧美午夜寂寞影院| 福利电影一区二区| 国产日韩精品一区| 国产成人小视频| 欧美一级片免费看| 成人免费福利片| 99久久夜色精品国产网站| 国产一区二区三区在线观看免费 | 国产午夜精品久久久久久免费视| 欧美乱妇23p| 99视频有精品| 国产盗摄一区二区三区| 国产一区二区三区免费| 成人午夜短视频| 亚洲色图欧洲色图婷婷| 久久免费精品国产久精品久久久久| 精品视频在线看| 欧美色综合天天久久综合精品| 色激情天天射综合网| 91一区在线观看| 91污在线观看| 欧美一级欧美一级在线播放| 六月婷婷色综合| 不卡在线视频中文字幕| 欧美午夜精品电影| 久久一区二区视频| 一区二区成人在线| 蜜臀精品久久久久久蜜臀| eeuss影院一区二区三区| 欧美精品久久天天躁| 国产精品正在播放| 在线视频一区二区三区| 日韩欧美一级二级三级久久久| 亚洲天堂a在线| 国产一区二区三区黄视频| 在线视频综合导航| 国产午夜精品久久| 奇米在线7777在线精品| 色综合久久久久| 国产精品理论片在线观看| 视频一区中文字幕| 91在线观看高清| 国产精品美女一区二区三区| 亚洲一二三级电影| 91免费观看视频在线| 精品国产精品网麻豆系列| 欧美国产亚洲另类动漫| 麻豆精品国产91久久久久久| 欧美日韩一区二区在线观看视频| 国产精品乱码一区二三区小蝌蚪| 美美哒免费高清在线观看视频一区二区| 国产成+人+日韩+欧美+亚洲| 久久久99久久| 免费在线观看日韩欧美| 欧美一级黄色片| 国产乱人伦精品一区二区在线观看 | 亚洲va天堂va国产va久| 91久久精品一区二区三| 亚洲网友自拍偷拍| 91精品麻豆日日躁夜夜躁| 日本强好片久久久久久aaa| 日韩欧美国产综合在线一区二区三区| 肉肉av福利一精品导航| 欧美一区二区三区精品| 精品在线一区二区三区| 欧美国产禁国产网站cc| 一本到一区二区三区| 制服丝袜激情欧洲亚洲| 精品在线观看免费| 国产精品成人一区二区三区夜夜夜| 一本到一区二区三区| 久久99热这里只有精品| 国产精品1024久久| 亚洲欧美另类久久久精品2019| 欧美图区在线视频| 国产99久久久国产精品潘金网站| 国产精品久久午夜夜伦鲁鲁| 亚洲一区二区欧美| 91精品国产日韩91久久久久久| bt欧美亚洲午夜电影天堂| 偷偷要91色婷婷| 国产精品电影一区二区| 91麻豆精品国产91久久久使用方法 | 一区二区三区不卡视频在线观看| 欧美三级日本三级少妇99| 国产盗摄视频一区二区三区| 日韩高清在线不卡| 亚洲自拍偷拍网站| 亚洲乱码国产乱码精品精小说| 日韩亚洲欧美综合| 欧美一区二区在线免费观看| 在线观看国产精品网站| 欧美日韩午夜影院| 色美美综合视频| 成人午夜碰碰视频| 日韩视频一区二区三区在线播放|