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

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

?? ftxsbit.c

?? 字體縮放顯示
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
          metrics->width  = GET_Byte();          metrics->horiBearingX = GET_Char();          metrics->horiBearingY = GET_Char();          metrics->horiAdvance  = GET_Byte();          metrics->vertBearingX = GET_Char();          metrics->vertBearingY = GET_Char();          metrics->vertAdvance  = GET_Byte();          FORGET_Frame();        }        if ( format != 2 )   /* load range codes, formats 4 and 5 */          error = Load_Range_Codes( range, face, (format == 4) );      }      break;    default:      error = TT_Err_Invalid_File_Format;    }    PTRACE3(( "Embedded Bitmap Location Tables loaded.\n" ));    return error;  }/******************************************************************* * *  Function    :  Load_TrueType_Eblc * *  Description :  Loads the Eblc table directory into face table. * *  Input  :  face    face record to look for * *  Output :  Error code. * ******************************************************************/  static TT_Error  Load_TrueType_Eblc( PFace     face,                      TT_EBLC*  eblc )  {    DEFINE_LOCALS;    ULong   eblc_offset;    UInt    i;    Long    table;    TT_SBit_Strike*  strike;    PTRACE2(( "Load_EBLC_Table( %08lx )\n", (long)face ));    eblc->version = 0;    /* Try to find the `EBLC' or `bloc' table in the font files. */    /* Both tags describe the same table; `EBLC' is for OpenType */    /* fonts while `bloc' is for TrueType GX fonts.  Many fonts  */    /* contain both tags pointing to the same table.             */    table = TT_LookUp_Table( face, TTAG_EBLC );    if ( table < 0 )      table = TT_LookUp_Table( face, TTAG_bloc );    if ( table < 0 )      /* This table is optional */      return TT_Err_Ok;    eblc_offset = face->dirTables[table].Offset;    if ( FILE_Seek( eblc_offset ) ||         ACCESS_Frame( 8L )       )      return error;    eblc->version     = GET_ULong();    eblc->num_strikes = GET_ULong();    FORGET_Frame();    PTRACE2(( "-- Tables count:   %12u\n",  eblc->num_strikes ));    PTRACE2(( "-- Format version: %08lx\n", eblc->version     ));    if ( eblc->version != 0x00020000 )    {      PERROR(( "Invalid file format!\n" ));      return TT_Err_Invalid_File_Format;    }    if ( ALLOC_ARRAY( eblc->strikes, eblc->num_strikes, TT_SBit_Strike ) ||         ACCESS_Frame( 48L * eblc->num_strikes )                         )      return error;    strike = eblc->strikes;    for ( i = 0; i < (UInt)eblc->num_strikes; i++, strike++ )    {          /* loop through the tables and get all entries */      ULong                  indexTablesSize;      TT_SBit_Line_Metrics*  metrics;      Int                    count;      strike->ranges_offset = GET_ULong();      indexTablesSize       = GET_ULong();  /* dont' save */      strike->num_ranges    = GET_ULong();      strike->color_ref     = GET_ULong();      /* load horizontal and vertical metrics */      metrics = &strike->hori;      for ( count = 2; count > 0; count-- )      {        metrics->ascender  = GET_Char();        metrics->descender = GET_Char();        metrics->max_width = GET_Byte();        metrics->caret_slope_numerator   = GET_Char();        metrics->caret_slope_denominator = GET_Char();        metrics->caret_offset            = GET_Char();        metrics->min_origin_SB  = GET_Char();        metrics->min_advance_SB = GET_Char();        metrics->max_before_BL  = GET_Char();        metrics->min_after_BL   = GET_Char();        metrics->pads[0]        = GET_Char();        metrics->pads[1]        = GET_Char();        metrics = &strike->vert;      }      strike->start_glyph = GET_UShort();      strike->end_glyph   = GET_UShort();      strike->x_ppem      = GET_Byte();      strike->y_ppem      = GET_Byte();      strike->bit_depth   = GET_Byte();      strike->flags       = GET_Char();      PTRACE4(( " start - end - ppemX - ppemY\n" ));      PTRACE4(( " %04d - %04d - %3u - %3u\n",                  strike->start_glyph,                  strike->end_glyph,                  strike->x_ppem,                  strike->y_ppem ));    }    FORGET_Frame();    /* Load EBLC index ranges */    strike = eblc->strikes;    for ( i = 0; i < eblc->num_strikes; i++, strike++ )    {      TT_SBit_Range*  range;      UShort          count = strike->num_ranges;      /* loop through the tables and get all entries */      if ( ALLOC_ARRAY( strike->sbit_ranges,                        strike->num_ranges,                        TT_SBit_Range )                     ||           FILE_Seek( eblc_offset + strike->ranges_offset ) ||           ACCESS_Frame( strike->num_ranges * 8L )          )        return error;      for ( range = strike->sbit_ranges; count > 0; count--, range++ )      {        range->first_glyph   = GET_UShort();        range->last_glyph    = GET_UShort();        range->table_offset  = eblc_offset + strike->ranges_offset +                                 GET_ULong();      }      FORGET_Frame();      /* Now, read each index table */      range = strike->sbit_ranges;      for ( count = strike->num_ranges; count > 0; count--, range++ )      {        /* Read the header */        if ( FILE_Seek( range->table_offset ) ||             ACCESS_Frame( 8L )              )          return error;;        range->index_format = GET_UShort();        range->image_format = GET_UShort();        range->image_offset = GET_ULong();        FORGET_Frame();        error = Load_SBit_Range( strike, range, face );        if (error) return error;      }    }    return TT_Err_Ok;  }  static void  Free_TrueType_Eblc( TT_EBLC*  eblc )  {    if ( eblc )    {      ULong            i;      TT_SBit_Strike*  strike = eblc->strikes;      strike = eblc->strikes;      for ( i = eblc->num_strikes; i > 0; i--, strike++ )      {        /* for each strike, release all glyph ranges */        TT_SBit_Range*  range = strike->sbit_ranges;        Int             n;        for ( n = strike->num_ranges; n > 0; n--, range++ )        {          /* release a range */          FREE( range->glyph_offsets );          FREE( range->glyph_codes );        }        FREE( strike->sbit_ranges );        strike->num_ranges = 0;      }      FREE( eblc->strikes );      eblc->num_strikes = 0;      eblc->version     = 0;    }  }  static TT_Error  Load_SBit_Metrics( TT_Big_Glyph_Metrics*  metrics,                     TT_SBit_Range*         range,                     ULong                  ebdt_offset,                     PFace                  face )  {    DEFINE_LOCALS;        Byte      height, width;    /* copy bitmap metrics for formats 2 and 5 */    if ( ( ( range->index_format == 2 ) || ( range->index_format == 5 ) ) &&         ( range->image_format == 5 ) )                         /* metrics are taken from current image bitmap */                         /* i.e. from `image.metrics'                   */    {      TT_SBit_Metrics*  rmetrics = &range->metrics;      metrics->bbox.xMin = rmetrics->horiBearingX;      metrics->bbox.xMax = metrics->bbox.xMin + rmetrics->width;      metrics->bbox.yMax = rmetrics->horiBearingY;      metrics->bbox.yMin = metrics->bbox.yMax - rmetrics->height;      metrics->horiBearingX = rmetrics->horiBearingX;      metrics->horiBearingY = metrics->bbox.yMax;      metrics->horiAdvance  = rmetrics->horiAdvance;      metrics->vertBearingX = rmetrics->vertBearingX;      metrics->vertBearingY = rmetrics->vertBearingY;      metrics->vertAdvance  = rmetrics->vertAdvance;      return TT_Err_Ok;    }    switch ( range->image_format )    {    case 1:    case 2:    case 6:    case 7:    case 8:    case 9:      {        Long  length = 5L;        if ( range->image_format == 8 )          length++;        /* read the small metrics */        if ( ACCESS_Frame( length ) )          return error;        height = GET_Byte();        width  = GET_Byte();        metrics->horiBearingX = GET_Char();        metrics->horiBearingY = GET_Char();        metrics->horiAdvance  = GET_Byte();        FORGET_Frame();        metrics->bbox.xMin = metrics->horiBearingX;        metrics->bbox.yMax = metrics->horiBearingY;        metrics->bbox.xMax = metrics->bbox.xMin + width;        metrics->bbox.yMin = metrics->bbox.yMax - height;        /* read the rest of the big metrics for the formats */        /* that support it.                                 */        if ( ( range->image_format >= 6 ) && ( range->image_format != 8 ) )        {          if ( ACCESS_Frame( 3L ) )            return error;          metrics->vertBearingX = (Int)GET_Char();          metrics->vertBearingY = (Int)GET_Char();          metrics->vertAdvance  = (Int)GET_Char();          FORGET_Frame();        }        else        {          /* XXX: How can we fill these when the information isn't */          /*      available?                                       */          metrics->vertBearingX = 0;          metrics->vertBearingY = 0;          metrics->vertAdvance  = 0;        }      }      break;    case 5:  /* metrics are taken from current image bitmap */             /* i.e. from 'image.metrics'                   */      break;    default:      PERROR(( "Unsupported embedded bitmap format!\n" ));      return TT_Err_Invalid_File_Format;    }    return TT_Err_Ok;  }  static TT_Error  Load_SBit_Image( TT_SBit_Strike  strike,                   UShort          glyph_index,                   Byte            x_offset,                   Byte            y_offset,                   ULong           ebdt_offset,                   TT_SBit_Image*  image,                   UShort          component_depth,                   PFace           face )  {    DEFINE_LOCALS;    Byte                  height, width;    ULong                 bitmap_offset;    TT_SBit_Range*        range = 0;    TT_Big_Glyph_Metrics  metrics;    /********************************************************************/    /*                                                                  */    /* Scan the strike's range for the position/metrics of the source   */    /* glyph.                                                           */    {      UShort          count = strike.num_ranges;      TT_SBit_Range*  cur   = strike.sbit_ranges;      for ( ; count > 0; count--, cur++ )      {        /* look for the glyph in the current range */        switch ( cur->index_format )        {        case 1:        case 2:        case 3:          if ( glyph_index >= cur->first_glyph &&               glyph_index <= cur->last_glyph  )          {            UShort  delta = glyph_index - cur->first_glyph;            range         = cur;            bitmap_offset = cur->index_format == 2                           ? cur->image_offset + cur->image_size * delta                           : cur->glyph_offsets[delta];            goto Found;          }          break;        case 4:        case 5:          {            UShort  n;            for ( n = 0; (UInt)n < cur->num_glyphs; n++ )              if ( cur->glyph_codes[n] == glyph_index )              {                range         = cur;                bitmap_offset = cur->index_format == 4                                ? cur->glyph_offsets[n]                                : cur->image_offset + cur->image_size * n;                goto Found;              }          }          break;        default:          return TT_Err_Invalid_Glyph_Index;        }      }      /* Not found */      return TT_Err_Invalid_Glyph_Index;    }  Found:    if ( FILE_Seek( ebdt_offset + bitmap_offset ) )      return error;    /* First of all, load the metrics if needed */    error = Load_SBit_Metrics( &metrics, range, ebdt_offset, face );    if ( error )      return error;    width  = metrics.bbox.xMax - metrics.bbox.xMin;    height = metrics.bbox.yMax - metrics.bbox.yMin;    if ( !component_depth )    {      image->metrics   = metrics;      image->map.width = width;      image->map.rows  = height;      image->map.cols  = (width + 7) >> 3;      image->map.size  = height * image->map.cols;      if ( REALLOC( image->map.bitmap, image->map.size ) )        return error;      MEM_Set( image->map.bitmap, 0, image->map.size );    }    /* Now, load the data as needed */    switch ( range->image_format )    {    case 1:    case 6: /* byte-aligned data */      error = Load_BitmapData( image,                               height * (( width + 7 ) >> 3),                               x_offset, y_offset,                               width, height,                               1, face );      if ( error )        return error;      break;    case 2:    case 5:    case 7:      error = Load_BitmapData( image,                               (width * height + 7) >> 3,                               x_offset, y_offset,                               width, height, 0, face );      if ( error )        return error;      break;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品视频网| 亚洲国产综合91精品麻豆| 日韩天堂在线观看| 51精品国自产在线| 在线成人av影院| 91精品国产综合久久蜜臀| 欧美一区二区在线免费播放 | 久久久精品影视| www久久久久| 国产肉丝袜一区二区| 久久久久久久久久电影| 日韩美女视频一区二区在线观看| 欧美一级精品在线| 欧美日韩精品一区二区| 欧美性猛交一区二区三区精品| 91社区在线播放| 91热门视频在线观看| 成年人午夜久久久| 91在线观看一区二区| 成人丝袜视频网| av男人天堂一区| 色综合视频在线观看| 色婷婷精品久久二区二区蜜臂av| 91热门视频在线观看| 91激情五月电影| 欧美三级在线播放| 欧美高清性hdvideosex| 欧美一区二区三区啪啪| 欧美成人高清电影在线| 精品日产卡一卡二卡麻豆| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲自拍另类综合| 亚洲国产va精品久久久不卡综合| 亚洲国产精品久久久久秋霞影院 | 久久免费看少妇高潮| 国产精品免费人成网站| 亚洲一区二区四区蜜桃| 激情综合色播激情啊| 国产一区二区不卡| 91小视频免费观看| 欧美日韩一区二区三区不卡| 欧美巨大另类极品videosbest | 欧美挠脚心视频网站| 欧美一区二区日韩一区二区| 26uuu另类欧美| 成人欧美一区二区三区小说| 夜色激情一区二区| 奇米影视一区二区三区| 国产一区二区三区免费观看| 9人人澡人人爽人人精品| 欧美吞精做爰啪啪高潮| 日韩一区和二区| 国产精品每日更新| 水野朝阳av一区二区三区| 国内成人免费视频| 99这里只有久久精品视频| 欧美色手机在线观看| 欧美成人三级在线| 亚洲色图19p| 日本vs亚洲vs韩国一区三区| 国产精品1区二区.| 在线免费视频一区二区| 欧美v日韩v国产v| 亚洲男同1069视频| 久久福利资源站| 日本韩国精品一区二区在线观看| 91精品婷婷国产综合久久性色| 欧美激情一区在线观看| 亚洲线精品一区二区三区| 国产一区在线观看视频| 成人白浆超碰人人人人| 欧美一区二区三区公司| 亚洲三级在线看| 国产一区二区福利| 欧美乱妇15p| 国产亚洲精久久久久久| 一区二区三区在线观看动漫 | 日韩成人免费看| av福利精品导航| 日韩午夜激情电影| 亚洲小说春色综合另类电影| 国产精品一区在线观看你懂的| 欧美性猛片xxxx免费看久爱| 国产精品嫩草99a| 久久99久久久欧美国产| 欧美最猛性xxxxx直播| 国产女人水真多18毛片18精品视频| 亚洲成人免费电影| 成人黄色av网站在线| 欧美大片在线观看一区二区| 亚洲欧美另类综合偷拍| 国产成人免费网站| 日韩欧美黄色影院| 亚洲一区免费在线观看| 94色蜜桃网一区二区三区| www激情久久| 日韩电影一区二区三区四区| 91视视频在线直接观看在线看网页在线看| 欧美刺激午夜性久久久久久久| 亚洲成a人片综合在线| 97久久精品人人爽人人爽蜜臀| 久久久美女毛片| 精品一区二区三区视频| 欧美一区二区视频在线观看2020 | 国内精品国产成人| 色综合天天视频在线观看| 国产色产综合产在线视频| 亚洲主播在线观看| 大胆欧美人体老妇| 日韩一区二区免费在线观看| 亚洲综合999| jlzzjlzz亚洲女人18| 久久亚洲综合色一区二区三区| 日韩国产一二三区| 欧美精品vⅰdeose4hd| 亚洲成人www| 欧美丰满少妇xxxxx高潮对白| 亚洲欧美视频在线观看视频| 99re在线视频这里只有精品| 亚洲欧洲日韩在线| 色诱亚洲精品久久久久久| 国产精品理论片| 91小视频在线免费看| 一区二区在线观看免费| 欧美亚洲综合另类| 亚洲chinese男男1069| 欧美日韩精品系列| 日韩国产精品91| 精品国产伦一区二区三区观看方式 | 视频精品一区二区| 欧美日韩国产美女| 日本亚洲免费观看| 精品裸体舞一区二区三区| 激情五月播播久久久精品| 久久久99精品免费观看不卡| 国产成人福利片| 中文字幕亚洲一区二区va在线| 91麻豆产精品久久久久久| 亚洲午夜一区二区| 欧美一级片在线看| 免费在线观看不卡| 久久综合五月天婷婷伊人| 处破女av一区二区| 亚洲影院在线观看| 欧美一二三区在线观看| 国产精品小仙女| 亚洲精品久久久蜜桃| 欧美日韩一区二区电影| 久久www免费人成看片高清| 久久久久国产免费免费| 不卡一区中文字幕| 亚洲国产一区二区视频| 日韩欧美在线123| 成人免费看视频| 夜夜嗨av一区二区三区四季av| 欧美一区二区三区小说| 国产成人精品影视| 一区二区三区在线视频观看58| 欧美一级生活片| www.亚洲在线| 亚洲影视资源网| 精品视频在线免费看| 激情综合网最新| 亚洲精品视频一区二区| 日韩欧美国产wwwww| 99久久精品一区二区| 美女尤物国产一区| 亚洲四区在线观看| 欧美一区二区久久| 波波电影院一区二区三区| 日韩黄色片在线观看| 中文字幕高清一区| 欧美一区二区免费观在线| 91无套直看片红桃| 老司机免费视频一区二区三区| 亚洲男人天堂一区| 欧美精品一区男女天堂| 欧美在线免费观看亚洲| 国产综合色精品一区二区三区| 亚洲欧洲成人精品av97| 欧美不卡123| 欧洲一区二区三区在线| 国产福利一区在线观看| 亚洲成人精品影院| 国产精品福利av| 精品入口麻豆88视频| 欧美日韩一二三区| 成人在线视频一区二区| 日韩电影在线观看一区| 亚洲精品视频免费看| 国产欧美日韩一区二区三区在线观看| 欧美三级在线看| 91老师国产黑色丝袜在线| 韩国精品在线观看| 日韩一区精品字幕| 亚洲精品久久久久久国产精华液| 国产午夜久久久久| 精品美女一区二区三区| 国产拍欧美日韩视频二区| 日韩欧美不卡在线观看视频|