Fix: корректный _display_width — кириллица это 1 колонка в моноширинном шрифте, не 2
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 8s
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 8s
This commit is contained in:
parent
dd9d01e7e0
commit
62e1c73cdd
1 changed files with 3 additions and 4 deletions
|
|
@ -48,9 +48,8 @@ def _display_width(s: str) -> int:
|
||||||
w = 0
|
w = 0
|
||||||
for ch in s:
|
for ch in s:
|
||||||
cp = ord(ch)
|
cp = ord(ch)
|
||||||
if (0x0400 <= cp <= 0x04FF or 0x0500 <= cp <= 0x052F or
|
if (0x2E80 <= cp <= 0x9FFF or 0xF900 <= cp <= 0xFAFF or
|
||||||
0x2E80 <= cp <= 0x9FFF or 0xF900 <= cp <= 0xFAFF or
|
0xFE30 <= cp <= 0xFE4F):
|
||||||
0xFE30 <= cp <= 0xFE4F or cp in (0x2026, 0x2116)):
|
|
||||||
w += 2
|
w += 2
|
||||||
else:
|
else:
|
||||||
w += 1
|
w += 1
|
||||||
|
|
@ -65,7 +64,7 @@ def _pad_col(s: str, width: int) -> str:
|
||||||
w = 0
|
w = 0
|
||||||
for ch in s:
|
for ch in s:
|
||||||
cw = 2 if _display_width(ch) == 2 else 1
|
cw = 2 if _display_width(ch) == 2 else 1
|
||||||
if w + cw + 2 > width: # +2 for "…"
|
if w + cw + 1 > width: # +1 for "…"
|
||||||
break
|
break
|
||||||
result.append(ch)
|
result.append(ch)
|
||||||
w += cw
|
w += cw
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue