diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/FreetypeGlyphVector.java | 17 |
2 files changed, 16 insertions, 8 deletions
@@ -1,5 +1,12 @@ 2006-12-04 Roman Kennke <kennke@aicas.com> + * 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 <kennke@aicas.com> + * native/jni/java-nio/gnu_java_nio_VMChannel.c (Java_gnu_java_nio_VMChannel_connect): Retry on EINTR. 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 ); |