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

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

?? t42objs.c

?? a very goog book
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/***************************************************************************//*                                                                         *//*  t42objs.c                                                              *//*                                                                         *//*    Type 42 objects manager (body).                                      *//*                                                                         *//*  Copyright 2002 by Roberto Alameda.                                     *//*                                                                         *//*  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 "t42objs.h"#include "t42parse.h"#include "t42error.h"#include FT_INTERNAL_DEBUG_H#include FT_INTERNAL_STREAM_H#include FT_LIST_H#undef  FT_COMPONENT#define FT_COMPONENT  trace_t42  static FT_Error  T42_Open_Face( T42_Face  face )  {    T42_LoaderRec  loader;    T42_Parser     parser;    T1_Font        type1 = &face->type1;    FT_Memory      memory = face->root.memory;    FT_Error       error;    PSAux_Service  psaux  = (PSAux_Service)face->psaux;    t42_loader_init( &loader, face );    parser = &loader.parser;    if ( FT_ALLOC( face->ttf_data, 12 ) )      goto Exit;    error = t42_parser_init( parser,                             face->root.stream,                             memory,                             psaux);    if ( error )      goto Exit;    error = t42_parse_dict( face, &loader, parser->base_dict, parser->base_len );    if ( type1->font_type != 42 )    {      error = T42_Err_Unknown_File_Format;      goto Exit;    }    /* now, propagate the charstrings and glyphnames tables */    /* to the Type1 data                                    */    type1->num_glyphs = loader.num_glyphs;    if ( !loader.charstrings.init ) {      FT_ERROR(( "T42_Open_Face: no charstrings array in face!\n" ));      error = T42_Err_Invalid_File_Format;    }    loader.charstrings.init  = 0;    type1->charstrings_block = loader.charstrings.block;    type1->charstrings       = loader.charstrings.elements;    type1->charstrings_len   = loader.charstrings.lengths;    /* we copy the glyph names `block' and `elements' fields; */    /* the `lengths' field must be released later             */    type1->glyph_names_block    = loader.glyph_names.block;    type1->glyph_names          = (FT_String**)loader.glyph_names.elements;    loader.glyph_names.block    = 0;    loader.glyph_names.elements = 0;    /* we must now build type1.encoding when we have a custom array */    if ( type1->encoding_type == T1_ENCODING_TYPE_ARRAY )    {      FT_Int    charcode, idx, min_char, max_char;      FT_Byte*  char_name;      FT_Byte*  glyph_name;      /* OK, we do the following: for each element in the encoding   */      /* table, look up the index of the glyph having the same name  */      /* as defined in the CharStrings array.                        */      /* The index is then stored in type1.encoding.char_index, and  */      /* the name in type1.encoding.char_name                        */      min_char = +32000;      max_char = -32000;      charcode = 0;      for ( ; charcode < loader.encoding_table.max_elems; charcode++ )      {        type1->encoding.char_index[charcode] = 0;        type1->encoding.char_name [charcode] = (char *)".notdef";        char_name = loader.encoding_table.elements[charcode];        if ( char_name )          for ( idx = 0; idx < type1->num_glyphs; idx++ )          {            glyph_name = (FT_Byte*)type1->glyph_names[idx];            if ( ft_strcmp( (const char*)char_name,                            (const char*)glyph_name ) == 0 )            {              type1->encoding.char_index[charcode] = (FT_UShort)idx;              type1->encoding.char_name [charcode] = (char*)glyph_name;              /* Change min/max encoded char only if glyph name is */              /* not /.notdef                                      */              if ( ft_strcmp( (const char*)".notdef",                              (const char*)glyph_name ) != 0 )              {                if ( charcode < min_char ) min_char = charcode;                if ( charcode > max_char ) max_char = charcode;              }              break;            }          }      }      type1->encoding.code_first = min_char;      type1->encoding.code_last  = max_char;      type1->encoding.num_chars  = loader.num_chars;    }  Exit:    t42_loader_done( &loader );    return error;  }  /***************** Driver Functions *************/  FT_LOCAL_DEF( FT_Error )  T42_Face_Init( FT_Stream      stream,                 T42_Face       face,                 FT_Int         face_index,                 FT_Int         num_params,                 FT_Parameter*  params)  {    FT_Error          error;    PSNames_Service   psnames;    PSAux_Service     psaux;    FT_Face           root    = (FT_Face)&face->root;    FT_UNUSED( num_params );    FT_UNUSED( params );    FT_UNUSED( face_index );    FT_UNUSED( stream );    face->ttf_face       = NULL;    face->root.num_faces = 1;    face->psnames = FT_Get_Module_Interface( FT_FACE_LIBRARY( face ),                                             "psnames" );    psnames = (PSNames_Service)face->psnames;    face->psaux = FT_Get_Module_Interface( FT_FACE_LIBRARY( face ),                                           "psaux" );    psaux = (PSAux_Service)face->psaux;    /* 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 = T42_Err_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   = face->type1.num_glyphs;    root->num_charmaps = 0;    root->face_index   = face_index;    root->face_flags  = FT_FACE_FLAG_SCALABLE;    root->face_flags |= FT_FACE_FLAG_HORIZONTAL;    root->face_flags |= FT_FACE_FLAG_GLYPH_NAMES;    if ( face->type1.font_info.is_fixed_pitch )      root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;    /* XXX: TODO -- add kerning with .afm support */    /* get style name -- be careful, some broken fonts only */    /* have a `/FontName' dictionary entry!                 */    root->family_name = face->type1.font_info.family_name;    if ( root->family_name )    {      char*  full   = face->type1.font_info.full_name;      char*  family = root->family_name;      if ( full )      {        while ( *family && *full == *family )        {          family++;          full++;        }        root->style_name = ( *full == ' ' ? full + 1                                          : (char *)"Regular" );      }      else        root->style_name = (char *)"Regular";    }    else    {      /* do we have a `/FontName'? */      if ( face->type1.font_name )      {        root->family_name = face->type1.font_name;        root->style_name  = (char *)"Regular";      }    }    /* no embedded bitmap support */    root->num_fixed_sizes = 0;    root->available_sizes = 0;    /* Load the TTF font embedded in the T42 font */    error = FT_New_Memory_Face( FT_FACE_LIBRARY( face ),                                face->ttf_data,                                face->ttf_size,                                0,                                &face->ttf_face );    if ( error )      goto Exit;    FT_Done_Size( face->ttf_face->size );    /* Ignore info in FontInfo dictionary and use the info from the  */    /* loaded TTF font.  The PostScript interpreter also ignores it. */    root->bbox         = face->ttf_face->bbox;    root->units_per_EM = face->ttf_face->units_per_EM;    root->ascender  = face->ttf_face->ascender;    root->descender = face->ttf_face->descender;    root->height    = face->ttf_face->height;    root->max_advance_width  = face->ttf_face->max_advance_width;    root->max_advance_height = face->ttf_face->max_advance_height;    root->underline_position  = face->type1.font_info.underline_position;    root->underline_thickness = face->type1.font_info.underline_thickness;    root->internal->max_points   = 0;    root->internal->max_contours = 0;    /* compute style flags */    root->style_flags = 0;    if ( face->type1.font_info.italic_angle )      root->style_flags |= FT_STYLE_FLAG_ITALIC;    if ( face->ttf_face->style_flags & FT_STYLE_FLAG_BOLD )      root->style_flags |= FT_STYLE_FLAG_BOLD;    if ( face->ttf_face->face_flags & FT_FACE_FLAG_VERTICAL )      root->face_flags |= FT_FACE_FLAG_VERTICAL;#ifdef FT_CONFIG_OPTION_USE_CMAPS    {      if ( psnames && psaux )      {        FT_CharMapRec    charmap;        T1_CMap_Classes  cmap_classes = psaux->t1_cmap_classes;        FT_CMap_Class    clazz;        charmap.face = root;        /* first of all, try to synthetize a Unicode charmap */        charmap.platform_id = 3;        charmap.encoding_id = 1;        charmap.encoding    = ft_encoding_unicode;        FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL );        /* now, generate an Adobe Standard encoding when appropriate */        charmap.platform_id = 7;        clazz               = NULL;        switch ( face->type1.encoding_type )        {        case T1_ENCODING_TYPE_STANDARD:          charmap.encoding    = ft_encoding_adobe_standard;          charmap.encoding_id = 0;          clazz               = cmap_classes->standard;          break;        case T1_ENCODING_TYPE_EXPERT:          charmap.encoding    = ft_encoding_adobe_expert;          charmap.encoding_id = 1;          clazz               = cmap_classes->expert;          break;        case T1_ENCODING_TYPE_ARRAY:          charmap.encoding    = ft_encoding_adobe_custom;          charmap.encoding_id = 2;          clazz               = cmap_classes->custom;          break;        case T1_ENCODING_TYPE_ISOLATIN1:          charmap.encoding    = ft_encoding_latin_1;          charmap.encoding_id = 3;          clazz               = cmap_classes->unicode;          break;        default:          ;        }        if ( clazz )          FT_CMap_New( clazz, NULL, &charmap, NULL );        /* Select default charmap */        if (root->num_charmaps)          root->charmap = root->charmaps[0];      }    }#else /* !FT_CONFIG_OPTION_USE_CMAPS */    /* charmap support -- synthetize unicode charmap if possible */    {      FT_CharMap  charmap = face->charmaprecs;            /* synthesize a Unicode charmap if there is support in the `PSNames' */      /* module                                                            */      if ( psnames && psnames->unicode_value )      {        error = psnames->build_unicodes( root->memory,                                         face->type1.num_glyphs,                                         (const char**)face->type1.glyph_names,                                         &face->unicode_map );        if ( !error )        {          root->charmap        = charmap;          charmap->face        = (FT_Face)face;          charmap->encoding    = ft_encoding_unicode;          charmap->platform_id = 3;          charmap->encoding_id = 1;          charmap++;        }                /* XXX: Is the following code correct?  It is used in t1objs.c */                /* simply clear the error in case of failure (which really) */        /* means that out of memory or no unicode glyph names       */        error = T42_Err_Ok;      }            /* now, support either the standard, expert, or custom encoding */      charmap->face        = (FT_Face)face;      charmap->platform_id = 7;  /* a new platform id for Adobe fonts? */            switch ( face->type1.encoding_type )      {      case T1_ENCODING_TYPE_STANDARD:        charmap->encoding    = ft_encoding_adobe_standard;        charmap->encoding_id = 0;        break;              case T1_ENCODING_TYPE_EXPERT:        charmap->encoding    = ft_encoding_adobe_expert;        charmap->encoding_id = 1;        break;              case T1_ENCODING_TYPE_ARRAY:        charmap->encoding    = ft_encoding_adobe_custom;        charmap->encoding_id = 2;        break;              case T1_ENCODING_TYPE_ISOLATIN1:        charmap->encoding    = ft_encoding_latin_1;        charmap->encoding_id = 3;        break;              default:        FT_ERROR(( "T42_Face_Init: invalid encoding\n" ));        error = T42_Err_Invalid_File_Format;        goto Exit;      }            root->charmaps     = face->charmaps;      root->num_charmaps = charmap - face->charmaprecs + 1;      face->charmaps[0]  = &face->charmaprecs[0];      face->charmaps[1]  = &face->charmaprecs[1];    }#endif /* !FT_CONFIG_OPTION_USE_CMAPS */  Exit:    return error;  }  FT_LOCAL_DEF( void )  T42_Face_Done( T42_Face  face )  {    T1_Font      type1;    PS_FontInfo  info;    FT_Memory    memory;    if ( face )    {      type1  = &face->type1;      info   = &type1->font_info;      memory = face->root.memory;      /* delete internal ttf face prior to freeing face->ttf_data */      if ( face->ttf_face )        FT_Done_Face( face->ttf_face );      /* release font info strings */      FT_FREE( info->version );      FT_FREE( info->notice );      FT_FREE( info->full_name );      FT_FREE( info->family_name );      FT_FREE( info->weight );      /* release top dictionary */      FT_FREE( type1->charstrings_len );      FT_FREE( type1->charstrings );      FT_FREE( type1->glyph_names );      FT_FREE( type1->charstrings_block );      FT_FREE( type1->glyph_names_block );      FT_FREE( type1->encoding.char_index );      FT_FREE( type1->encoding.char_name );      FT_FREE( type1->font_name );

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频在线| 亚洲午夜私人影院| 在线观看日韩电影| 欧美一区二区视频观看视频| 国产精品18久久久久久久久| 日韩福利视频导航| 亚洲伦理在线免费看| 久久久久国产精品人| 欧美日韩一区二区电影| eeuss国产一区二区三区| 精品亚洲国内自在自线福利| 午夜成人免费视频| 亚洲女人的天堂| 日本一区二区三区免费乱视频| 4hu四虎永久在线影院成人| 色丁香久综合在线久综合在线观看| 狠狠色丁香久久婷婷综| 亚洲成人av一区二区三区| 中文字幕在线免费不卡| 国产欧美日韩不卡| 久久天天做天天爱综合色| 日韩精品专区在线影院重磅| 欧美精品色一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 国产不卡视频一区二区三区| 精品一区二区国语对白| 免费在线观看不卡| 日本麻豆一区二区三区视频| 亚洲18女电影在线观看| 亚洲自拍偷拍网站| 亚洲一区免费观看| 亚洲国产日韩一级| 亚洲国产成人av网| 亚洲一区二区三区四区五区黄| 亚洲日韩欧美一区二区在线| 亚洲日本一区二区三区| 中文字幕在线不卡一区二区三区| 国产亚洲精品精华液| 久久网站最新地址| 欧美韩国日本不卡| 成人福利视频在线看| 99精品视频一区| 99精品国产91久久久久久| a级精品国产片在线观看| 成人激情免费电影网址| 成人a免费在线看| 99re66热这里只有精品3直播 | 国产乱子伦视频一区二区三区| 美国一区二区三区在线播放| 麻豆成人91精品二区三区| 久久97超碰国产精品超碰| 激情五月婷婷综合网| 国产激情精品久久久第一区二区| 国产成人精品免费一区二区| 成人午夜激情视频| 色天使色偷偷av一区二区| 欧美裸体一区二区三区| 欧美成人乱码一区二区三区| 久久综合九色综合97_久久久| 久久久精品国产99久久精品芒果| 国产亚洲精品资源在线26u| 中文字幕在线不卡| 石原莉奈在线亚洲二区| 激情综合色播五月| k8久久久一区二区三区| 欧美日本在线视频| 久久久蜜桃精品| 中文字幕日韩av资源站| 亚洲福利一区二区三区| 精品在线一区二区三区| 成人免费毛片高清视频| 欧美午夜精品久久久| 久久综合久久综合久久| 亚洲视频在线一区| 麻豆国产91在线播放| 成人午夜视频在线| 欧美精品久久久久久久多人混战 | 国产网红主播福利一区二区| 国产精品国产精品国产专区不片 | 亚洲午夜久久久久中文字幕久| 天天av天天翘天天综合网| 狠狠久久亚洲欧美| 日本韩国欧美一区| 精品嫩草影院久久| 亚洲在线视频一区| 国产精品一区二区久久不卡| 色香色香欲天天天影视综合网| 欧美成人国产一区二区| 亚洲男人的天堂网| 国产精品一区二区久久精品爱涩| 91福利小视频| 国产欧美精品区一区二区三区 | 日韩一区二区三区在线观看 | 国产精品高潮呻吟| 久久精工是国产品牌吗| 91丝袜美腿高跟国产极品老师| 欧美电影免费观看高清完整版在线观看 | 亚洲人一二三区| 久久成人羞羞网站| 欧美日韩一卡二卡三卡| 国产精品麻豆99久久久久久| 青青草国产精品97视觉盛宴| 色妞www精品视频| 中文字幕欧美日本乱码一线二线| 日韩电影一二三区| 色乱码一区二区三区88| 国产精品理论片| 国产一区二区三区香蕉| 91精品在线免费| 亚洲一区视频在线观看视频| 99国产欧美久久久精品| 国产午夜精品一区二区三区视频| 日韩av高清在线观看| 欧美在线啊v一区| 亚洲另类在线制服丝袜| 成人精品鲁一区一区二区| 久久亚洲二区三区| 国产一区三区三区| 日韩精品一区二区三区中文精品| 一区二区高清免费观看影视大全| 不卡欧美aaaaa| 国产亚洲美州欧州综合国| 国产一区日韩二区欧美三区| 日韩视频一区在线观看| 毛片av一区二区| 欧美一区二区三区思思人| 婷婷国产v国产偷v亚洲高清| 欧美日韩一区高清| 亚洲一区二区三区免费视频| 91在线观看下载| 亚洲婷婷在线视频| 99re6这里只有精品视频在线观看| 日本一二三四高清不卡| 国产91综合网| 国产精品欧美精品| www.色精品| 亚洲一区在线观看免费| 一级女性全黄久久生活片免费| 99在线视频精品| 亚洲同性gay激情无套| 91福利国产精品| 亚洲高清久久久| 91精品国产91久久久久久最新毛片 | 亚洲欧洲成人av每日更新| 成人一区二区三区视频在线观看| 国产人成亚洲第一网站在线播放| 国产成人在线视频网址| 国产精品久久久久久久蜜臀| 色综合色综合色综合色综合色综合| 亚洲最大成人综合| 91麻豆精品国产91久久久使用方法 | 香蕉成人啪国产精品视频综合网 | 国产成人免费视频网站高清观看视频| 久久一留热品黄| 99久久精品国产麻豆演员表| 亚洲午夜免费电影| 精品少妇一区二区三区在线播放| 久久―日本道色综合久久| 国产大片一区二区| 亚洲美女视频在线观看| 欧美男同性恋视频网站| 国产一区在线不卡| 亚洲欧美偷拍另类a∨色屁股| 在线免费不卡视频| 青青草97国产精品免费观看| 国产日韩一级二级三级| 一本大道综合伊人精品热热| 五月天网站亚洲| 久久精品在这里| 日本精品一级二级| 精品一区二区三区欧美| 亚洲精品免费视频| 精品国产91亚洲一区二区三区婷婷| 国产99精品国产| 日韩综合在线视频| 国产精品视频yy9299一区| 欧美日韩不卡视频| 一个色综合网站| 激情小说亚洲一区| 亚洲国产精品99久久久久久久久| 粉嫩av一区二区三区粉嫩| 国产精品日日摸夜夜摸av| 欧美日韩中文国产| 国产91丝袜在线播放| 午夜精品久久久久影视| 国产成人精品综合在线观看| 精品在线亚洲视频| 日韩欧美一二区| 日本一道高清亚洲日美韩| 欧美亚洲动漫制服丝袜| 亚洲综合色噜噜狠狠| av一区二区三区黑人| 亚洲欧美在线视频观看| 成人h动漫精品一区二| 国产精品久久久久7777按摩| 国产成人精品免费视频网站| 国产午夜亚洲精品理论片色戒| 久久99九九99精品| 337p日本欧洲亚洲大胆精品| 久久er精品视频|