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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ftoldmac.c

?? Demo for Free type 2.2.1
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/****************************************************************************/
/*                                                                          */
/*  The FreeType project -- a free and portable quality TrueType renderer.  */
/*                                                                          */
/*  Copyright 1996-2000, 2003, 2004, 2005, 2006 by                          */
/*  suzuki toshiya, D. Turner, R.Wilhelm, and W. Lemberg                    */
/*                                                                          */
/*                                                                          */
/*  ftoldmac - test program for MacOS specific API in ftmac.c               */
/*                                                                          */
/*                                                                          */
/****************************************************************************/


#if defined(__GNUC__) && defined(__APPLE_CC__)
# include <Carbon/Carbon.h>
# include <ApplicationServices/ApplicationServices.h>
# include <stdint.h>
# include <sys/param.h>
#else
# include <ConditionalMacros.h>
# include <Files.h>
# include <Fonts.h>
#endif

#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_SFNT_NAMES_H
#include FT_TRUETYPE_IDS_H

  /* the following header shouldn't be used in normal programs */
#include FT_INTERNAL_DEBUG_H

  /* showing driver name */
#include FT_MODULE_H
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DRIVER_H

#include FT_MAC_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef enum
{
  FT_OldMac_Err_Unimplemented,
  FT_OldMac_Err_TooLongFileName,
  FT_OldMac_Err_FileNotFound,
  FT_OldMac_Err_UnresolvableFontName,
  FT_OldMac_Err_PseudoFontName,
  FT_OldMac_Err_UnswappableFontID,
  FT_OldMac_Err_TooLargeFaceIndex,
  FT_OldMac_Err_Ok = 0
} FT_OldMac_Err;


/* statics of font scanning */
int      num_scanned_fonts;
int      num_opened_fonts;
int      num_scanned_faces;
int      num_opened_faces;

/* setting for face scanning */
int      max_face_number;
Boolean  force_scan_face;
char*    font_listing_api;
char*    font_resolve_api;
Boolean  auto_suffix;


void     initParamBlock( CInfoPBRec*, Str255 );
void     dumpPBErr( CInfoPBRec* );
void     crawlDir( CInfoPBRec*, char* );
void     crawlFontFile( char* );
OSErr    ftmac_FSPathMakeSpec( const UInt8*, FSSpec*, Boolean );
OSErr    ftmac_FSpMakePath( const FSSpec*, UInt8*, UInt32 );


OSErr
ftmac_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;
}


void
dump_face_info( FT_Face  face )
{
  printf( "\t\tface_index=%d, face_flags=0x%08x, num_glyphs=%d\n",
              (int)face->face_index, 
              (unsigned int)(face->face_flags),
              (int)face->num_glyphs );
  printf( "\t\tnum_fixed_sizes=%d, style_flags=%d%d%d%d%d%d\n",
          face->num_fixed_sizes,
          ( (unsigned int)(face->style_flags) >> 5 ) & 1,
          ( (unsigned int)(face->style_flags) >> 4 ) & 1,
          ( (unsigned int)(face->style_flags) >> 3 ) & 1,
          ( (unsigned int)(face->style_flags) >> 2 ) & 1,
          ( (unsigned int)(face->style_flags) >> 1 ) & 1,
          ( (unsigned int)(face->style_flags)      ) & 1
                                                                );
  printf("\t\tfamily_name=[%s], style_name=[%s]\n",
          face->family_name, face->style_name );
}

 
void
crawlFontFile( char*  font_file_path )
{
  FT_Library  library;
  FT_Face     face;
  int         i, j;
  FSSpec      spec;


  printf( "*** check font file [%s]\n", font_file_path );

  if ( 0 != FT_Init_FreeType( &library ) )
  {
    printf( "\tError: Could not initialize FreeType\n" );
    return;
  }

  if ( noErr != ftmac_FSPathMakeSpec( (unsigned char const *)font_file_path, &spec, FALSE ) )
  {
    printf( "\tError: Could not open File (MacOS API)\n" );
    return;
  }

  face = NULL;
  num_scanned_fonts ++;
  if ( 0 != FT_New_Face_From_FSSpec( library, &spec, 0, &face ) )
  {
    printf( "\tError: Could not open File (FreeType API)\n" );
    return;
  }

  num_opened_fonts ++;
  printf( "\tFont file has %d face\n", (int)face->num_faces );

  
  j = face->num_faces + max_face_number;
  for ( i = 0; i < j; i++ )
  {
    num_scanned_faces ++;
    printf( "\tCheck Face #%d...", i );
    if ( 0 == FT_New_Face_From_FSSpec( library, &spec, i, &face ) )
    {
      num_opened_faces ++;
      printf( "Ok\n" );
      dump_face_info( face );
      FT_Done_Face( face );
    }
    else
    {
      printf( "Failed\n" );
      if ( !force_scan_face )
        goto no_more_face;
    }
  }
no_more_face:
  FT_Done_FreeType( library );
}


void
crawlDir( CInfoPBRec*  ci_pb_dir,
          char*        dir_path  )
{
  CInfoPBRec  ci_pb;
  char        file_full_path[1024];
  int         dirname_len;
  int         i;


  printf( "ioVRefNum = 0x%04x, ioDrDirID = 0x%08x, ioDrParID= 0x%08x\n",
          ci_pb_dir->dirInfo.ioVRefNum,
          (unsigned int) ci_pb_dir->dirInfo.ioDrParID,
          (unsigned int) ci_pb_dir->dirInfo.ioDrDirID );
  printf( "files in directory: %d\n", ci_pb_dir->dirInfo.ioDrNmFls );


  dirname_len = strlen( dir_path );
  strcpy( file_full_path, dir_path );
  if ( 0 < dirname_len && ':' != file_full_path[ dirname_len - 1 ] )
    dirname_len ++;

  file_full_path[ dirname_len - 1 ] = ':';


  for ( i = 0; i <= ci_pb_dir->dirInfo.ioDrNmFls; i ++ )
  {
    Str255  fileName;


    memset( &ci_pb, 0, sizeof( CInfoPBRec ) );
    fileName[0] = 0;
    ci_pb.hFileInfo.ioVRefNum   = ci_pb_dir->dirInfo.ioVRefNum;
    ci_pb.hFileInfo.ioDirID     = ci_pb_dir->dirInfo.ioDrDirID;
    ci_pb.hFileInfo.ioNamePtr   = fileName;
    ci_pb.hFileInfo.ioFDirIndex = i;
    if ( noErr == PBGetCatInfoSync( &ci_pb ) )
    {
      if ( NULL != ci_pb.hFileInfo.ioNamePtr )
      {
        char  file_name[256];


        strncpy( file_name, (char *)ci_pb.hFileInfo.ioNamePtr + 1, ci_pb.hFileInfo.ioNamePtr[0] );
        file_name[ ci_pb.hFileInfo.ioNamePtr[0] ] = '\0';
        if ( 0 == strcmp( ".DS_Store", file_name ) )
          printf( "*** known non-font filename [%s]\n", file_name );
        else if ( 0 == ( ci_pb.hFileInfo.ioFlAttrib & ioDirMask ) )
        {
          file_full_path[ dirname_len ] = '\0';
          strncat( file_full_path, file_name, sizeof( file_full_path ) );
          crawlFontFile( file_full_path );
        }
      }
    }
  }
}


void
initParamBlock( CInfoPBRec*  paramBlock,
                 Str255      fileName    )
{
  paramBlock->hFileInfo.ioCompletion = 0; /* synch calls */
  paramBlock->hFileInfo.ioNamePtr    = fileName;
  paramBlock->hFileInfo.ioVRefNum    = 0; /* alias for default */
  paramBlock->hFileInfo.ioFDirIndex  = 0; /* XXX */
  paramBlock->hFileInfo.ioDirID      = 0; /* alias for default */
}

void
dumpPBErr( CInfoPBRec* paramBlock )
{
  printf( "[PB access returned after " );
  switch ( paramBlock->hFileInfo.ioResult )
  {
    case ioErr:
      printf( "I/O Error" );
      break;
    case fnOpnErr:
      printf( "File not Open Error" );
      break;
    case nsvErr:
      printf( "No such volume Error" );
      break;
    case fnfErr:
      printf( "File not found Error" );
      break;
    case rfNumErr:
      printf( "Bad reference number Error" );
      break;
    default:
      printf( "unexpected err=%d", paramBlock->hFileInfo.ioResult );
      break;
  }
  printf( "]\n" );
}


OSErr
ftmac_FSPathMakeSpec( const UInt8*   pathname,
                      FSSpec*        spec_p,
                      Boolean        isDirectory )
{
  const char  *p, *q;
  short       vRefNum;
  long        dirID;
  Str255      nodeName;
  OSErr       err;


  FT_UNUSED( isDirectory );
  p = q = (const char *)pathname;
  dirID   = 0;
  vRefNum = 0;

  while ( 1 )
  {
    q = p + FT_MIN( 255, ft_strlen( (char const *)p ) );

    if ( q == p )
      return 0;

    if ( 255 < ft_strlen( (char const *)pathname ) )
    {
      while ( p < q && *q != ':' )
        q--;
    }

    if ( p < q )
      nodeName[0] = q - p;
    else if ( ft_strlen( (char const *)p ) < 256 )
      nodeName[0] = ft_strlen( p );
    else
      return errFSNameTooLong;

    strncpy( (char *)nodeName + 1, (char *)p, nodeName[0] );
    nodeName[ nodeName[0] + 1 ] = '\0';
    err = FSMakeFSSpec( vRefNum, dirID, nodeName, spec_p );
    if ( err || '\0' == *q )
      return err;

    vRefNum = spec_p->vRefNum;
    dirID   = spec_p->parID;

    p = q + 1;
  }
}


void
test_font_files( int     argc,
                 char**  argv )
{
  int i;


  for ( i = 1; i < argc; i++ )
  {
    OSErr       status;
    CInfoPBRec  paramBlock;
    Str255      fileName;


    /* XXX: should be skipped by better argument handler */
    if ( '-' == argv[i][0] && '-' == argv[i][1] )
      continue;


    /* XXX: restrict pathname to legacy HFS limit for simplicity */
    if ( 254 < strlen( argv[i] ) )
      continue;

    fileName[0] = strlen( argv[i] );
    memcpy( fileName + 1, argv[i], fileName[0] );
    initParamBlock( &paramBlock, fileName );
    status = PBGetCatInfoSync( &paramBlock );
    if ( 0 > status )
      printf( "[PB access failed] error = %d\n", status );


    {
      FSSpec  spec;
      Str255  volName;
      int     i;


      strncpy( (char *)volName, (char *)fileName, fileName[0] );
      printf( "given file name [%s]", fileName + 1 );
      for ( i = 1; i < fileName[0] && ':' != fileName[i + 1]; i ++ )
        ;
      volName[i + 1] = ':';
      volName[i + 2] = '\0';
      volName[0] = i + 1;
      printf( "-> volume name [%s]", volName + 1 );
      status = FSMakeFSSpec( 0, 0, volName, &spec);
      if ( noErr != status )
        printf( "FSMakeFSSpec(%s) error %d\n", volName, status );
      else
      {
        printf( "FSMakeFSSpec(%s) return volID = 0x%08x\n", volName + 1, spec.vRefNum );
        paramBlock.hFileInfo.ioVRefNum = spec.vRefNum;
      }
    }


    if ( 0 != paramBlock.hFileInfo.ioResult )
      dumpPBErr( &paramBlock );
    else if ( 0 != ( paramBlock.hFileInfo.ioFlAttrib & ioDirMask ) )
      crawlDir( &paramBlock, argv[i] );
    else
      crawlFontFile( argv[i] );
  }
}


void
print_help()
{
  printf("\n" );
  printf(" ftoldmac  [pathname in HFS syntax]\n" );
  printf("\n" );
  printf("           e.g. \"Macintosh HD:System Folder:Fonts:\"\n" );
  printf("           quotation is required to avoid shell expansion\n" );
  printf("           scan directory and open all font files in there\n" );
  printf("\n" );
  printf("           --max-face-number=N\n" );
  printf("           scan face until N instead of face->num_faces\n" );
  printf("\n" );
  printf("           --force-scan-face\n" );
  printf("           ignore the error to open face and continue to max face number\n" );
  printf("\n" );
  printf(" ftoldmac  --font-listing-api=XXX --font-resolve-api=YYY\n" );
  printf("\n" );

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天做天天爱| 日韩免费观看高清完整版 | 国产成人精品免费| 欧美综合视频在线观看| 精品国产乱码久久久久久闺蜜| 亚洲欧美另类久久久精品2019| 另类小说综合欧美亚洲| 欧美性三三影院| 国产日韩精品久久久| 蜜桃av一区二区在线观看| 91麻豆免费在线观看| 国产欧美日韩另类一区| 免费的国产精品| 欧美三级视频在线播放| 中文字幕亚洲一区二区av在线 | 久久日韩粉嫩一区二区三区| 亚洲成人综合在线| 色婷婷亚洲婷婷| 国产精品嫩草影院com| 国产一区二区三区在线观看精品| 欧美精品乱人伦久久久久久| 伊人婷婷欧美激情| www.av亚洲| 中文字幕一区日韩精品欧美| 国产91精品免费| 国产校园另类小说区| 狠狠色综合色综合网络| 欧美精品一区二区三区在线播放 | 日韩二区三区四区| 欧美日韩国产天堂| 日韩专区欧美专区| 6080日韩午夜伦伦午夜伦| 午夜伊人狠狠久久| 欧美久久久久久久久中文字幕| 亚洲一区二区三区小说| 欧美日韩一区二区在线观看| 午夜精品爽啪视频| 欧美大胆一级视频| 狠狠色丁香久久婷婷综| 精品99999| 国产.欧美.日韩| 亚洲视频一二区| 在线亚洲高清视频| 日本不卡的三区四区五区| 日韩欧美精品在线视频| 精品一区二区三区在线观看国产| 26uuu久久天堂性欧美| 福利91精品一区二区三区| 亚洲欧洲一区二区在线播放| 91成人看片片| 免费不卡在线观看| 久久久www成人免费无遮挡大片| 国产精品一区在线| 亚洲免费在线视频一区 二区| 欧洲av在线精品| 狠狠色丁香九九婷婷综合五月| 欧美国产成人精品| 在线观看不卡一区| 久久机这里只有精品| 亚洲欧洲一区二区在线播放| 欧美视频中文一区二区三区在线观看| 日韩高清国产一区在线| 久久婷婷国产综合国色天香| 91在线看国产| 丝瓜av网站精品一区二区| 久久久久久9999| 欧美在线观看一区| 国产乱人伦精品一区二区在线观看| 国产精品天美传媒沈樵| 69精品人人人人| 9i看片成人免费高清| 五月婷婷欧美视频| 国产精品毛片大码女人 | 欧美性色黄大片| 国产精品亚洲成人| 亚洲狠狠丁香婷婷综合久久久| 777欧美精品| 成人在线综合网站| 免费在线观看成人| 一个色妞综合视频在线观看| 精品国产凹凸成av人导航| 91久久精品网| 国产激情偷乱视频一区二区三区| 午夜精品久久一牛影视| 亚洲欧美日韩一区二区三区在线观看| 日韩久久久精品| 欧美日韩高清一区二区不卡| gogo大胆日本视频一区| 久久精品国产**网站演员| 亚洲一二三区不卡| 国产精品日产欧美久久久久| 精品国产欧美一区二区| 欧美日韩一区不卡| 色又黄又爽网站www久久| 国产精品一二三四五| 麻豆一区二区99久久久久| 亚洲综合免费观看高清完整版 | 舔着乳尖日韩一区| 久久久久国产免费免费| 日韩欧美一二三四区| 欧美亚州韩日在线看免费版国语版| 国产传媒欧美日韩成人| 精东粉嫩av免费一区二区三区| 亚洲电影第三页| 亚洲国产精品影院| 亚洲一区在线观看网站| 亚洲色图在线播放| 国产精品美女久久久久久久网站| 久久综合久久综合亚洲| 欧美一区在线视频| 日韩亚洲欧美在线观看| 欧美一卡二卡三卡| 欧美电影精品一区二区| 日韩欧美中文字幕一区| 精品久久久久久综合日本欧美| 91精品国产综合久久久久久久久久 | 成人性生交大合| 国产精品99久久久久久久女警 | 欧美三级日韩三级| 欧美性大战久久久久久久蜜臀 | 韩国女主播一区| 久久99国产精品麻豆| 久久99国产精品尤物| 国产一区视频网站| 成人性色生活片| jiyouzz国产精品久久| 一本色道久久综合狠狠躁的推荐| av不卡免费在线观看| 91国偷自产一区二区使用方法| 日本大香伊一区二区三区| 欧美日韩免费电影| 欧美videossexotv100| 亚洲精品在线电影| 综合自拍亚洲综合图不卡区| 一区二区高清免费观看影视大全| 日韩在线a电影| 国产一区二区三区四| av亚洲产国偷v产偷v自拍| 欧美探花视频资源| 欧美色综合久久| 久久香蕉国产线看观看99| 国产精品久久久久久亚洲伦| 亚洲一区二区三区精品在线| 免费一级片91| 91小视频在线观看| 日韩一本二本av| 国产精品久久久久久妇女6080| 亚洲一区二区美女| 国产一区二区三区蝌蚪| 91在线观看地址| 欧美成人官网二区| 亚洲欧美日韩成人高清在线一区| 免费av成人在线| 91一区二区三区在线观看| 337p亚洲精品色噜噜噜| 国产精品嫩草影院com| 日韩精品国产精品| 成人av在线看| 日韩久久精品一区| 亚洲午夜三级在线| 成人免费毛片片v| 日韩一区二区三区av| 一区二区免费看| 成人国产亚洲欧美成人综合网| 制服丝袜亚洲精品中文字幕| 国产精品进线69影院| 极品美女销魂一区二区三区免费| 色综合久久久久网| 欧美极品少妇xxxxⅹ高跟鞋| 蜜桃视频在线观看一区| 欧美日韩亚洲国产综合| 国产精品二三区| 国产福利电影一区二区三区| 日韩一区二区免费在线电影| 亚洲一区在线观看免费观看电影高清 | 免费成人美女在线观看.| 色综合天天狠狠| 国产精品免费网站在线观看| 美国欧美日韩国产在线播放| 欧美性感一区二区三区| 亚洲欧洲综合另类| 99久久精品免费看国产免费软件| 久久综合色播五月| 蜜桃av一区二区三区电影| 欧美在线一区二区| 有坂深雪av一区二区精品| 99精品国产99久久久久久白柏| 国产午夜亚洲精品理论片色戒| 激情五月激情综合网| 91精品国产一区二区人妖| 午夜视频一区二区| 精品视频在线免费| 午夜精品福利在线| 欧美三级蜜桃2在线观看| 亚洲图片有声小说| 欧美日韩夫妻久久| 日韩电影免费在线观看网站| 这里只有精品电影| 人人狠狠综合久久亚洲| 日韩欧美卡一卡二|