Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot display a Unicode character (Emoji) in an Android TextView with large text: "Font size too large to fit in cache"

I'm trying to display a single Unicode character (an emoji) in a TextView, with a large(r) text size:

mEmojiTextView = (TextView) findViewById(R.id.emoji_text_view);
mEmojiTextView.setTextSize(200);
mEmojiTextView.setText("\uD83D\uDE01");

The character does not appear on the screen, and I get this error in logcat:

E/OpenGLRenderer﹕ Font size too large to fit in cache. width, height = 545, 513

The largest size that works is

mEmojiTextView.setTextSize(150);

and the Emoji character appears. It's not like it's full screen or anything, at this text size there is enough space on the screen for about 6 emoji characters.

I'm running the test on a LG Nexus 5 phone, with 1080 x 1920 resolution, running Android 5.1.1. I'm using minSdkVersion 11 and targetSdkVersion 23

I tried many workarounds found on StackOverflow and elsewhere:

mEmojiTextView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

<TextView android:layerType="software" ... />

<activity android:hardwareAccelerated="false" ... />

Nothing works.

Is there a way I can get it to work?

like image 463
Alex Vang Avatar asked Aug 30 '15 15:08

Alex Vang


1 Answers

It's an android issue Issue with emoji with 200sp size No way to fix it at the moment, just don't set size more than 199 if you have emoji in TextView

like image 143
Wackaloon Avatar answered Oct 05 '22 22:10

Wackaloon