]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
wcwidth only for printables
authorJörg Breitbart <jerch@rockborn.de>
Fri, 24 Jun 2016 14:25:00 +0000 (16:25 +0200)
committerJörg Breitbart <jerch@rockborn.de>
Fri, 24 Jun 2016 14:25:00 +0000 (16:25 +0200)
src/xterm.js

index 11e9855e7314817f486d04e22df7ef265bb20a68..11b20ddc76bd9ce5f9ee5e759267a4b407b8aa62 100644 (file)
         for (; i < width; i++) {
           data = line[i][0];
           ch = line[i][1];
-          ch_width = line[i][2] || 1;
+          ch_width = line[i][2];
           if (!ch_width)
             continue;
 
               if (ch <= ' ') {
                 out += '&nbsp;';
               } else {
-                if (ch_width==2) i++;
                 out += ch;
               }
               break;
         if (0xDC00 <= code && code <= 0xDFFF)
             continue;
 
-        ch_width = wcswidth(code);
-
-
         switch (this.state) {
           case normal:
             switch (ch) {
 
               default:
                 // ' '
+                ch_width = wcswidth(code);  // expensive, therefore we save the result in line buffer
+
                 if (ch >= ' ') {
                   if (this.charset && this.charset[ch]) {
                     ch = this.charset[ch];
       return thirdLevelKey && (!ev.keyCode || ev.keyCode > 47);
     }
 
-    function isWide(ch) {
-      if (ch <= '\uff00') return false;
-      return (ch >= '\uff01' && ch <= '\uffbe')
-          || (ch >= '\uffc2' && ch <= '\uffc7')
-          || (ch >= '\uffca' && ch <= '\uffcf')
-          || (ch >= '\uffd2' && ch <= '\uffd7')
-          || (ch >= '\uffda' && ch <= '\uffdc')
-          || (ch >= '\uffe0' && ch <= '\uffe6')
-          || (ch >= '\uffe8' && ch <= '\uffee');
-    }
-
     function matchColor(r1, g1, b1) {
       var hash = (r1 << 16) | (g1 << 8) | b1;