From 84fa9daa5fc7ee1a1038f623599c76aa99eb550e Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 12 Oct 2019 19:12:29 -0400 Subject: [PATCH] v0.7.5b: added additional handling for missing characters --- .../src/main/java/com/watabou/noosa/RenderedText.java | 5 +++-- .../android/AndroidPlatformSupport.java | 4 +++- 2 files changed, 6 insertions(+), 3 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 68138886f..1f142dc7c 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/RenderedText.java @@ -93,7 +93,8 @@ public class RenderedText extends Image { GlyphLayout glyphs = new GlyphLayout( font, text); for (char c : text.toCharArray()) { - if (font.getData().getGlyph(c) == null){ + BitmapFont.Glyph g = font.getData().getGlyph(c); + if (g == null || (g.id != c)){ Game.reportException(new Throwable("font file " + font.toString() + " could not render " + c)); } } @@ -101,7 +102,7 @@ public class RenderedText extends Image { //We use the xadvance of the last glyph in some cases to fix issues // with fullwidth punctuation marks in some asian scripts BitmapFont.Glyph lastGlyph = font.getData().getGlyph(text.charAt(text.length()-1)); - if (lastGlyph.xadvance > lastGlyph.width*1.5f){ + if (lastGlyph != null && lastGlyph.xadvance > lastGlyph.width*1.5f){ width = glyphs.width - lastGlyph.width + lastGlyph.xadvance; } else { width = glyphs.width; 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 47ced511c..ebd06b529 100644 --- a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidPlatformSupport.java @@ -316,7 +316,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);