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

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

?? ftxgpos.c

?? 字體縮放顯示
?? C
?? 第 1 頁 / 共 5 頁
字號:
      if ( ALLOC_ARRAY( sp->spf.spf2.Value, count, TTO_ValueRecord ) )        goto Fail2;      vr = sp->spf.spf2.Value;      for ( n = 0; n < count; n++ )      {        error = Load_ValueRecord( &vr[n], format, base_offset, input );        if ( error )          goto Fail1;      }      break;    default:      return TTO_Err_Invalid_GPOS_SubTable_Format;    }    return TT_Err_Ok;  Fail1:    for ( n = 0; n < count; n++ )      Free_ValueRecord( &vr[n], format );    FREE( vr );  Fail2:    Free_Coverage( &sp->Coverage );    return error;  }  void  Free_SinglePos( TTO_SinglePos*  sp )  {    UShort            n, count, format;    TTO_ValueRecord*  v;    format = sp->ValueFormat;    switch ( sp->PosFormat )    {    case 1:      Free_ValueRecord( &sp->spf.spf1.Value, format );      break;    case 2:      if ( sp->spf.spf2.Value )      {        count = sp->spf.spf2.ValueCount;        v     = sp->spf.spf2.Value;        for ( n = 0; n < count; n++ )          Free_ValueRecord( &v[n], format );        FREE( v );      }      break;    }    Free_Coverage( &sp->Coverage );  }  static TT_Error  Lookup_SinglePos( GPOS_Instance*    gpi,                                     TTO_SinglePos*    sp,                                     TTO_GSUB_String*  in,                                     TTO_GPOS_Data*    out,                                     UShort            flags,                                     UShort            context_length )  {    UShort           index, property;    TT_Error         error;    TTO_GPOSHeader*  gpos = gpi->gpos;    if ( context_length != 0xFFFF && context_length < 1 )      return TTO_Err_Not_Covered;    if ( CHECK_Property( gpos->gdef, in->string[in->pos], flags, &property ) )      return error;    error = Coverage_Index( &sp->Coverage, in->string[in->pos], &index );    if ( error )      return error;    switch ( sp->PosFormat )    {    case 1:      error = Get_ValueRecord( gpi, &sp->spf.spf1.Value,                               sp->ValueFormat, &out[in->pos] );      if ( error )        return error;      break;    case 2:      if ( index >= sp->spf.spf2.ValueCount )        return TTO_Err_Invalid_GPOS_SubTable;      error = Get_ValueRecord( gpi, &sp->spf.spf2.Value[index],                               sp->ValueFormat, &out[in->pos] );      if ( error )        return error;      break;    default:      return TTO_Err_Invalid_GPOS_SubTable;    }    (in->pos)++;    return TT_Err_Ok;  }  /* LookupType 2 */  /* PairSet */  static TT_Error  Load_PairSet ( TTO_PairSet*  ps,                                  UShort        format1,                                  UShort        format2,                                  PFace         input )  {    DEFINE_LOAD_LOCALS( input->stream );    UShort                n, count;    ULong                 base_offset;    TTO_PairValueRecord*  pvr;    base_offset = FILE_Pos();    if ( ACCESS_Frame( 2L ) )      return error;    count = ps->PairValueCount = GET_UShort();        FORGET_Frame();    ps->PairValueRecord = NULL;    if ( ALLOC_ARRAY( ps->PairValueRecord, count, TTO_PairValueRecord ) )      return error;    pvr = ps->PairValueRecord;    for ( n = 0; n < count; n++ )    {      if ( ACCESS_Frame( 2L ) )        goto Fail;      pvr[n].SecondGlyph = GET_UShort();      FORGET_Frame();      if ( format1 )      {        error = Load_ValueRecord( &pvr[n].Value1, format1,                                  base_offset, input );        if ( error )          goto Fail;      }      if ( format2 )      {        error = Load_ValueRecord( &pvr[n].Value2, format2,                                  base_offset, input );        if ( error )          goto Fail;      }    }    return TT_Err_Ok;  Fail:    for ( n = 0; n < count; n++ )    {      if ( format1 )        Free_ValueRecord( &pvr[n].Value1, format1 );      if ( format2 )        Free_ValueRecord( &pvr[n].Value2, format2 );    }    FREE( pvr );    return error;  }  static void  Free_PairSet( TTO_PairSet*  ps,                             UShort        format1,                             UShort        format2 )  {    UShort                n, count;    TTO_PairValueRecord*  pvr;    if ( ps->PairValueRecord )    {      count = ps->PairValueCount;      pvr   = ps->PairValueRecord;      for ( n = 0; n < count; n++ )      {        if ( format1 )          Free_ValueRecord( &pvr[n].Value1, format1 );        if ( format2 )          Free_ValueRecord( &pvr[n].Value2, format2 );      }      FREE( pvr );    }  }  /* PairPosFormat1 */  static TT_Error  Load_PairPos1( TTO_PairPosFormat1*  ppf1,                                  UShort               format1,                                  UShort               format2,                                  PFace                input )  {    DEFINE_LOAD_LOCALS( input->stream );    UShort        n, count;    ULong         cur_offset, new_offset, base_offset;    TTO_PairSet*  ps;    base_offset = FILE_Pos() - 8L;    if ( ACCESS_Frame( 2L ) )      return error;    count = ppf1->PairSetCount = GET_UShort();    FORGET_Frame();    ppf1->PairSet = NULL;    if ( ALLOC_ARRAY( ppf1->PairSet, count, TTO_PairSet ) )      goto Fail;    ps = ppf1->PairSet;    for ( n = 0; n < count; n++ )    {      if ( ACCESS_Frame( 2L ) )        goto Fail;      new_offset = GET_UShort() + base_offset;      FORGET_Frame();      cur_offset = FILE_Pos();      if ( FILE_Seek( new_offset ) ||           ( error = Load_PairSet( &ps[n], format1,                                   format2, input ) ) != TT_Err_Ok )        goto Fail;      (void)FILE_Seek( cur_offset );    }    return TT_Err_Ok;  Fail:    for ( n = 0; n < count; n++ )      Free_PairSet( &ps[n], format1, format2 );    FREE( ps );    return error;  }  static void  Free_PairPos1( TTO_PairPosFormat1*  ppf1,                              UShort               format1,                              UShort               format2 )  {    UShort        n, count;    TTO_PairSet*  ps;    if ( ppf1->PairSet )    {      count = ppf1->PairSetCount;      ps    = ppf1->PairSet;      for ( n = 0; n < count; n++ )        Free_PairSet( &ps[n], format1, format2 );      FREE( ps );    }  }  /* PairPosFormat2 */  static TT_Error  Load_PairPos2( TTO_PairPosFormat2*  ppf2,                                  UShort               format1,                                  UShort               format2,                                  PFace                input )  {    DEFINE_LOAD_LOCALS( input->stream );    UShort             m, n, count1, count2;    ULong              cur_offset, new_offset1, new_offset2, base_offset;    TTO_Class1Record*  c1r;    TTO_Class2Record*  c2r;    base_offset = FILE_Pos() - 8L;    if ( ACCESS_Frame( 8L ) )      return error;    new_offset1 = GET_UShort() + base_offset;    new_offset2 = GET_UShort() + base_offset;    /* `Class1Count' and `Class2Count' are the upper limits for class       values, thus we read it now to make additional safety checks.  */    count1 = ppf2->Class1Count = GET_UShort();    count2 = ppf2->Class2Count = GET_UShort();    FORGET_Frame();    cur_offset = FILE_Pos();    if ( FILE_Seek( new_offset1 ) ||         ( error = Load_ClassDefinition( &ppf2->ClassDef1, count1,                                         input ) ) != TT_Err_Ok )      return error;    if ( FILE_Seek( new_offset2 ) ||         ( error = Load_ClassDefinition( &ppf2->ClassDef2, count2,                                         input ) ) != TT_Err_Ok )      goto Fail2;    (void)FILE_Seek( cur_offset );    ppf2->Class1Record = NULL;    if ( ALLOC_ARRAY( ppf2->Class1Record, count1, TTO_Class1Record ) )      goto Fail1;    c1r = ppf2->Class1Record;    for ( m = 0; m < count1; m++ )    {      c1r[m].Class2Record = NULL;      if ( ALLOC_ARRAY( c1r[m].Class2Record, count2, TTO_Class2Record ) )        goto Fail1;      c2r = c1r[m].Class2Record;      for ( n = 0; n < count2; n++ )      {        if ( format1 )        {          error = Load_ValueRecord( &c2r[n].Value1, format1,                                    base_offset, input );          if ( error )            goto Fail1;        }        if ( format2 )        {          error = Load_ValueRecord( &c2r[n].Value2, format2,                                    base_offset, input );          if ( error )            goto Fail1;        }      }    }    return TT_Err_Ok;  Fail1:    for ( m = 0; m < count1; m++ )    {      c2r = c1r[m].Class2Record;      for ( n = 0; n < count2; n++ )      {        if ( format1 )          Free_ValueRecord( &c2r[n].Value1, format1 );        if ( format2 )          Free_ValueRecord( &c2r[n].Value2, format2 );      }      FREE( c2r );    }    FREE( c1r );    Free_ClassDefinition( &ppf2->ClassDef2 );  Fail2:    Free_ClassDefinition( &ppf2->ClassDef1 );    return error;  }  static void  Free_PairPos2( TTO_PairPosFormat2*  ppf2,                              UShort               format1,                              UShort               format2 )  {    UShort             m, n, count1, count2;    TTO_Class1Record*  c1r;    TTO_Class2Record*  c2r;    if ( ppf2->Class1Record )    {      c1r    = ppf2->Class1Record;      count1 = ppf2->Class1Count;      count2 = ppf2->Class2Count;      for ( m = 0; m < count1; m++ )      {        c2r = c1r[m].Class2Record;        for ( n = 0; n < count2; n++ )        {          if ( format1 )            Free_ValueRecord( &c2r[n].Value1, format1 );          if ( format2 )            Free_ValueRecord( &c2r[n].Value2, format2 );        }        FREE( c2r );      }      FREE( c1r );      Free_ClassDefinition( &ppf2->ClassDef2 );      Free_ClassDefinition( &ppf2->ClassDef1 );    }  }  TT_Error  Load_PairPos( TTO_PairPos*  pp,                          PFace         input )  {    DEFINE_LOAD_LOCALS( input->stream );    UShort            format1, format2;    ULong             cur_offset, new_offset, base_offset;    base_offset = FILE_Pos();    if ( ACCESS_Frame( 8L ) )      return error;    pp->PosFormat = GET_UShort();    new_offset    = GET_UShort() + base_offset;    format1 = pp->ValueFormat1 = GET_UShort();    format2 = pp->ValueFormat2 = GET_UShort();    FORGET_Frame();    cur_offset = FILE_Pos();    if ( FILE_Seek( new_offset ) ||         ( error = Load_Coverage( &pp->Coverage, input ) ) != TT_Err_Ok )      return error;    (void)FILE_Seek( cur_offset );    switch ( pp->PosFormat )    {    case 1:      error = Load_PairPos1( &pp->ppf.ppf1, format1, format2, input );      if ( error )        goto Fail;      break;    case 2:      error = Load_PairPos2( &pp->ppf.ppf2, format1, format2, input );      if ( error )        goto Fail;      break;    default:      return TTO_Err_Invalid_GPOS_SubTable_Format;    }    return TT_Err_Ok;  Fail:    Free_Coverage( &pp->Coverage );    return error;  }  void  Free_PairPos( TTO_PairPos*  pp )  {    UShort  format1, format2;    format1 = pp->ValueFormat1;    format2 = pp->ValueFormat2;    switch ( pp->PosFormat )    {    case 1:      Free_PairPos1( &pp->ppf.ppf1, format1, format2 );      break;    case 2:      Free_PairPos2( &pp->ppf.ppf2, format1, format2 );      break;    }    Free_Coverage( &pp->Coverage );  }  static TT_Error  Lookup_PairPos1( GPOS_Instance*       gpi,                                    TTO_PairPosFormat1*  ppf1,                                    TTO_GSUB_String*     in,                                    TTO_GPOS_Data*       out,                                    UShort               first_pos,                                    UShort               index,                                    UShort               format1,                                    UShort               format2 )  {    TT_Error              error;    UShort                numpvr, glyph2;    TTO_PairValueRecord*  pvr;    if ( index >= ppf1->PairSetCount )       return TTO_Err_Invalid_GPOS_SubTable;    pvr = ppf1->PairSet[index].PairValueRecord;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产综合在线| 日本女人一区二区三区| 午夜精品福利久久久| 国产乱码精品一品二品| 91久久精品网| 欧美xxxxx牲另类人与| 中文字幕综合网| 国模一区二区三区白浆| 欧美视频在线一区| 国产精品视频观看| 麻豆一区二区三| 欧美人与z0zoxxxx视频| 亚洲欧美偷拍卡通变态| 国模无码大尺度一区二区三区| 欧美三级电影网站| 亚洲靠逼com| 成人ar影院免费观看视频| 欧美一卡二卡三卡| 亚洲午夜久久久久久久久电影院| 风间由美一区二区三区在线观看 | 欧美无人高清视频在线观看| 欧美tk—视频vk| 亚洲成a人片综合在线| 99精品欧美一区| 国产日产精品一区| 国产麻豆精品theporn| 欧美一卡在线观看| 日本欧洲一区二区| 欧美一区二区三区在线视频 | 亚洲欧美在线视频| 国产成人免费视频网站| 久久久美女艺术照精彩视频福利播放| 男男成人高潮片免费网站| 91九色02白丝porn| 亚洲女同一区二区| 91麻豆国产在线观看| 国产精品不卡视频| 99久久国产综合精品麻豆| 国产精品午夜春色av| 国产高清精品久久久久| 国产午夜精品一区二区| 成人黄动漫网站免费app| 欧美激情一区二区三区四区| 国产黄色成人av| 中文字幕av一区二区三区| 成人黄色综合网站| 1024精品合集| 欧美性受xxxx| 偷拍日韩校园综合在线| 欧美一区二区三区婷婷月色| 久久精品国产在热久久| 久久综合久久鬼色| 99国产精品一区| 一区二区三区国产精品| 91精品一区二区三区久久久久久 | 精品国产不卡一区二区三区| 久久 天天综合| 国产精品天天看| 欧美色成人综合| 久久国产欧美日韩精品| 国产精品久久一卡二卡| 欧美日韩一区二区三区在线| 久久99精品国产.久久久久久| 国产亚洲欧美日韩在线一区| 91在线码无精品| 国产在线精品一区二区不卡了 | 99视频精品全部免费在线| 一区二区三区在线视频免费| 欧美一区二区三区免费大片| 国产福利电影一区二区三区| 夜夜嗨av一区二区三区四季av | 欧美高清激情brazzers| 精品一区二区三区不卡| 亚洲乱码国产乱码精品精小说| 在线成人小视频| 岛国精品一区二区| 日本午夜精品视频在线观看 | 欧美精品一区二区三区蜜桃视频| av中文一区二区三区| 日本午夜精品视频在线观看| 中文字幕一区二区5566日韩| 欧美一区二区视频在线观看| 99re热这里只有精品免费视频| 男男gaygay亚洲| 亚洲综合激情小说| 久久一区二区三区四区| 欧美区一区二区三区| 99久久婷婷国产综合精品| 久草精品在线观看| 亚洲成人久久影院| 亚洲视频每日更新| 久久久国产午夜精品| 777午夜精品免费视频| 91首页免费视频| 国产成人在线视频网站| 奇米色一区二区| 亚洲综合色婷婷| 自拍偷拍国产精品| 欧美国产一区视频在线观看| 精品日产卡一卡二卡麻豆| 欧美三级三级三级| 欧美系列在线观看| 在线欧美一区二区| 94色蜜桃网一区二区三区| 成人综合激情网| 国产精品一区二区三区99 | 婷婷综合久久一区二区三区| ...xxx性欧美| 国产精品久久久久精k8 | 波多野结衣中文字幕一区二区三区| 日韩高清不卡一区二区三区| 亚洲国产日韩a在线播放性色| 国产精品久久久久婷婷二区次| 精品成a人在线观看| 日韩久久免费av| 欧美大片在线观看一区二区| 欧美日韩在线一区二区| 欧美三日本三级三级在线播放| 欧美亚洲综合在线| 欧美三级电影精品| 欧美一区日韩一区| 欧美成人高清电影在线| 亚洲精品一区二区三区在线观看| 欧美一区二区大片| 久久综合色婷婷| 欧美国产日韩在线观看| 日本一区二区三区久久久久久久久不 | 在线成人免费视频| 91精品婷婷国产综合久久竹菊| 91麻豆精品久久久久蜜臀| 日韩午夜av一区| 久久久久久久精| 国产精品高潮久久久久无| 亚洲欧洲日韩在线| 一区二区三区中文在线| 日日夜夜精品免费视频| 久久99精品久久久久婷婷| 国产成人精品影视| 色综合天天综合色综合av| 在线影视一区二区三区| 欧美一区2区视频在线观看| 久久综合久久鬼色中文字| 欧美国产1区2区| 一区二区理论电影在线观看| 天天综合日日夜夜精品| 久草精品在线观看| 91麻豆免费观看| 91麻豆精品国产自产在线 | 不卡的av在线播放| 精品视频全国免费看| 日韩免费视频线观看| 国产欧美一区二区三区鸳鸯浴 | 精品国产乱码91久久久久久网站| 久久日韩精品一区二区五区| 中文字幕一区二区视频| 午夜精品一区在线观看| 国产成人综合网| 欧美日韩国产首页在线观看| 久久久久久久综合| 一区二区在线观看免费| 另类调教123区| 91在线精品一区二区| 日韩欧美一级二级三级久久久| 国产精品网友自拍| 蜜臀精品久久久久久蜜臀| 99re免费视频精品全部| 精品蜜桃在线看| 亚洲午夜激情网页| 国产成人精品免费在线| 欧美日韩一区在线| 中文字幕在线不卡视频| 国产综合久久久久久鬼色| 精品视频一区二区不卡| 一区视频在线播放| 韩国欧美国产一区| 欧美日韩三级一区二区| 中文字幕亚洲在| 国产激情一区二区三区桃花岛亚洲| 欧美精品一二三| 亚洲精品成人精品456| 国产伦精品一区二区三区在线观看| 欧美午夜在线一二页| 亚洲欧洲日韩在线| 成人在线综合网| 国产午夜久久久久| 国产麻豆精品95视频| 欧美大肚乱孕交hd孕妇| 五月婷婷激情综合| 色综合中文字幕国产 | 懂色av一区二区三区蜜臀| 欧美一区二区三区四区高清| 亚洲午夜精品网| 91福利社在线观看| 日韩美女视频一区二区| 99久久久国产精品免费蜜臀| 国产精品网曝门| 99久免费精品视频在线观看 | 日韩av一区二区三区四区| 欧洲亚洲国产日韩| 亚洲一区视频在线观看视频|