diff options
author | Andoni Morales Alastruey <ylatuya@gmail.com> | 2012-11-20 20:58:12 +0100 |
---|---|---|
committer | Andoni Morales Alastruey <ylatuya@gmail.com> | 2012-11-20 21:08:34 +0100 |
commit | eb20b358483c01fb4766bf07e01ae7bfed1bb247 (patch) | |
tree | 8dc28c89eeb02f54d7c9d78d51271f13cc077cb5 | |
parent | f3da54cad20b143281d6f8aedde01410ddf47ba1 (diff) |
ndk-build: add fonts support
-rw-r--r-- | data/ndk-build/GStreamer.java | 67 | ||||
-rw-r--r-- | data/ndk-build/fontconfig/fonts.conf | 126 | ||||
-rw-r--r-- | data/ndk-build/fontconfig/fonts/verdana.ttf | bin | 0 -> 139640 bytes | |||
-rwxr-xr-x | data/ndk-build/gstreamer.mk | 8 | ||||
-rw-r--r-- | data/ndk-build/gstreamer_android.c.in | 10 |
5 files changed, 202 insertions, 9 deletions
diff --git a/data/ndk-build/GStreamer.java b/data/ndk-build/GStreamer.java index 0ae7a45..6c58abe 100644 --- a/data/ndk-build/GStreamer.java +++ b/data/ndk-build/GStreamer.java @@ -1,7 +1,60 @@ -package com.gstreamer;
-
-import android.content.Context;
-
-public class GStreamer {
- public static native void init(Context context) throws Exception;
-}
+package com.gstreamer; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import android.content.Context; +import android.content.res.AssetManager; + +public class GStreamer { + private static native void nativeInit(Context context) throws Exception; + + public static void init(Context context) throws Exception { + nativeInit(context); + copyFonts(context); + } + + private static void copyFonts(Context context) { + AssetManager assetManager = context.getAssets(); + File filesDir = context.getFilesDir(); + File fontsFCDir = new File (filesDir, "fontconfig"); + File fontsDir = new File (fontsFCDir, "fonts"); + File fontsCfg = new File (fontsFCDir, "fonts.conf"); + + fontsDir.mkdirs(); + + try { + /* Copy the config file */ + copyFile (assetManager, "fontconfig/fonts.conf", fontsCfg); + /* Copy the fonts */ + for(String filename : assetManager.list("fontconfig/fonts/truetype")) { + File font = new File(fontsDir, filename); + copyFile (assetManager, "fontconfig/fonts/truetype/" + filename, font); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void copyFile(AssetManager assetManager, String assetPath, File outFile) throws IOException { + InputStream in; + OutputStream out; + byte[] buffer = new byte[1024]; + int read; + + if (outFile.exists()) + return; + + in = assetManager.open(assetPath); + out = new FileOutputStream (outFile); + while((read = in.read(buffer)) != -1){ + out.write(buffer, 0, read); + } + in.close(); + out.flush(); + out.close(); + } +} diff --git a/data/ndk-build/fontconfig/fonts.conf b/data/ndk-build/fontconfig/fonts.conf new file mode 100644 index 0000000..445d8ce --- /dev/null +++ b/data/ndk-build/fontconfig/fonts.conf @@ -0,0 +1,126 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/fonts.conf file to configure system font access --> +<fontconfig> + +<!-- Font directory list --> + + <dir prefix="xdg">fontconfig/fonts</dir> + +<!-- Font cache directory list --> + + <cachedir prefix="xdg">fontconfig</cachedir> + +<!-- + Accept deprecated 'mono' alias, replacing it with 'monospace' +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>mono</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>monospace</string> + </edit> + </match> + +<!-- + Accept alternate 'sans serif' spelling, replacing it with 'sans-serif' +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>sans serif</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>sans-serif</string> + </edit> + </match> + +<!-- + Accept deprecated 'sans' alias, replacing it with 'sans-serif' +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>sans</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>sans-serif</string> + </edit> + </match> + + <config> +<!-- + These are the default Unicode chars that are expected to be blank + in fonts. All other blank chars are assumed to be broken and + won't appear in the resulting charsets + --> + <blank> + <int>0x0020</int> <!-- SPACE --> + <int>0x00A0</int> <!-- NO-BREAK SPACE --> + <int>0x00AD</int> <!-- SOFT HYPHEN --> + <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER --> + <int>0x0600</int> <!-- ARABIC NUMBER SIGN --> + <int>0x0601</int> <!-- ARABIC SIGN SANAH --> + <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER --> + <int>0x0603</int> <!-- ARABIC SIGN SAFHA --> + <int>0x06DD</int> <!-- ARABIC END OF AYAH --> + <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK --> + <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER --> + <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER --> + <int>0x1680</int> <!-- OGHAM SPACE MARK --> + <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ --> + <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA --> + <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR --> + <int>0x2000</int> <!-- EN QUAD --> + <int>0x2001</int> <!-- EM QUAD --> + <int>0x2002</int> <!-- EN SPACE --> + <int>0x2003</int> <!-- EM SPACE --> + <int>0x2004</int> <!-- THREE-PER-EM SPACE --> + <int>0x2005</int> <!-- FOUR-PER-EM SPACE --> + <int>0x2006</int> <!-- SIX-PER-EM SPACE --> + <int>0x2007</int> <!-- FIGURE SPACE --> + <int>0x2008</int> <!-- PUNCTUATION SPACE --> + <int>0x2009</int> <!-- THIN SPACE --> + <int>0x200A</int> <!-- HAIR SPACE --> + <int>0x200B</int> <!-- ZERO WIDTH SPACE --> + <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER --> + <int>0x200D</int> <!-- ZERO WIDTH JOINER --> + <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK --> + <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK --> + <int>0x2028</int> <!-- LINE SEPARATOR --> + <int>0x2029</int> <!-- PARAGRAPH SEPARATOR --> + <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING --> + <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING --> + <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING --> + <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE --> + <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE --> + <int>0x202F</int> <!-- NARROW NO-BREAK SPACE --> + <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE --> + <int>0x2060</int> <!-- WORD JOINER --> + <int>0x2061</int> <!-- FUNCTION APPLICATION --> + <int>0x2062</int> <!-- INVISIBLE TIMES --> + <int>0x2063</int> <!-- INVISIBLE SEPARATOR --> + <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING --> + <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING --> + <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING --> + <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING --> + <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES --> + <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES --> + <int>0x2800</int> <!-- BRAILLE PATTERN BLANK --> + <int>0x3000</int> <!-- IDEOGRAPHIC SPACE --> + <int>0x3164</int> <!-- HANGUL FILLER --> + <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE --> + <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER --> + <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR --> + <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR --> + <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR --> + </blank> +<!-- + Rescan configuration every 30 seconds when FcFontSetList is called + --> + <rescan> + <int>30</int> + </rescan> + </config> + +</fontconfig> + diff --git a/data/ndk-build/fontconfig/fonts/verdana.ttf b/data/ndk-build/fontconfig/fonts/verdana.ttf Binary files differnew file mode 100644 index 0000000..754a9b7 --- /dev/null +++ b/data/ndk-build/fontconfig/fonts/verdana.ttf diff --git a/data/ndk-build/gstreamer.mk b/data/ndk-build/gstreamer.mk index 0dcb290..93a8cb1 100755 --- a/data/ndk-build/gstreamer.mk +++ b/data/ndk-build/gstreamer.mk @@ -94,7 +94,7 @@ LOCAL_EXPORT_C_INCLUDES += $(GSTREAMER_SDK_ROOT)/include include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer_prebuilt.mk # This triggers the build of our library using our custom rules -$(GSTREAMER_ANDROID_SO): buildsharedlibrary copyjavasource +$(GSTREAMER_ANDROID_SO): buildsharedlibrary copyjavasource copyfontsres # Some plugins use a different name for the module name, like the playback @@ -175,3 +175,9 @@ buildsharedlibrary: $(GSTREAMER_ANDROID_O) copyjavasource: @$(call host-mkdir,src/com/gstreamer) @$(call host-cp,$(GSTREAMER_NDK_BUILD_PATH)/GStreamer.java,src/com/gstreamer) + +copyfontsres: + @$(call host-mkdir,assets/fontconfig) + @$(call host-mkdir,assets/fontconfig/fonts/truetype/) + @$(call host-cp,$(GSTREAMER_NDK_BUILD_PATH)/fontconfig/fonts.conf,assets/fontconfig) + @$(call host-cp,$(GSTREAMER_NDK_BUILD_PATH)/fontconfig/fonts/verdana.ttf,assets/fontconfig/fonts/truetype) diff --git a/data/ndk-build/gstreamer_android.c.in b/data/ndk-build/gstreamer_android.c.in index abe37eb..61cfe79 100644 --- a/data/ndk-build/gstreamer_android.c.in +++ b/data/ndk-build/gstreamer_android.c.in @@ -346,9 +346,17 @@ gst_android_init (JNIEnv * env, jclass klass, jobject context) /* TODO: Should probably also set GST_PLUGIN_SCANNER and GST_PLUGIN_SYSTEM_PATH */ } if (files_dir) { + gchar *fontconfig; + g_setenv ("HOME", files_dir, TRUE); g_setenv ("XDG_DATA_DIRS", files_dir, TRUE); g_setenv ("XDG_CONFIG_DIRS", files_dir, TRUE); + g_setenv ("XDG_CONFIG_HOME", files_dir, TRUE); + g_setenv ("XDG_DATA_HOME", files_dir, TRUE); + + fontconfig = g_strdup_printf ("%s/fontconfig", files_dir); + g_setenv ("FONTCONFIG_PATH", fontconfig, TRUE); + g_free (fontconfig); } g_free (cache_dir); g_free (files_dir); @@ -384,7 +392,7 @@ gst_android_init (JNIEnv * env, jclass klass, jobject context) } static JNINativeMethod native_methods[] = { - {"init", "(Landroid/content/Context;)V", (void *) gst_android_init} + {"nativeInit", "(Landroid/content/Context;)V", (void *) gst_android_init} }; jint |