From 847a4bc53c549c277d479ee904ab45be7f5e4dec Mon Sep 17 00:00:00 2001 From: Kevin Lamonte Date: Sat, 28 Mar 2015 22:15:37 -0400 Subject: [PATCH] make Windows look like X11, why does this work --- src/jexer/io/SwingScreen.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/jexer/io/SwingScreen.java b/src/jexer/io/SwingScreen.java index be8fb67..1b3d8a4 100644 --- a/src/jexer/io/SwingScreen.java +++ b/src/jexer/io/SwingScreen.java @@ -168,6 +168,16 @@ public final class SwingScreen extends Screen { */ private int maxDescent = 0; + /** + * System-dependent Y adjustment for text in the character cell. + */ + private int textAdjustY = 0; + + /** + * System-dependent X adjustment for text in the character cell. + */ + private int textAdjustX = 0; + /** * Top pixel absolute location. */ @@ -350,6 +360,11 @@ public final class SwingScreen extends Screen { // This also produces the same number, but works better for ugly // monospace. textHeight = fm.getMaxAscent() + maxDescent - leading; + + if (System.getProperty("os.name").startsWith("Windows")) { + textAdjustY = -1; + textAdjustX = 0; + } } /** @@ -477,8 +492,10 @@ public final class SwingScreen extends Screen { gr.setColor(attrToForegroundColor(lCellColor)); char [] chars = new char[1]; chars[0] = lCell.getChar(); - gr.drawChars(chars, 0, 1, xPixel, - yPixel + textHeight - maxDescent); + gr.drawChars(chars, 0, 1, xPixel + textAdjustX, + yPixel + textHeight - maxDescent + + textAdjustY); + if (lCell.isUnderline()) { gr.fillRect(xPixel, yPixel + textHeight - 2, textWidth, 2); -- 2.27.0