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

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

?? cidgload.c

?? 智能設備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************/
/*                                                                         */
/*  cidgload.c                                                             */
/*                                                                         */
/*    CID-keyed Type1 Glyph Loader (body).                                 */
/*                                                                         */
/*  Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 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 "cidload.h"
#include "cidgload.h"
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_OUTLINE_H

#include "ciderrs.h"


  /*************************************************************************/
  /*                                                                       */
  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
  /* messages during execution.                                            */
  /*                                                                       */
#undef  FT_COMPONENT
#define FT_COMPONENT  trace_cidgload


  FT_CALLBACK_DEF( FT_Error )
  cid_load_glyph( T1_Decoder  decoder,
                  FT_UInt     glyph_index )
  {
    CID_Face       face = (CID_Face)decoder->builder.face;
    CID_FaceInfo   cid  = &face->cid;
    FT_Byte*       p;
    FT_UInt        fd_select;
    FT_Stream      stream = face->cid_stream;
    FT_Error       error  = 0;
    FT_Byte*       charstring = 0;
    FT_Memory      memory = face->root.memory;
    FT_ULong       glyph_length = 0;
    PSAux_Service  psaux = (PSAux_Service)face->psaux;


#ifdef FT_CONFIG_OPTION_INCREMENTAL

    /* For incremental fonts get the character data using */
    /* the callback function.                             */
    if ( face->root.internal->incremental_interface )
    {
      FT_Data  glyph_data;


      error = face->root.internal->incremental_interface->funcs->get_glyph_data(
                face->root.internal->incremental_interface->object,
                glyph_index,
                &glyph_data );
      if ( error )
        goto Exit;

      p         = (FT_Byte*)glyph_data.pointer;
      fd_select = (FT_UInt)cid_get_offset( &p, (FT_Byte)cid->fd_bytes );

      if ( glyph_data.length != 0 )
      {
        glyph_length = glyph_data.length - cid->fd_bytes;
        FT_ALLOC( charstring, glyph_length );
        if ( !error )
          ft_memcpy( charstring, glyph_data.pointer + cid->fd_bytes,
                     glyph_length );
      }

      face->root.internal->incremental_interface->funcs->free_glyph_data(
                face->root.internal->incremental_interface->object,
                &glyph_data );

      if ( error )
        goto Exit;
    }

    else

#endif /* FT_CONFIG_OPTION_INCREMENTAL */

    /* For ordinary fonts read the CID font dictionary index */
    /* and charstring offset from the CIDMap.                */
    {
      FT_UInt   entry_len = cid->fd_bytes + cid->gd_bytes;
      FT_ULong  off1;


      if ( FT_STREAM_SEEK( cid->data_offset + cid->cidmap_offset +
                           glyph_index * entry_len )               ||
           FT_FRAME_ENTER( 2 * entry_len )                         )
        goto Exit;

      p            = (FT_Byte*)stream->cursor;
      fd_select    = (FT_UInt) cid_get_offset( &p, (FT_Byte)cid->fd_bytes );
      off1         = (FT_ULong)cid_get_offset( &p, (FT_Byte)cid->gd_bytes );
      p           += cid->fd_bytes;
      glyph_length = cid_get_offset( &p, (FT_Byte)cid->gd_bytes ) - off1;
      FT_FRAME_EXIT();

      if ( glyph_length == 0 )
        goto Exit;
      if ( FT_ALLOC( charstring, glyph_length ) )
        goto Exit;
      if ( FT_STREAM_READ_AT( cid->data_offset + off1,
                              charstring, glyph_length ) )
        goto Exit;
    }

    /* Now set up the subrs array and parse the charstrings. */
    {
      CID_FaceDict  dict;
      CID_Subrs     cid_subrs = face->subrs + fd_select;
      FT_Int        cs_offset;


      /* Set up subrs */
      decoder->num_subrs = cid_subrs->num_subrs;
      decoder->subrs     = cid_subrs->code;
      decoder->subrs_len = 0;

      /* Set up font matrix */
      dict                 = cid->font_dicts + fd_select;

      decoder->font_matrix = dict->font_matrix;
      decoder->font_offset = dict->font_offset;
      decoder->lenIV       = dict->private_dict.lenIV;

      /* Decode the charstring. */

      /* Adjustment for seed bytes. */
      cs_offset = ( decoder->lenIV >= 0 ? decoder->lenIV : 0 );

      /* Decrypt only if lenIV >= 0. */
      if ( decoder->lenIV >= 0 )
        psaux->t1_decrypt( charstring, glyph_length, 4330 );

      error = decoder->funcs.parse_charstrings(
                decoder, charstring + cs_offset,
                (FT_Int)glyph_length - cs_offset  );
    }

    FT_FREE( charstring );

#ifdef FT_CONFIG_OPTION_INCREMENTAL

    /* Incremental fonts can optionally override the metrics. */
    if ( !error                                                              &&
         face->root.internal->incremental_interface                          &&
         face->root.internal->incremental_interface->funcs->get_glyph_metrics )
    {
      FT_Incremental_MetricsRec  metrics;


      metrics.bearing_x = decoder->builder.left_bearing.x;
      metrics.bearing_y = decoder->builder.left_bearing.y;
      metrics.advance   = decoder->builder.advance.x;
      error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
                face->root.internal->incremental_interface->object,
                glyph_index, FALSE, &metrics );
      decoder->builder.left_bearing.x = metrics.bearing_x;
      decoder->builder.left_bearing.y = metrics.bearing_y;
      decoder->builder.advance.x      = metrics.advance;
      decoder->builder.advance.y      = 0;
    }

#endif /* FT_CONFIG_OPTION_INCREMENTAL */

  Exit:
    return error;
  }


#if 0


  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /**********                                                      *********/
  /**********                                                      *********/
  /**********            COMPUTE THE MAXIMUM ADVANCE WIDTH         *********/
  /**********                                                      *********/
  /**********    The following code is in charge of computing      *********/
  /**********    the maximum advance width of the font.  It        *********/
  /**********    quickly processes each glyph charstring to        *********/
  /**********    extract the value from either a `sbw' or `seac'   *********/
  /**********    operator.                                         *********/
  /**********                                                      *********/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区在线| 国产精品久久久久久亚洲毛片| 欧美丰满少妇xxxbbb| 日韩一区二区三区观看| 欧美精品一区二区三| 国产精品女同一区二区三区| 亚洲理论在线观看| 久久99九九99精品| fc2成人免费人成在线观看播放 | 色偷偷成人一区二区三区91| 日本精品视频一区二区三区| 亚洲不卡一区二区三区| 激情文学综合丁香| 色国产精品一区在线观看| 日韩欧美国产wwwww| 亚洲精品第一国产综合野| 狠狠色综合色综合网络| 欧美图片一区二区三区| 久久久久久久网| 日韩黄色免费电影| av中文字幕亚洲| 久久综合中文字幕| 秋霞午夜鲁丝一区二区老狼| 中文字幕一区二区三区在线不卡| 玖玖九九国产精品| 6080国产精品一区二区| 一区二区三区在线影院| www.欧美色图| 国产精品网站在线播放| 国产麻豆精品95视频| 日韩视频在线你懂得| 日韩精品亚洲一区| 欧美日韩一区二区三区视频| 亚洲精品视频免费看| 91蝌蚪国产九色| 中文字幕制服丝袜成人av| 福利视频网站一区二区三区| 国产视频在线观看一区二区三区| 国产专区欧美精品| 国产精品人人做人人爽人人添| 国产精品一区二区在线观看网站 | 中文字幕在线观看不卡视频| 国产精品一区免费在线观看| 国产女同性恋一区二区| 懂色中文一区二区在线播放| 中文字幕在线一区免费| 在线中文字幕不卡| 日本不卡不码高清免费观看 | 亚洲色大成网站www久久九九| caoporn国产一区二区| 亚洲人成精品久久久久久| 欧美日韩午夜在线视频| 蜜桃久久精品一区二区| 国产欧美日韩综合| 色综合久久天天| 日韩中文欧美在线| 久久人人爽爽爽人久久久| av在线不卡网| 日韩黄色免费电影| 国产精品久久一卡二卡| 欧美日韩一二三区| 国产东北露脸精品视频| 亚洲第四色夜色| 国产日韩欧美a| 欧美日韩精品免费观看视频| 国产成人夜色高潮福利影视| 一区二区三区四区视频精品免费| 日韩精品一区二区三区视频播放 | 欧美一区二区三区免费大片| 波多野结衣在线一区| 日本成人中文字幕在线视频| 国产精品乱人伦中文| 日韩亚洲欧美在线观看| 91女人视频在线观看| 国产高清成人在线| 美女网站色91| 国产成人在线视频网站| 亚洲午夜国产一区99re久久| 国产女人水真多18毛片18精品视频 | 一级做a爱片久久| 久久久综合视频| 日韩一区二区麻豆国产| 欧美伦理影视网| 欧美亚洲国产怡红院影院| 不卡影院免费观看| 国产99久久久国产精品免费看 | 亚洲欧美一区二区在线观看| 久久蜜桃香蕉精品一区二区三区| 日韩亚洲欧美在线| 日韩午夜中文字幕| 日韩一区二区电影网| 日韩三级在线观看| 日韩一区二区精品葵司在线| 精品国产在天天线2019| 26uuu亚洲综合色| 久久久久成人黄色影片| 久久久久久免费网| 国产亚洲精品超碰| 亚洲欧洲在线观看av| 亚洲男同性视频| 亚洲小说欧美激情另类| 日韩精品高清不卡| 精品一区二区三区的国产在线播放 | 91精品国产黑色紧身裤美女| 制服视频三区第一页精品| 日韩精品一区二区三区在线| 久久精品人人做人人综合| 国产精品传媒入口麻豆| 亚洲午夜久久久| 久久99精品国产91久久来源| 日韩欧美专区在线| 精品国产免费久久 | 色呦呦日韩精品| 91精品国产乱| 国产精品福利一区二区三区| 亚洲二区视频在线| 国产一区二区毛片| 欧美性猛交xxxxxx富婆| 久久在线免费观看| 亚洲一区成人在线| 成人深夜在线观看| 欧美电视剧免费观看| 亚洲欧美另类在线| 国内精品久久久久影院色| 欧美三级日本三级少妇99| 国产欧美日韩精品一区| 麻豆91免费看| 欧美老年两性高潮| 亚洲视频在线一区| 国产精品自在欧美一区| 777色狠狠一区二区三区| 亚洲品质自拍视频网站| 成人深夜视频在线观看| 欧美v日韩v国产v| 视频在线观看国产精品| 色综合av在线| 综合婷婷亚洲小说| jvid福利写真一区二区三区| 免费观看日韩电影| 欧美在线看片a免费观看| 中文字幕一区三区| k8久久久一区二区三区| 国产精品入口麻豆原神| 成人国产精品免费观看动漫 | 国产精品视频第一区| 国产大陆a不卡| 亚洲国产岛国毛片在线| 国产91精品久久久久久久网曝门| 亚洲精品一区二区三区影院| 精品一区二区三区日韩| 精品少妇一区二区三区免费观看 | 色一情一乱一乱一91av| 亚洲亚洲人成综合网络| 欧美一区二区黄| 男男成人高潮片免费网站| 5月丁香婷婷综合| 久久91精品久久久久久秒播| 欧美成人vr18sexvr| 粉嫩久久99精品久久久久久夜| 国产精品理论在线观看| 91豆麻精品91久久久久久| 石原莉奈在线亚洲二区| 日韩免费福利电影在线观看| 国产福利一区二区三区视频在线| 亚洲欧美在线视频观看| 91精品国产综合久久香蕉的特点 | 国产麻豆欧美日韩一区| 亚洲美女精品一区| 亚洲午夜国产一区99re久久| 91麻豆精品91久久久久同性| 国产精品亚洲综合一区在线观看| 日韩久久一区二区| 欧美一区二区三区成人| 高清视频一区二区| 天堂影院一区二区| 国产女同性恋一区二区| 欧美蜜桃一区二区三区| 国产成人精品免费在线| 亚洲午夜久久久久久久久久久| 日韩欧美的一区二区| 91丨porny丨蝌蚪视频| 国产一区二区三区四| 性做久久久久久免费观看欧美| 国产精品久久久久影院亚瑟| 日韩免费电影网站| 欧美日韩国产首页在线观看| 99天天综合性| 国产激情视频一区二区在线观看| 日韩精品午夜视频| 亚洲国产精品久久一线不卡| 中文字幕免费不卡| 精品久久99ma| 日韩欧美一级二级三级| 欧美老人xxxx18| 欧美日韩精品欧美日韩精品一 | 不卡电影一区二区三区| 国产一区在线观看麻豆| 精品在线亚洲视频| 久久国产福利国产秒拍| 国产综合久久久久久鬼色|