您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FT_READ_USHORT函数代码示例

51自学网 2021-06-01 20:44:39
  C++
这篇教程C++ FT_READ_USHORT函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FT_READ_USHORT函数的典型用法代码示例。如果您正苦于以下问题:C++ FT_READ_USHORT函数的具体用法?C++ FT_READ_USHORT怎么用?C++ FT_READ_USHORT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FT_READ_USHORT函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: pfr_log_font_count

  pfr_log_font_count( FT_Stream  stream,                      FT_UInt32  section_offset,                      FT_Long   *acount )  {    FT_Error  error;    FT_UInt   count;    FT_UInt   result = 0;    if ( FT_STREAM_SEEK( section_offset ) ||         FT_READ_USHORT( count )          )      goto Exit;    /* check maximum value and a rough minimum size */    if ( count > ( ( 1 << 16 ) - 2 ) / 5                ||         2 + count * 5 >= stream->size - section_offset )    {      FT_ERROR(( "pfr_log_font_count:"                 " invalid number of logical fonts/n" ));      error = FT_THROW( Invalid_Table );      goto Exit;    }    result = count;  Exit:    *acount = (FT_Long)result;    return error;  }
开发者ID:AaronNGray,项目名称:texlive-libs,代码行数:29,


示例2: read_pfb_tag

  static FT_Error  read_pfb_tag( FT_Stream   stream,                FT_UShort  *atag,                FT_ULong   *asize )  {    FT_Error   error;    FT_UShort  tag;    FT_ULong   size;    *atag  = 0;    *asize = 0;    if ( !FT_READ_USHORT( tag ) )    {      if ( tag == 0x8001U || tag == 0x8002U )      {        if ( !FT_READ_ULONG_LE( size ) )          *asize = size;      }      *atag = tag;    }    return error;  }
开发者ID:PrinttingGroup,项目名称:SumatraPDF_SpecialPrint,代码行数:26,


示例3: pfr_log_font_count

  pfr_log_font_count( FT_Stream  stream,                      FT_UInt32  section_offset,                      FT_Long   *acount )  {    FT_Error  error;    FT_UInt   count;    FT_UInt   result = 0;    if ( FT_STREAM_SEEK( section_offset ) ||         FT_READ_USHORT( count )          )      goto Exit;    /* check maximum value and a rough minimum size:     */    /* - no more than 13106 log fonts                    */    /* - we need 5 bytes for a log header record         */    /* - we need at least 18 bytes for a log font record */    /* - the overall size is at least 95 bytes plus the  */    /*   log header and log font records                 */    if ( count > ( ( 1 << 16 ) - 2 ) / 5                ||         2 + count * 5 >= stream->size - section_offset ||         95 + count * ( 5 + 18 ) >= stream->size        )    {      FT_ERROR(( "pfr_log_font_count:"                 " invalid number of logical fonts/n" ));      error = FT_THROW( Invalid_Table );      goto Exit;    }    result = count;  Exit:    *acount = (FT_Long)result;    return error;  }
开发者ID:ImageMagick,项目名称:ttf,代码行数:35,


示例4: CFF_Load_FD_Select

  static FT_Error  CFF_Load_FD_Select( CFF_FDSelect  fdselect,                      FT_UInt       num_glyphs,                      FT_Stream     stream,                      FT_ULong      offset )  {    FT_Error  error;    FT_Byte   format;    FT_UInt   num_ranges;    /* read format */    if ( FT_STREAM_SEEK( offset ) || FT_READ_BYTE( format ) )      goto Exit;    fdselect->format      = format;    fdselect->cache_count = 0;   /* clear cache */    switch ( format )    {    case 0:     /* format 0, that's simple */      fdselect->data_size = num_glyphs;      goto Load_Data;    case 3:     /* format 3, a tad more complex */      if ( FT_READ_USHORT( num_ranges ) )        goto Exit;      if ( !num_ranges )      {        FT_TRACE0(( "CFF_Load_FD_Select: empty FDSelect array/n" ));        error = FT_THROW( Invalid_File_Format );        goto Exit;      }      fdselect->data_size = num_ranges * 3 + 2;    Load_Data:      if ( FT_FRAME_EXTRACT( fdselect->data_size, fdselect->data ) )        goto Exit;      break;    default:    /* hmm... that's wrong */      error = FT_THROW( Invalid_File_Format );    }  Exit:    return error;  }
开发者ID:ONLYOFFICE,项目名称:core,代码行数:49,


示例5: pfr_log_font_count

  pfr_log_font_count( FT_Stream  stream,                      FT_UInt32  section_offset,                      FT_UInt   *acount )  {    FT_Error  error;    FT_UInt   count;    FT_UInt   result = 0;    if ( FT_STREAM_SEEK( section_offset ) || FT_READ_USHORT( count ) )      goto Exit;    result = count;  Exit:    *acount = result;    return error;  }
开发者ID:Miguel-J,项目名称:eneboo-core,代码行数:18,


示例6: cff_charset_load

  static FT_Error  cff_charset_load( CFF_Charset  charset,                    FT_UInt      num_glyphs,                    FT_Stream    stream,                    FT_ULong     base_offset,                    FT_ULong     offset,                    FT_Bool      invert )  {    FT_Memory  memory = stream->memory;    FT_Error   error  = CFF_Err_Ok;    FT_UShort  glyph_sid;    /* If the the offset is greater than 2, we have to parse the */    /* charset table.                                            */    if ( offset > 2 )    {      FT_UInt  j;      charset->offset = base_offset + offset;      /* Get the format of the table. */      if ( FT_STREAM_SEEK( charset->offset ) ||           FT_READ_BYTE( charset->format )   )        goto Exit;      /* Allocate memory for sids. */      if ( FT_NEW_ARRAY( charset->sids, num_glyphs ) )        goto Exit;      /* assign the .notdef glyph */      charset->sids[0] = 0;      switch ( charset->format )      {      case 0:        if ( num_glyphs > 0 )        {          if ( FT_FRAME_ENTER( ( num_glyphs - 1 ) * 2 ) )            goto Exit;          for ( j = 1; j < num_glyphs; j++ )            charset->sids[j] = FT_GET_USHORT();          FT_FRAME_EXIT();        }        break;      case 1:      case 2:        {          FT_UInt  nleft;          FT_UInt  i;          j = 1;          while ( j < num_glyphs )          {            /* Read the first glyph sid of the range. */            if ( FT_READ_USHORT( glyph_sid ) )              goto Exit;            /* Read the number of glyphs in the range.  */            if ( charset->format == 2 )            {              if ( FT_READ_USHORT( nleft ) )                goto Exit;            }            else            {              if ( FT_READ_BYTE( nleft ) )                goto Exit;            }            /* Fill in the range of sids -- `nleft + 1' glyphs. */            for ( i = 0; j < num_glyphs && i <= nleft; i++, j++, glyph_sid++ )              charset->sids[j] = glyph_sid;          }        }        break;      default:        FT_ERROR(( "cff_charset_load: invalid table format!/n" ));        error = CFF_Err_Invalid_File_Format;        goto Exit;      }    }    else    {      /* Parse default tables corresponding to offset == 0, 1, or 2.  */      /* CFF specification intimates the following:                   */      /*                                                              */      /* In order to use a predefined charset, the following must be  */      /* true: The charset constructed for the glyphs in the font's   */      /* charstrings dictionary must match the predefined charset in  */      /* the first num_glyphs.                                        */      charset->offset = offset;  /* record charset type *///.........这里部分代码省略.........
开发者ID:Ali-il,项目名称:gamekit,代码行数:101,


示例7: cff_encoding_load

//.........这里部分代码省略.........              }            }          }          /* simple check; one never knows what can be found in a font */          if ( encoding->count > 256 )            encoding->count = 256;        }        break;      default:        FT_ERROR(( "cff_encoding_load: invalid table format!/n" ));        error = CFF_Err_Invalid_File_Format;        goto Exit;      }      /* Parse supplemental encodings, if any. */      if ( encoding->format & 0x80 )      {        FT_UInt  gindex;        /* count supplements */        if ( FT_READ_BYTE( count ) )          goto Exit;        for ( j = 0; j < count; j++ )        {          /* Read supplemental glyph code. */          if ( FT_READ_BYTE( glyph_code ) )            goto Exit;          /* Read the SID associated with this glyph code. */          if ( FT_READ_USHORT( glyph_sid ) )            goto Exit;          /* Assign code to SID mapping. */          encoding->sids[glyph_code] = glyph_sid;          /* First, look up GID which has been assigned to */          /* SID glyph_sid.                                */          for ( gindex = 0; gindex < num_glyphs; gindex++ )          {            if ( charset->sids[gindex] == glyph_sid )            {              encoding->codes[glyph_code] = (FT_UShort)gindex;              break;            }          }        }      }    }    else    {      /* We take into account the fact a CFF font can use a predefined */      /* encoding without containing all of the glyphs encoded by this */      /* encoding (see the note at the end of section 12 in the CFF    */      /* specification).                                               */      switch ( (FT_UInt)offset )      {      case 0:        /* First, copy the code to SID mapping. */        FT_ARRAY_COPY( encoding->sids, cff_standard_encoding, 256 );        goto Populate;
开发者ID:Ali-il,项目名称:gamekit,代码行数:66,


示例8: _tt_face_check_patents

  static FT_Bool  _tt_face_check_patents( FT_Face  face )  {    FT_Stream  stream = face->stream;    FT_UInt    gindex;    FT_Error   error;    FT_Bool    result;    FT_Service_TTGlyf  service;    result = _tt_check_patents_in_table( face, TTAG_fpgm );    if ( result )      goto Exit;    result = _tt_check_patents_in_table( face, TTAG_prep );    if ( result )      goto Exit;    FT_FACE_FIND_SERVICE( face, service, TT_GLYF );    if ( service == NULL )      goto Exit;    for ( gindex = 0; gindex < (FT_UInt)face->num_glyphs; gindex++ )    {      FT_ULong  offset, num_ins, size;      FT_Int    num_contours;      offset = service->get_location( face, gindex, &size );      if ( size == 0 )        continue;      if ( FT_STREAM_SEEK( offset )      ||           FT_READ_SHORT( num_contours ) )        continue;      if ( num_contours >= 0 )  /* simple glyph */      {        if ( FT_STREAM_SKIP( 8 + num_contours * 2 ) )          continue;      }      else  /* compound glyph */      {        FT_Bool  has_instr = 0;        if ( FT_STREAM_SKIP( 8 ) )          continue;        /* now read each component */        for (;;)        {          FT_UInt  flags, toskip;          if( FT_READ_USHORT( flags ) )            break;          toskip = 2 + 1 + 1;          if ( ( flags & ( 1 << 0 ) ) != 0 )       /* ARGS_ARE_WORDS */            toskip += 2;          if ( ( flags & ( 1 << 3 ) ) != 0 )       /* WE_HAVE_A_SCALE */            toskip += 2;          else if ( ( flags & ( 1 << 6 ) ) != 0 )  /* WE_HAVE_X_Y_SCALE */            toskip += 4;          else if ( ( flags & ( 1 << 7 ) ) != 0 )  /* WE_HAVE_A_2x2 */            toskip += 8;          if ( ( flags & ( 1 << 8 ) ) != 0 )       /* WE_HAVE_INSTRUCTIONS */            has_instr = 1;          if ( FT_STREAM_SKIP( toskip ) )            goto NextGlyph;          if ( ( flags & ( 1 << 5 ) ) == 0 )       /* MORE_COMPONENTS */            break;        }        if ( !has_instr )          goto NextGlyph;      }      if ( FT_READ_USHORT( num_ins ) )        continue;      result = _tt_check_patents_in_range( stream, num_ins );      if ( result )        goto Exit;    NextGlyph:      ;    }  Exit:    return result;  }
开发者ID:sheldonrobinson,项目名称:VcXsrv,代码行数:99,


示例9: cff_index_init

  static FT_Error  cff_index_init( CFF_Index  idx,                  FT_Stream  stream,                  FT_Bool    load )  {    FT_Error   error;    FT_Memory  memory = stream->memory;    FT_UShort  count;    FT_MEM_ZERO( idx, sizeof ( *idx ) );    idx->stream = stream;    idx->start  = FT_STREAM_POS();    if ( !FT_READ_USHORT( count ) &&         count > 0                )    {      FT_Byte   offsize;      FT_ULong  size;      /* there is at least one element; read the offset size,           */      /* then access the offset table to compute the index's total size */      if ( FT_READ_BYTE( offsize ) )        goto Exit;      if ( offsize < 1 || offsize > 4 )      {        error = FT_Err_Invalid_Table;        goto Exit;      }      idx->count    = count;      idx->off_size = offsize;      size          = (FT_ULong)( count + 1 ) * offsize;      idx->data_offset = idx->start + 3 + size;      if ( FT_STREAM_SKIP( size - offsize ) )        goto Exit;      size = cff_index_read_offset( idx, &error );      if ( error )        goto Exit;      if ( size == 0 )      {        error = CFF_Err_Invalid_Table;        goto Exit;      }      idx->data_size = --size;      if ( load )      {        /* load the data */        if ( FT_FRAME_EXTRACT( size, idx->bytes ) )          goto Exit;      }      else      {        /* skip the data */        if ( FT_STREAM_SKIP( size ) )          goto Exit;      }    }  Exit:    if ( error )      FT_FREE( idx->offsets );    return error;  }
开发者ID:Ali-il,项目名称:gamekit,代码行数:73,


示例10: load_format_20

  static FT_Error  load_format_20( TT_Face    face,                  FT_Stream  stream,                  FT_ULong   post_limit )  {    FT_Memory   memory = stream->memory;    FT_Error    error;    FT_Int      num_glyphs;    FT_UShort   num_names;    FT_UShort*  glyph_indices = NULL;    FT_Char**   name_strings  = NULL;    if ( FT_READ_USHORT( num_glyphs ) )      goto Exit;    /* UNDOCUMENTED!  The number of glyphs in this table can be smaller */    /* than the value in the maxp table (cf. cyberbit.ttf).             */    /* There already exist fonts which have more than 32768 glyph names */    /* in this table, so the test for this threshold has been dropped.  */    if ( num_glyphs > face->max_profile.numGlyphs )    {      error = FT_THROW( Invalid_File_Format );      goto Exit;    }    /* load the indices */    {      FT_Int  n;      if ( FT_NEW_ARRAY ( glyph_indices, num_glyphs ) ||           FT_FRAME_ENTER( num_glyphs * 2L )          )        goto Fail;      for ( n = 0; n < num_glyphs; n++ )        glyph_indices[n] = FT_GET_USHORT();      FT_FRAME_EXIT();    }    /* compute number of names stored in table */    {      FT_Int  n;      num_names = 0;      for ( n = 0; n < num_glyphs; n++ )      {        FT_Int  idx;        idx = glyph_indices[n];        if ( idx >= 258 )        {          idx -= 257;          if ( idx > num_names )            num_names = (FT_UShort)idx;        }      }    }    /* now load the name strings */    {      FT_UShort  n;      if ( FT_NEW_ARRAY( name_strings, num_names ) )        goto Fail;      for ( n = 0; n < num_names; n++ )      {        FT_UInt  len;        if ( FT_STREAM_POS() >= post_limit )          break;        else        {          FT_TRACE6(( "load_format_20: %d byte left in post table/n",                      post_limit - FT_STREAM_POS() ));          if ( FT_READ_BYTE( len ) )            goto Fail1;        }        if ( len > post_limit                   ||             FT_STREAM_POS() > post_limit - len )        {          FT_Int  d = (FT_Int)post_limit - (FT_Int)FT_STREAM_POS();          FT_ERROR(( "load_format_20:"                     " exceeding string length (%d),"                     " truncating at end of post table (%d byte left)/n",//.........这里部分代码省略.........
开发者ID:hsmith,项目名称:freetype,代码行数:101,


示例11: load_format_25

  static FT_Error  load_format_25( TT_Face    face,                  FT_Stream  stream,                  FT_ULong   post_limit )  {    FT_Memory  memory = stream->memory;    FT_Error   error;    FT_Int     num_glyphs;    FT_Char*   offset_table = NULL;    FT_UNUSED( post_limit );    /* UNDOCUMENTED!  This value appears only in the Apple TT specs. */    if ( FT_READ_USHORT( num_glyphs ) )      goto Exit;    /* check the number of glyphs */    if ( num_glyphs > face->max_profile.numGlyphs || num_glyphs > 258 )    {      error = FT_THROW( Invalid_File_Format );      goto Exit;    }    if ( FT_NEW_ARRAY( offset_table, num_glyphs )   ||         FT_STREAM_READ( offset_table, num_glyphs ) )      goto Fail;    /* now check the offset table */    {      FT_Int  n;      for ( n = 0; n < num_glyphs; n++ )      {        FT_Long  idx = (FT_Long)n + offset_table[n];        if ( idx < 0 || idx > num_glyphs )        {          error = FT_THROW( Invalid_File_Format );          goto Fail;        }      }    }    /* OK, set table fields and exit successfully */    {      TT_Post_25  table = &face->postscript_names.names.format_25;      table->num_glyphs = (FT_UShort)num_glyphs;      table->offsets    = offset_table;    }    return FT_Err_Ok;  Fail:    FT_FREE( offset_table );  Exit:    return error;  }
开发者ID:hsmith,项目名称:freetype,代码行数:64,


示例12: pfr_log_font_load

  pfr_log_font_load( PFR_LogFont  log_font,                     FT_Stream    stream,                     FT_UInt      idx,                     FT_UInt32    section_offset,                     FT_Bool      size_increment )  {    FT_UInt    num_log_fonts;    FT_UInt    flags;    FT_UInt32  offset;    FT_UInt32  size;    FT_Error   error;    if ( FT_STREAM_SEEK( section_offset ) ||         FT_READ_USHORT( num_log_fonts )  )      goto Exit;    if ( idx >= num_log_fonts )      return FT_THROW( Invalid_Argument );    if ( FT_STREAM_SKIP( idx * 5 ) ||         FT_READ_USHORT( size )    ||         FT_READ_UOFF3 ( offset )  )      goto Exit;    /* save logical font size and offset */    log_font->size   = size;    log_font->offset = offset;    /* now, check the rest of the table before loading it */    {      FT_Byte*  p;      FT_Byte*  limit;      FT_UInt   local;      if ( FT_STREAM_SEEK( offset ) ||           FT_FRAME_ENTER( size )   )        goto Exit;      p     = stream->cursor;      limit = p + size;      PFR_CHECK( 13 );      log_font->matrix[0] = PFR_NEXT_LONG( p );      log_font->matrix[1] = PFR_NEXT_LONG( p );      log_font->matrix[2] = PFR_NEXT_LONG( p );      log_font->matrix[3] = PFR_NEXT_LONG( p );      flags = PFR_NEXT_BYTE( p );      local = 0;      if ( flags & PFR_LOG_STROKE )      {        local++;        if ( flags & PFR_LOG_2BYTE_STROKE )          local++;        if ( ( flags & PFR_LINE_JOIN_MASK ) == PFR_LINE_JOIN_MITER )          local += 3;      }      if ( flags & PFR_LOG_BOLD )      {        local++;        if ( flags & PFR_LOG_2BYTE_BOLD )          local++;      }      PFR_CHECK( local );      if ( flags & PFR_LOG_STROKE )      {        log_font->stroke_thickness = ( flags & PFR_LOG_2BYTE_STROKE )                                     ? PFR_NEXT_SHORT( p )                                     : PFR_NEXT_BYTE( p );        if ( ( flags & PFR_LINE_JOIN_MASK ) == PFR_LINE_JOIN_MITER )          log_font->miter_limit = PFR_NEXT_LONG( p );      }      if ( flags & PFR_LOG_BOLD )      {        log_font->bold_thickness = ( flags & PFR_LOG_2BYTE_BOLD )                                   ? PFR_NEXT_SHORT( p )                                   : PFR_NEXT_BYTE( p );      }      if ( flags & PFR_LOG_EXTRA_ITEMS )      {        error = pfr_extra_items_skip( &p, limit );        if ( error )          goto Fail;      }      PFR_CHECK( 5 );      log_font->phys_size   = PFR_NEXT_USHORT( p );      log_font->phys_offset = PFR_NEXT_ULONG( p );      if ( size_increment )      {//.........这里部分代码省略.........
开发者ID:ImageMagick,项目名称:ttf,代码行数:101,


示例13: load_format_20

  static FT_Error  load_format_20( TT_Face    face,                  FT_Stream  stream )  {    FT_Memory   memory = stream->memory;    FT_Error    error;    FT_Int      num_glyphs;    FT_UShort   num_names;    FT_UShort*  glyph_indices = 0;    FT_Char**   name_strings  = 0;    if ( FT_READ_USHORT( num_glyphs ) )      goto Exit;    /* UNDOCUMENTED!  The number of glyphs in this table can be smaller */    /* than the value in the maxp table (cf. cyberbit.ttf).             */    /* There already exist fonts which have more than 32768 glyph names */    /* in this table, so the test for this threshold has been dropped.  */    if ( num_glyphs > face->root.num_glyphs )    {      error = SFNT_Err_Invalid_File_Format;      goto Exit;    }    /* load the indices */    {      FT_Int  n;      if ( FT_NEW_ARRAY ( glyph_indices, num_glyphs ) ||           FT_FRAME_ENTER( num_glyphs * 2L )          )        goto Fail;      for ( n = 0; n < num_glyphs; n++ )        glyph_indices[n] = FT_GET_USHORT();      FT_FRAME_EXIT();    }    /* compute number of names stored in table */    {      FT_Int  n;      num_names = 0;      for ( n = 0; n < num_glyphs; n++ )      {        FT_Int  idx;        idx = glyph_indices[n];        if ( idx >= 258 )        {          idx -= 257;          if ( idx > num_names )            num_names = (FT_UShort)idx;        }      }    }    /* now load the name strings */    {      FT_UShort  n;      if ( FT_NEW_ARRAY( name_strings, num_names ) )        goto Fail;      for ( n = 0; n < num_names; n++ )      {        FT_UInt  len;        if ( FT_READ_BYTE  ( len )                    ||             FT_NEW_ARRAY( name_strings[n], len + 1 ) ||             FT_STREAM_READ  ( name_strings[n], len ) )          goto Fail1;        name_strings[n][len] = '/0';      }    }    /* all right, set table fields and exit successfuly */    {      TT_Post_20  table = &face->postscript_names.names.format_20;      table->num_glyphs    = (FT_UShort)num_glyphs;      table->num_names     = (FT_UShort)num_names;      table->glyph_indices = glyph_indices;      table->glyph_names   = name_strings;    }    return SFNT_Err_Ok;//.........这里部分代码省略.........
开发者ID:1tgr,项目名称:mobius,代码行数:101,


示例14: cff_new_index

  static FT_Error  cff_new_index( CFF_Index  idx,                 FT_Stream  stream,                 FT_Bool    load )  {    FT_Error   error;    FT_Memory  memory = stream->memory;    FT_UShort  count;    FT_MEM_ZERO( idx, sizeof ( *idx ) );    idx->stream = stream;    if ( !FT_READ_USHORT( count ) &&         count > 0                )    {      FT_Byte*   p;      FT_Byte    offsize;      FT_ULong   data_size;      FT_ULong*  poff;      /* there is at least one element; read the offset size,           */      /* then access the offset table to compute the index's total size */      if ( FT_READ_BYTE( offsize ) )        goto Exit;      idx->stream   = stream;      idx->count    = count;      idx->off_size = offsize;      data_size     = (FT_ULong)( count + 1 ) * offsize;      if ( FT_NEW_ARRAY( idx->offsets, count + 1 ) ||           FT_FRAME_ENTER( data_size )             )        goto Exit;      poff = idx->offsets;      p    = (FT_Byte*)stream->cursor;      for ( ; (FT_Short)count >= 0; count-- )      {        poff[0] = cff_get_offset( p, offsize );        poff++;        p += offsize;      }      FT_FRAME_EXIT();      idx->data_offset = FT_STREAM_POS();      data_size        = poff[-1] - 1;      if ( load )      {        /* load the data */        if ( FT_FRAME_EXTRACT( data_size, idx->bytes ) )          goto Exit;      }      else      {        /* skip the data */        if ( FT_STREAM_SKIP( data_size ) )          goto Exit;      }    }  Exit:    if ( error )      FT_FREE( idx->offsets );    return error;  }
开发者ID:OS2World,项目名称:LIB-SDL,代码行数:71,


示例15: pcf_get_metrics

  static FT_Error  pcf_get_metrics( FT_Stream  stream,                   PCF_Face   face )  {    FT_Error    error    = PCF_Err_Ok;    FT_Memory   memory   = FT_FACE(face)->memory;    FT_ULong    format, size;    PCF_Metric  metrics  = 0;    FT_ULong    nmetrics, i;    error = pcf_seek_to_table_type( stream,                                    face->toc.tables,                                    face->toc.count,                                    PCF_METRICS,                                    &format,                                    &size );    if ( error )      return error;    if ( FT_READ_ULONG_LE( format ) )      goto Bail;    if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT )     &&         !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) )      return PCF_Err_Invalid_File_Format;    if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )    {      if ( PCF_BYTE_ORDER( format ) == MSBFirst )        (void)FT_READ_ULONG( nmetrics );      else        (void)FT_READ_ULONG_LE( nmetrics );    }    else    {      if ( PCF_BYTE_ORDER( format ) == MSBFirst )        (void)FT_READ_USHORT( nmetrics );      else        (void)FT_READ_USHORT_LE( nmetrics );    }    if ( error )      return PCF_Err_Invalid_File_Format;    face->nmetrics = nmetrics;    FT_TRACE4(( "pcf_get_metrics:/n" ));    FT_TRACE4(( "  number of metrics: %d/n", nmetrics ));    /* rough estimate */    if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )    {      if ( nmetrics > size / PCF_METRIC_SIZE )        return PCF_Err_Invalid_Table;    }    else    {      if ( nmetrics > size / PCF_COMPRESSED_METRIC_SIZE )        return PCF_Err_Invalid_Table;    }    if ( FT_NEW_ARRAY( face->metrics, nmetrics ) )      return PCF_Err_Out_Of_Memory;    metrics = face->metrics;    for ( i = 0; i < nmetrics; i++ )    {      error = pcf_get_metric( stream, format, metrics + i );      metrics[i].bits = 0;      FT_TRACE5(( "  idx %d: width=%d, "                  "lsb=%d, rsb=%d, ascent=%d, descent=%d, swidth=%d/n",                  i,                  ( metrics + i )->characterWidth,                  ( metrics + i )->leftSideBearing,                  ( metrics + i )->rightSideBearing,                  ( metrics + i )->ascent,                  ( metrics + i )->descent,                  ( metrics + i )->attributes ));      if ( error )        break;    }    if ( error )      FT_FREE( face->metrics );  Bail:    return error;  }
开发者ID:4nakin,项目名称:Aquaria_clean,代码行数:92,


示例16: pcf_get_metrics

  static FT_Error  pcf_get_metrics( FT_Stream  stream,                   PCF_Face   face )  {    FT_Error    error    = PCF_Err_Ok;    FT_Memory   memory   = FT_FACE(face)->memory;    FT_ULong    format   = 0;    FT_ULong    size     = 0;    PCF_Metric  metrics  = 0;    int         i;    int         nmetrics = -1;    error = pcf_seek_to_table_type( stream,                                    face->toc.tables,                                    face->toc.count,                                    PCF_METRICS,                                    &format,                                    &size );    if ( error )      return error;    error = FT_READ_ULONG_LE( format );    if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT )     &&         !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) )      return PCF_Err_Invalid_File_Format;    if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )    {      if ( PCF_BYTE_ORDER( format ) == MSBFirst )        (void)FT_READ_ULONG( nmetrics );      else        (void)FT_READ_ULONG_LE( nmetrics );    }    else    {      if ( PCF_BYTE_ORDER( format ) == MSBFirst )        (void)FT_READ_USHORT( nmetrics );      else        (void)FT_READ_USHORT_LE( nmetrics );    }    if ( error || nmetrics == -1 )      return PCF_Err_Invalid_File_Format;    face->nmetrics = nmetrics;    if ( FT_NEW_ARRAY( face->metrics, nmetrics ) )      return PCF_Err_Out_Of_Memory;    metrics = face->metrics;    for ( i = 0; i < nmetrics; i++ )    {      pcf_get_metric( stream, format, metrics + i );      metrics[i].bits = 0;      FT_TRACE4(( "%d : width=%d, "                  "lsb=%d, rsb=%d, ascent=%d, descent=%d, swidth=%d/n",                  i,                  ( metrics + i )->characterWidth,                  ( metrics + i )->leftSideBearing,                  ( metrics + i )->rightSideBearing,                  ( metrics + i )->ascent,                  ( metrics + i )->descent,                  ( metrics + i )->attributes ));      if ( error )        break;    }    if ( error )      FT_FREE( face->metrics );    return error;  }
开发者ID:stefanhendriks,项目名称:dune2themaker,代码行数:75,


示例17: pcf_get_metrics

  static FT_Error  pcf_get_metrics( FT_Stream  stream,                   PCF_Face   face )  {    FT_Error    error;    FT_Memory   memory  = FT_FACE( face )->memory;    FT_ULong    format, size;    PCF_Metric  metrics = 0;    FT_ULong    nmetrics, i;    error = pcf_seek_to_table_type( stream,                                    face->toc.tables,                                    face->toc.count,                                    PCF_METRICS,                                    &format,                                    &size );    if ( error )      return error;    if ( FT_READ_ULONG_LE( format ) )      goto Bail;    if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT )     &&         !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) )      return FT_THROW( Invalid_File_Format );    if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )    {      if ( PCF_BYTE_ORDER( format ) == MSBFirst )        (void)FT_READ_ULONG( nmetrics );      else        (void)FT_READ_ULONG_LE( nmetrics );    }    else    {      if ( PCF_BYTE_ORDER( format ) == MSBFirst )        (void)FT_READ_USHORT( nmetrics );      else        (void)FT_READ_USHORT_LE( nmetrics );    }    if ( error )      return FT_THROW( Invalid_File_Format );    face->nmetrics = nmetrics;    if ( !nmetrics )      return FT_THROW( Invalid_Table );    FT_TRACE4(( "pcf_get_metrics:/n" ));    FT_TRACE4(( "  number of metrics: %d/n", nmetrics ));    /* rough estimate */    if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) )    {      if ( nmetrics > size / PCF_METRIC_SIZE )        return FT_THROW( Invalid_Table );    }    else    {      if ( nmetrics > size / PCF_COMPRESSED_METRIC_SIZE )        return FT_THROW( Invalid_Table );    }    if ( FT_NEW_ARRAY( face->metrics, nmetrics ) )      return FT_THROW( Out_Of_Memory );    metrics = face->metrics;    for ( i = 0; i < nmetrics; i++, metrics++ )    {      error = pcf_get_metric( stream, format, metrics );      metrics->bits = 0;      FT_TRACE5(( "  idx %d: width=%d, "                  "lsb=%d, rsb=%d, ascent=%d, descent=%d, swidth=%d/n",                  i,                  metrics->characterWidth,                  metrics->leftSideBearing,                  metrics->rightSideBearing,                  metrics->ascent,                  metrics->descent,                  metrics->attributes ));      if ( error )        break;      /* sanity checks -- those values are used in `PCF_Glyph_Load' to     */      /* compute a glyph's bitmap dimensions, thus setting them to zero in */      /* case of an error disables this particular glyph only              */      if ( metrics->rightSideBearing < metrics->leftSideBearing ||           metrics->ascent + metrics->descent < 0               )      {        metrics->characterWidth   = 0;        metrics->leftSideBearing  = 0;        metrics->rightSideBearing = 0;        metrics->ascent           = 0;        metrics->descent          = 0;//.........这里部分代码省略.........
开发者ID:OpenTechEngine,项目名称:OpenTechBFG,代码行数:101,


示例18: tt_face_get_metrics

  tt_face_get_metrics( TT_Face     face,                       FT_Bool     vertical,                       FT_UInt     gindex,                       FT_Short   *abearing,                       FT_UShort  *aadvance )  {    FT_Error        error;    FT_Stream       stream = face->root.stream;    TT_HoriHeader*  header;    FT_ULong        table_pos, table_size, table_end;    FT_UShort       k;#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT    FT_Service_MetricsVariations  var =      (FT_Service_MetricsVariations)face->var;#endif    if ( vertical )    {      void*  v = &face->vertical;      header     = (TT_HoriHeader*)v;      table_pos  = face->vert_metrics_offset;      table_size = face->vert_metrics_size;    }    else    {      header     = &face->horizontal;      table_pos  = face->horz_metrics_offset;      table_size = face->horz_metrics_size;    }    table_end = table_pos + table_size;    k = header->number_Of_HMetrics;    if ( k > 0 )    {      if ( gindex < (FT_UInt)k )      {        table_pos += 4 * gindex;        if ( table_pos + 4 > table_end )          goto NoData;        if ( FT_STREAM_SEEK( table_pos ) ||             FT_READ_USHORT( *aadvance ) ||             FT_READ_SHORT( *abearing )  )          goto NoData;      }      else      {        table_pos += 4 * ( k - 1 );        if ( table_pos + 4 > table_end )          goto NoData;        if ( FT_STREAM_SEEK( table_pos ) ||             FT_READ_USHORT( *aadvance ) )          goto NoData;        table_pos += 4 + 2 * ( gindex - k );        if ( table_pos + 2 > table_end )          *abearing = 0;        else        {          if ( !FT_STREAM_SEEK( table_pos ) )            (void)FT_READ_SHORT( *abearing );        }      }    }    else    {    NoData:      *abearing = 0;      *aadvance = 0;    }#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT    if ( var )    {      FT_Face  f = FT_FACE( face );      FT_Int   a = (FT_Int)*aadvance;      FT_Int   b = (FT_Int)*abearing;      if ( vertical )      {        if ( var->vadvance_adjust )          var->vadvance_adjust( f, gindex, &a );        if ( var->tsb_adjust )          var->tsb_adjust( f, gindex, &b );      }      else      {        if ( var->hadvance_adjust )          var->hadvance_adjust( f, gindex, &a );        if ( var->lsb_adjust )          var->lsb_adjust( f, gindex, &b );      }//.........这里部分代码省略.........
开发者ID:UnknownShadow200,项目名称:ClassicalSharp,代码行数:101,


示例19: tt_face_get_metrics

  tt_face_get_metrics( TT_Face     face,                       FT_Bool     vertical,                       FT_UInt     gindex,                       FT_Short   *abearing,                       FT_UShort  *aadvance )  {    FT_Error        error;    FT_Stream       stream = face->root.stream;    TT_HoriHeader*  header;    FT_ULong        table_pos, table_size, table_end;    FT_UShort       k;    if ( vertical )    {      void*  v = &face->vertical;      header     = (TT_HoriHeader*)v;      table_pos  = face->vert_metrics_offset;      table_size = face->vert_metrics_size;    }    else    {      header     = &face->horizontal;      table_pos  = face->horz_metrics_offset;      table_size = face->horz_metrics_size;    }    table_end = table_pos + table_size;    k = header->number_Of_HMetrics;    if ( k > 0 )    {      if ( gindex < (FT_UInt)k )      {        table_pos += 4 * gindex;        if ( table_pos + 4 > table_end )          goto NoData;        if ( FT_STREAM_SEEK( table_pos ) ||             FT_READ_USHORT( *aadvance ) ||             FT_READ_SHORT( *abearing )  )          goto NoData;      }      else      {        table_pos += 4 * ( k - 1 );        if ( table_pos + 4 > table_end )          goto NoData;        if ( FT_STREAM_SEEK( table_pos ) ||             FT_READ_USHORT( *aadvance ) )          goto NoData;        table_pos += 4 + 2 * ( gindex - k );        if ( table_pos + 2 > table_end )          *abearing = 0;        else        {          if ( !FT_STREAM_SEEK( table_pos ) )            (void)FT_READ_SHORT( *abearing );        }      }    }    else    {    NoData:      *abearing = 0;      *aadvance = 0;    }    return SFNT_Err_Ok;  }
开发者ID:sloopdoom,项目名称:ftgles-gles2,代码行数:75,


示例20: TT_CharMap_Load

  TT_CharMap_Load( TT_Face       face,                   TT_CMapTable  cmap,                   FT_Stream     stream )  {    FT_Error     error;    FT_Memory    memory;    FT_UShort    num_SH, num_Seg, i;    FT_ULong     j, n;    FT_UShort    u, l;    TT_CMap0     cmap0;    TT_CMap2     cmap2;    TT_CMap4     cmap4;    TT_CMap6     cmap6;    TT_CMap8_12  cmap8_12;    TT_CMap10    cmap10;    TT_CMap2SubHeader  cmap2sub;    TT_CMap4Segment    segments;    TT_CMapGroup       groups;    if ( cmap->loaded )      return SFNT_Err_Ok;    memory = stream->memory;    if ( FT_STREAM_SEEK( cmap->offset ) )      return error;    switch ( cmap->format )    {    case 0:      cmap0 = &cmap->c.cmap0;      if ( FT_READ_USHORT( cmap0->language )           ||           FT_ALLOC( cmap0->glyphIdArray, 256L )       ||           FT_STREAM_READ( cmap0->glyphIdArray, 256L ) )        goto Fail;      cmap->get_index     = code_to_index0;      cmap->get_next_char = code_to_next0;      break;    case 2:      num_SH = 0;      cmap2  = &cmap->c.cmap2;      /* allocate subheader keys */      if ( FT_NEW_ARRAY( cmap2->subHeaderKeys, 256 ) ||           FT_FRAME_ENTER( 2L + 512L )               )        goto Fail;      cmap2->language = FT_GET_USHORT();      for ( i = 0; i < 256; i++ )      {        u = (FT_UShort)( FT_GET_USHORT() / 8 );        cmap2->subHeaderKeys[i] = u;        if ( num_SH < u )          num_SH = u;      }      FT_FRAME_EXIT();      /* load subheaders */      cmap2->numGlyphId = l = (FT_UShort)(        ( ( cmap->length - 2L * ( 256 + 3 ) - num_SH * 8L ) & 0xFFFFU ) / 2 );      if ( FT_NEW_ARRAY( cmap2->subHeaders, num_SH + 1 ) ||           FT_FRAME_ENTER( ( num_SH + 1 ) * 8L )         )      {        FT_FREE( cmap2->subHeaderKeys );        goto Fail;      }      cmap2sub = cmap2->subHeaders;      for ( i = 0; i <= num_SH; i++ )      {        cmap2sub->firstCode     = FT_GET_USHORT();        cmap2sub->entryCount    = FT_GET_USHORT();        cmap2sub->idDelta       = FT_GET_SHORT();        /* we apply the location offset immediately */        cmap2sub->idRangeOffset = (FT_UShort)(          FT_GET_USHORT() - ( num_SH - i ) * 8 - 2 );        cmap2sub++;      }      FT_FRAME_EXIT();      /* load glyph IDs */      if ( FT_NEW_ARRAY( cmap2->glyphIdArray, l ) ||           FT_FRAME_ENTER( l * 2L )               )//.........这里部分代码省略.........
开发者ID:SOLARIC,项目名称:world-opponent-network,代码行数:101,



注:本文中的FT_READ_USHORT函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ FT_Render_Glyph函数代码示例
C++ FT_PRINTERR函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。