summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
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 /gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
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.
Diffstat (limited to 'gnu/java/awt/peer/gtk/FreetypeGlyphVector.java')
-rw-r--r--gnu/java/awt/peer/gtk/FreetypeGlyphVector.java17
1 files changed, 9 insertions, 8 deletions
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 );