From 46c49d37c3fbf43e089677707f4896847d503d91 Mon Sep 17 00:00:00 2001 From: Michael Scharf Date: Fri, 26 Oct 2007 05:42:19 +0000 Subject: [PATCH] NEW - bug 206328: [regression] Terminal does not draw correctly with proportional font https://bugs.eclipse.org/bugs/show_bug.cgi?id=206328 --- .../internal/terminal/textcanvas/StyleMap.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java b/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java index 399c897a0d2..288158231e0 100644 --- a/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java +++ b/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java @@ -145,25 +145,27 @@ public class StyleMap { for (char c = ' '; c <= '~'; c++) { // consider only the first 128 chars for deciding if a font // is proportional - if(measureChar(gc, c)) + if(measureChar(gc, c, true)) fProportional=true; } // TODO should we also consider the upper 128 chars?? -// for (char c = ' '+128; c <= '~'+128; c++) { -// measureChar(gc, c); -// } + for (char c = ' '+128; c <= '~'+128; c++) { + measureChar(gc, c,false); + } for (int i = 0; i < fOffsets.length; i++) { fOffsets[i]=(fCharSize.x-fOffsets[i])/2; } gc.dispose (); } - private boolean measureChar(GC gc, char c) { + private boolean measureChar(GC gc, char c, boolean updateMax) { boolean proportional=false; Point ext=gc.textExtent(String.valueOf(c)); if(ext.x>0 && ext.y>0 && (fCharSize.x!=ext.x || fCharSize.y!=ext.y)) { proportional=true; - fCharSize.x=Math.max(fCharSize.x, ext.x); - fCharSize.y=Math.max(fCharSize.y, ext.y); + if(updateMax) { + fCharSize.x=Math.max(fCharSize.x, ext.x); + fCharSize.y=Math.max(fCharSize.y, ext.y); + } } fOffsets[c]=ext.x; return proportional;