fix(tui): normalize Thai AM terminal output

closes #3904
This commit is contained in:
Mario Zechner
2026-04-29 23:01:04 +02:00
parent 84b3aa5efc
commit 338ce3a365
3 changed files with 23 additions and 16 deletions

View File

@@ -1,6 +1,6 @@
import assert from "node:assert";
import { describe, it } from "node:test";
import { truncateToWidth, visibleWidth } from "../src/utils.js";
import { normalizeTerminalOutput, truncateToWidth, visibleWidth } from "../src/utils.js";
describe("truncateToWidth", () => {
it("keeps output within width for very large unicode input", () => {
@@ -60,10 +60,17 @@ describe("visibleWidth", () => {
assert.strictEqual(visibleWidth("\t\x1b[31m界\x1b[0m"), 5);
});
it("counts isolated Thai and Lao AM clusters conservatively", () => {
assert.strictEqual(visibleWidth("ำ"), 2);
assert.strictEqual(visibleWidth("ຳ"), 2);
it("keeps Thai and Lao AM clusters at their normal cell width", () => {
assert.strictEqual(visibleWidth("ำ"), 1);
assert.strictEqual(visibleWidth("ຳ"), 1);
assert.strictEqual(visibleWidth("กำ"), 2);
assert.strictEqual(visibleWidth("ກຳ"), 2);
});
it("normalizes Thai and Lao AM vowels only for terminal output", () => {
assert.strictEqual(normalizeTerminalOutput("ำ"), "ํา");
assert.strictEqual(normalizeTerminalOutput("ຳ"), "ໍາ");
assert.strictEqual(visibleWidth(normalizeTerminalOutput("ำabc")), visibleWidth("ำabc"));
assert.strictEqual(visibleWidth(normalizeTerminalOutput("ຳabc")), visibleWidth("ຳabc"));
});
});