00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __SVSFNT_H__
00020 #define __SVSFNT_H__
00021
00022 #include FT_INTERNAL_SERVICE_H
00023 #include FT_TRUETYPE_TABLES_H
00024
00025
00026 FT_BEGIN_HEADER
00027
00028
00029
00030
00031
00032
00033 #define FT_SERVICE_ID_SFNT_TABLE "sfnt-table"
00034
00035
00036
00037
00038
00039 typedef FT_Error
00040 (*FT_SFNT_TableLoadFunc)( FT_Face face,
00041 FT_ULong tag,
00042 FT_Long offset,
00043 FT_Byte* buffer,
00044 FT_ULong* length );
00045
00046
00047
00048
00049 typedef void*
00050 (*FT_SFNT_TableGetFunc)( FT_Face face,
00051 FT_Sfnt_Tag tag );
00052
00053
00054
00055
00056
00057 typedef FT_Error
00058 (*FT_SFNT_TableInfoFunc)( FT_Face face,
00059 FT_UInt idx,
00060 FT_ULong *tag,
00061 FT_ULong *offset,
00062 FT_ULong *length );
00063
00064
00065 FT_DEFINE_SERVICE( SFNT_Table )
00066 {
00067 FT_SFNT_TableLoadFunc load_table;
00068 FT_SFNT_TableGetFunc get_table;
00069 FT_SFNT_TableInfoFunc table_info;
00070 };
00071
00072 #ifndef FT_CONFIG_OPTION_PIC
00073
00074 #define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
00075 static const FT_Service_SFNT_TableRec class_ = \
00076 { \
00077 load_, get_, info_ \
00078 };
00079
00080 #else
00081
00082 #define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
00083 void \
00084 FT_Init_Class_##class_( FT_Service_SFNT_TableRec* clazz ) \
00085 { \
00086 clazz->load_table = load_; \
00087 clazz->get_table = get_; \
00088 clazz->table_info = info_; \
00089 }
00090
00091 #endif
00092
00093
00094
00095
00096 FT_END_HEADER
00097
00098
00099 #endif
00100
00101
00102