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

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

?? ttgload.c

?? a very goog book
?? C
?? 第 1 頁 / 共 4 頁
字號:
      FT_Byte*    flag  = (FT_Byte*)outline->tags;      FT_Pos      x     = 0;      for ( ; vec < limit; vec++, flag++ )      {        FT_Pos  y = 0;        if ( *flag & 2 )        {          y = FT_GET_BYTE();          if ( ( *flag & 16 ) == 0 )            y = -y;        }        else if ( ( *flag & 16 ) == 0 )          y = FT_GET_SHORT();        x     += y;        vec->x = x;      }    }    /* reading the Y coordinates */    {      FT_Vector*  vec   = gloader->current.outline.points;      FT_Vector*  limit = vec + n_points;      FT_Byte*    flag  = (FT_Byte*)outline->tags;      FT_Pos      x     = 0;      for ( ; vec < limit; vec++, flag++ )      {        FT_Pos  y = 0;        if ( *flag & 4 )        {          y = FT_GET_BYTE();          if ( ( *flag & 32 ) == 0 )            y = -y;        }        else if ( ( *flag & 32 ) == 0 )          y = FT_GET_SHORT();        x     += y;        vec->y = x;      }    }    /* clear the touch tags */    for ( n = 0; n < n_points; n++ )      outline->tags[n] &= FT_Curve_Tag_On;    outline->n_points   = (FT_UShort)n_points;    outline->n_contours = (FT_Short) n_contours;    load->byte_len = byte_len;  Fail:    return error;  Invalid_Outline:    error = TT_Err_Invalid_Outline;    goto Fail;  }  FT_CALLBACK_DEF( FT_Error )  TT_Load_Composite_Glyph( TT_Loader  loader )  {    FT_Error        error;    FT_Stream       stream  = loader->stream;    FT_GlyphLoader  gloader = loader->gloader;    FT_SubGlyph     subglyph;    FT_UInt         num_subglyphs;    FT_Int          byte_len = loader->byte_len;    num_subglyphs = 0;    do    {      FT_Fixed  xx, xy, yy, yx;      /* check that we can load a new subglyph */      error = FT_GlyphLoader_CheckSubGlyphs( gloader, num_subglyphs + 1 );      if ( error )        goto Fail;      /* check space */      byte_len -= 4;      if ( byte_len < 0 )        goto Invalid_Composite;      subglyph = gloader->current.subglyphs + num_subglyphs;      subglyph->arg1 = subglyph->arg2 = 0;      subglyph->flags = FT_GET_USHORT();      subglyph->index = FT_GET_USHORT();      /* check space */      byte_len -= 2;      if ( subglyph->flags & ARGS_ARE_WORDS )        byte_len -= 2;      if ( subglyph->flags & WE_HAVE_A_SCALE )        byte_len -= 2;      else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE )        byte_len -= 4;      else if ( subglyph->flags & WE_HAVE_A_2X2 )        byte_len -= 8;      if ( byte_len < 0 )        goto Invalid_Composite;      /* read arguments */      if ( subglyph->flags & ARGS_ARE_WORDS )      {        subglyph->arg1 = FT_GET_SHORT();        subglyph->arg2 = FT_GET_SHORT();      }      else      {        subglyph->arg1 = FT_GET_CHAR();        subglyph->arg2 = FT_GET_CHAR();      }      /* read transform */      xx = yy = 0x10000L;      xy = yx = 0;      if ( subglyph->flags & WE_HAVE_A_SCALE )      {        xx = (FT_Fixed)FT_GET_SHORT() << 2;        yy = xx;      }      else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE )      {        xx = (FT_Fixed)FT_GET_SHORT() << 2;        yy = (FT_Fixed)FT_GET_SHORT() << 2;      }      else if ( subglyph->flags & WE_HAVE_A_2X2 )      {        xx = (FT_Fixed)FT_GET_SHORT() << 2;        xy = (FT_Fixed)FT_GET_SHORT() << 2;        yx = (FT_Fixed)FT_GET_SHORT() << 2;        yy = (FT_Fixed)FT_GET_SHORT() << 2;      }      subglyph->transform.xx = xx;      subglyph->transform.xy = xy;      subglyph->transform.yx = yx;      subglyph->transform.yy = yy;      num_subglyphs++;    } while ( subglyph->flags & MORE_COMPONENTS );    gloader->current.num_subglyphs = num_subglyphs;#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    {      /* we must undo the FT_FRAME_ENTER in order to point to the */      /* composite instructions, if we find some.               */      /* we will process them later...                          */      /*                                                        */      loader->ins_pos = (FT_ULong)( FT_STREAM_POS() +                                    stream->cursor - stream->limit );    }#endif    loader->byte_len = byte_len;  Fail:    return error;  Invalid_Composite:    error = TT_Err_Invalid_Composite;    goto Fail;  }  FT_LOCAL_DEF( void )  TT_Init_Glyph_Loading( TT_Face  face )  {    face->access_glyph_frame   = TT_Access_Glyph_Frame;    face->read_glyph_header    = TT_Load_Glyph_Header;    face->read_simple_glyph    = TT_Load_Simple_Glyph;    face->read_composite_glyph = TT_Load_Composite_Glyph;    face->forget_glyph_frame   = TT_Forget_Glyph_Frame;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Process_Simple_Glyph                                            */  /*                                                                       */  /* <Description>                                                         */  /*    Once a simple glyph has been loaded, it needs to be processed.     */  /*    Usually, this means scaling and hinting through bytecode           */  /*    interpretation.                                                    */  /*                                                                       */  static FT_Error  TT_Process_Simple_Glyph( TT_Loader  load,                           FT_Bool    debug )  {    FT_GlyphLoader  gloader  = load->gloader;    FT_Outline*     outline  = &gloader->current.outline;    FT_UInt         n_points = outline->n_points;#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    FT_UInt         n_ins;#endif    TT_GlyphZone    zone     = &load->zone;    FT_Error        error    = TT_Err_Ok;    FT_UNUSED( debug );  /* used by truetype interpreter only */#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    n_ins = load->glyph->control_len;#endif    /* add shadow points */    /* Now add the two shadow points at n and n + 1.    */    /* We need the left side bearing and advance width. */    {      FT_Vector*  pp1;      FT_Vector*  pp2;      /* pp1 = xMin - lsb */      pp1    = outline->points + n_points;      pp1->x = load->bbox.xMin - load->left_bearing;      pp1->y = 0;      /* pp2 = pp1 + aw */      pp2    = pp1 + 1;      pp2->x = pp1->x + load->advance;      pp2->y = 0;      outline->tags[n_points    ] = 0;      outline->tags[n_points + 1] = 0;    }    /* Note that we return two more points that are not */    /* part of the glyph outline.                       */    n_points += 2;    /* set up zone for hinting */    tt_prepare_zone( zone, &gloader->current, 0, 0 );    /* eventually scale the glyph */    if ( !( load->load_flags & FT_LOAD_NO_SCALE ) )    {      FT_Vector*  vec     = zone->cur;      FT_Vector*  limit   = vec + n_points;      FT_Fixed    x_scale = load->size->metrics.x_scale;      FT_Fixed    y_scale = load->size->metrics.y_scale;      /* first scale the glyph points */      for ( ; vec < limit; vec++ )      {        vec->x = FT_MulFix( vec->x, x_scale );        vec->y = FT_MulFix( vec->y, y_scale );      }    }    cur_to_org( n_points, zone );    /* eventually hint the glyph */    if ( IS_HINTED( load->load_flags ) )    {      FT_Pos  x = zone->org[n_points-2].x;      x = ( ( x + 32 ) & -64 ) - x;      translate_array( n_points, zone->org, x, 0 );      org_to_cur( n_points, zone );      zone->cur[n_points - 1].x = ( zone->cur[n_points - 1].x + 32 ) & -64;#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER      /* now consider hinting */      if ( n_ins > 0 )      {        error = TT_Set_CodeRange( load->exec, tt_coderange_glyph,                                  load->exec->glyphIns, n_ins );        if ( error )          goto Exit;        load->exec->is_composite     = FALSE;        load->exec->pedantic_hinting = (FT_Bool)( load->load_flags &                                                  FT_LOAD_PEDANTIC );        load->exec->pts              = *zone;        load->exec->pts.n_points    += 2;        error = TT_Run_Context( load->exec, debug );        if ( error && load->exec->pedantic_hinting )          goto Exit;        error = TT_Err_Ok;  /* ignore bytecode errors in non-pedantic mode */      }#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */    }    /* save glyph phantom points */    if ( !load->preserve_pps )    {      load->pp1 = zone->cur[n_points - 2];      load->pp2 = zone->cur[n_points - 1];    }#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER  Exit:#endif    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    load_truetype_glyph                                                */  /*                                                                       */  /* <Description>                                                         */  /*    Loads a given truetype glyph.  Handles composites and uses a       */  /*    TT_Loader object.                                                  */  /*                                                                       */  static FT_Error  load_truetype_glyph( TT_Loader  loader,                       FT_UInt    glyph_index )  {#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER    FT_Stream       stream = loader->stream;#endif    FT_Error        error;    TT_Face         face   = (TT_Face)loader->face;    FT_ULong        offset;    FT_Int          contours_count;    FT_UInt         idx, num_points, count;    FT_Fixed        x_scale, y_scale;    FT_GlyphLoader  gloader = loader->gloader;    FT_Bool         opened_frame = 0;    /* check glyph index */    idx = glyph_index;    if ( idx >= (FT_UInt)face->root.num_glyphs )    {      error = TT_Err_Invalid_Glyph_Index;      goto Exit;    }    loader->glyph_index = glyph_index;    num_points          = 0;    x_scale = 0x10000L;    y_scale = 0x10000L;    if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )    {      x_scale = loader->size->metrics.x_scale;      y_scale = loader->size->metrics.y_scale;    }    /* get horizontal metrics */    {      FT_Short   left_bearing;      FT_UShort  advance_width;      Get_HMetrics( face, idx,                    (FT_Bool)!( loader->load_flags &                                FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ),                    &left_bearing,                    &advance_width );      loader->left_bearing = left_bearing;      loader->advance      = advance_width;      if ( !loader->linear_def )      {        loader->linear_def = 1;        loader->linear     = advance_width;      }    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品乡下勾搭老头1| 亚洲婷婷国产精品电影人久久| 污片在线观看一区二区| 91精品福利视频| 亚洲一区在线观看网站| 欧美日本精品一区二区三区| 天天av天天翘天天综合网色鬼国产| 欧美日韩的一区二区| 日本不卡的三区四区五区| 欧美电影免费观看高清完整版在线 | 久久成人免费网| 久久久久久99久久久精品网站| 成人污污视频在线观看| 亚洲精品ww久久久久久p站| 欧美日韩在线不卡| 奇米一区二区三区av| 国产日韩av一区| 色婷婷av一区二区三区软件| 同产精品九九九| 久久亚洲综合色| 91福利视频在线| 免费观看久久久4p| 国产精品情趣视频| 欧美午夜精品久久久| 久久国产生活片100| 国产精品久久久久久久久免费相片| 在线观看中文字幕不卡| 日本va欧美va精品发布| 国产精品国产三级国产aⅴ入口| 色婷婷激情一区二区三区| 日韩avvvv在线播放| 国产女人18水真多18精品一级做| 欧美四级电影网| 国产九色精品成人porny| 亚洲免费高清视频在线| 精品国产1区二区| 在线观看欧美日本| 国产成人综合网| 午夜视频在线观看一区| 国产精品私人影院| 日韩一区二区精品在线观看| 91同城在线观看| 极品少妇一区二区三区精品视频 | 成人动漫一区二区在线| 天天综合日日夜夜精品| 中文字幕第一区二区| 日韩欧美国产一区二区三区| 在线精品观看国产| jizz一区二区| 精品在线亚洲视频| 午夜天堂影视香蕉久久| 中文字幕在线一区| 日韩午夜激情免费电影| 在线观看日韩一区| 成人网页在线观看| 精品一区二区免费| 日韩国产在线观看一区| 亚洲免费高清视频在线| 国产精品蜜臀在线观看| 久久婷婷久久一区二区三区| 欧美精品在线观看播放| 一本大道久久精品懂色aⅴ| 成人免费高清在线观看| 精品一区二区三区香蕉蜜桃| 丝袜诱惑制服诱惑色一区在线观看| 国产精品全国免费观看高清| 欧美国产一区在线| 国产日韩精品视频一区| 欧美va亚洲va香蕉在线| 日韩欧美国产麻豆| 正在播放亚洲一区| 欧美精品乱码久久久久久| 在线欧美小视频| 日本高清视频一区二区| 99国产精品一区| 成人免费视频国产在线观看| 国产成人av电影| 国产不卡视频在线播放| 成人午夜大片免费观看| 成人黄色在线看| 成人福利视频网站| 色综合久久88色综合天天| 色婷婷一区二区三区四区| 色综合久久综合| 精品视频一区二区三区免费| 欧美性受极品xxxx喷水| 欧美日韩免费视频| 日韩视频不卡中文| 精品成人a区在线观看| 久久久www成人免费毛片麻豆| 国产日韩欧美在线一区| 亚洲视频你懂的| 亚洲国产成人高清精品| 日韩av一区二区三区| 狠狠色狠狠色综合日日91app| 国产麻豆91精品| 99热精品国产| 欧美色区777第一页| 日韩免费在线观看| 国产精品系列在线| 亚洲国产婷婷综合在线精品| 久久精品噜噜噜成人av农村| 国产乱码精品一品二品| 99精品国产99久久久久久白柏| 欧美日韩一区二区欧美激情| 日韩女同互慰一区二区| 国产精品国产三级国产| 亚洲午夜在线观看视频在线| 狠狠色丁香婷综合久久| aa级大片欧美| 欧美美女视频在线观看| 久久免费电影网| 亚洲免费观看在线观看| 免费成人在线网站| 成人动漫一区二区在线| 制服丝袜一区二区三区| 亚洲国产经典视频| 日韩高清不卡一区| 成人国产精品免费| 日韩视频中午一区| 中文字幕日韩一区| 毛片av一区二区| 91欧美激情一区二区三区成人| 91精品久久久久久久99蜜桃| 国产午夜精品一区二区三区视频| 亚洲精品视频在线| 国产精品一级黄| 678五月天丁香亚洲综合网| 欧美高清在线视频| 久久99国产精品久久99果冻传媒| 91天堂素人约啪| 国产午夜亚洲精品午夜鲁丝片| 亚洲v中文字幕| av在线播放一区二区三区| 日韩天堂在线观看| 亚洲一本大道在线| 94-欧美-setu| 国产亚洲人成网站| 美女任你摸久久| 欧亚洲嫩模精品一区三区| 日本一区二区三区dvd视频在线| 日韩黄色片在线观看| 91视频一区二区三区| 国产色一区二区| 美女高潮久久久| 欧美少妇性性性| 亚洲美腿欧美偷拍| 成人黄色国产精品网站大全在线免费观看 | 久久久精品人体av艺术| 视频一区二区欧美| 欧美影片第一页| 99re66热这里只有精品3直播| 久久先锋影音av| 国产一区视频在线看| 日韩欧美亚洲另类制服综合在线| 五月开心婷婷久久| 欧洲一区二区三区免费视频| 最新成人av在线| k8久久久一区二区三区 | 国内久久婷婷综合| 欧美成人bangbros| 日本成人在线看| 欧美二区三区91| 亚洲国产成人av好男人在线观看| 色综合一区二区| 亚洲日本在线天堂| 色综合天天视频在线观看| 日韩美女啊v在线免费观看| 成人国产一区二区三区精品| 国产精品私人自拍| 99国产精品国产精品毛片| 中文字幕亚洲视频| 在线观看视频一区| 五月婷婷综合网| 日韩欧美国产1| 国产精品夜夜爽| 日韩美女久久久| 欧美三级一区二区| 麻豆精品在线观看| 国产亚洲成aⅴ人片在线观看 | 色综合色狠狠天天综合色| 亚洲精品ww久久久久久p站| 精品视频一区二区三区免费| 日本免费在线视频不卡一不卡二| 精品捆绑美女sm三区| 国产成人在线观看| 亚洲另类在线制服丝袜| 91国偷自产一区二区开放时间| 亚洲高清不卡在线| 精品88久久久久88久久久| 成人国产一区二区三区精品| 亚洲免费观看在线视频| 91精品欧美一区二区三区综合在 | 欧美一卡二卡三卡| 国产精品一区二区视频| 亚洲精品美腿丝袜| 91精品国产91久久综合桃花| 国产一区不卡精品| 一区二区三区在线观看国产| 5月丁香婷婷综合|