diff options
author | Roman Kennke <roman@kennke.org> | 2006-12-04 20:18:15 +0000 |
---|---|---|
committer | Roman Kennke <roman@kennke.org> | 2006-12-04 20:18:15 +0000 |
commit | 6aee275d2d5c068b1ceb239835a2524497af74b0 (patch) | |
tree | b71df83bcbad9dfef156f676ac4291503f659973 | |
parent | 993c7d174871d15da9eace2f8651879687392af2 (diff) | |
download | classpath-6aee275d2d5c068b1ceb239835a2524497af74b0.tar.gz |
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.
-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 ); |