#include "FTFace.h" #include "FTCharmap.h" FTCharmap::FTCharmap( FTFace* face) : ftFace( *(face->Face())), err(0) { if( !ftFace->charmap) { err = FT_Set_Charmap( ftFace, ftFace->charmaps[0]); } ftEncoding = ftFace->charmap->encoding; } FTCharmap::~FTCharmap() { charMap.clear(); } bool FTCharmap::CharMap( FT_Encoding encoding) { if( ftEncoding == encoding) { return true; } err = FT_Select_Charmap( ftFace, encoding ); if( !err) { ftEncoding = encoding; } else { ftEncoding = ft_encoding_none; } charMap.clear(); return !err; } unsigned int FTCharmap::GlyphListIndex( unsigned int characterCode ) { return charMap.find( characterCode); } unsigned int FTCharmap::FontIndex( unsigned int characterCode ) { return FT_Get_Char_Index( ftFace, characterCode); } void FTCharmap::InsertIndex( const unsigned int characterCode, const unsigned int containerIndex) { charMap.insert( characterCode, containerIndex); }