00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __PFRLOAD_H__
00020 #define __PFRLOAD_H__
00021
00022 #include "pfrobjs.h"
00023 #include FT_INTERNAL_STREAM_H
00024
00025
00026 FT_BEGIN_HEADER
00027
00028 #ifdef PFR_CONFIG_NO_CHECKS
00029 #define PFR_CHECK( x ) do { } while ( 0 )
00030 #else
00031 #define PFR_CHECK( x ) do \
00032 { \
00033 if ( p + (x) > limit ) \
00034 goto Too_Short; \
00035 } while ( 0 )
00036 #endif
00037
00038 #define PFR_NEXT_BYTE( p ) FT_NEXT_BYTE( p )
00039 #define PFR_NEXT_INT8( p ) FT_NEXT_CHAR( p )
00040 #define PFR_NEXT_SHORT( p ) FT_NEXT_SHORT( p )
00041 #define PFR_NEXT_USHORT( p ) FT_NEXT_USHORT( p )
00042 #define PFR_NEXT_LONG( p ) FT_NEXT_OFF3( p )
00043 #define PFR_NEXT_ULONG( p ) FT_NEXT_UOFF3( p )
00044
00045
00046
00047
00048 typedef FT_Error
00049 (*PFR_ExtraItem_ParseFunc)( FT_Byte* p,
00050 FT_Byte* limit,
00051 FT_Pointer data );
00052
00053 typedef struct PFR_ExtraItemRec_
00054 {
00055 FT_UInt type;
00056 PFR_ExtraItem_ParseFunc parser;
00057
00058 } PFR_ExtraItemRec;
00059
00060 typedef const struct PFR_ExtraItemRec_* PFR_ExtraItem;
00061
00062
00063 FT_LOCAL( FT_Error )
00064 pfr_extra_items_skip( FT_Byte* *pp,
00065 FT_Byte* limit );
00066
00067 FT_LOCAL( FT_Error )
00068 pfr_extra_items_parse( FT_Byte* *pp,
00069 FT_Byte* limit,
00070 PFR_ExtraItem item_list,
00071 FT_Pointer item_data );
00072
00073
00074
00075 FT_LOCAL( FT_Error )
00076 pfr_header_load( PFR_Header header,
00077 FT_Stream stream );
00078
00079
00080 FT_LOCAL( FT_Bool )
00081 pfr_header_check( PFR_Header header );
00082
00083
00084
00085 FT_LOCAL( FT_Error )
00086 pfr_log_font_count( FT_Stream stream,
00087 FT_UInt32 log_section_offset,
00088 FT_UInt *acount );
00089
00090
00091 FT_LOCAL( FT_Error )
00092 pfr_log_font_load( PFR_LogFont log_font,
00093 FT_Stream stream,
00094 FT_UInt face_index,
00095 FT_UInt32 section_offset,
00096 FT_Bool size_increment );
00097
00098
00099
00100 FT_LOCAL( FT_Error )
00101 pfr_phy_font_load( PFR_PhyFont phy_font,
00102 FT_Stream stream,
00103 FT_UInt32 offset,
00104 FT_UInt32 size );
00105
00106
00107 FT_LOCAL( void )
00108 pfr_phy_font_done( PFR_PhyFont phy_font,
00109 FT_Memory memory );
00110
00111
00112
00113 FT_END_HEADER
00114
00115 #endif
00116
00117
00118