summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndoni Morales Alastruey <ylatuya@gmail.com>2012-11-20 20:58:12 +0100
committerAndoni Morales Alastruey <ylatuya@gmail.com>2012-11-20 21:08:34 +0100
commiteb20b358483c01fb4766bf07e01ae7bfed1bb247 (patch)
tree8dc28c89eeb02f54d7c9d78d51271f13cc077cb5
parentf3da54cad20b143281d6f8aedde01410ddf47ba1 (diff)
ndk-build: add fonts support
-rw-r--r--data/ndk-build/GStreamer.java67
-rw-r--r--data/ndk-build/fontconfig/fonts.conf126
-rw-r--r--data/ndk-build/fontconfig/fonts/verdana.ttfbin0 -> 139640 bytes
-rwxr-xr-xdata/ndk-build/gstreamer.mk8
-rw-r--r--data/ndk-build/gstreamer_android.c.in10
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
new file mode 100644
index 0000000..754a9b7
--- /dev/null
+++ b/data/ndk-build/fontconfig/fonts/verdana.ttf
Binary files differ
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