From ceba5188773cc8faeb3c8b95f451436becf8c7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= Date: Wed, 22 Jan 2014 13:55:16 +0100 Subject: [PATCH 04/13] freetype: added a fake font lookup mechanism for iOS to use the packaged demo fonts --- modules/text_renderer/freetype.c | 2 ++ modules/text_renderer/platform_fonts.c | 40 ++++++++++++++++++++++++++++++++++ modules/text_renderer/platform_fonts.h | 3 +++ 3 files changed, 45 insertions(+) diff --git a/modules/text_renderer/freetype.c b/modules/text_renderer/freetype.c index f55e23a..bc508c6 100644 --- a/modules/text_renderer/freetype.c +++ b/modules/text_renderer/freetype.c @@ -1206,6 +1206,8 @@ static int Create( vlc_object_t *p_this ) #elif defined( __APPLE__ ) #if !TARGET_OS_IPHONE p_sys->pf_select = MacLegacy_Select; +#else + p_sys->pf_select = iOSFake_Select; #endif #elif defined( _WIN32 ) && defined( HAVE_GET_FONT_BY_FAMILY_NAME ) p_sys->pf_select = Win32_Select; diff --git a/modules/text_renderer/platform_fonts.c b/modules/text_renderer/platform_fonts.c index 7869dba..deeaa7d 100644 --- a/modules/text_renderer/platform_fonts.c +++ b/modules/text_renderer/platform_fonts.c @@ -42,6 +42,9 @@ #include #if !TARGET_OS_IPHONE #include +#else +#include +#include #endif #include /* for MAXPATHLEN */ #undef HAVE_FONTCONFIG @@ -405,6 +408,43 @@ char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname, return psz_path; } +#else +char *iOSFake_Select( filter_t *p_filter, const char* psz_fontname, + bool b_bold, bool b_italic, int i_size, int *i_idx ) +{ + VLC_UNUSED(p_filter); + VLC_UNUSED(psz_fontname); + VLC_UNUSED(b_bold); + VLC_UNUSED(b_italic); + VLC_UNUSED(i_size); + VLC_UNUSED(i_idx); + + CFURLRef fileURL; + fileURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), + CFSTR("OpenSans-Regular.ttf"), + NULL, + NULL); + if (!fileURL) + return NULL; + CFStringRef urlString = CFURLCopyFileSystemPath(fileURL, kCFURLPOSIXPathStyle); + CFRelease(fileURL); + + if (!urlString) + return NULL; + + CFIndex length = CFStringGetLength(urlString); + if (!length) + return NULL; + length++; + + char *psz_path = (char *)malloc(length); + CFStringGetCString(urlString, psz_path, length, kCFStringEncodingUTF8); + CFRelease(urlString); + + psz_path = strdup(psz_path); + + return psz_path; +} #endif #endif diff --git a/modules/text_renderer/platform_fonts.h b/modules/text_renderer/platform_fonts.h index cff52b1..40b25fb 100644 --- a/modules/text_renderer/platform_fonts.h +++ b/modules/text_renderer/platform_fonts.h @@ -95,6 +95,9 @@ char* Win32_Select( filter_t *p_filter, const char* family, #if !TARGET_OS_IPHONE char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname, bool b_bold, bool b_italic, int i_size, int *i_idx ); +#else +char *iOSFake_Select( filter_t *p_filter, const char* psz_fontname, + bool b_bold, bool b_italic, int i_size, int *i_idx ); #endif #endif -- 2.5.1