diff --git a/RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java b/RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java index 8cb5182a3..51f0ffab6 100755 --- a/RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java +++ b/RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java @@ -14,6 +14,7 @@ import java.awt.geom.Rectangle2D; import javax.swing.text.TabExpander; +import javax.swing.text.Utilities; /** @@ -43,6 +44,34 @@ public class DefaultTokenPainter implements TokenPainter { } + @Override + public float nextX(Token token, int charCount, float x, + RSyntaxTextArea host, TabExpander e) { + + int textOffs = token.getTextOffset(); + char[] text = token.getTextArray(); + int end = textOffs + charCount; + int flushLen = 0; + int flushIndex = textOffs; + FontMetrics fm = host.getFontMetricsForTokenType(token.getType()); + + for (int i=textOffs; i attrs) { + // Use StyleContext to get a composite font for Asian glyphs. + // WORKAROUND for Sun JRE bug 6282887 (Asian font bug in 1.4/1.5) + // That bug seems to be hidden now, see 6289072 instead. + StyleContext sc = StyleContext.getDefaultStyleContext(); + Font font = sc.getFont(family, style, size); + if (attrs != null) { + font = font.deriveFont(attrs); + } + return font; + } + + /** * Returns a hex string representing an RGB color, of the form * "$rrggbb". @@ -328,10 +353,6 @@ public static SyntaxScheme loadFromString(String string, tokenCount + ", found " + tokens.length); } - // Use StyleContext to create fonts to get composite fonts for - // Asian glyphs. - StyleContext sc = StyleContext.getDefaultStyleContext(); - // Loop through each token style. Format: // "index,(fg|-),(bg|-),(t|f),((font,style,size)|(-,,))" for (int i=0; i