diff options
Diffstat (limited to 'src/display_width.zig')
| -rw-r--r-- | src/display_width.zig | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/display_width.zig b/src/display_width.zig index 7f39566..71483ca 100644 --- a/src/display_width.zig +++ b/src/display_width.zig | |||
| @@ -52,18 +52,17 @@ pub fn strWidth(str: []const u8) usize { | |||
| 52 | var giter = GraphemeIterator.init(str); | 52 | var giter = GraphemeIterator.init(str); |
| 53 | 53 | ||
| 54 | while (giter.next()) |gc| { | 54 | while (giter.next()) |gc| { |
| 55 | const gc_bytes = gc.bytes(str); | 55 | var cp_iter = CodePointIterator{ .bytes = gc.bytes(str) }; |
| 56 | var cp_iter = CodePointIterator{ .bytes = gc_bytes }; | ||
| 57 | var gc_total: isize = 0; | 56 | var gc_total: isize = 0; |
| 58 | 57 | ||
| 59 | while (cp_iter.next()) |cp| { | 58 | while (cp_iter.next()) |cp| { |
| 60 | var w = codePointWidth(cp.code(gc_bytes)); | 59 | var w = codePointWidth(cp.code); |
| 61 | 60 | ||
| 62 | if (w != 0) { | 61 | if (w != 0) { |
| 63 | // Handle text emoji sequence. | 62 | // Handle text emoji sequence. |
| 64 | if (cp_iter.next()) |ncp| { | 63 | if (cp_iter.next()) |ncp| { |
| 65 | // emoji text sequence. | 64 | // emoji text sequence. |
| 66 | if (ncp.code(gc_bytes) == 0xFE0E) w = 1; | 65 | if (ncp.code == 0xFE0E) w = 1; |
| 67 | } | 66 | } |
| 68 | 67 | ||
| 69 | // Only adding width of first non-zero-width code point. | 68 | // Only adding width of first non-zero-width code point. |