diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java index 4ec71e5988b..37c20495d7c 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/TextLayout.java @@ -2854,6 +2854,14 @@ public boolean isDisposed () { return device == null; } +private static char replaceBelowSpaceCharacters(char chr) { + if (chr >= 0x20 || chr == '\t' || chr == '\r' || chr == '\n') { + return chr; + } + + return '?'; // (char)(0x2400 + chr); +} + /* * Itemize the receiver text */ @@ -2881,6 +2889,9 @@ StyleItem[] itemize () { int[] pcItems = new int[1]; char[] chars = new char[length]; segmentsText.getChars(0, length, chars, 0); + for (int i = 0; i < length; i++) { + chars[i] = replaceBelowSpaceCharacters(chars[i]); + } // enable font ligatures scriptControl.fMergeNeutralItems = true; /* @@ -3740,6 +3751,9 @@ void shape (GC gc, final long hdc, final StyleItem run) { final int[] buffer = new int[1]; final char[] chars = new char[run.length]; segmentsText.getChars(run.start, run.start + run.length, chars, 0); + for (int i = 0; i < chars.length; i++) { + chars[i] = replaceBelowSpaceCharacters(chars[i]); + } final int maxGlyphs = (chars.length * 3 / 2) + 16; long hHeap = OS.GetProcessHeap();