⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttload.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 3 页
字号:
      for ( ; count > 0; count--, entry++ )      {        FT_FREE( entry->string );        entry->stringLength = 0;      }      /* free strings table */      FT_FREE( table->names );    }    table->numNameRecords = 0;    table->format         = 0;    table->storageOffset  = 0;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_cmap                                                  */  /*                                                                       */  /* <Description>                                                         */  /*    Loads the cmap directory in a face object.  The cmaps themselves   */  /*    are loaded on demand in the `ttcmap.c' module.                     */  /*                                                                       */  /* <Input>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /*    stream :: A handle to the input stream.                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_face_load_cmap( TT_Face    face,                     FT_Stream  stream )  {    FT_Error  error;    error = face->goto_table( face, TTAG_cmap, stream, &face->cmap_size );    if ( error )      goto Exit;    if ( FT_FRAME_EXTRACT( face->cmap_size, face->cmap_table ) )      face->cmap_size = 0;  Exit:    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_os2                                                   */  /*                                                                       */  /* <Description>                                                         */  /*    Loads the OS2 table.                                               */  /*                                                                       */  /* <Input>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /*    stream :: A handle to the input stream.                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_face_load_os2( TT_Face    face,                    FT_Stream  stream )  {    FT_Error  error;    TT_OS2*   os2;    const FT_Frame_Field  os2_fields[] =    {#undef  FT_STRUCTURE#define FT_STRUCTURE  TT_OS2      FT_FRAME_START( 78 ),        FT_FRAME_USHORT( version ),        FT_FRAME_SHORT ( xAvgCharWidth ),        FT_FRAME_USHORT( usWeightClass ),        FT_FRAME_USHORT( usWidthClass ),        FT_FRAME_SHORT ( fsType ),        FT_FRAME_SHORT ( ySubscriptXSize ),        FT_FRAME_SHORT ( ySubscriptYSize ),        FT_FRAME_SHORT ( ySubscriptXOffset ),        FT_FRAME_SHORT ( ySubscriptYOffset ),        FT_FRAME_SHORT ( ySuperscriptXSize ),        FT_FRAME_SHORT ( ySuperscriptYSize ),        FT_FRAME_SHORT ( ySuperscriptXOffset ),        FT_FRAME_SHORT ( ySuperscriptYOffset ),        FT_FRAME_SHORT ( yStrikeoutSize ),        FT_FRAME_SHORT ( yStrikeoutPosition ),        FT_FRAME_SHORT ( sFamilyClass ),        FT_FRAME_BYTE  ( panose[0] ),        FT_FRAME_BYTE  ( panose[1] ),        FT_FRAME_BYTE  ( panose[2] ),        FT_FRAME_BYTE  ( panose[3] ),        FT_FRAME_BYTE  ( panose[4] ),        FT_FRAME_BYTE  ( panose[5] ),        FT_FRAME_BYTE  ( panose[6] ),        FT_FRAME_BYTE  ( panose[7] ),        FT_FRAME_BYTE  ( panose[8] ),        FT_FRAME_BYTE  ( panose[9] ),        FT_FRAME_ULONG ( ulUnicodeRange1 ),        FT_FRAME_ULONG ( ulUnicodeRange2 ),        FT_FRAME_ULONG ( ulUnicodeRange3 ),        FT_FRAME_ULONG ( ulUnicodeRange4 ),        FT_FRAME_BYTE  ( achVendID[0] ),        FT_FRAME_BYTE  ( achVendID[1] ),        FT_FRAME_BYTE  ( achVendID[2] ),        FT_FRAME_BYTE  ( achVendID[3] ),        FT_FRAME_USHORT( fsSelection ),        FT_FRAME_USHORT( usFirstCharIndex ),        FT_FRAME_USHORT( usLastCharIndex ),        FT_FRAME_SHORT ( sTypoAscender ),        FT_FRAME_SHORT ( sTypoDescender ),        FT_FRAME_SHORT ( sTypoLineGap ),        FT_FRAME_USHORT( usWinAscent ),        FT_FRAME_USHORT( usWinDescent ),      FT_FRAME_END    };    const FT_Frame_Field  os2_fields_extra[] =    {      FT_FRAME_START( 8 ),        FT_FRAME_ULONG( ulCodePageRange1 ),        FT_FRAME_ULONG( ulCodePageRange2 ),      FT_FRAME_END    };    const FT_Frame_Field  os2_fields_extra2[] =    {      FT_FRAME_START( 10 ),        FT_FRAME_SHORT ( sxHeight ),        FT_FRAME_SHORT ( sCapHeight ),        FT_FRAME_USHORT( usDefaultChar ),        FT_FRAME_USHORT( usBreakChar ),        FT_FRAME_USHORT( usMaxContext ),      FT_FRAME_END    };    /* We now support old Mac fonts where the OS/2 table doesn't  */    /* exist.  Simply put, we set the `version' field to 0xFFFF   */    /* and test this value each time we need to access the table. */    error = face->goto_table( face, TTAG_OS2, stream, 0 );    if ( error )      goto Exit;    os2 = &face->os2;    if ( FT_STREAM_READ_FIELDS( os2_fields, os2 ) )      goto Exit;    os2->ulCodePageRange1 = 0;    os2->ulCodePageRange2 = 0;    os2->sxHeight         = 0;    os2->sCapHeight       = 0;    os2->usDefaultChar    = 0;    os2->usBreakChar      = 0;    os2->usMaxContext     = 0;    if ( os2->version >= 0x0001 )    {      /* only version 1 tables */      if ( FT_STREAM_READ_FIELDS( os2_fields_extra, os2 ) )        goto Exit;      if ( os2->version >= 0x0002 )      {        /* only version 2 tables */        if ( FT_STREAM_READ_FIELDS( os2_fields_extra2, os2 ) )          goto Exit;      }    }    FT_TRACE3(( "sTypoAscender:  %4d\n",   os2->sTypoAscender ));    FT_TRACE3(( "sTypoDescender: %4d\n",   os2->sTypoDescender ));    FT_TRACE3(( "usWinAscent:    %4u\n",   os2->usWinAscent ));    FT_TRACE3(( "usWinDescent:   %4u\n",   os2->usWinDescent ));    FT_TRACE3(( "fsSelection:    0x%2x\n", os2->fsSelection ));  Exit:    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_postscript                                            */  /*                                                                       */  /* <Description>                                                         */  /*    Loads the Postscript table.                                        */  /*                                                                       */  /* <Input>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /*    stream :: A handle to the input stream.                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_face_load_post( TT_Face    face,                     FT_Stream  stream )  {    FT_Error        error;    TT_Postscript*  post = &face->postscript;    static const FT_Frame_Field  post_fields[] =    {#undef  FT_STRUCTURE#define FT_STRUCTURE  TT_Postscript      FT_FRAME_START( 32 ),        FT_FRAME_ULONG( FormatType ),        FT_FRAME_ULONG( italicAngle ),        FT_FRAME_SHORT( underlinePosition ),        FT_FRAME_SHORT( underlineThickness ),        FT_FRAME_ULONG( isFixedPitch ),        FT_FRAME_ULONG( minMemType42 ),        FT_FRAME_ULONG( maxMemType42 ),        FT_FRAME_ULONG( minMemType1 ),        FT_FRAME_ULONG( maxMemType1 ),      FT_FRAME_END    };    error = face->goto_table( face, TTAG_post, stream, 0 );    if ( error )      return error;    if ( FT_STREAM_READ_FIELDS( post_fields, post ) )      return error;    /* we don't load the glyph names, we do that in another */    /* module (ttpost).                                     */    FT_TRACE3(( "FormatType:   0x%x\n", post->FormatType ));    FT_TRACE3(( "isFixedPitch:   %s\n", post->isFixedPitch                                        ? "  yes" : "   no" ));    return SFNT_Err_Ok;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_pclt                                                  */  /*                                                                       */  /* <Description>                                                         */  /*    Loads the PCL 5 Table.                                             */  /*                                                                       */  /* <Input>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /*    stream :: A handle to the input stream.                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_face_load_pclt( TT_Face    face,                     FT_Stream  stream )  {    static const FT_Frame_Field  pclt_fields[] =    {#undef  FT_STRUCTURE#define FT_STRUCTURE  TT_PCLT      FT_FRAME_START( 54 ),        FT_FRAME_ULONG ( Version ),        FT_FRAME_ULONG ( FontNumber ),        FT_FRAME_USHORT( Pitch ),        FT_FRAME_USHORT( xHeight ),        FT_FRAME_USHORT( Style ),        FT_FRAME_USHORT( TypeFamily ),        FT_FRAME_USHORT( CapHeight ),        FT_FRAME_BYTES ( TypeFace, 16 ),        FT_FRAME_BYTES ( CharacterComplement, 8 ),        FT_FRAME_BYTES ( FileName, 6 ),        FT_FRAME_CHAR  ( StrokeWeight ),        FT_FRAME_CHAR  ( WidthType ),        FT_FRAME_BYTE  ( SerifStyle ),        FT_FRAME_BYTE  ( Reserved ),      FT_FRAME_END    };    FT_Error  error;    TT_PCLT*  pclt = &face->pclt;    /* optional table */    error = face->goto_table( face, TTAG_PCLT, stream, 0 );    if ( error )      goto Exit;    if ( FT_STREAM_READ_FIELDS( pclt_fields, pclt ) )      goto Exit;  Exit:    return error;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    tt_face_load_gasp                                                  */  /*                                                                       */  /* <Description>                                                         */  /*    Loads the `gasp' table into a face object.                         */  /*                                                                       */  /* <Input>                                                               */  /*    face   :: A handle to the target face object.                      */  /*                                                                       */  /*    stream :: The input stream.                                        */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  tt_face_load_gasp( TT_Face    face,                     FT_Stream  stream )  {    FT_Error   error;    FT_Memory  memory = stream->memory;    FT_UInt        j,num_ranges;    TT_GaspRange   gaspranges;    /* the gasp table is optional */    error = face->goto_table( face, TTAG_gasp, stream, 0 );    if ( error )      goto Exit;    if ( FT_FRAME_ENTER( 4L ) )      goto Exit;    face->gasp.version   = FT_GET_USHORT();    face->gasp.numRanges = FT_GET_USHORT();    FT_FRAME_EXIT();    /* only support versions 0 and 1 of the table */    if ( face->gasp.version >= 2 )    {      face->gasp.numRanges = 0;      error = SFNT_Err_Invalid_Table;      goto Exit;    }    num_ranges = face->gasp.numRanges;    FT_TRACE3(( "numRanges: %u\n", num_ranges ));    if ( FT_QNEW_ARRAY( gaspranges, num_ranges ) ||         FT_FRAME_ENTER( num_ranges * 4L )      )      goto Exit;    face->gasp.gaspRanges = gaspranges;    for ( j = 0; j < num_ranges; j++ )    {      gaspranges[j].maxPPEM  = FT_GET_USHORT();      gaspranges[j].gaspFlag = FT_GET_USHORT();      FT_TRACE3(( "gaspRange %d: rangeMaxPPEM %5d, rangeGaspBehavior 0x%x\n",                  j,                  gaspranges[j].maxPPEM,                  gaspranges[j].gaspFlag ));    }    FT_FRAME_EXIT();  Exit:    return error;  }/* END */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -