From 6aee275d2d5c068b1ceb239835a2524497af74b0 Mon Sep 17 00:00:00 2001 From: Roman Kennke Date: Mon, 4 Dec 2006 20:18:15 +0000 Subject: 2006-12-04 Roman Kennke * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java (FreeTypeGlyphVector): Don't filter control chars here. (getGlyphs): Filter control chars and replace them by hair space char. --- ChangeLog | 7 +++++++ gnu/java/awt/peer/gtk/FreetypeGlyphVector.java | 17 +++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7dfd8f195..5dd835e14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-12-04 Roman Kennke + + * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java + (FreeTypeGlyphVector): Don't filter control chars here. + (getGlyphs): Filter control chars and replace them by + hair space char. + 2006-12-04 Roman Kennke * native/jni/java-nio/gnu_java_nio_VMChannel.c diff --git a/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java b/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java index 4ad87a84b..131a96448 100644 --- a/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java +++ b/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java @@ -101,13 +101,7 @@ public class FreetypeGlyphVector extends GlyphVector public FreetypeGlyphVector(Font f, char[] chars, int start, int len, FontRenderContext frc, int flags) { - // We need to filter out control characters (and possibly other - // non-renderable characters here). - StringBuilder b = new StringBuilder(chars.length); - for (int i = start; i < start + len; i++) - if (!Character.isISOControl(chars[i])) - b.append(chars[i]); - this.s = b.toString(); + this.s = new String(chars, start, len); this.font = f; this.frc = frc; @@ -187,10 +181,17 @@ public class FreetypeGlyphVector extends GlyphVector for(int i = 0; i < nGlyphs; i++) { codePoints[i] = s.codePointAt( stringIndex ); - // UTF32 surrogate handling + // UTF32 surrogate handling if( codePoints[i] != (int)s.charAt( stringIndex ) ) stringIndex ++; stringIndex ++; + + if (Character.isISOControl(codePoints[i])) + { + // Replace with 'hair space'. Should better be 'zero-width space' + // but that doesn't seem to be supported by default font. + codePoints[i] = 8202; + } } glyphCodes = getGlyphs( codePoints ); -- cgit v1.2.1