From d968426d9c19a25c1502e382a635b0e510cb849d Mon Sep 17 00:00:00 2001 From: Sunghyun kim Date: Mon, 15 Oct 2018 11:01:10 +0900 Subject: [PATCH] Support custom fonts registration Change-Id: I964ddfcad68c84afcaa4429af17f50f6a0550ae3 --- dali/devel-api/text-abstraction/font-client.cpp | 5 +++++ dali/devel-api/text-abstraction/font-client.h | 9 +++++++++ dali/internal/text/text-abstraction/font-client-impl.cpp | 7 +++++++ dali/internal/text/text-abstraction/font-client-impl.h | 5 +++++ dali/internal/text/text-abstraction/font-client-plugin-impl.cpp | 6 ++++++ dali/internal/text/text-abstraction/font-client-plugin-impl.h | 5 +++++ 6 files changed, 37 insertions(+) diff --git a/dali/devel-api/text-abstraction/font-client.cpp b/dali/devel-api/text-abstraction/font-client.cpp index 2dcb128..00b7528 100644 --- a/dali/devel-api/text-abstraction/font-client.cpp +++ b/dali/devel-api/text-abstraction/font-client.cpp @@ -207,6 +207,11 @@ bool FontClient::IsColorGlyph( FontId fontId, GlyphIndex glyphIndex ) return GetImplementation(*this).IsColorGlyph( fontId, glyphIndex ); } +bool FontClient::AddCustomFontDirectory( const FontPath& path ) +{ + return GetImplementation(*this).AddCustomFontDirectory( path ); +} + FontClient::FontClient( Internal::FontClient* internal ) : BaseHandle( internal ) { diff --git a/dali/devel-api/text-abstraction/font-client.h b/dali/devel-api/text-abstraction/font-client.h index 167607d..c444eb8 100755 --- a/dali/devel-api/text-abstraction/font-client.h +++ b/dali/devel-api/text-abstraction/font-client.h @@ -408,6 +408,15 @@ public: */ bool IsColorGlyph( FontId fontId, GlyphIndex glyphIndex ); + /** + * @brief Add custom fonts directory + * + * @param[in] path to the fonts directory + * + * @return true if the fonts can be added. + */ + bool AddCustomFontDirectory( const FontPath& path ); + public: // Not intended for application developers /** * @brief This constructor is used by FontClient::Get(). diff --git a/dali/internal/text/text-abstraction/font-client-impl.cpp b/dali/internal/text/text-abstraction/font-client-impl.cpp index ad125fd..3d0f72b 100644 --- a/dali/internal/text/text-abstraction/font-client-impl.cpp +++ b/dali/internal/text/text-abstraction/font-client-impl.cpp @@ -288,6 +288,13 @@ FT_FaceRec_* FontClient::GetFreetypeFace( FontId fontId ) return mPlugin->GetFreetypeFace( fontId ); } +bool FontClient::AddCustomFontDirectory( const FontPath& path ) +{ + CreatePlugin(); + + return mPlugin->AddCustomFontDirectory( path ); +} + void FontClient::CreatePlugin() { if( !mPlugin ) diff --git a/dali/internal/text/text-abstraction/font-client-impl.h b/dali/internal/text/text-abstraction/font-client-impl.h index e957187..0d9cf71 100644 --- a/dali/internal/text/text-abstraction/font-client-impl.h +++ b/dali/internal/text/text-abstraction/font-client-impl.h @@ -205,6 +205,11 @@ public: */ FT_FaceRec_* GetFreetypeFace( FontId fontId ); + /** + * @copydoc Dali::TextAbstraction::FontClient::AddCustomFontDirectory() + */ + bool AddCustomFontDirectory( const FontPath& path ); + private: /** diff --git a/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp b/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp index bd4c599..1d157c9 100644 --- a/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp +++ b/dali/internal/text/text-abstraction/font-client-plugin-impl.cpp @@ -1283,6 +1283,12 @@ FT_FaceRec_* FontClient::Plugin::GetFreetypeFace( FontId fontId ) return fontFace; } +bool FontClient::Plugin::AddCustomFontDirectory( const FontPath& path ) +{ + // NULL as first parameter means the current configuration is used. + return FcConfigAppFontAddDir( NULL, reinterpret_cast( path.c_str() ) ); +} + void FontClient::Plugin::InitSystemFonts() { DALI_LOG_INFO( gLogFilter, Debug::General, "-->FontClient::Plugin::InitSystemFonts\n" ); diff --git a/dali/internal/text/text-abstraction/font-client-plugin-impl.h b/dali/internal/text/text-abstraction/font-client-plugin-impl.h index da207d5..9bbc70c 100644 --- a/dali/internal/text/text-abstraction/font-client-plugin-impl.h +++ b/dali/internal/text/text-abstraction/font-client-plugin-impl.h @@ -329,6 +329,11 @@ struct FontClient::Plugin */ FT_FaceRec_* GetFreetypeFace( FontId fontId ); + /** + * @copydoc Dali::TextAbstraction::FontClient::AddCustomFontDirectory() + */ + bool AddCustomFontDirectory( const FontPath& path ); + private: /** -- 2.7.4