final float lineHeight = generatedFont.getLineHeight(); final float spaceXadvance = generatedFont.getSpaceXadvance(); final float xHeight = generatedFont.getXHeight(); final float loadedFontlineHeight = loadedFont.getLineHeight(); final float loadedFontspaceXadvance = loadedFont.getSpaceXadvance(); final float loadedFontxHeight = loadedFont.getXHeight();
private void renderFontWithMetrics (BitmapFont font, String text, float x, float y) { float alignmentWidth; spriteBatch.begin(); GlyphLayout layout = font.draw(spriteBatch, text, x, y); spriteBatch.end(); renderer.begin(ShapeRenderer.ShapeType.Filled); renderer.setColor(Color.BLACK); renderer.rect(x - 3, y - 3, 6, 6); renderer.end(); float baseline = y - font.getCapHeight(); renderer.begin(ShapeRenderer.ShapeType.Line); renderer.setColor(Color.LIGHT_GRAY); renderer.line(0, y, 9999, y); renderer.setColor(Color.MAGENTA); renderer.line(0, baseline, 9999, baseline); renderer.setColor(Color.GREEN); renderer.line(0, baseline + font.getXHeight(), 9999, baseline + font.getXHeight()); renderer.setColor(Color.CYAN); renderer.line(0, y + font.getAscent(), 9999, y + font.getAscent()); renderer.setColor(Color.RED); renderer.line(0, baseline + font.getDescent(), 9999, baseline + font.getDescent()); renderer.setColor(Color.ORANGE); renderer.line(0, y - font.getLineHeight(), 9999, y - font.getLineHeight()); renderer.end(); renderer.begin(ShapeRenderer.ShapeType.Line); renderer.setColor(Color.BLUE); renderer.rect(x, y, layout.width, -layout.height); renderer.end(); }
renderer.line(0, baseline, 9999, baseline); renderer.setColor(Color.GREEN); renderer.line(0, baseline + font.getXHeight(), 9999, baseline + font.getXHeight()); renderer.setColor(Color.CYAN); renderer.line(0, y + font.getAscent(), 9999, y + font.getAscent());
renderer.line(0, baseline, 9999, baseline); renderer.setColor(Color.GREEN); renderer.line(0, baseline + font.getXHeight(), 9999, baseline + font.getXHeight()); renderer.setColor(Color.CYAN); renderer.line(0, y + font.getAscent(), 9999, y + font.getAscent());
@Override public void setText(Text t) { text = t; if (t == null && isVisible()) { setVisible(false); } else if (t != null && !isVisible()) { setVisible(true); } if (isVisible()) { style = getStyle(text); Color color = text.color != null ? text.color : style.defaultColor; if (color == null) color = Color.BLACK; maxWidth = Math.min(getStage().getViewport().getScreenWidth() - DPIUtils.getMarginSize() * 2, style.font.getXHeight() * (text.type == Text.Type.TALK ? style.maxTalkCharWidth : style.maxCharWidth)); layout.setText(style.font, text.str, color, maxWidth, Align.center, true); setSize(layout.width + PADDING * 2, layout.height + PADDING * 2); calcPos(); } }