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

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

?? t1load.c

?? a very goog book
?? C
?? 第 1 頁 / 共 4 頁
字號:
  parse_blend_design_positions( T1_Face    face,                                T1_Loader  loader )  {    T1_TokenRec  design_tokens[ T1_MAX_MM_DESIGNS ];    FT_Int       num_designs;    FT_Int       num_axis;    T1_Parser    parser = &loader->parser;    FT_Error     error = 0;    PS_Blend     blend;    /* get the array of design tokens - compute number of designs */    T1_ToTokenArray( parser, design_tokens, T1_MAX_MM_DESIGNS, &num_designs );    if ( num_designs <= 0 || num_designs > T1_MAX_MM_DESIGNS )    {      FT_ERROR(( "parse_blend_design_positions:" ));      FT_ERROR(( " incorrect number of designs: %d\n",                 num_designs ));      error = T1_Err_Invalid_File_Format;      goto Exit;    }    {      FT_Byte*  old_cursor = parser->root.cursor;      FT_Byte*  old_limit  = parser->root.limit;      FT_UInt   n;      blend    = face->blend;      num_axis = 0;  /* make compiler happy */      for ( n = 0; n < (FT_UInt)num_designs; n++ )      {        T1_TokenRec  axis_tokens[ T1_MAX_MM_DESIGNS ];        T1_Token     token;        FT_Int       axis, n_axis;        /* read axis/coordinates tokens */        token = design_tokens + n;        parser->root.cursor = token->start - 1;        parser->root.limit  = token->limit + 1;        T1_ToTokenArray( parser, axis_tokens, T1_MAX_MM_AXIS, &n_axis );        if ( n == 0 )        {          num_axis = n_axis;          error = t1_allocate_blend( face, num_designs, num_axis );          if ( error )            goto Exit;          blend = face->blend;        }        else if ( n_axis != num_axis )        {          FT_ERROR(( "parse_blend_design_positions: incorrect table\n" ));          error = T1_Err_Invalid_File_Format;          goto Exit;        }        /* now, read each axis token into the design position */        for ( axis = 0; axis < n_axis; axis++ )        {          T1_Token  token2 = axis_tokens + axis;          parser->root.cursor = token2->start;          parser->root.limit  = token2->limit;          blend->design_pos[n][axis] = T1_ToFixed( parser, 0 );        }      }      loader->parser.root.cursor = old_cursor;      loader->parser.root.limit  = old_limit;    }  Exit:    loader->parser.root.error = error;  }  static void  parse_blend_design_map( T1_Face    face,                          T1_Loader  loader )  {    FT_Error     error  = 0;    T1_Parser    parser = &loader->parser;    PS_Blend     blend;    T1_TokenRec  axis_tokens[T1_MAX_MM_AXIS];    FT_Int       n, num_axis;    FT_Byte*     old_cursor;    FT_Byte*     old_limit;    FT_Memory    memory = face->root.memory;    T1_ToTokenArray( parser, axis_tokens, T1_MAX_MM_AXIS, &num_axis );    if ( num_axis <= 0 || num_axis > T1_MAX_MM_AXIS )    {      FT_ERROR(( "parse_blend_design_map: incorrect number of axes: %d\n",                 num_axis ));      error = T1_Err_Invalid_File_Format;      goto Exit;    }    old_cursor = parser->root.cursor;    old_limit  = parser->root.limit;    error = t1_allocate_blend( face, 0, num_axis );    if ( error )      goto Exit;    blend = face->blend;    /* now, read each axis design map */    for ( n = 0; n < num_axis; n++ )    {      PS_DesignMap  map = blend->design_map + n;      T1_Token      token;      FT_Int        p, num_points;      token = axis_tokens + n;      parser->root.cursor = token->start;      parser->root.limit  = token->limit;      /* count the number of map points */      {        FT_Byte*  ptr   = token->start;        FT_Byte*  limit = token->limit;        num_points = 0;        for ( ; ptr < limit; ptr++ )          if ( ptr[0] == '[' )            num_points++;      }      if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS )      {        FT_ERROR(( "parse_blend_design_map: incorrect table\n" ));        error = T1_Err_Invalid_File_Format;        goto Exit;      }      /* allocate design map data */      if ( FT_NEW_ARRAY( map->design_points, num_points * 2 ) )        goto Exit;      map->blend_points = map->design_points + num_points;      map->num_points   = (FT_Byte)num_points;      for ( p = 0; p < num_points; p++ )      {        map->design_points[p] = T1_ToInt( parser );        map->blend_points [p] = T1_ToFixed( parser, 0 );      }    }    parser->root.cursor = old_cursor;    parser->root.limit  = old_limit;  Exit:    parser->root.error = error;  }  static void  parse_weight_vector( T1_Face    face,                       T1_Loader  loader )  {    FT_Error     error  = 0;    T1_Parser    parser = &loader->parser;    PS_Blend     blend  = face->blend;    T1_TokenRec  master;    FT_UInt      n;    FT_Byte*     old_cursor;    FT_Byte*     old_limit;    if ( !blend || blend->num_designs == 0 )    {      FT_ERROR(( "parse_weight_vector: too early!\n" ));      error = T1_Err_Invalid_File_Format;      goto Exit;    }    T1_ToToken( parser, &master );    if ( master.type != T1_TOKEN_TYPE_ARRAY )    {      FT_ERROR(( "parse_weight_vector: incorrect format!\n" ));      error = T1_Err_Invalid_File_Format;      goto Exit;    }    old_cursor = parser->root.cursor;    old_limit  = parser->root.limit;    parser->root.cursor = master.start;    parser->root.limit  = master.limit;    for ( n = 0; n < blend->num_designs; n++ )    {      blend->default_weight_vector[n] =      blend->weight_vector[n]         = T1_ToFixed( parser, 0 );    }    parser->root.cursor = old_cursor;    parser->root.limit  = old_limit;  Exit:    parser->root.error = error;  }  /* the keyword `/shareddict' appears in some multiple master fonts   */  /* with a lot of Postscript garbage behind it (that's completely out */  /* of spec!); we detect it and terminate the parsing                 */  /*                                                                   */  static void  parse_shared_dict( T1_Face    face,                     T1_Loader  loader )  {    T1_Parser  parser = &loader->parser;    FT_UNUSED( face );    parser->root.cursor = parser->root.limit;    parser->root.error  = 0;  }#endif /* T1_CONFIG_OPTION_NO_MM_SUPPORT */  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                      TYPE 1 SYMBOL PARSING                    *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*                                                                       */  /* First of all, define the token field static variables.  This is a set */  /* of T1_FieldRec variables used later.                                  */  /*                                                                       */  /*************************************************************************/  static FT_Error  t1_load_keyword( T1_Face    face,                   T1_Loader  loader,                   T1_Field   field )  {    FT_Error  error;    void*     dummy_object;    void**    objects;    FT_UInt   max_objects;    PS_Blend  blend = face->blend;    /* if the keyword has a dedicated callback, call it */    if ( field->type == T1_FIELD_TYPE_CALLBACK )    {      field->reader( (FT_Face)face, loader );      error = loader->parser.root.error;      goto Exit;    }    /* now, the keyword is either a simple field, or a table of fields; */    /* we are now going to take care of it                              */    switch ( field->location )    {    case T1_FIELD_LOCATION_FONT_INFO:      dummy_object = &face->type1.font_info;      objects      = &dummy_object;      max_objects  = 0;      if ( blend )      {        objects     = (void**)blend->font_infos;        max_objects = blend->num_designs;      }      break;    case T1_FIELD_LOCATION_PRIVATE:      dummy_object = &face->type1.private_dict;      objects      = &dummy_object;      max_objects  = 0;      if ( blend )      {        objects     = (void**)blend->privates;        max_objects = blend->num_designs;      }      break;    default:      dummy_object = &face->type1;      objects      = &dummy_object;      max_objects  = 0;    }    if ( field->type == T1_FIELD_TYPE_INTEGER_ARRAY ||         field->type == T1_FIELD_TYPE_FIXED_ARRAY   )      error = T1_Load_Field_Table( &loader->parser, field,                                   objects, max_objects, 0 );    else      error = T1_Load_Field( &loader->parser, field,                             objects, max_objects, 0 );  Exit:    return error;  }  static int  is_space( FT_Byte  c )  {    return ( c == ' ' || c == '\t' || c == '\r' || c == '\n' );  }  static int  is_alpha( FT_Byte  c )  {    /* Note: we must accept "+" as a valid character, as it is used in */    /*       embedded type1 fonts in PDF documents.                    */    /*                                                                 */    return ( ft_isalnum( c ) ||             c == '.'        ||             c == '_'        ||             c == '-'        ||             c == '+'        );  }  static int  read_binary_data( T1_Parser  parser,                    FT_Int*    size,                    FT_Byte**  base )  {    FT_Byte*  cur;    FT_Byte*  limit = parser->root.limit;    /* the binary data has the following format */    /*                                          */    /* `size' [white*] RD white ....... ND      */    /*                                          */    T1_Skip_Spaces( parser );    cur = parser->root.cursor;    if ( cur < limit && (FT_Byte)( *cur - '0' ) < 10 )    {      *size = T1_ToInt( parser );      T1_Skip_Spaces( parser );      T1_Skip_Alpha ( parser );  /* `RD' or `-|' or something else */      /* there is only one whitespace char after the */      /* `RD' or `-|' token                          */      *base = parser->root.cursor + 1;      parser->root.cursor += *size + 1;      return 1;    }    FT_ERROR(( "read_binary_data: invalid size field\n" ));    parser->root.error = T1_Err_Invalid_File_Format;    return 0;  }  /* we will now define the routines used to handle */  /* the `/Encoding', `/Subrs', and `/CharStrings'  */  /* dictionaries                                   */  static void  parse_font_name( T1_Face    face,                   T1_Loader  loader )  {    T1_Parser  parser = &loader->parser;    FT_Error   error;    FT_Memory  memory = parser->root.memory;    FT_Int     len;    FT_Byte*   cur;    FT_Byte*   cur2;    FT_Byte*   limit;    if ( face->type1.font_name )      /*  with synthetic fonts, it's possible we get here twice  */      return;    T1_Skip_Spaces( parser );    cur   = parser->root.cursor;    limit = parser->root.limit;    if ( cur >= limit - 1 || *cur != '/' )      return;    cur++;    cur2 = cur;    while ( cur2 < limit && is_alpha( *cur2 ) )      cur2++;    len = (FT_Int)( cur2 - cur );    if ( len > 0 )    {      if ( FT_ALLOC( face->type1.font_name, len + 1 ) )      {        parser->root.error = error;        return;      }      FT_MEM_COPY( face->type1.font_name, cur, len );      face->type1.font_name[len] = '\0';    }    parser->root.cursor = cur2;  }  static void  parse_font_bbox( T1_Face    face,                   T1_Loader  loader )  {    T1_Parser  parser = &loader->parser;    FT_Fixed   temp[4];    FT_BBox*   bbox   = &face->type1.font_bbox;    (void)T1_ToFixedArray( parser, 4, temp, 0 );    bbox->xMin = FT_RoundFix( temp[0] );    bbox->yMin = FT_RoundFix( temp[1] );    bbox->xMax = FT_RoundFix( temp[2] );    bbox->yMax = FT_RoundFix( temp[3] );  }  static void  parse_font_matrix( T1_Face    face,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文一区一区三区高中清不卡| 欧美性猛交xxxx乱大交退制版| 综合久久久久久久| 欧美人xxxx| 99久久国产综合精品女不卡| 天堂va蜜桃一区二区三区| 国产精品区一区二区三| 欧美猛男男办公室激情| 成人午夜在线免费| 久久成人综合网| 一区二区三区资源| 国产欧美久久久精品影院| 7777精品伊人久久久大香线蕉完整版 | 久久香蕉国产线看观看99| 欧美日韩精品欧美日韩精品一 | 91日韩精品一区| 精品一区二区在线播放| 亚洲国产成人tv| 中文字幕一区二区三区色视频| 26uuu另类欧美亚洲曰本| 欧美久久久久免费| 在线视频国内自拍亚洲视频| 99久久亚洲一区二区三区青草| 黄色精品一二区| 免费观看成人av| 日本不卡一二三| 午夜免费久久看| 亚洲一区二区视频在线观看| 中文字幕在线一区二区三区| 国产农村妇女毛片精品久久麻豆| 亚洲精品在线免费观看视频| 欧美一级片在线观看| 欧美喷水一区二区| 欧美日韩一区小说| 精品婷婷伊人一区三区三| 色88888久久久久久影院野外| 91伊人久久大香线蕉| 91在线看国产| 一本色道亚洲精品aⅴ| 一本大道av伊人久久综合| 97国产一区二区| 一本到不卡精品视频在线观看 | 欧美精品一区二区在线播放| 欧美一区二区在线视频| 日韩欧美一区电影| 日韩精品一区二区三区视频播放| 日韩欧美在线网站| 日韩免费一区二区三区在线播放| 91超碰这里只有精品国产| 欧美高清www午色夜在线视频| 日韩一区二区三区免费观看 | 国产精品高清亚洲| 日韩伦理免费电影| 亚洲自拍欧美精品| 午夜成人免费视频| 美女网站在线免费欧美精品| 狠狠色综合播放一区二区| 国产一区二区在线看| 成人av网站在线观看免费| 色综合天天综合网国产成人综合天| 91激情在线视频| 337p亚洲精品色噜噜| 欧美变态凌虐bdsm| 国产女主播一区| 一区二区三区欧美激情| 午夜a成v人精品| 国产成人在线视频免费播放| 91丨porny丨国产入口| 欧美久久久久久蜜桃| 久久久91精品国产一区二区精品| 欧美国产日韩精品免费观看| 亚洲美女免费视频| 奇米777欧美一区二区| 国产成人av福利| 色偷偷88欧美精品久久久 | 国产精品久久国产精麻豆99网站| 亚洲精品第1页| 老汉av免费一区二区三区| 高清不卡一区二区在线| 欧美日韩日日夜夜| 久久蜜桃一区二区| 亚洲一区二区三区中文字幕| 免费看欧美女人艹b| 成人毛片在线观看| 777精品伊人久久久久大香线蕉| 国产片一区二区三区| 午夜久久久久久电影| 国产美女精品在线| 欧美丝袜自拍制服另类| 久久人人超碰精品| 亚洲高清一区二区三区| 国产成人精品一区二区三区四区| 欧洲精品在线观看| 国产日韩影视精品| 天堂影院一区二区| 91原创在线视频| 久久麻豆一区二区| 五月天网站亚洲| 91亚洲男人天堂| 26uuu国产电影一区二区| 一区二区三区产品免费精品久久75| 国产一区二区三区| 欧美精品第1页| 亚洲日本中文字幕区| 国产一区二区不卡| 欧美一区二区三区视频免费| 亚洲精选视频免费看| 丰满少妇在线播放bd日韩电影| 欧美精品一级二级三级| 一区二区三区日韩| 成人h动漫精品| 国产调教视频一区| 久久电影网电视剧免费观看| 欧美美女一区二区三区| 亚洲另类在线一区| 北条麻妃国产九九精品视频| 欧美成人aa大片| 日本aⅴ免费视频一区二区三区 | 国产亲近乱来精品视频| 精品在线一区二区| 日韩免费观看高清完整版在线观看| 亚洲成人免费在线| 欧美日韩免费在线视频| 一区二区三区四区激情 | 91精品国产一区二区三区蜜臀 | 久久九九久久九九| 久久99国产精品麻豆| 日韩天堂在线观看| 免费一级欧美片在线观看| 欧美日韩高清在线| 性做久久久久久久久| 欧美日韩一区二区在线视频| 一区二区三区四区国产精品| 欧洲一区二区av| 一区二区三区成人| 欧美性一二三区| 天天综合网天天综合色| 国产成人综合亚洲网站| 国产欧美一区二区三区鸳鸯浴 | 在线一区二区三区四区五区| 一区二区三区资源| 欧美精品免费视频| 日av在线不卡| 日韩欧美电影在线| 国产一区二区调教| 中文字幕第一区二区| 不卡大黄网站免费看| 亚洲男同性视频| 欧美日韩激情在线| 日本aⅴ亚洲精品中文乱码| 精品国产电影一区二区| 国产精品456| 国产精品视频第一区| 一本色道**综合亚洲精品蜜桃冫| 亚洲一区二区三区在线| 91精品国产综合久久久久| 久88久久88久久久| 国产精品久久久久久久久免费桃花 | 国产成人精品亚洲午夜麻豆| 亚洲图片激情小说| 欧美日精品一区视频| 国产在线国偷精品产拍免费yy| 国产精品系列在线| 欧美伊人久久大香线蕉综合69| 蜜桃视频一区二区| 国产精品系列在线| 欧美剧情片在线观看| 国产精品888| 夜夜揉揉日日人人青青一国产精品 | 天堂一区二区在线免费观看| 久久久久久久免费视频了| 91一区二区在线观看| 玖玖九九国产精品| 国产精品视频免费| 欧美乱熟臀69xxxxxx| 国产精品资源站在线| 亚洲一区在线观看免费 | 欧美日韩一区视频| 福利一区二区在线| 亚洲国产精品一区二区久久| 26uuu亚洲综合色| 在线一区二区三区四区五区| 激情文学综合网| 亚洲曰韩产成在线| 国产色产综合色产在线视频| 欧美亚一区二区| 国产成人精品免费一区二区| 亚洲成人免费在线观看| 国产精品欧美一区喷水| 欧美日韩一区三区| 北条麻妃一区二区三区| 九九热在线视频观看这里只有精品| 亚洲日本va午夜在线电影| 精品久久人人做人人爱| 欧美私人免费视频| 99re这里都是精品| 国产乱码字幕精品高清av | 久久久影院官网| 欧美日韩电影在线播放| 91啪在线观看|