bluecore/ftgl/FTCharmap.cpp

63 lines
1.0 KiB
C++
Raw Normal View History

2008-01-16 11:45:17 +00:00
#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);
}