diff --git a/.gitignore b/.gitignore index 425985fb3..d563845a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ add_emoji_gsub.pyc build -waveflag +waveflag \ No newline at end of file diff --git a/emojicompat/FileMojiCompat/README.md b/emojicompat/FileMojiCompat/README.md deleted file mode 100644 index 882c69e71..000000000 --- a/emojicompat/FileMojiCompat/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# FileMojiCompat -## What is this? -This is a library providing an easy solution to use [EmojiCompat](https://developer.android.com/guide/topics/ui/look-and-feel/emoji-compat) -with fonts that are either stored in the `assets`-folder with another name than `NotoColorEmojiCompat.ttf` or you can use -EmojiCompat fonts which are stored anywhere on the device's local storage. -## How do I get this library? -That's relatively easy: Just add the following line to your module's `build.gradle` inside `dependencies`: -``` -implementation 'de.c1710:filemojicompat:1.0.7' -``` -## How do I use it? -There are two different methods included in this library: -1. ### [`AssetEmojiCompatConfig`](https://github.com/C1710/blobmoji/blob/filemojicompat/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/AssetEmojiCompatConfig.java) - You can use this just like you would usually use [`BundledEmojiCompatConfig`](https://developer.android.com/guide/topics/ui/look-and-feel/emoji-compat#bundled-fonts) - except for the detail that you can choose the font's name as the second parameter. - Example: - ```java - EmojiCompat.Config config = new AssetEmojiCompatConfig(getContext(), "Blobmoji.ttf"); - ``` - This will create a new EmojiCompat configuration using the file provided in `assets/Blobmoji.ttf`. - Anyhow, I don't recommend using `AssetEmojiCompatConfig` anymore as [this](#i-want-to-let-my-users-only-choose-another-font-if-they-dont-like-my-current-one) approach is more flexible and just as easy to use. -2. ### [`FileEmojiCompatConfig`](https://github.com/C1710/blobmoji/blob/filemojicompat/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/FileEmojiCompatConfig.java) - This is the more complex and interesting option. - Instead of providing a short String containing the font's name, you can provide a [`File`](https://developer.android.com/reference/java/io/File) - (or the String containing the full path of it). - This will try to load the font from this path. - In case it gets into any trouble - let's say because of missing permissions or a non-existent file, it will fallback to using no EmojiCompat at all. - (Technically this is wrong as leaving EmojiCompat uninitialized would crash the components using it. There's an explanation below). - Example: - ```java - Context context = getContext(); - File fontFile = new File(context.getExternalFilesDir(null), "emoji/Blobmoji.ttf"); - EmojiCompat.Config config = new FileEmojiCompatConfig(context, fontFile); - ``` - In this example, your app would try to load the font file `Blobmoji.ttf` located at `/storage/emulated/0/Android/data/[your.app.package]/files/Blobmoji.ttf`. - If this file is not available, EmojiCompat won't be visible. - Hint: When accessing a file inside your private directory (i.e. the one used in the example), you _don't_ need storage permissions. - However, if you want to load the font from somewhere else - let's say the `Download` directory, you ***will*** need storage permissions. - But don't worry (too much) - your app won't crash (probably) as this missing file is just being ignored in this case. - -### What happens if I don't provide the font file in `FileEmojiCompatConfig`? -In this case, there won't be a visible difference to not using EmojiCompat. -#### But what does that mean _exactly_? -If you take a look at `EmojiCompat` itself, you'll notice that it isn't build with missing fonts in mind. If anything happens, -`onLoadFailed` is called and EmojiCompat crashes - and so do all components relying on it. -To prevent this case, `FileEmojiCompatConfig` includes a fallback solution - inside the `assets` folder, you'll find a file called [`NoEmojiCompat.ttf`](https://github.com/C1710/blobmoji/blob/filemojicompat/emojicompat/FileMojiCompat/filemojicompat/src/main/assets/NoEmojiCompat.ttf) which -is much smaller than most of the EmojiCompat font files (~40kiB). That's because it only includes 10 characters which are the flags for China, Germany, Spain, France, United Kingdom, Italy, Japan, South Korea, Russia, USA. -These are the flags which where originally included in [Noto Emoji](https://github.com/googlei18n/noto-emoji) and they are only used to _fill_ the font -file with something. -#### Will my users see these flags when the fallback font is used? -Yes, they will. But only if their device either doesn't support these flags (which is basically impossible) or if they use a device which already uses -these assets as their default emojis. They won't replace any existing emojis. -#### But I did `setReplaceAll(true)`?! -This won't change anything as `FileEmojiCompatConfig` will detect if the font file is not valid and it will simply ignore `setReplaceAll(true)`. -## I want to let my users only choose another font if they don't like my current one -This is easily possible with the introduction of `FileMojiCompat 1.0.6`. -In this case you override the fallback font by putting your font into the `assets` folder of your app using the name `NoEmojiCompat.ttf`. -Whenever the fallback font is needed (which is the case if the user doesn't specify another one), this font is being used. -In order to prevent blocking the `setReplaceAll` method, you'll have to call it with `setReplaceAll(true, true)`. -The second argument indicates that you want to ignore this `replaceAll`-prevention (if set to `true`. Setting it to `false` won't change anything). -So here's a short example of using this very flexible, yet easy to use method. -But please be aware that changing the emoji font using this snippet isn't very easy as it needs the user to copy (and potentially rename) some files: -```java - Context context = getContext(); - File fontFile = new File(context.getExternalFilesDir(null), "emoji.ttf"); - EmojiCompat.Config config = new FileEmojiCompatConfig(context, fontFile) - .setReplaceAll(true, true); -``` -In this case, the font specified in `assets/NoEmojiCompat.ttf` will be used until `/storage/emulated/0/Android/[yourpackage]/files/emoji.ttf` exists and includes a valid `EmojiCompat` font. -This method combines the easy approach of `AssetEmojiCompatConfig` and the flexibility of `FileEmojiCompatConfig` with some tradeoffs on the usability side. -If you need a different asset path for your fallback file, you can simply add it as another argument for `FileEmojiCompatConfig`. This feature has been introduced in `1.0.7`. -**_PLEASE use at least this method in your app. It's always better to give the users a choice._** diff --git a/emojicompat/FileMojiCompat/build.gradle b/emojicompat/FileMojiCompat/build.gradle deleted file mode 100644 index 3fc3f5158..000000000 --- a/emojicompat/FileMojiCompat/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - - repositories { - google() - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - google() - jcenter() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/emojicompat/FileMojiCompat/filemojicompat/build.gradle b/emojicompat/FileMojiCompat/filemojicompat/build.gradle deleted file mode 100644 index e53adb7b1..000000000 --- a/emojicompat/FileMojiCompat/filemojicompat/build.gradle +++ /dev/null @@ -1,54 +0,0 @@ -apply plugin: 'com.android.library' -buildscript { - repositories { - mavenCentral() - google() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.1.3' - } -} - -ext { - bintrayRepo = 'FileMojiCompat' - bintrayName = 'filemojicompat' - publishedGroupId = 'de.c1710' - libraryName = 'filemojicompat' - artifact = 'filemojicompat' - libraryDescription = 'An EmojiCompat implementation using files from a local file or a file inside your assets directory' - siteUrl = 'https://github.com/c1710/blobmoji' - gitUrl = 'https://github.com/c1710/blobmoji.git' - libraryVersion = '1.0.11' - developerId = 'c1710' - developerName = 'Constantin A.' - developerEmail = 'c1710.apps@outlook.com' - licenseName = 'The Apache Software License, Version 2.0' - licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - allLicenses = ["Apache-2.0"] -} - -android { - compileSdkVersion 27 - - defaultConfig { - minSdkVersion 14 - targetSdkVersion 27 - versionCode 12 - versionName "1.0.12" - } - - - compileOptions { - targetCompatibility 1.8 - sourceCompatibility 1.8 - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:support-emoji:27.1.1' -} - -apply from: 'https://raw.githubusercontent.com/numetriclabz/jcenter/master/installv.gradle' -apply from: 'https://raw.githubusercontent.com/numetriclabz/jcenter/master/bintrayv.gradle' - diff --git a/emojicompat/FileMojiCompat/filemojicompat/proguard-rules.pro b/emojicompat/FileMojiCompat/filemojicompat/proguard-rules.pro deleted file mode 100644 index 6e7ffa997..000000000 --- a/emojicompat/FileMojiCompat/filemojicompat/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/emojicompat/FileMojiCompat/filemojicompat/src/main/AndroidManifest.xml b/emojicompat/FileMojiCompat/filemojicompat/src/main/AndroidManifest.xml deleted file mode 100644 index 51b79a617..000000000 --- a/emojicompat/FileMojiCompat/filemojicompat/src/main/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - diff --git a/emojicompat/FileMojiCompat/filemojicompat/src/main/assets/NoEmojiCompat.ttf b/emojicompat/FileMojiCompat/filemojicompat/src/main/assets/NoEmojiCompat.ttf deleted file mode 100644 index 72c9e7160..000000000 Binary files a/emojicompat/FileMojiCompat/filemojicompat/src/main/assets/NoEmojiCompat.ttf and /dev/null differ diff --git a/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/AssetEmojiCompatConfig.java b/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/AssetEmojiCompatConfig.java deleted file mode 100644 index 803df987d..000000000 --- a/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/AssetEmojiCompatConfig.java +++ /dev/null @@ -1,112 +0,0 @@ -package de.c1710.filemojicompat; -/* - * Original file (https://android.googlesource.com/platform/frameworks/support/+/master/emoji/bundled/src/main/java/android/support/text/emoji/bundled/BundledEmojiCompatConfig.java): - * Copyright (C) 2017 The Android Open Source Project - * Modifications Copyright (C) 2018 Constantin A. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import android.content.Context; -import android.content.res.AssetManager; -import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; -import android.support.text.emoji.EmojiCompat; -import android.support.text.emoji.MetadataRepo; - -/** - * A simple implementation of EmojiCompat.Config using typeface assets. - * Based on: - * https://android.googlesource.com/platform/frameworks/support/+/master/emoji/bundled/src/main/java/android/support/text/emoji/bundled/BundledEmojiCompatConfig.java - * Changes are marked with comments. Formatting and other simple changes are not always marked. - * @deprecated Please use {@link FileEmojiCompatConfig#createFromAsset(Context, String)} instead - * for greater flexibility. - */ -@Deprecated -public class AssetEmojiCompatConfig extends EmojiCompat.Config { - // The class name is obviously changed from the original file - - /** - * Create a new configuration for this EmojiCompat - * @param assetName The file name/path of the requested font - * @param context Context instance - */ - public AssetEmojiCompatConfig(@NonNull Context context, - // NEW - @NonNull String assetName) { - // This one is oviously new - super(new AssetMetadataLoader(context, assetName)); - } - - /** - * This is the MetadataLoader. Derived from BundledMetadataLoader but with - * the addition of a custom asset name. - */ - private static class AssetMetadataLoader implements EmojiCompat.MetadataRepoLoader{ - private final Context mContext; - // NEW - private final String assetName; - - private AssetMetadataLoader(@NonNull Context context, - // NEW - String assetName) { - this.mContext = context.getApplicationContext(); - // NEW - this.assetName = assetName; - } - - - // Copied from BundledEmojiCompatConfig - @Override - @RequiresApi(19) - public void load(@NonNull EmojiCompat.MetadataRepoLoaderCallback loaderCallback) { - // This one doesn't work as it's not android.support - //Preconditions.checkNotNull(loaderCallback, "loaderCallback cannot be null"); - final InitRunnable runnable = new InitRunnable(mContext, loaderCallback, assetName); - final Thread thread = new Thread(runnable); - thread.setDaemon(false); - thread.start(); - } - } - - @RequiresApi(19) - private static class InitRunnable implements Runnable { - // The font name is assigned in the constructor. - private final String FONT_NAME; - // Slightly different variable names - private final EmojiCompat.MetadataRepoLoaderCallback loaderCallback; - private final Context context; - - private InitRunnable(final Context context, - final EmojiCompat.MetadataRepoLoaderCallback loaderCallback, - // NEW parameter - final String FONT_NAME) { - // This has been changed a bit in order to get some consistency - this.context = context; - this.loaderCallback = loaderCallback; - this.FONT_NAME = FONT_NAME; - } - - // This has been copied from BundledEmojiCompatConfig - @Override - public void run() { - try { - final AssetManager assetManager = context.getAssets(); - final MetadataRepo resourceIndex = MetadataRepo.create(assetManager, FONT_NAME); - loaderCallback.onLoaded(resourceIndex); - } catch (Throwable t) { - loaderCallback.onFailed(t); - } - } - } -} diff --git a/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/FileEmojiCompatConfig.java b/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/FileEmojiCompatConfig.java deleted file mode 100644 index 8ce3e60bb..000000000 --- a/emojicompat/FileMojiCompat/filemojicompat/src/main/java/de/c1710/filemojicompat/FileEmojiCompatConfig.java +++ /dev/null @@ -1,293 +0,0 @@ -package de.c1710.filemojicompat; -/* - * Adapted from https://android.googlesource.com/platform/frameworks/support/+/master/emoji/bundled/src/main/java/android/support/text/emoji/bundled/BundledEmojiCompatConfig.java - * Copyright (C) 2017 The Android Open Source Project - * Modifications Copyright (C) 2018 Constantin A. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import android.content.Context; -import android.content.res.AssetManager; -import android.graphics.Typeface; -import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; -import android.support.text.emoji.EmojiCompat; -import android.support.text.emoji.MetadataRepo; -import android.util.Log; - -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; - -/** - * A simple implementation of EmojiCompat.Config using typeface files. - * Based on: - * https://android.googlesource.com/platform/frameworks/support/+/master/emoji/bundled/src/main/java/android/support/text/emoji/bundled/BundledEmojiCompatConfig.java - * Changes are marked with comments. Formatting and other simple changes are not always marked. - */ -public class FileEmojiCompatConfig extends EmojiCompat.Config { - // The class name is obviously changed from the original file - private final static String TAG = "FileEmojiCompatConfig"; - - /** - * This boolean indicates whether the fallback solution is used. - */ - private boolean fallback; - /** - * Indicates whether all emojis should be replaced when the fallback font is used. - */ - private boolean replaceAllOnFallback = false; - /** - * The default name of the fallback font - */ - private static final String FONT_FALLBACK = "NoEmojiCompat.ttf"; - - /** - * Creates a new FileEmojiCompatConfig based on an asset. - *

- * This means that you can have the flexibility of {@link AssetEmojiCompatConfig} - * while giving your users the choice to optionally override the font. - *

- * The default location for a substituting font is - * {@code /sdcard/Android/data/your.apps.package/files/EmojiCompat.ttf}. - * - * @param context The app's context is needed for several tasks - * @param assetPath The path inside the {@code assets} folder for the default font file - * @return A FileEmojiCompatConfig which will use the given font by default - */ - public FileEmojiCompatConfig createFromAsset(@NonNull Context context, - @Nullable String assetPath) { - if (assetPath != null) { - FileEmojiCompatConfig config = new FileEmojiCompatConfig(context, - new File(context.getExternalFilesDir(null), "EmojiCompat.ttf"), - assetPath); - config.replaceAllOnFallback = true; - return config; - } else { - return createFromAsset(context); - } - } - - /** - * Creates a new FileEmojiCompatConfig based on an asset. - *

- * This means that you can have the flexibility of {@link AssetEmojiCompatConfig} - * while giving your users the choice to optionally override the font. - *

- * The default location for a substituting font is - * {@code /sdcard/Android/data/your.apps.package/files/EmojiCompat.ttf}. - *

- * The default name for the Assets font is {@code NoEmojiCompat.ttf}. - * If you wish to use a different name for this font, please use - * {@link #createFromAsset(Context, String)}. - * - * @param context The app's context is needed for several tasks - * @return A FileEmojiCompatConfig which will use the given font by default - */ - public FileEmojiCompatConfig createFromAsset(@NonNull Context context) { - return createFromAsset(context, FONT_FALLBACK); - } - - /** - * Create a new configuration for this EmojiCompat - * @param path The file name/path of the requested font - * @param context Context instance - */ - public FileEmojiCompatConfig(@NonNull Context context, - // NEW - @NonNull String path) { - // This one is obviously new - this(context, path, FONT_FALLBACK); - } - - /** - * Create a new configuration for this EmojiCompat - * @param path The file name/path of the requested font - * @param context Context instance - * @param fallbackFont The asset path of the fallback font - */ - public FileEmojiCompatConfig(@NonNull Context context, - // NEW - @NonNull String path, - @Nullable String fallbackFont) { - // This one is obviously new - this(context, new File(path), fallbackFont); - } - - /** - * Create a new configuration for this EmojiCompat based on a file - * @param context Context instance - * @param fontFile The file containing the EmojiCompat font - */ - public FileEmojiCompatConfig(@NonNull Context context, - // NEW - @Nullable File fontFile) { - this(context, fontFile, FONT_FALLBACK); - } - - /** - * Create a new configuration for this EmojiCompat based on a file - * @param context Context instance - * @param fontFile The file containing the EmojiCompat font - * @param fallbackFont The asset path of the fallback font - */ - public FileEmojiCompatConfig(@NonNull Context context, - // NEW - @Nullable File fontFile, - @Nullable String fallbackFont) { - super(new FileMetadataLoader(context, - fontFile, - fallbackFont != null ? fallbackFont : FONT_FALLBACK)); - if(fontFile != null && fontFile.exists() && fontFile.canRead()) { - try { - // Is it a font? - Typeface typeface = Typeface.createFromFile(fontFile); - // Is it an EmojiCompat font? - /* - Please note that this will possibly cause a race condition. But all in all it's - better to have a chance of detecting such a non-valid font than either having to - wait for a long time or not being able to detect it at all. - However, since this Thread is started immediately, it should be faster than - the initialization process of EmojiCompat itself... - */ - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - new Thread(() -> { - try { - MetadataRepo.create(typeface, new FileInputStream(fontFile)); - } catch (Throwable t) { - fallback = true; - setReplaceAll(false); - Log.w(TAG, "FileEmojiCompatConfig: No valid EmojiCompat font provided. Fallback enabled", t); - } - }).start(); - } - } catch (RuntimeException ex) { - fallback = true; - Log.e(TAG, "FileEmojiCompatConfig: Font file corrupt. Fallback enabled", ex); - } - } else { - // The heck, this is not even an actual _file_! - fallback = true; - } - - } - - @Override - public FileEmojiCompatConfig setReplaceAll(boolean replaceAll) { - return setReplaceAll(replaceAll, replaceAllOnFallback); - } - - /** - * Replace all emojis - * @param replaceAll Whether all emojis should be replaced - * @param replaceAllOnFallback true if this is supposed to be the case even when using the fallback font. - * Useful if the NoEmojiCompat.ttf is overridden by a "real" EmojiCompat font. - * @return This EmojiCompat.Config - */ - public FileEmojiCompatConfig setReplaceAll(boolean replaceAll, boolean replaceAllOnFallback) { - this.replaceAllOnFallback = replaceAllOnFallback; - if(!fallback || replaceAllOnFallback) { - super.setReplaceAll(replaceAll); - } - else { - super.setReplaceAll(false); - if(replaceAll) { - // If replaceAll would have been set to false anyway, there's no need for apologizing. - Log.w(TAG, "setReplaceAll: Cannot replace all emojis. Fallback font is active"); - } - } - return this; - } - - /** - * This is the MetadataLoader. Derived from BundledMetadataLoader but with - * the addition of a custom file name. - */ - private static class FileMetadataLoader implements EmojiCompat.MetadataRepoLoader{ - private final Context mContext; - // NEW - private final File fontFile; - private final String fallbackFont; - - private FileMetadataLoader(@NonNull Context context, - // NEW - @Nullable File fontFile, - @NonNull String fallbackFont) { - this.mContext = context.getApplicationContext(); - // NEW - this.fontFile = fontFile; - this.fallbackFont = fallbackFont; - } - - - // Copied from BundledEmojiCompatConfig - @Override - @RequiresApi(19) - public void load(@NonNull EmojiCompat.MetadataRepoLoaderCallback loaderCallback) { - //Preconditions.checkNotNull(loaderCallback, "loaderCallback cannot be null"); - final InitRunnable runnable = new InitRunnable(mContext, loaderCallback, fontFile, fallbackFont); - final Thread thread = new Thread(runnable); - thread.setDaemon(false); - thread.start(); - } - } - - @RequiresApi(19) - private static class InitRunnable implements Runnable { - // The font names are assigned in the constructor. - private final File FONT_FILE; - private final String FONT_FALLBACK; - // Slightly different variable names - private final EmojiCompat.MetadataRepoLoaderCallback loaderCallback; - private final Context context; - - private InitRunnable(final Context context, - final EmojiCompat.MetadataRepoLoaderCallback loaderCallback, - // NEW parameter - final File FONT_FILE, - final String FONT_FALLBACK) { - // This has been changed a bit in order to get some consistency - this.context = context; - this.loaderCallback = loaderCallback; - this.FONT_FILE = FONT_FILE; - this.FONT_FALLBACK = FONT_FALLBACK; - } - - @Override - public void run() { - try { - // Changed to load a file - final Typeface typeface = Typeface.createFromFile(FONT_FILE); - final InputStream stream = new FileInputStream(FONT_FILE); - MetadataRepo resourceIndex = MetadataRepo.create(typeface, stream); - loaderCallback.onLoaded(resourceIndex); - } - catch (Throwable t) { - // Instead of crashing, this one will first try to load the fallback font - try { - android.util.Log.w(TAG, "Error while loading the font file.", t); - final AssetManager assetManager = context.getAssets(); - final MetadataRepo resourceIndex = - MetadataRepo.create(assetManager, FONT_FALLBACK); - loaderCallback.onLoaded(resourceIndex); - } catch (Throwable t2) { - Log.e(TAG, "Even the fallback font couldn't be loaded", t2); - loaderCallback.onFailed(t); - } - } - } - } -} diff --git a/emojicompat/FileMojiCompat/gradle.properties b/emojicompat/FileMojiCompat/gradle.properties deleted file mode 100644 index 9fdc93c10..000000000 --- a/emojicompat/FileMojiCompat/gradle.properties +++ /dev/null @@ -1,17 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx1024m - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true diff --git a/emojicompat/FileMojiCompat/gradle/wrapper/gradle-wrapper.jar b/emojicompat/FileMojiCompat/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 13372aef5..000000000 Binary files a/emojicompat/FileMojiCompat/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/emojicompat/FileMojiCompat/gradle/wrapper/gradle-wrapper.properties b/emojicompat/FileMojiCompat/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 870e127a2..000000000 --- a/emojicompat/FileMojiCompat/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Apr 26 17:31:13 CEST 2018 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/emojicompat/FileMojiCompat/gradlew b/emojicompat/FileMojiCompat/gradlew deleted file mode 100644 index 9d82f7891..000000000 --- a/emojicompat/FileMojiCompat/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/emojicompat/FileMojiCompat/gradlew.bat b/emojicompat/FileMojiCompat/gradlew.bat deleted file mode 100644 index aec99730b..000000000 --- a/emojicompat/FileMojiCompat/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/emojicompat/FileMojiCompat/settings.gradle b/emojicompat/FileMojiCompat/settings.gradle deleted file mode 100644 index e91d23c2f..000000000 --- a/emojicompat/FileMojiCompat/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':filemojicompat'