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

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

?? psmodule.c

?? a very goog book
?? C
字號(hào):
/***************************************************************************//*                                                                         *//*  psmodule.c                                                             *//*                                                                         *//*    PSNames module implementation (body).                                *//*                                                                         *//*  Copyright 1996-2001, 2002 by                                           *//*  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.                                        *//*                                                                         *//***************************************************************************/#include <ft2build.h>#include FT_INTERNAL_POSTSCRIPT_NAMES_H#include FT_INTERNAL_OBJECTS_H#include "psmodule.h"#include "pstables.h"#include "psnamerr.h"#ifndef FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST  /* return the Unicode value corresponding to a given glyph.  Note that */  /* we do deal with glyph variants by detecting a non-initial dot in    */  /* the name, as in `A.swash' or `e.final', etc.                        */  /*                                                                     */  static FT_ULong  PS_Unicode_Value( const char*  glyph_name )  {    FT_Int  n;    char    first = glyph_name[0];    char    temp[64];    /* if the name begins with `uni', then the glyph name may be a */    /* hard-coded unicode character code.                          */    if ( glyph_name[0] == 'u' &&         glyph_name[1] == 'n' &&         glyph_name[2] == 'i' )    {      /* determine whether the next four characters following are */      /* hexadecimal.                                             */      /* XXX: Add code to deal with ligatures, i.e. glyph names like */      /*      `uniXXXXYYYYZZZZ'...                                   */      FT_Int       count;      FT_ULong     value = 0;      const char*  p     = glyph_name + 3;      for ( count = 4; count > 0; count--, p++ )      {        char          c = *p;        unsigned int  d;        d = (unsigned char)c - '0';        if ( d >= 10 )        {          d = (unsigned char)c - 'A';          if ( d >= 6 )            d = 16;          else            d += 10;        }        /* exit if a non-uppercase hexadecimal character was found */        if ( d >= 16 )          break;        value = ( value << 4 ) + d;      }      if ( count == 0 )        return value;    }    /* look for a non-initial dot in the glyph name in order to */    /* sort-out variants like `A.swash', `e.final', etc.        */    {      const char*  p;      int          len;      p = glyph_name;      while ( *p && *p != '.' )        p++;      len = (int)( p - glyph_name );      if ( *p && len < 64 )      {        ft_strncpy( temp, glyph_name, len );        temp[len]  = 0;        glyph_name = temp;      }    }    /* now, look up the glyph in the Adobe Glyph List */    for ( n = 0; n < NUM_ADOBE_GLYPHS; n++ )    {      const char*  name = sid_standard_names[n];      if ( first == name[0] && ft_strcmp( glyph_name, name ) == 0 )        return ps_names_to_unicode[n];    }    /* not found, there is probably no Unicode value for this glyph name */    return 0;  }  /* ft_qsort callback to sort the unicode map */  FT_CALLBACK_DEF( int )  compare_uni_maps( const void*  a,                    const void*  b )  {    PS_UniMap*  map1 = (PS_UniMap*)a;    PS_UniMap*  map2 = (PS_UniMap*)b;    return ( map1->unicode - map2->unicode );  }  /* Builds a table that maps Unicode values to glyph indices */  static FT_Error  PS_Build_Unicode_Table( FT_Memory     memory,                          FT_UInt       num_glyphs,                          const char**  glyph_names,                          PS_Unicodes*  table )  {    FT_Error  error;    /* we first allocate the table */    table->num_maps = 0;    table->maps     = 0;    if ( !FT_NEW_ARRAY( table->maps, num_glyphs ) )    {      FT_UInt     n;      FT_UInt     count;      PS_UniMap*  map;      FT_ULong    uni_char;      map = table->maps;      for ( n = 0; n < num_glyphs; n++ )      {        const char*  gname = glyph_names[n];        if ( gname )        {          uni_char = PS_Unicode_Value( gname );          if ( uni_char != 0 && uni_char != 0xFFFF )          {            map->unicode     = uni_char;            map->glyph_index = n;            map++;          }        }      }      /* now, compress the table a bit */      count = (FT_UInt)( map - table->maps );      if ( count > 0 && FT_REALLOC( table->maps,                                    num_glyphs * sizeof ( PS_UniMap ),                                    count * sizeof ( PS_UniMap ) ) )        count = 0;      if ( count == 0 )      {        FT_FREE( table->maps );        if ( !error )          error = PSnames_Err_Invalid_Argument;  /* no unicode chars here! */      }      else        /* sort the table in increasing order of unicode values */        ft_qsort( table->maps, count, sizeof ( PS_UniMap ), compare_uni_maps );      table->num_maps = count;    }    return error;  }  static FT_UInt  PS_Lookup_Unicode( PS_Unicodes*  table,                     FT_ULong      unicode )  {    PS_UniMap  *min, *max, *mid;    /* perform a binary search on the table */    min = table->maps;    max = min + table->num_maps - 1;    while ( min <= max )    {      mid = min + ( max - min ) / 2;      if ( mid->unicode == unicode )        return mid->glyph_index;      if ( min == max )        break;      if ( mid->unicode < unicode )        min = mid + 1;      else        max = mid - 1;    }    return 0xFFFF;  }  static FT_ULong  PS_Next_Unicode( PS_Unicodes*  table,                   FT_ULong      unicode )  {    PS_UniMap  *min, *max, *mid;    unicode++;    /* perform a binary search on the table */    min = table->maps;    max = min + table->num_maps - 1;    while ( min <= max )    {      mid = min + ( max - min ) / 2;      if ( mid->unicode == unicode )        return unicode;      if ( min == max )        break;      if ( mid->unicode < unicode )        min = mid + 1;      else        max = mid - 1;    }    if ( max < table->maps )      max = table->maps;        while ( max < table->maps + table->num_maps )    {      if ( unicode < max->unicode )        return max->unicode;      max++;    }    return 0;  }#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */  static const char*  PS_Macintosh_Name( FT_UInt  name_index )  {    if ( name_index >= 258 )      name_index = 0;    return ps_glyph_names[mac_standard_names[name_index]];  }  static const char*  PS_Standard_Strings( FT_UInt  sid )  {    return ( sid < NUM_SID_GLYPHS ? sid_standard_names[sid] : 0 );  }  static  const PSNames_Interface  psnames_interface =  {#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST    (PS_Unicode_Value_Func)    PS_Unicode_Value,    (PS_Build_Unicodes_Func)   PS_Build_Unicode_Table,    (PS_Lookup_Unicode_Func)   PS_Lookup_Unicode,#else    0,    0,    0,#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */    (PS_Macintosh_Name_Func)   PS_Macintosh_Name,    (PS_Adobe_Std_Strings_Func)PS_Standard_Strings,    t1_standard_encoding,    t1_expert_encoding,#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST    (PS_Next_Unicode_Func)     PS_Next_Unicode#else    0#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */  };#endif /* !FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES */  FT_CALLBACK_TABLE_DEF  const FT_Module_Class  psnames_module_class =  {    0,  /* this is not a font driver, nor a renderer */    sizeof ( FT_ModuleRec ),    "psnames",  /* driver name                         */    0x10000L,   /* driver version                      */    0x20000L,   /* driver requires FreeType 2 or above */#ifdef FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES    0,#else    (void*)&psnames_interface,   /* module specific interface */#endif    (FT_Module_Constructor)0,    (FT_Module_Destructor) 0,    (FT_Module_Requester)  0  };/* END */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久综合网97色综合| 又紧又大又爽精品一区二区| 99久久精品99国产精品 | 日本韩国欧美在线| 青青青伊人色综合久久| 国产欧美一区二区精品秋霞影院| 欧美日韩中字一区| 国产成人在线色| 日韩av中文字幕一区二区| 中文字幕一区二区三| 精品国产免费久久| 欧美日韩精品一区二区三区四区 | 国产亚洲成av人在线观看导航| 欧美中文字幕一区| 91麻豆精品国产91久久久久久| 亚洲成av人综合在线观看| 精品国产乱码久久久久久久| 欧美日韩国产一级片| 国产成人精品影视| 精品一区二区三区在线观看| 丝袜诱惑亚洲看片| 亚洲另类一区二区| 国产精品理论在线观看| 精品成人一区二区三区| 91麻豆精品国产91久久久久久久久| 不卡的av中国片| 成人高清免费在线播放| 国产酒店精品激情| 久久国产三级精品| 日本亚洲欧美天堂免费| 天堂va蜜桃一区二区三区漫画版| 一区2区3区在线看| 一区二区三区国产精华| 亚洲日本丝袜连裤袜办公室| 国产精品天干天干在线综合| 国产欧美精品区一区二区三区| 欧美xxxxxxxxx| 日韩精品中文字幕在线一区| 日韩一级免费观看| 欧美一区二区三区四区在线观看 | 日韩欧美国产小视频| 欧美老肥妇做.爰bbww视频| 欧美丝袜丝交足nylons图片| 欧美午夜寂寞影院| 色婷婷久久久亚洲一区二区三区| 91亚洲精品一区二区乱码| 91麻豆精品在线观看| 欧美在线一二三| 欧美日韩在线直播| 7777精品伊人久久久大香线蕉超级流畅 | 91视视频在线直接观看在线看网页在线看| 国产69精品久久久久777| 成人午夜免费电影| 91在线视频网址| 欧美性猛交xxxxxx富婆| 欧美精品在线一区二区三区| 日韩免费一区二区三区在线播放| 精品99999| 国产精品美女一区二区三区| 亚洲精选一二三| 日韩成人av影视| 国内精品不卡在线| 99热这里都是精品| 欧美老女人在线| 久久久久88色偷偷免费| 亚洲免费色视频| 免费看精品久久片| 成人精品鲁一区一区二区| 色偷偷久久一区二区三区| 欧美精品色综合| 久久精品一区四区| 亚洲精品视频免费看| 三级一区在线视频先锋| 狠狠色丁香九九婷婷综合五月| 成人污污视频在线观看| 在线日韩av片| 亚洲精品一线二线三线无人区| 国产精品成人免费精品自在线观看| 亚洲精品免费一二三区| 麻豆精品视频在线| av影院午夜一区| 欧美一区二区视频观看视频| 国产免费成人在线视频| 一区二区三区在线观看动漫| 久久电影网站中文字幕| 日本福利一区二区| 精品国精品自拍自在线| 亚洲人妖av一区二区| 人人狠狠综合久久亚洲| 成人午夜免费视频| 欧美一级欧美三级在线观看| 中文字幕在线一区| 奇米影视一区二区三区小说| 不卡av免费在线观看| 日韩一区二区高清| 亚洲一线二线三线视频| 国产精品一区在线观看乱码| 欧美午夜精品免费| 亚洲欧洲日韩在线| 激情五月婷婷综合| 欧美精品在线一区二区三区| 亚洲三级在线看| 国产精品一区二区久久精品爱涩| 欧美日精品一区视频| 中文字幕欧美三区| 青青草91视频| 欧美日韩色一区| ●精品国产综合乱码久久久久| 乱一区二区av| 3d动漫精品啪啪1区2区免费| 尤物在线观看一区| 成人美女视频在线观看18| 日韩欧美国产不卡| 亚洲成人av电影| 在线观看日产精品| 专区另类欧美日韩| 福利一区二区在线| 久久婷婷综合激情| 久久99精品国产麻豆不卡| 欧美久久久久中文字幕| 亚洲国产精品视频| 在线一区二区三区| 亚洲乱码精品一二三四区日韩在线| 国产91精品露脸国语对白| 欧美白人最猛性xxxxx69交| 视频一区二区三区入口| 欧美精品一卡二卡| 亚洲一区二区三区不卡国产欧美| 色94色欧美sute亚洲13| 亚洲欧洲综合另类| 日本高清免费不卡视频| 亚洲精品免费播放| 色婷婷综合久久久| 亚洲精品欧美二区三区中文字幕| 91丨porny丨户外露出| 亚洲欧美一区二区不卡| 色琪琪一区二区三区亚洲区| 一区二区三区日韩精品视频| 欧美亚洲禁片免费| 亚洲va天堂va国产va久| 欧美美女直播网站| 日日欢夜夜爽一区| 欧美一区二区免费| 精品一区二区三区蜜桃| 久久青草欧美一区二区三区| 黄色日韩三级电影| 国产欧美一区二区三区沐欲| 97久久超碰国产精品电影| 亚洲美女少妇撒尿| 欧美日韩一二三| 免费人成精品欧美精品| 亚洲精品一区二区精华| 大桥未久av一区二区三区中文| 中文字幕中文字幕一区二区| 色综合天天综合在线视频| 亚洲综合一区二区三区| 制服视频三区第一页精品| 国内外成人在线| 亚洲三级视频在线观看| 欧美三级中文字幕| 美日韩一级片在线观看| 欧美国产一区二区在线观看 | 欧美日韩1区2区| 日本在线观看不卡视频| 精品成人一区二区三区四区| 99久久精品免费看国产 | 一区二区久久久久| 日韩精品中午字幕| www..com久久爱| 午夜电影一区二区| 久久久久久黄色| 欧洲一区在线观看| 久久不见久久见免费视频7| 国产精品福利一区二区三区| 欧美日本韩国一区二区三区视频| 国产最新精品免费| 亚洲色图欧洲色图| 欧美精品一区二区三区四区| 91蝌蚪porny| 精品综合久久久久久8888| 亚洲欧洲日韩一区二区三区| 正在播放亚洲一区| 不卡区在线中文字幕| 免费精品视频最新在线| 亚洲男同性视频| 精品av综合导航| 欧美日韩一区中文字幕| 国产sm精品调教视频网站| 亚洲国产日韩av| 国产亚洲欧美中文| 欧美疯狂性受xxxxx喷水图片| 成人美女视频在线观看18| 免费观看在线色综合| 亚洲欧美日韩国产中文在线| 2020国产精品自拍| 欧美日韩综合在线| 99在线热播精品免费| 韩国精品久久久| 丝瓜av网站精品一区二区 | 蜜臀精品一区二区三区在线观看|