summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-12-04 20:18:15 +0000
committerRoman Kennke <roman@kennke.org>2006-12-04 20:18:15 +0000
commit6aee275d2d5c068b1ceb239835a2524497af74b0 (patch)
treeb71df83bcbad9dfef156f676ac4291503f659973
parent993c7d174871d15da9eace2f8651879687392af2 (diff)
downloadclasspath-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--ChangeLog7
-rw-r--r--gnu/java/awt/peer/gtk/FreetypeGlyphVector.java17
2 files changed, 16 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 7dfd8f195..5dd835e14 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 );