Forráskód Böngészése

patches/libvlc: added fake font lookup mechanism to freetype

Felix Paul Kühne 12 éve
szülő
commit
e37dfae69f

+ 87 - 0
patches/0012-HACK-freetype-added-a-fake-font-lookup-mechanism-for.patch

@@ -0,0 +1,87 @@
+From 37a0eb47e096280e612740c90d0e02d362554160 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
+Date: Fri, 3 May 2013 14:21:19 +0200
+Subject: [PATCH 12/12] [HACK] freetype: added a fake font lookup mechanism
+ for iOS to use the packaged demo fonts
+
+---
+ modules/text_renderer/freetype.c | 42 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+diff --git a/modules/text_renderer/freetype.c b/modules/text_renderer/freetype.c
+index 1325d3e..a070edd 100644
+--- a/modules/text_renderer/freetype.c
++++ b/modules/text_renderer/freetype.c
+@@ -106,6 +106,9 @@
+ #include <TargetConditionals.h>
+ #if !TARGET_OS_IPHONE
+ #include <Carbon/Carbon.h>
++#else
++#include <CoreFoundation/CoreFoundation.h>
++#include <vlc_url.h>
+ #endif
+ #include <sys/param.h>                         /* for MAXPATHLEN */
+ #undef HAVE_FONTCONFIG
+@@ -818,6 +821,40 @@ static char* MacLegacy_Select( filter_t *p_filter, const char* psz_fontname,
+ 
+     return psz_path;
+ }
++#else
++static char *iOSFake_Select( filter_t *p_filter, bool b_monospace, bool b_bold,
++                             bool b_italic )
++{
++    // included for future implementation
++    VLC_UNUSED(p_filter);
++    VLC_UNUSED(b_bold);
++    VLC_UNUSED(b_italic);
++    VLC_UNUSED(b_monospace);
++
++    CFURLRef fileURL;
++    fileURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), b_monospace ?
++                                      CFSTR("SourceSansPro-Regular.ttf") : CFSTR("SourceCodePro-Regular.ttf"),
++                                      NULL,
++                                      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
+ 
+@@ -2004,6 +2041,8 @@ static FT_Face LoadFace( filter_t *p_filter,
+ #elif defined( __APPLE__ )
+ #if !TARGET_OS_IPHONE
+         psz_fontfile = MacLegacy_Select( p_filter, p_style->psz_fontname, false, false, -1, &i_idx );
++#else
++        psz_fontfile = iOSFake_Select( p_filter, false, false, false );
+ #endif
+ #elif defined( WIN32 )
+         psz_fontfile = Win32_Select( p_filter,
+@@ -2920,6 +2959,9 @@ static int Create( vlc_object_t *p_this )
+ #elif defined(__APPLE__)
+ #if !TARGET_OS_IPHONE
+     psz_fontfile = MacLegacy_Select( p_filter, psz_fontfamily, false, false, 0, &fontindex );
++#else
++    psz_fontfile = iOSFake_Select( p_filter, false, false, false );
++    psz_monofontfile = iOSFake_Select( p_filter, true, false, false );
+ #endif
+ #elif defined(WIN32)
+     psz_fontfile = Win32_Select( p_filter, psz_fontfamily, false, false,
+-- 
+1.7.12.4 (Apple Git-37)
+