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

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

?? ftmac.c

?? QT 開發(fā)環(huán)境里面一個(gè)很重要的文件
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
      return ( OSType ) 0;    return ((FInfo *)(info.finderInfo))->fdType;#else    FSSpec  spec;    FInfo  finfo;    if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) )      return ( OSType ) 0;    if ( noErr != FSpGetFInfo( &spec, &finfo ) )      return ( OSType ) 0;    return finfo.fdType;#endif /* HAVE_FSREF */  }  /* Given a PostScript font name, create the Macintosh LWFN file name. */  static void  create_lwfn_name( char*   ps_name,                    Str255  lwfn_file_name )  {    int       max = 5, count = 0;    FT_Byte*  p = lwfn_file_name;    FT_Byte*  q = (FT_Byte*)ps_name;    lwfn_file_name[0] = 0;    while ( *q )    {      if ( ft_isupper( *q ) )      {        if ( count )          max = 3;        count = 0;      }      if ( count < max && ( ft_isalnum( *q ) || *q == '_' ) )      {        *++p = *q;        lwfn_file_name[0]++;        count++;      }      q++;    }  }  static short  count_faces_sfnt( char*  fond_data )  {    /* The count is 1 greater than the value in the FOND.  */    /* Isn't that cute? :-)                                */    return 1 + *( (short*)( fond_data + sizeof ( FamRec ) ) );  }  static short  count_faces_scalable( char*  fond_data )  {    AsscEntry*  assoc;    FamRec*     fond;    short       i, face, face_all;    fond     = (FamRec*)fond_data;    face_all = *( (short *)( fond_data + sizeof ( FamRec ) ) ) + 1;    assoc    = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 );    face     = 0;    for ( i = 0; i < face_all; i++ )    {      if ( 0 == assoc[i].fontSize )        face++;    }    return face;  }  /* Look inside the FOND data, answer whether there should be an SFNT     resource, and answer the name of a possible LWFN Type 1 file.     Thanks to Paul Miller (paulm@profoundeffects.com) for the fix     to load a face OTHER than the first one in the FOND!  */  static void  parse_fond( char*   fond_data,              short*  have_sfnt,              short*  sfnt_id,              Str255  lwfn_file_name,              short   face_index )  {    AsscEntry*  assoc;    AsscEntry*  base_assoc;    FamRec*     fond;    *sfnt_id          = 0;    *have_sfnt        = 0;    lwfn_file_name[0] = 0;    fond       = (FamRec*)fond_data;    assoc      = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 );    base_assoc = assoc;    /* Let's do a little range checking before we get too excited here */    if ( face_index < count_faces_sfnt( fond_data ) )    {      assoc += face_index;        /* add on the face_index! */      /* if the face at this index is not scalable,         fall back to the first one (old behavior) */      if ( assoc->fontSize == 0 )      {        *have_sfnt = 1;        *sfnt_id   = assoc->fontID;      }      else if ( base_assoc->fontSize == 0 )      {        *have_sfnt = 1;        *sfnt_id   = base_assoc->fontID;      }    }    if ( fond->ffStylOff )    {      unsigned char*  p = (unsigned char*)fond_data;      StyleTable*     style;      unsigned short  string_count;      char            ps_name[256];      unsigned char*  names[64];      int             i;      p += fond->ffStylOff;      style = (StyleTable*)p;      p += sizeof ( StyleTable );      string_count = *(unsigned short*)(p);      p += sizeof ( short );      for ( i = 0; i < string_count && i < 64; i++ )      {        names[i] = p;        p       += names[i][0];        p++;      }      {        size_t  ps_name_len = (size_t)names[0][0];        if ( ps_name_len != 0 )        {          ft_memcpy(ps_name, names[0] + 1, ps_name_len);          ps_name[ps_name_len] = 0;        }        if ( style->indexes[0] > 1 )        {          unsigned char*  suffixes = names[style->indexes[0] - 1];          for ( i = 1; i <= suffixes[0]; i++ )          {            unsigned char*  s;            size_t          j = suffixes[i] - 1;            if ( j < string_count && ( s = names[j] ) != NULL )            {              size_t  s_len = (size_t)s[0];              if ( s_len != 0 && ps_name_len + s_len < sizeof ( ps_name ) )              {                ft_memcpy( ps_name + ps_name_len, s + 1, s_len );                ps_name_len += s_len;                ps_name[ps_name_len] = 0;              }            }          }        }      }      create_lwfn_name( ps_name, lwfn_file_name );    }  }  static  FT_Error  lookup_lwfn_by_fond( const UInt8*     path_fond,                       const StringPtr  base_lwfn,                       UInt8*           path_lwfn,                       int              path_size )  {#if HAVE_FSREF    FSRef  ref, par_ref;    int    dirname_len;    /* Pathname for FSRef can be in various formats: HFS, HFS+, and POSIX. */    /* We should not extract parent directory by string manipulation.      */    if ( noErr != FSPathMakeRef( path_fond, &ref, FALSE ) )      return FT_Err_Invalid_Argument;    if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone,                                    NULL, NULL, NULL, &par_ref ) )      return FT_Err_Invalid_Argument;    if ( noErr != FSRefMakePath( &par_ref, path_lwfn, path_size ) )      return FT_Err_Invalid_Argument;    if ( ft_strlen( (char *)path_lwfn ) + 1 + base_lwfn[0] > path_size )      return FT_Err_Invalid_Argument;    /* now we have absolute dirname in lookup_path */    if ( path_lwfn[0] == '/' )      ft_strcat( (char *)path_lwfn, "/" );    else      ft_strcat( (char *)path_lwfn, ":" );    dirname_len = ft_strlen( (char *)path_lwfn );    ft_strcat( (char *)path_lwfn, (char *)base_lwfn + 1 );    path_lwfn[dirname_len + base_lwfn[0]] = '\0';    if ( noErr != FSPathMakeRef( path_lwfn, &ref, FALSE ) )      return FT_Err_Cannot_Open_Resource;    if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone,                                    NULL, NULL, NULL, NULL ) )      return FT_Err_Cannot_Open_Resource;    return FT_Err_Ok;#else    int     i;    FSSpec  spec;    /* pathname for FSSpec is always HFS format */    if ( ft_strlen( (char *)path_fond ) > path_size )      return FT_Err_Invalid_Argument;    ft_strcpy( (char *)path_lwfn, (char *)path_fond );    i = ft_strlen( (char *)path_lwfn ) - 1;    while ( i > 0 && ':' != path_lwfn[i] )      i--;    if ( i + 1 + base_lwfn[0] > path_size )      return FT_Err_Invalid_Argument;    if ( ':' == path_lwfn[i] )    {      ft_strcpy( (char *)path_lwfn + i + 1, (char *)base_lwfn + 1 );      path_lwfn[i + 1 + base_lwfn[0]] = '\0';    }    else    {      ft_strcpy( (char *)path_lwfn, (char *)base_lwfn + 1 );      path_lwfn[base_lwfn[0]] = '\0';    }    if ( noErr != FT_FSPathMakeSpec( path_lwfn, &spec, FALSE ) )      return FT_Err_Cannot_Open_Resource;    return FT_Err_Ok;#endif /* HAVE_FSREF */  }  static short  count_faces( Handle        fond,               const UInt8*  pathname )  {    short     sfnt_id;    short     have_sfnt, have_lwfn;    Str255    lwfn_file_name;    UInt8     buff[HFS_MAXPATHLEN];    FT_Error  err;    have_sfnt = have_lwfn = 0;    HLock( fond );    parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, 0 );    HUnlock( fond );    if ( lwfn_file_name[0] )    {      err = lookup_lwfn_by_fond( pathname, lwfn_file_name,                                 buff, sizeof ( buff )  );      if ( FT_Err_Ok == err )        have_lwfn = 1;    }    if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) )      return 1;    else      return count_faces_scalable( *fond );  }  /* Read Type 1 data from the POST resources inside the LWFN file,     return a PFB buffer.  This is somewhat convoluted because the FT2     PFB parser wants the ASCII header as one chunk, and the LWFN     chunks are often not organized that way, so we glue chunks     of the same type together. */  static FT_Error  read_lwfn( FT_Memory  memory,             short      res,             FT_Byte**  pfb_data,             FT_ULong*  size )  {    FT_Error       error = FT_Err_Ok;    short          res_id;    unsigned char  *buffer, *p, *size_p = NULL;    FT_ULong       total_size = 0;    FT_ULong       old_total_size = 0;    FT_ULong       post_size, pfb_chunk_size;    Handle         post_data;    char           code, last_code;    UseResFile( res );    /* First pass: load all POST resources, and determine the size of */    /* the output buffer.                                             */    res_id    = 501;    last_code = -1;    for (;;)    {      post_data = Get1Resource( 'POST', res_id++ );      if ( post_data == NULL )        break;  /* we are done */      code = (*post_data)[0];      if ( code != last_code )      {        if ( code == 5 )          total_size += 2; /* just the end code */        else          total_size += 6; /* code + 4 bytes chunk length */      }      total_size += GetHandleSize( post_data ) - 2;      last_code = code;      /* detect integer overflows */      if ( total_size < old_total_size )      {        error = FT_Err_Array_Too_Large;        goto Error;      }      old_total_size = total_size;    }    if ( FT_ALLOC( buffer, (FT_Long)total_size ) )      goto Error;    /* Second pass: append all POST data to the buffer, add PFB fields. */    /* Glue all consecutive chunks of the same type together.           */    p              = buffer;    res_id         = 501;    last_code      = -1;    pfb_chunk_size = 0;    for (;;)    {      post_data = Get1Resource( 'POST', res_id++ );      if ( post_data == NULL )        break;  /* we are done */      post_size = (FT_ULong)GetHandleSize( post_data ) - 2;      code = (*post_data)[0];      if ( code != last_code )      {        if ( last_code != -1 )        {          /* we are done adding a chunk, fill in the size field */          if ( size_p != NULL )          {            *size_p++ = (FT_Byte)(   pfb_chunk_size         & 0xFF );            *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 8  ) & 0xFF );            *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 16 ) & 0xFF );            *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 24 ) & 0xFF );          }          pfb_chunk_size = 0;        }        *p++ = 0x80;        if ( code == 5 )          *p++ = 0x03;  /* the end */        else if ( code == 2 )          *p++ = 0x02;  /* binary segment */        else          *p++ = 0x01;  /* ASCII segment */        if ( code != 5 )        {          size_p = p;   /* save for later */          p += 4;       /* make space for size field */        }      }      ft_memcpy( p, *post_data + 2, post_size );      pfb_chunk_size += post_size;      p += post_size;      last_code = code;    }    *pfb_data = buffer;    *size = total_size;  Error:    CloseResFile( res );    return error;  }  /* Finalizer for a memory stream; gets called by FT_Done_Face().     It frees the memory it uses. */  static void  memory_stream_close( FT_Stream  stream )  {    FT_Memory  memory = stream->memory;    FT_FREE( stream->base );    stream->size  = 0;    stream->base  = 0;    stream->close = 0;  }  /* Create a new memory stream from a buffer and a size. */  static FT_Error  new_memory_stream( FT_Library           library,                     FT_Byte*             base,                     FT_ULong             size,                     FT_Stream_CloseFunc  close,                     FT_Stream*           astream )  {    FT_Error   error;    FT_Memory  memory;    FT_Stream  stream;    if ( !library )      return FT_Err_Invalid_Library_Handle;    if ( !base )      return FT_Err_Invalid_Argument;    *astream = 0;    memory = library->memory;    if ( FT_NEW( stream ) )      goto Exit;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产aⅴ成人精品无吗| 亚洲精品在线观看网站| 精品国产精品一区二区夜夜嗨| 国产精品国产a| 免费在线观看日韩欧美| 色偷偷88欧美精品久久久| 精品久久久久久无| 亚欧色一区w666天堂| caoporen国产精品视频| 精品少妇一区二区三区视频免付费 | 亚洲一区在线观看免费| 国产91在线看| 欧美哺乳videos| 午夜国产精品一区| 91捆绑美女网站| 欧美国产综合一区二区| 久久99国产精品麻豆| 777奇米四色成人影色区| 亚洲最大成人综合| 99久免费精品视频在线观看 | 91免费版在线看| 日本一区二区三区在线不卡| 免费观看一级特黄欧美大片| 欧美在线观看一区二区| 中文字幕一区二区三| 国产盗摄一区二区| 精品国产91乱码一区二区三区| 日韩影院免费视频| 欧美日韩一卡二卡三卡| 洋洋av久久久久久久一区| 91在线精品秘密一区二区| 中文一区二区在线观看| 国产福利精品一区二区| 久久久久99精品一区| 极品销魂美女一区二区三区| 精品日韩一区二区三区| 免费三级欧美电影| 91精品国产高清一区二区三区| 亚洲高清免费在线| 欧美日本免费一区二区三区| 亚洲午夜日本在线观看| 欧美日韩国产另类不卡| 亚洲成人激情综合网| 欧美日本不卡视频| 日韩电影在线看| 欧美一区二区在线观看| 欧美aⅴ一区二区三区视频| 日韩电影免费一区| 国产欧美日本一区二区三区| 色www精品视频在线观看| 亚洲成人免费电影| 久久久久青草大香线综合精品| 九九九精品视频| 五月综合激情日本mⅴ| 911国产精品| 色哟哟日韩精品| 日韩av一级电影| 国产欧美精品一区二区三区四区| 麻豆成人av在线| 日韩欧美国产一区二区三区| 精品一区二区三区欧美| 久久精品一区二区| 成人性视频免费网站| 综合久久综合久久| 日本国产一区二区| 秋霞成人午夜伦在线观看| 日韩三级高清在线| 国产成人啪午夜精品网站男同| 国产精品久久久久三级| 日本韩国欧美一区二区三区| 丝袜亚洲精品中文字幕一区| 精品国产一区二区三区忘忧草 | 亚洲国产另类av| 日韩一区二区中文字幕| 精品一区二区成人精品| 国产精品久久久久久户外露出| 在线视频欧美精品| 久久精品国产秦先生| 国产精品毛片久久久久久久| 欧美亚洲综合色| 久久国产精品99久久久久久老狼| 国产午夜精品理论片a级大结局| 91理论电影在线观看| 日韩国产欧美三级| 国产无人区一区二区三区| 在线免费观看视频一区| 麻豆国产精品777777在线| 国产精品欧美精品| 欧美区在线观看| 粉嫩久久99精品久久久久久夜| 亚洲电影视频在线| 久久久久九九视频| 欧美性做爰猛烈叫床潮| 国产一区不卡视频| 一区二区三区四区在线免费观看| 日韩欧美二区三区| 91丝袜美腿高跟国产极品老师 | 亚洲电影视频在线| 国产日韩欧美精品在线| 欧美日韩美少妇| 粉嫩一区二区三区在线看| 国产校园另类小说区| 精品一区二区三区在线观看| 91精品国产一区二区三区蜜臀| 成人短视频下载| 久久黄色级2电影| 亚洲精品ww久久久久久p站| 亚洲精品在线网站| 欧美性生活一区| 成人午夜av在线| 青草av.久久免费一区| 亚洲视频每日更新| 国产欧美一区二区在线| 在线不卡的av| 色天天综合色天天久久| 国产精品中文欧美| 日本亚洲一区二区| 亚洲综合男人的天堂| 国产欧美精品国产国产专区| 91精品在线一区二区| 91麻豆国产香蕉久久精品| 久久99久久99小草精品免视看| 亚洲午夜免费福利视频| 国产精品久久久久久久久免费丝袜 | 国产伦精品一区二区三区免费迷 | 亚洲精品自拍动漫在线| 日本一区二区免费在线| 精品久久人人做人人爽| 欧美一区午夜精品| 欧美三级电影在线观看| 欧美精品一区二区在线播放| 欧美另类一区二区三区| 色婷婷精品大在线视频| 成人白浆超碰人人人人| 国产一区二区美女| 玖玖九九国产精品| 日韩精品欧美精品| 婷婷夜色潮精品综合在线| 一区二区在线看| 亚洲欧美成aⅴ人在线观看 | 欧美日韩久久久一区| 色哟哟一区二区在线观看| 99精品欧美一区二区三区综合在线| 国产一区二区三区黄视频| 久久精品理论片| 日本免费在线视频不卡一不卡二| 亚洲午夜一区二区| 亚洲国产精品自拍| 亚洲影院免费观看| 夜夜亚洲天天久久| 亚洲自拍偷拍九九九| 亚洲欧美日韩一区二区 | 国产香蕉久久精品综合网| 欧美成人一区二区三区| 91精品国产欧美一区二区18| 在线播放一区二区三区| 欧美日韩精品一区二区三区| 在线观看亚洲成人| 在线精品视频免费观看| 欧美视频日韩视频| 欧美日韩国产影片| 欧美福利电影网| 69久久夜色精品国产69蝌蚪网| 欧美老肥妇做.爰bbww| 91精品国产一区二区三区| 欧美一卡二卡在线观看| 欧美成人官网二区| 久久婷婷色综合| 中国av一区二区三区| 亚洲欧洲日产国码二区| 一区二区免费视频| 午夜视黄欧洲亚洲| 日本亚洲视频在线| 国产精品自在欧美一区| 东方aⅴ免费观看久久av| av男人天堂一区| 欧洲av一区二区嗯嗯嗯啊| 欧美精品少妇一区二区三区| 日韩欧美一级精品久久| 久久免费精品国产久精品久久久久| 国产午夜精品一区二区三区视频 | 91精品国产91热久久久做人人| 日韩三级精品电影久久久| 久久久精品蜜桃| 亚洲日本丝袜连裤袜办公室| 亚洲图片欧美一区| 麻豆精品在线视频| 豆国产96在线|亚洲| 日本精品裸体写真集在线观看| 欧美日韩三级一区二区| 精品理论电影在线| 国产精品日韩精品欧美在线| 一区二区欧美精品| 精品中文字幕一区二区小辣椒| 国产精品1区二区.| 91免费在线播放| 欧美一区二区在线播放| 国产清纯美女被跳蛋高潮一区二区久久w| 最新国产の精品合集bt伙计| 亚洲午夜精品在线|