fix vietnamese telex state

This commit is contained in:
2026-08-11 19:34:14 +09:00
parent e70278a3d2
commit 7b40ef419f
6 changed files with 3930 additions and 1371 deletions

View File

@@ -1,5 +1,9 @@
#!/usr/bin/env python3
import sys
sys.stdout.reconfigure(encoding="utf-8")
# tone marks: s=rising f=falling r=hook x=tilde j=dot
tone = {
's': str.maketrans("aăâeêioôơuưy", "áắấéếíóốớúứý"),
@@ -24,24 +28,21 @@ modcons = [
("dd", "đ"),
]
upper = str.maketrans(
"aăâeêioôơuưyđáắấéếíóốớúứýàằầèềìòồờùừỳảẳẩẻểỉỏổởủửỷãẵẫẽễĩõỗỡũữỹạặậẹệịọộợụựỵ",
"AĂÂEÊIOÔƠUƯYĐÁẮẤÉẾÍÓỐỚÚỨÝÀẰẦÈỀÌÒỒỜÙỪỲẢẲẨẺỂỈỎỔỞỦỬỶÃẴẪẼỄĨÕỖỠŨỮỸẠẶẬẸỆỊỌỘỢỤỰỴ")
def addtone(v, t):
return v.translate(tone[t])
entries = []
def emit(input, output):
entries.append((input, output))
print(f"{input}\t{output}")
def up(s):
c = s[0].translate(upper)
if c == s[0]:
c = s[0].upper()
return c + s[1:]
print(f"{up(input)}\t{up(output)}")
def initialupper(s):
return s[0].upper() + s[1:]
def emit(src, dst):
entries.append((src, dst))
print(f"{src}\t{dst}")
usrc = initialupper(src)
udst = initialupper(dst)
if (usrc, udst) != (src, dst):
print(f"{usrc}\t{udst}")
def vowel1():
for v in "aeiouy":
@@ -97,14 +98,6 @@ def mod1tone():
for t in tone:
emit(i+t, addtone(o, t))
modvowel = [
("aw", "ă"),
("aa", "â"),
("ee", "ê"),
("oo", "ô"),
("ow", "ơ"),
("uw", "ư"),
]
def tone1mod():
# a+s+w -> ắ
for i, o in modvowel:
@@ -178,4 +171,5 @@ tone1mod()
tone2mod()
escape()
final()
emit("\\", "\\")
onsets()

File diff suppressed because it is too large Load Diff