From 6c8949bba19aaa001029a17bf55737a5f6d42e6d Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sun, 14 May 2017 12:20:01 -0700 Subject: [PATCH] Only wrap single width unicode chars --- src/Renderer.ts | 56 ++++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/src/Renderer.ts b/src/Renderer.ts index 25a04ffc..48da2a17 100644 --- a/src/Renderer.ts +++ b/src/Renderer.ts @@ -283,41 +283,31 @@ export class Renderer { } } - // TODO: Consider performance implications of not pulling these from the pool if (ch_width === 2) { - innerHTML += ''; + // Wrap wide characters so they're sized correctly + innerHTML += `${ch}`; + } else if (ch.charCodeAt(0) > 255) { + // Wrap any non-wide unicode character as some fonts size them badly + innerHTML += `${ch}`; } else { - // TODO: Only wrap unicode characters that may vary in width - innerHTML += ''; - } - switch (ch) { - case '&': - innerHTML += '&'; - //out += '&'; - break; - case '<': - innerHTML += '<'; - //out += '<'; - break; - case '>': - innerHTML += '>'; - //out += '>'; - break; - default: - if (ch <= ' ') { - innerHTML += ' '; - //out += ' '; - } else { - innerHTML += ch; - // out += ch; - } - break; - } - if (ch_width === 2) { - innerHTML += ''; - } else { - // TODO: Only wrap unicode characters that may vary in width - innerHTML += ''; + switch (ch) { + case '&': + innerHTML += '&'; + break; + case '<': + innerHTML += '<'; + break; + case '>': + innerHTML += '>'; + break; + default: + if (ch <= ' ') { + innerHTML += ' '; + } else { + innerHTML += ch; + } + break; + } } attr = data;