*/
const float FROM_266 = 1.0f / 64.0f;
const float POINTS_PER_INCH = 72.f;
+const FT_Fixed FONT_SLANT_TANGENT = 0.221694663 * 0x10000; // For support software italic
const std::string FONT_FORMAT( "TrueType" );
const std::string DEFAULT_FONT_FAMILY_NAME( "Tizen" );
#endif
}
-void FontClient::Plugin::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
+void FontClient::Plugin::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, bool softwareItalic, bool softwareBold, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
{
if( ( fontId > 0 ) &&
( fontId - 1u < mFontFaceCache.size() ) )
if( FT_Err_Ok == error )
{
FT_Glyph glyph;
+#if defined(__GNUC__)
+ if( softwareBold )
+ {
+ FT_GlyphSlot_Embolden(ftFace->glyph);
+ }
+
+ if( softwareItalic )
+ {
+ // FT Matrix uses 16.16 fixed-point format
+ FT_Matrix transform = {0x10000, FONT_SLANT_TANGENT, 0x00000, 0x10000};
+ FT_Outline_Transform(&ftFace->glyph->outline, &transform);
+ }
+#endif
error = FT_Get_Glyph( ftFace->glyph, &glyph );
// Convert to bitmap if necessary
{
TextAbstraction::FontClient::GlyphBufferData data;
- CreateBitmap( fontId, glyphIndex, data, outlineWidth );
+ CreateBitmap( fontId, glyphIndex, false, false, data, outlineWidth );
return PixelData::New( data.buffer,
data.width * data.height * Pixel::GetBytesPerPixel( data.format ),
return FT_Err_Ok == error;
}
+FT_FaceRec_* FontClient::Plugin::GetFreetypeFace( FontId fontId )
+{
+ FT_Face fontFace = nullptr;
+
+ if( ( fontId > 0u ) &&
+ ( fontId - 1u < mFontFaceCache.size() ) )
+ {
+ fontFace = mFontFaceCache[fontId - 1u].mFreeTypeFace;
+ }
+
+ return fontFace;
+}
+
+bool FontClient::Plugin::AddCustomFontDirectory( const FontPath& path )
+{
+ // NULL as first parameter means the current configuration is used.
+ return FcConfigAppFontAddDir( NULL, reinterpret_cast<const FcChar8 *>( path.c_str() ) );
+}
+
void FontClient::Plugin::InitSystemFonts()
{
DALI_LOG_INFO( gLogFilter, Debug::General, "-->FontClient::Plugin::InitSystemFonts\n" );