shithub: freetype+ttf2subf

ref: 609e28c3be484792936271dacefe9b48c378e7eb
dir: /src/pfr/pfrload.h/

View raw version
#ifndef __PFR_LOAD_H__
#define __PFR_LOAD_H__

#include "pfrobjs.h"
#include FT_INTERNAL_STREAM_H

FT_BEGIN_HEADER

#ifdef PFR_CONFIG_NO_CHECKS
#  define  PFR_CHECK(x)   do { } while (0)
#else
#  define  PFR_CHECK(x)   do { if ( p + (x) > limit ) goto Too_Short; } while (0)
#endif

#define  PFR_NEXT_BYTE(p)    FT_NEXT_BYTE(p)
#define  PFR_NEXT_INT8(p)    FT_NEXT_CHAR(p)
#define  PFR_NEXT_SHORT(p)   FT_NEXT_SHORT(p)
#define  PFR_NEXT_USHORT(p)  FT_NEXT_USHORT(p)
#define  PFR_NEXT_LONG(p)    FT_NEXT_OFF3(p)
#define  PFR_NEXT_ULONG(p)   FT_NEXT_UOFF3(p)

 /* handling extra items */

  typedef FT_Error  (*PFR_ExtraItem_ParseFunc)( FT_Byte*    p,
                                                FT_Byte*    limit,
                                                FT_Pointer  data );
  typedef struct PFR_ExtraItemRec_
  {
    FT_UInt                  type;
    PFR_ExtraItem_ParseFunc  parser;
  
  } PFR_ExtraItemRec;
  
  typedef const struct PFR_ExtraItemRec_*  PFR_ExtraItem;
 
  FT_LOCAL( FT_Error )
  pfr_extra_items_skip( FT_Byte*  *pp, FT_Byte*  limit );

  FT_LOCAL( FT_Error )
  pfr_extra_items_parse( FT_Byte*      *pp,
                         FT_Byte*       limit,
                         PFR_ExtraItem  item_list,
                         FT_Pointer     item_data );


 /* load a PFR header */
  FT_LOCAL( FT_Error )
  pfr_header_load( PFR_Header  header,
                   FT_Stream   stream );

 /* check a PFR header */
  FT_LOCAL( FT_Bool )
  pfr_header_check( PFR_Header  header );



 /* return number of logical fonts in this file */
  FT_LOCAL( FT_Error )
  pfr_log_font_count( FT_Stream    stream,
                      FT_UInt32    log_section_offset,
                      FT_UInt     *acount );


 /* load a pfr logical font entry */
  FT_LOCAL( FT_Error )
  pfr_log_font_load( PFR_LogFont   log_font,
                     FT_Stream     stream,
                     FT_UInt       face_index,
                     FT_UInt32     section_offset,
                     FT_Bool       size_increment );


 /* load a physical font entry */
  FT_LOCAL( FT_Error )
  pfr_phy_font_load( PFR_PhyFont   phy_font,
                     FT_Stream     stream,
                     FT_UInt32     offset,
                     FT_UInt32     size );

 /* finalize a physical font */
  FT_LOCAL( void )
  pfr_phy_font_done( PFR_PhyFont  phy_font,
                     FT_Memory    memory );

 /* */
 
FT_END_HEADER

#endif /* __PFR_LOAD_H__ */