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

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

?? ttpload.c

?? QT 開發環境里面一個很重要的文件
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************//*                                                                         *//*  ttpload.c                                                              *//*                                                                         *//*    TrueType-specific tables loader (body).                              *//*                                                                         *//*  Copyright 1996-2001, 2002, 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 FT_INTERNAL_DEBUG_H#include FT_INTERNAL_OBJECTS_H#include FT_INTERNAL_STREAM_H#include FT_TRUETYPE_TAGS_H#include "ttpload.h"#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT#include "ttgxvar.h"#endif#include "tterrors.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_ttpload  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_loca                                                  */  /*                                                                       */  /* <Description>                                                         */  /*    Load the locations table.                                          */  /*                                                                       */  /* <InOut>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /* <Input>                                                               */  /*    stream :: The input stream.                                        */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */#ifdef FT_OPTIMIZE_MEMORY  FT_LOCAL_DEF( FT_Error )  tt_face_load_loca( TT_Face    face,                     FT_Stream  stream )  {    FT_Error  error;    FT_ULong  table_len;    /* we need the size of the `glyf' table for malformed `loca' tables */    error = face->goto_table( face, TTAG_glyf, stream, &face->glyf_len );    if ( error )      goto Exit;    FT_TRACE2(( "Locations " ));    error = face->goto_table( face, TTAG_loca, stream, &table_len );    if ( error )    {      error = TT_Err_Locations_Missing;      goto Exit;    }    if ( face->header.Index_To_Loc_Format != 0 )    {      if ( table_len >= 0x40000L )      {        FT_TRACE2(( "table too large!\n" ));        error = TT_Err_Invalid_Table;        goto Exit;      }      face->num_locations = (FT_UInt)( table_len >> 2 );    }    else    {      if ( table_len >= 0x20000L )      {        FT_TRACE2(( "table too large!\n" ));        error = TT_Err_Invalid_Table;        goto Exit;      }      face->num_locations = (FT_UInt)( table_len >> 1 );    }    /*     * Extract the frame.  We don't need to decompress it since     * we are able to parse it directly.     */    if ( FT_FRAME_EXTRACT( table_len, face->glyph_locations ) )      goto Exit;    FT_TRACE2(( "loaded\n" ));  Exit:    return error;  }  FT_LOCAL_DEF( FT_ULong )  tt_face_get_location( TT_Face   face,                        FT_UInt   gindex,                        FT_UInt  *asize )  {    FT_ULong  pos1, pos2;    FT_Byte*  p;    FT_Byte*  p_limit;    pos1 = pos2 = 0;    if ( gindex < face->num_locations )    {      if ( face->header.Index_To_Loc_Format != 0 )      {        p       = face->glyph_locations + gindex * 4;        p_limit = face->glyph_locations + face->num_locations * 4;        pos1 = FT_NEXT_ULONG( p );        pos2 = pos1;        if ( p + 4 <= p_limit )          pos2 = FT_NEXT_ULONG( p );      }      else      {        p       = face->glyph_locations + gindex * 2;        p_limit = face->glyph_locations + face->num_locations * 2;        pos1 = FT_NEXT_USHORT( p );        pos2 = pos1;        if ( p + 2 <= p_limit )          pos2 = FT_NEXT_USHORT( p );        pos1 <<= 1;        pos2 <<= 1;      }    }    /* It isn't mentioned explicitly that the `loca' table must be  */    /* ordered, but implicitly it refers to the length of an entry  */    /* as the difference between the current and the next position. */    /* Anyway, there do exist (malformed) fonts which don't obey    */    /* this rule, so we are only able to provide an upper bound for */    /* the size.                                                    */    if ( pos2 >= pos1 )      *asize = (FT_UInt)( pos2 - pos1 );    else      *asize = (FT_UInt)( face->glyf_len - pos1 );    return pos1;  }  FT_LOCAL_DEF( void )  tt_face_done_loca( TT_Face  face )  {    FT_Stream  stream = face->root.stream;    FT_FRAME_RELEASE( face->glyph_locations );    face->num_locations = 0;  }#else /* !FT_OPTIMIZE_MEMORY */  FT_LOCAL_DEF( FT_Error )  tt_face_load_loca( TT_Face    face,                     FT_Stream  stream )  {    FT_Error   error;    FT_Memory  memory = stream->memory;    FT_Short   LongOffsets;    FT_ULong   table_len;    /* we need the size of the `glyf' table for malformed `loca' tables */    error = face->goto_table( face, TTAG_glyf, stream, &face->glyf_len );    if ( error )      goto Exit;    FT_TRACE2(( "Locations " ));    LongOffsets = face->header.Index_To_Loc_Format;    error = face->goto_table( face, TTAG_loca, stream, &table_len );    if ( error )    {      error = TT_Err_Locations_Missing;      goto Exit;    }    if ( LongOffsets != 0 )    {      face->num_locations = (FT_UShort)( table_len >> 2 );      FT_TRACE2(( "(32bit offsets): %12d ", face->num_locations ));      if ( FT_NEW_ARRAY( face->glyph_locations, face->num_locations ) )        goto Exit;      if ( FT_FRAME_ENTER( face->num_locations * 4L ) )        goto Exit;      {        FT_Long*  loc   = face->glyph_locations;        FT_Long*  limit = loc + face->num_locations;        for ( ; loc < limit; loc++ )          *loc = FT_GET_LONG();      }      FT_FRAME_EXIT();    }    else    {      face->num_locations = (FT_UShort)( table_len >> 1 );      FT_TRACE2(( "(16bit offsets): %12d ", face->num_locations ));      if ( FT_NEW_ARRAY( face->glyph_locations, face->num_locations ) )        goto Exit;      if ( FT_FRAME_ENTER( face->num_locations * 2L ) )        goto Exit;      {        FT_Long*  loc   = face->glyph_locations;        FT_Long*  limit = loc + face->num_locations;        for ( ; loc < limit; loc++ )          *loc = (FT_Long)( (FT_ULong)FT_GET_USHORT() * 2 );      }      FT_FRAME_EXIT();    }    FT_TRACE2(( "loaded\n" ));  Exit:    return error;  }  FT_LOCAL_DEF( FT_ULong )  tt_face_get_location( TT_Face   face,                        FT_UInt   gindex,                        FT_UInt  *asize )  {    FT_ULong  offset;    FT_UInt   count;    offset = face->glyph_locations[gindex];    count  = 0;    if ( gindex < (FT_UInt)face->num_locations - 1 )    {      FT_ULong  offset1 = face->glyph_locations[gindex + 1];      /* It isn't mentioned explicitly that the `loca' table must be  */      /* ordered, but implicitly it refers to the length of an entry  */      /* as the difference between the current and the next position. */      /* Anyway, there do exist (malformed) fonts which don't obey    */      /* this rule, so we are only able to provide an upper bound for */      /* the size.                                                    */      if ( offset1 >= offset )        count = (FT_UInt)( offset1 - offset );      else        count = (FT_UInt)( face->glyf_len - offset );    }    *asize = count;    return offset;  }  FT_LOCAL_DEF( void )  tt_face_done_loca( TT_Face  face )  {    FT_Memory  memory = face->root.memory;    FT_FREE( face->glyph_locations );    face->num_locations = 0;  }#endif /* !FT_OPTIMIZE_MEMORY */  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_cvt                                                   */  /*                                                                       */  /* <Description>                                                         */  /*    Load the control value table into a face object.                   */  /*                                                                       */  /* <InOut>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /* <Input>                                                               */  /*    stream :: A handle to the input stream.                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_face_load_cvt( TT_Face    face,                    FT_Stream  stream )  {#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    FT_Error   error;    FT_Memory  memory = stream->memory;    FT_ULong   table_len;    FT_TRACE2(( "CVT " ));    error = face->goto_table( face, TTAG_cvt, stream, &table_len );    if ( error )    {      FT_TRACE2(( "is missing!\n" ));      face->cvt_size = 0;      face->cvt      = NULL;      error          = TT_Err_Ok;      goto Exit;    }    face->cvt_size = table_len / 2;    if ( FT_NEW_ARRAY( face->cvt, face->cvt_size ) )      goto Exit;    if ( FT_FRAME_ENTER( face->cvt_size * 2L ) )      goto Exit;    {      FT_Short*  cur   = face->cvt;      FT_Short*  limit = cur + face->cvt_size;      for ( ; cur <  limit; cur++ )        *cur = FT_GET_SHORT();    }    FT_FRAME_EXIT();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚一区二区| 99精品视频在线免费观看| 国产精品久久精品日日| 欧美一级午夜免费电影| 色拍拍在线精品视频8848| 99视频热这里只有精品免费| 国产成人av在线影院| 国产精品亚洲午夜一区二区三区| 国产乱人伦偷精品视频免下载| 国产精品一区三区| 岛国av在线一区| 99久久伊人久久99| 成人av网在线| 91丝袜国产在线播放| 色狠狠一区二区| 6080日韩午夜伦伦午夜伦| 精品国产免费人成在线观看| 久久久久久一二三区| 国产欧美日韩精品在线| 亚洲欧美日韩国产一区二区三区| 亚洲欧美自拍偷拍| 亚洲成a人v欧美综合天堂下载| 日韩av电影免费观看高清完整版 | 风间由美性色一区二区三区| 国产一区二区不卡| 不卡一区二区中文字幕| 欧美无砖专区一中文字| 日韩女优av电影| 日本一区二区三区国色天香| 1024成人网| 琪琪久久久久日韩精品| 久久国产精品露脸对白| 99精品一区二区三区| 337p亚洲精品色噜噜| 色综合久久久网| 国产精品久久午夜夜伦鲁鲁| 麻豆传媒一区二区三区| 成人免费观看视频| 欧美一区二区三区在线观看视频| 欧美国产1区2区| 717成人午夜免费福利电影| 国产精品视频看| ...av二区三区久久精品| 日韩午夜在线观看视频| 欧美aaaaaa午夜精品| 97久久超碰国产精品| 精品一区二区三区久久| 欧美aaa在线| 日本一区二区久久| 亚洲一二三四在线| 欧美性色欧美a在线播放| 亚洲国产精品久久久久秋霞影院 | 欧美日韩一区二区三区免费看| 精品国产一二三区| 免费一级片91| 成人欧美一区二区三区在线播放| 欧美在线不卡视频| 亚洲免费观看高清完整版在线观看熊| 成人性视频免费网站| 精品乱码亚洲一区二区不卡| 午夜精品久久一牛影视| 亚洲国产成人自拍| 91蜜桃视频在线| 亚洲高清免费观看 | 91麻豆自制传媒国产之光| 欧美日韩精品欧美日韩精品一 | 国产日韩欧美高清在线| 色综合咪咪久久| 日韩一二三四区| 亚洲三级久久久| 国产午夜亚洲精品羞羞网站| 精品久久久久久无| 欧美三级欧美一级| 北岛玲一区二区三区四区| 亚洲一区二区黄色| 一区二区三区色| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲精品在线免费播放| 菠萝蜜视频在线观看一区| 国产剧情在线观看一区二区 | 国产乱子伦视频一区二区三区 | 日韩午夜在线播放| 香蕉久久一区二区不卡无毒影院| 91碰在线视频| 亚洲欧美另类在线| 色噜噜夜夜夜综合网| 亚洲另类中文字| 91污在线观看| 亚洲国产欧美另类丝袜| 欧美久久久久久久久久| 蜜臀精品久久久久久蜜臀| 欧美一区二区网站| 蜜臀av亚洲一区中文字幕| 欧美高清视频不卡网| 蜜臀精品一区二区三区在线观看 | 国产精品成人在线观看| www.欧美.com| 亚洲欧美激情在线| 欧美天堂亚洲电影院在线播放| 亚洲午夜在线电影| 91精品国产全国免费观看| 精一区二区三区| 中文字幕国产精品一区二区| 99久久婷婷国产综合精品电影| 亚洲激情校园春色| 欧美日韩一级黄| 加勒比av一区二区| 日韩理论片网站| 91精品国产aⅴ一区二区| 国产麻豆91精品| 亚洲欧洲综合另类| 日韩视频在线永久播放| 成人黄色小视频| 午夜久久福利影院| 中文字幕免费不卡在线| 在线免费不卡电影| 国产最新精品精品你懂的| 中文字幕在线不卡| 欧美高清性hdvideosex| av中文字幕在线不卡| 午夜精品免费在线观看| 中文字幕av一区二区三区高 | 国产在线精品不卡| 亚洲黄网站在线观看| 欧美一级久久久| 99免费精品视频| 美女爽到高潮91| 一区二区三区蜜桃网| 国产欧美日韩在线看| 91精品国产综合久久久久久久 | 色婷婷久久久亚洲一区二区三区| 久久99精品国产.久久久久久| 亚洲色图视频免费播放| 亚洲精品在线电影| 欧美性色欧美a在线播放| 国产成人综合视频| 麻豆极品一区二区三区| 一区二区三区电影在线播| 中文字幕第一页久久| 欧美成人乱码一区二区三区| 欧美另类久久久品| 91在线高清观看| 成人激情av网| 国产精品一区二区x88av| 蜜桃视频一区二区| 午夜精品爽啪视频| 亚洲a一区二区| 亚洲免费观看高清完整版在线 | 欧美在线观看一二区| 91蝌蚪国产九色| 成人伦理片在线| 国产91富婆露脸刺激对白| 精东粉嫩av免费一区二区三区| 青青草伊人久久| 免播放器亚洲一区| 日韩国产精品久久久久久亚洲| 午夜国产不卡在线观看视频| 亚洲大片免费看| 香蕉久久夜色精品国产使用方法| 亚洲精品成人少妇| 亚洲自拍偷拍欧美| 午夜天堂影视香蕉久久| 香蕉成人啪国产精品视频综合网 | 久久综合九色欧美综合狠狠| 精品免费日韩av| 精品99一区二区| 久久蜜臀精品av| 国产精品网曝门| 亚洲欧洲精品一区二区三区不卡| 欧美激情一区二区| 亚洲欧美另类图片小说| 亚洲成精国产精品女| 奇米色777欧美一区二区| 久久国产麻豆精品| 国产a级毛片一区| www.亚洲在线| 在线免费亚洲电影| 欧美揉bbbbb揉bbbbb| 欧美一区二区日韩一区二区| 精品久久久久一区二区国产| 国产嫩草影院久久久久| 1024亚洲合集| 日韩va亚洲va欧美va久久| 久久精品72免费观看| 高清不卡在线观看av| 99久久精品免费看国产| 制服视频三区第一页精品| 久久人人爽人人爽| 亚洲免费在线看| 麻豆91在线播放| 99久久婷婷国产| 91麻豆精品国产自产在线观看一区 | 日本欧美一区二区三区乱码| 国产美女娇喘av呻吟久久| av激情综合网| 欧美一区二区三区视频免费| 国产精品免费视频观看| 日韩av网站在线观看| 99久久精品免费看| 欧美精品一区二区三|