mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Typeface: Enable advanced colour glyph rendering on Android
Android 15+ removed the 'legacy' png-based emoji font. Modern Android versions may include only a COLR-v1-based font, which JUCE cannot render itself. As a workaround, on Android, we use a Canvas object to render each emoji glyph into a bitmap, and then render that bitmap in the same way as a legacy png-based glyph. This won't look as crisp as rendering COLRv1 glyphs directly, especially at larger sizes, but this is a sufficient stop-gap for the time being.
This commit is contained in:
parent
70a2dd7e15
commit
a3d64c7784
5 changed files with 243 additions and 46 deletions
|
|
@ -540,6 +540,7 @@ DECLARE_JNI_CLASS (AndroidPackageManager, "android/content/pm/PackageManager")
|
|||
|
||||
#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD, CALLBACK) \
|
||||
METHOD (constructor, "<init>", "(I)V") \
|
||||
METHOD (defaultConstructor, "<init>", "()V") \
|
||||
METHOD (setColor, "setColor", "(I)V") \
|
||||
METHOD (setAlpha, "setAlpha", "(I)V") \
|
||||
METHOD (setTypeface, "setTypeface", "(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;") \
|
||||
|
|
@ -565,6 +566,12 @@ DECLARE_JNI_CLASS (AndroidPaint, "android/graphics/Paint")
|
|||
DECLARE_JNI_CLASS (AndroidCanvas, "android/graphics/Canvas")
|
||||
#undef JNI_CLASS_MEMBERS
|
||||
|
||||
#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD, CALLBACK) \
|
||||
METHOD (drawGlyphs, "drawGlyphs", "([II[FIILandroid/graphics/fonts/Font;Landroid/graphics/Paint;)V")
|
||||
|
||||
DECLARE_JNI_CLASS_WITH_MIN_SDK (AndroidCanvas31, "android/graphics/Canvas", 31)
|
||||
#undef JNI_CLASS_MEMBERS
|
||||
|
||||
#define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD, CALLBACK) \
|
||||
STATICMETHOD (getActivity, "getActivity", "(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;") \
|
||||
STATICMETHOD (getBroadcast, "getBroadcast", "(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;") \
|
||||
|
|
@ -706,8 +713,10 @@ DECLARE_JNI_CLASS (JavaBoolean, "java/lang/Boolean")
|
|||
METHOD (remaining, "remaining", "()I") \
|
||||
METHOD (hasArray, "hasArray", "()Z") \
|
||||
METHOD (array, "array", "()[B") \
|
||||
METHOD (put, "put", "([B)Ljava/nio/ByteBuffer;") \
|
||||
METHOD (setOrder, "order", "(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;") \
|
||||
STATICMETHOD (wrap, "wrap", "([B)Ljava/nio/ByteBuffer;")
|
||||
STATICMETHOD (wrap, "wrap", "([B)Ljava/nio/ByteBuffer;") \
|
||||
STATICMETHOD (allocateDirect, "allocateDirect", "(I)Ljava/nio/ByteBuffer;") \
|
||||
|
||||
DECLARE_JNI_CLASS (JavaByteBuffer, "java/nio/ByteBuffer")
|
||||
#undef JNI_CLASS_MEMBERS
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue