00001 #ifndef __FTFace__ 00002 #define __FTFace__ 00003 00004 #include <ft2build.h> 00005 #include FT_FREETYPE_H 00006 #include FT_GLYPH_H 00007 00008 #include "FTGL.h" 00009 #include "FTPoint.h" 00010 #include "FTSize.h" 00011 00018 class FTGL_EXPORT FTFace 00019 { 00020 public: 00026 FTFace( const char* filename); 00027 00034 FTFace( const unsigned char *pBufferBytes, size_t bufferSizeInBytes ); 00035 00041 virtual ~FTFace(); 00042 00050 bool Attach( const char* filename); 00051 00060 bool Attach( const unsigned char *pBufferBytes, size_t bufferSizeInBytes); 00061 00065 void Close(); 00066 00072 FT_Face* Face() const { return ftFace;} 00073 00084 const FTSize& Size( const unsigned int size, const unsigned int res); 00085 00086 unsigned int UnitsPerEM() const; 00087 00093 unsigned int CharMapCount(); 00094 00100 FT_Encoding* CharMapList(); 00101 00105 FTPoint KernAdvance( unsigned int index1, unsigned int index2); 00106 00110 FT_GlyphSlot Glyph( unsigned int index, FT_Int load_flags); 00111 00115 unsigned int GlyphCount() const { return numGlyphs;} 00116 00122 FT_Error Error() const { return err; } 00123 00124 private: 00128 FT_Face* ftFace; 00129 00133 FTSize charSize; 00134 00138 int numGlyphs; 00139 00140 FT_Encoding* fontEncodingList; 00141 00145 FT_Error err; 00146 }; 00147 00148 00149 #endif // __FTFace__