return mPlugin->GetGlyphMetrics( array, size, type, horizontal );
}
- void FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
+ void FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, bool softwareItalic, bool softwareBold, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
{
CreatePlugin();
- mPlugin->CreateBitmap( fontId, glyphIndex, data, outlineWidth );
+ mPlugin->CreateBitmap( fontId, glyphIndex, softwareItalic, softwareBold, data, outlineWidth );
}
PixelData FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, int outlineWidth )
return mPlugin->AddCustomFontDirectory( path );
}
+FT_FaceRec_* FontClient::GetFreetypeFace( FontId fontId )
+{
+ CreatePlugin();
+
+ return mPlugin->GetFreetypeFace( fontId );
+}
+
void FontClient::CreatePlugin()
{
if( !mPlugin )
// INTERNAL INCLUDES
#include <dali/devel-api/text-abstraction/font-client.h>
+
+struct FT_FaceRec_;
+
namespace Dali
{
bool GetGlyphMetrics( GlyphInfo* array, uint32_t size, GlyphType type, bool horizontal );
/**
- * @copydoc Dali::TextAbstraction::FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
+ * @copydoc Dali::TextAbstraction::FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, bool softwareItalic, bool softwareBold, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
*/
- void CreateBitmap( FontId fontId, GlyphIndex glyphIndex, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth );
+ void CreateBitmap( FontId fontId, GlyphIndex glyphIndex, bool softwareItalic, bool softwareBold, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth );
/**
* @copydoc Dali::TextAbstraction::FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, int outlineWidth )
*/
bool AddCustomFontDirectory( const FontPath& path );
+ /**
+ * @brief Retrieves the pointer to the FreeType Font Face for the given @p fontId.
+ *
+ * @param[in] fontId The font id.
+ *
+ * @return The pointer to the FreeType Font Face.
+ */
+ FT_FaceRec_* GetFreetypeFace( FontId fontId );
+
private:
/**
*/
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( 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);
+ }
+
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 FcConfigAppFontAddDir( nullptr, reinterpret_cast<const FcChar8 *>( path.c_str() ) );
}
+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;
+}
+
void FontClient::Plugin::InitSystemFonts()
{
DALI_LOG_INFO( gLogFilter, Debug::General, "-->FontClient::Plugin::InitSystemFonts\n" );
#include FT_GLYPH_H
#include FT_OUTLINE_H
#include FT_STROKER_H
+ #include FT_SYNTHESIS_H
// forward declarations of font config types.
struct _FcCharSet;
bool GetVectorMetrics( GlyphInfo* array, uint32_t size, bool horizontal );
/**
- * @copydoc Dali::TextAbstraction::FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
+ * @copydoc Dali::TextAbstraction::FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, bool softwareItalic, bool softwareBold, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth )
*/
- void CreateBitmap( FontId fontId, GlyphIndex glyphIndex, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth );
+ void CreateBitmap( FontId fontId, GlyphIndex glyphIndex, bool softwareItalic, bool softwareBold, Dali::TextAbstraction::FontClient::GlyphBufferData& data, int outlineWidth );
/**
* @copydoc Dali::TextAbstraction::FontClient::CreateBitmap( FontId fontId, GlyphIndex glyphIndex, int outlineWidth )
*/
bool AddCustomFontDirectory( const FontPath& path );
+ /**
+ * @copydoc Dali::TextAbstraction::Internal::FontClient::GetFreetypeFace()
+ */
+ FT_FaceRec_* GetFreetypeFace( FontId fontId );
+
private:
/**