63 lines
1.0 KiB
C++
63 lines
1.0 KiB
C++
#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);
|
|
}
|