From 18349b146e764207775b20f018b55fe349e1f28a Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 12 Oct 2019 02:09:09 -0400 Subject: [PATCH] v0.7.5b: added some error handling behaviour to new rendered text --- .../main/java/com/watabou/noosa/RenderedText.java | 6 ++++++ .../android/AndroidPlatformSupport.java | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java b/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java index ac675d050..9e2c833a8 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java @@ -92,6 +92,12 @@ public class RenderedText extends Image { GlyphLayout l = new GlyphLayout( font, text); + for (char c : text.toCharArray()) { + if (font.getData().getGlyph(c) == null){ + Game.reportException(new Throwable("font file " + font.toString() + " could not render " + c)); + } + } + width = l.width; //this is identical to l.height in most cases, but we force this for consistency. diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java index e81edcf5b..a10e6c4fb 100644 --- a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java @@ -218,7 +218,7 @@ public class AndroidPlatformSupport extends PlatformSupport { //android 7.0+. Finally back to normalcy, everything nicely in one .ttc if (Gdx.files.absolute("/system/fonts/NotoSansCJK-Regular.ttc").exists()) { - //typefaces are 1-JP, 2-KR, 3-SC, 3-TC. + //typefaces are 1-JP, 2-KR, 3-SC, 4-TC. int typeFace; switch (SPDSettings.language()){ case JAPANESE: @@ -246,6 +246,7 @@ public class AndroidPlatformSupport extends PlatformSupport { //android 4.3-. Note that korean isn't in DroidSandFallback and is therefore unfixably broken on 4.2 and 4.3 } else if (Gdx.files.absolute("/system/fonts/DroidSansFallback.ttf").exists()) { + //TODO consider setting KRFontGenerator to null here on android 4.3 to 4.2 to communicate that the font is broken. KRFontGenerator = SCFontGenerator = JPFontGenerator = new FreeTypeFontGenerator(Gdx.files.absolute("/system/fonts/DroidSansFallback.ttf")); //shouldn't ever trigger, but just in case @@ -314,7 +315,9 @@ public class AndroidPlatformSupport extends PlatformSupport { parameters.characters = ""; parameters.packer = packer; - fonts.get(generator).put(size, generator.generateFont(parameters)); + BitmapFont font = generator.generateFont(parameters); + font.getData().missingGlyph = font.getData().getGlyph('�'); + fonts.get(generator).put(size, font); } return fonts.get(generator).get(size); @@ -325,14 +328,16 @@ public class AndroidPlatformSupport extends PlatformSupport { "(?<=\n)|(?=\n)|(?<=_)|(?=_)|" + "(?<=\\p{InHiragana})|(?=\\p{InHiragana})|" + "(?<=\\p{InKatakana})|(?=\\p{InKatakana})|" + - "(?<=\\p{InCJK_Unified_Ideographs})|(?=\\p{InCJK_Unified_Ideographs})"); + "(?<=\\p{InCJK_Unified_Ideographs})|(?=\\p{InCJK_Unified_Ideographs})|" + + "(?<=\\p{InCJK_Symbols_and_Punctuation})|(?=\\p{InCJK_Symbols_and_Punctuation})|"); //additionally splits on words, so that each word can be arranged individually private Pattern regularsplitterMultiline = Pattern.compile( "(?<= )|(?= )|(?<=\n)|(?=\n)|(?<=_)|(?=_)|" + "(?<=\\p{InHiragana})|(?=\\p{InHiragana})|" + "(?<=\\p{InKatakana})|(?=\\p{InKatakana})|" + - "(?<=\\p{InCJK_Unified_Ideographs})|(?=\\p{InCJK_Unified_Ideographs})"); + "(?<=\\p{InCJK_Unified_Ideographs})|(?=\\p{InCJK_Unified_Ideographs})|" + + "(?<=\\p{InCJK_Symbols_and_Punctuation})|(?=\\p{InCJK_Symbols_and_Punctuation})|"); //splits on each group of hangul syllables. Needed for weird android 6.0 font files private Pattern android6KRSplitter = Pattern.compile(