fix vietnamese telex: qu-/gi- onset tone placement and dd+tone
transvi fixes: 1. qu-/gi- onset tone placement. The u after q, and the i after g when a vowel follows, are onset glides rather than the rime nucleus, so the tone must skip them: qua -> quá (was qúa), gia -> giá. The onset was previously passed straight through to the app, so transvi never saw it and toned the glide. Keep the onset in the preedit by adding qu-/gi- clusters to telex.map (mktelex.py onsets(), appended additively to the curated map), and add onsetglide() so transvi skips the glide. gi- with no following vowel keeps i as the nucleus (gì, gìn). 2. A tone key on a vowel-less preedit (e.g. "đ" from dd) now commits the preedit and lets the tone key pass through (eat=0), matching the engine commit-on-passthrough invariant, instead of eating it into the commit. Verified against the running engine: qua/quan/quay/quê/quên/quyển, gia/già/giàu/giữ/giúp/giống, gì/gìn, dd+s; unchanged mua->mùa, của, lúa; all non-qu/gi words byte-identical to before. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,10 @@ upper = str.maketrans(
|
|||||||
def addtone(v, t):
|
def addtone(v, t):
|
||||||
return v.translate(tone[t])
|
return v.translate(tone[t])
|
||||||
|
|
||||||
|
entries = []
|
||||||
|
|
||||||
def emit(input, output):
|
def emit(input, output):
|
||||||
|
entries.append((input, output))
|
||||||
print(f"{input}\t{output}")
|
print(f"{input}\t{output}")
|
||||||
def up(s):
|
def up(s):
|
||||||
c = s[0].translate(upper)
|
c = s[0].translate(upper)
|
||||||
@@ -147,6 +150,24 @@ def final():
|
|||||||
for t in tone:
|
for t in tone:
|
||||||
emit(i+c+t, o.replace(v, addtone(v, t), 1)+c)
|
emit(i+c+t, o.replace(v, addtone(v, t), 1)+c)
|
||||||
|
|
||||||
|
def onsets():
|
||||||
|
# Keep the qu-/gi- onset in the preedit so the tone lands on the rime
|
||||||
|
# nucleus, not on the onset glide (qua->quá not qúa, gia->giá not gía).
|
||||||
|
# transvi (onsetglide) knows to skip the glide; here we only need the
|
||||||
|
# composed clusters to exist so the preedit accumulates them.
|
||||||
|
vowels = set("aeiouy")
|
||||||
|
tones = set("sfrxj")
|
||||||
|
base = [(i, o) for (i, o) in list(entries)
|
||||||
|
if i and i[0] in vowels and not (set(i) & tones)]
|
||||||
|
for i, o in base:
|
||||||
|
if i[0] != 'u': # no qu+u syllable; u is the glide
|
||||||
|
emit("qu" + i, "qu" + o)
|
||||||
|
emit("gi" + i, "gi" + o)
|
||||||
|
# gi- with the i as nucleus (no following vowel): gì, gìn, gìm, ...
|
||||||
|
for c in ["", "c", "m", "n", "p", "t", "ch", "ng", "nh"]:
|
||||||
|
if c:
|
||||||
|
emit("gi" + c, "gi" + c)
|
||||||
|
|
||||||
vowel1()
|
vowel1()
|
||||||
vowel2()
|
vowel2()
|
||||||
vowel3()
|
vowel3()
|
||||||
@@ -157,3 +178,4 @@ tone1mod()
|
|||||||
tone2mod()
|
tone2mod()
|
||||||
escape()
|
escape()
|
||||||
final()
|
final()
|
||||||
|
onsets()
|
||||||
|
|||||||
900
map/telex.map
900
map/telex.map
@@ -587,3 +587,903 @@ Yt Yt
|
|||||||
y y
|
y y
|
||||||
Y Y
|
Y Y
|
||||||
\ \
|
\ \
|
||||||
|
qua qua
|
||||||
|
Qua Qua
|
||||||
|
gia gia
|
||||||
|
Gia Gia
|
||||||
|
quaa quâ
|
||||||
|
Quaa Quâ
|
||||||
|
giaa giâ
|
||||||
|
Giaa Giâ
|
||||||
|
quaaa quaa
|
||||||
|
Quaaa Quaa
|
||||||
|
giaaa giaa
|
||||||
|
Giaaa Giaa
|
||||||
|
quaac quâc
|
||||||
|
Quaac Quâc
|
||||||
|
giaac giâc
|
||||||
|
Giaac Giâc
|
||||||
|
quaach quâch
|
||||||
|
Quaach Quâch
|
||||||
|
giaach giâch
|
||||||
|
Giaach Giâch
|
||||||
|
quaam quâm
|
||||||
|
Quaam Quâm
|
||||||
|
giaam giâm
|
||||||
|
Giaam Giâm
|
||||||
|
quaan quân
|
||||||
|
Quaan Quân
|
||||||
|
giaan giân
|
||||||
|
Giaan Giân
|
||||||
|
quaang quâng
|
||||||
|
Quaang Quâng
|
||||||
|
giaang giâng
|
||||||
|
Giaang Giâng
|
||||||
|
quaanh quânh
|
||||||
|
Quaanh Quânh
|
||||||
|
giaanh giânh
|
||||||
|
Giaanh Giânh
|
||||||
|
quaap quâp
|
||||||
|
Quaap Quâp
|
||||||
|
giaap giâp
|
||||||
|
Giaap Giâp
|
||||||
|
quaat quât
|
||||||
|
Quaat Quât
|
||||||
|
giaat giât
|
||||||
|
Giaat Giât
|
||||||
|
quac quac
|
||||||
|
Quac Quac
|
||||||
|
giac giac
|
||||||
|
Giac Giac
|
||||||
|
quach quach
|
||||||
|
Quach Quach
|
||||||
|
giach giach
|
||||||
|
Giach Giach
|
||||||
|
quai quai
|
||||||
|
Quai Quai
|
||||||
|
giai giai
|
||||||
|
Giai Giai
|
||||||
|
quaic quaic
|
||||||
|
Quaic Quaic
|
||||||
|
giaic giaic
|
||||||
|
Giaic Giaic
|
||||||
|
quaich quaich
|
||||||
|
Quaich Quaich
|
||||||
|
giaich giaich
|
||||||
|
Giaich Giaich
|
||||||
|
quaim quaim
|
||||||
|
Quaim Quaim
|
||||||
|
giaim giaim
|
||||||
|
Giaim Giaim
|
||||||
|
quain quain
|
||||||
|
Quain Quain
|
||||||
|
giain giain
|
||||||
|
Giain Giain
|
||||||
|
quaing quaing
|
||||||
|
Quaing Quaing
|
||||||
|
giaing giaing
|
||||||
|
Giaing Giaing
|
||||||
|
quainh quainh
|
||||||
|
Quainh Quainh
|
||||||
|
giainh giainh
|
||||||
|
Giainh Giainh
|
||||||
|
quaip quaip
|
||||||
|
Quaip Quaip
|
||||||
|
giaip giaip
|
||||||
|
Giaip Giaip
|
||||||
|
quait quait
|
||||||
|
Quait Quait
|
||||||
|
giait giait
|
||||||
|
Giait Giait
|
||||||
|
quam quam
|
||||||
|
Quam Quam
|
||||||
|
giam giam
|
||||||
|
Giam Giam
|
||||||
|
quan quan
|
||||||
|
Quan Quan
|
||||||
|
gian gian
|
||||||
|
Gian Gian
|
||||||
|
quang quang
|
||||||
|
Quang Quang
|
||||||
|
giang giang
|
||||||
|
Giang Giang
|
||||||
|
quanh quanh
|
||||||
|
Quanh Quanh
|
||||||
|
gianh gianh
|
||||||
|
Gianh Gianh
|
||||||
|
quao quao
|
||||||
|
Quao Quao
|
||||||
|
giao giao
|
||||||
|
Giao Giao
|
||||||
|
quaoc quaoc
|
||||||
|
Quaoc Quaoc
|
||||||
|
giaoc giaoc
|
||||||
|
Giaoc Giaoc
|
||||||
|
quaoch quaoch
|
||||||
|
Quaoch Quaoch
|
||||||
|
giaoch giaoch
|
||||||
|
Giaoch Giaoch
|
||||||
|
quaom quaom
|
||||||
|
Quaom Quaom
|
||||||
|
giaom giaom
|
||||||
|
Giaom Giaom
|
||||||
|
quaon quaon
|
||||||
|
Quaon Quaon
|
||||||
|
giaon giaon
|
||||||
|
Giaon Giaon
|
||||||
|
quaong quaong
|
||||||
|
Quaong Quaong
|
||||||
|
giaong giaong
|
||||||
|
Giaong Giaong
|
||||||
|
quaonh quaonh
|
||||||
|
Quaonh Quaonh
|
||||||
|
giaonh giaonh
|
||||||
|
Giaonh Giaonh
|
||||||
|
quaop quaop
|
||||||
|
Quaop Quaop
|
||||||
|
giaop giaop
|
||||||
|
Giaop Giaop
|
||||||
|
quaot quaot
|
||||||
|
Quaot Quaot
|
||||||
|
giaot giaot
|
||||||
|
Giaot Giaot
|
||||||
|
quap quap
|
||||||
|
Quap Quap
|
||||||
|
giap giap
|
||||||
|
Giap Giap
|
||||||
|
quat quat
|
||||||
|
Quat Quat
|
||||||
|
giat giat
|
||||||
|
Giat Giat
|
||||||
|
quau quau
|
||||||
|
Quau Quau
|
||||||
|
giau giau
|
||||||
|
Giau Giau
|
||||||
|
quauc quauc
|
||||||
|
Quauc Quauc
|
||||||
|
giauc giauc
|
||||||
|
Giauc Giauc
|
||||||
|
quauch quauch
|
||||||
|
Quauch Quauch
|
||||||
|
giauch giauch
|
||||||
|
Giauch Giauch
|
||||||
|
quaum quaum
|
||||||
|
Quaum Quaum
|
||||||
|
giaum giaum
|
||||||
|
Giaum Giaum
|
||||||
|
quaun quaun
|
||||||
|
Quaun Quaun
|
||||||
|
giaun giaun
|
||||||
|
Giaun Giaun
|
||||||
|
quaung quaung
|
||||||
|
Quaung Quaung
|
||||||
|
giaung giaung
|
||||||
|
Giaung Giaung
|
||||||
|
quaunh quaunh
|
||||||
|
Quaunh Quaunh
|
||||||
|
giaunh giaunh
|
||||||
|
Giaunh Giaunh
|
||||||
|
quaup quaup
|
||||||
|
Quaup Quaup
|
||||||
|
giaup giaup
|
||||||
|
Giaup Giaup
|
||||||
|
quaut quaut
|
||||||
|
Quaut Quaut
|
||||||
|
giaut giaut
|
||||||
|
Giaut Giaut
|
||||||
|
quaw quă
|
||||||
|
Quaw Quă
|
||||||
|
giaw giă
|
||||||
|
Giaw Giă
|
||||||
|
quawc quăc
|
||||||
|
Quawc Quăc
|
||||||
|
giawc giăc
|
||||||
|
Giawc Giăc
|
||||||
|
quawch quăch
|
||||||
|
Quawch Quăch
|
||||||
|
giawch giăch
|
||||||
|
Giawch Giăch
|
||||||
|
quawm quăm
|
||||||
|
Quawm Quăm
|
||||||
|
giawm giăm
|
||||||
|
Giawm Giăm
|
||||||
|
quawn quăn
|
||||||
|
Quawn Quăn
|
||||||
|
giawn giăn
|
||||||
|
Giawn Giăn
|
||||||
|
quawng quăng
|
||||||
|
Quawng Quăng
|
||||||
|
giawng giăng
|
||||||
|
Giawng Giăng
|
||||||
|
quawnh quănh
|
||||||
|
Quawnh Quănh
|
||||||
|
giawnh giănh
|
||||||
|
Giawnh Giănh
|
||||||
|
quawp quăp
|
||||||
|
Quawp Quăp
|
||||||
|
giawp giăp
|
||||||
|
Giawp Giăp
|
||||||
|
quawt quăt
|
||||||
|
Quawt Quăt
|
||||||
|
giawt giăt
|
||||||
|
Giawt Giăt
|
||||||
|
quaww quaw
|
||||||
|
Quaww Quaw
|
||||||
|
giaww giaw
|
||||||
|
Giaww Giaw
|
||||||
|
quay quay
|
||||||
|
Quay Quay
|
||||||
|
giay giay
|
||||||
|
Giay Giay
|
||||||
|
quayc quayc
|
||||||
|
Quayc Quayc
|
||||||
|
giayc giayc
|
||||||
|
Giayc Giayc
|
||||||
|
quaych quaych
|
||||||
|
Quaych Quaych
|
||||||
|
giaych giaych
|
||||||
|
Giaych Giaych
|
||||||
|
quaym quaym
|
||||||
|
Quaym Quaym
|
||||||
|
giaym giaym
|
||||||
|
Giaym Giaym
|
||||||
|
quayn quayn
|
||||||
|
Quayn Quayn
|
||||||
|
giayn giayn
|
||||||
|
Giayn Giayn
|
||||||
|
quayng quayng
|
||||||
|
Quayng Quayng
|
||||||
|
giayng giayng
|
||||||
|
Giayng Giayng
|
||||||
|
quaynh quaynh
|
||||||
|
Quaynh Quaynh
|
||||||
|
giaynh giaynh
|
||||||
|
Giaynh Giaynh
|
||||||
|
quayp quayp
|
||||||
|
Quayp Quayp
|
||||||
|
giayp giayp
|
||||||
|
Giayp Giayp
|
||||||
|
quayt quayt
|
||||||
|
Quayt Quayt
|
||||||
|
giayt giayt
|
||||||
|
Giayt Giayt
|
||||||
|
quec quec
|
||||||
|
Quec Quec
|
||||||
|
giec giec
|
||||||
|
Giec Giec
|
||||||
|
quech quech
|
||||||
|
Quech Quech
|
||||||
|
giech giech
|
||||||
|
Giech Giech
|
||||||
|
que que
|
||||||
|
Que Que
|
||||||
|
gie gie
|
||||||
|
Gie Gie
|
||||||
|
queec quêc
|
||||||
|
Queec Quêc
|
||||||
|
gieec giêc
|
||||||
|
Gieec Giêc
|
||||||
|
queech quêch
|
||||||
|
Queech Quêch
|
||||||
|
gieech giêch
|
||||||
|
Gieech Giêch
|
||||||
|
quee quê
|
||||||
|
Quee Quê
|
||||||
|
giee giê
|
||||||
|
Giee Giê
|
||||||
|
queee quee
|
||||||
|
Queee Quee
|
||||||
|
gieee giee
|
||||||
|
Gieee Giee
|
||||||
|
queem quêm
|
||||||
|
Queem Quêm
|
||||||
|
gieem giêm
|
||||||
|
Gieem Giêm
|
||||||
|
queen quên
|
||||||
|
Queen Quên
|
||||||
|
gieen giên
|
||||||
|
Gieen Giên
|
||||||
|
queeng quêng
|
||||||
|
Queeng Quêng
|
||||||
|
gieeng giêng
|
||||||
|
Gieeng Giêng
|
||||||
|
queenh quênh
|
||||||
|
Queenh Quênh
|
||||||
|
gieenh giênh
|
||||||
|
Gieenh Giênh
|
||||||
|
queep quêp
|
||||||
|
Queep Quêp
|
||||||
|
gieep giêp
|
||||||
|
Gieep Giêp
|
||||||
|
queet quêt
|
||||||
|
Queet Quêt
|
||||||
|
gieet giêt
|
||||||
|
Gieet Giêt
|
||||||
|
quem quem
|
||||||
|
Quem Quem
|
||||||
|
giem giem
|
||||||
|
Giem Giem
|
||||||
|
quen quen
|
||||||
|
Quen Quen
|
||||||
|
gien gien
|
||||||
|
Gien Gien
|
||||||
|
queng queng
|
||||||
|
Queng Queng
|
||||||
|
gieng gieng
|
||||||
|
Gieng Gieng
|
||||||
|
quenh quenh
|
||||||
|
Quenh Quenh
|
||||||
|
gienh gienh
|
||||||
|
Gienh Gienh
|
||||||
|
quep quep
|
||||||
|
Quep Quep
|
||||||
|
giep giep
|
||||||
|
Giep Giep
|
||||||
|
quet quet
|
||||||
|
Quet Quet
|
||||||
|
giet giet
|
||||||
|
Giet Giet
|
||||||
|
queu queu
|
||||||
|
Queu Queu
|
||||||
|
gieu gieu
|
||||||
|
Gieu Gieu
|
||||||
|
quich quich
|
||||||
|
Quich Quich
|
||||||
|
giich giich
|
||||||
|
Giich Giich
|
||||||
|
quic quic
|
||||||
|
Quic Quic
|
||||||
|
giic giic
|
||||||
|
Giic Giic
|
||||||
|
quieech quiêch
|
||||||
|
Quieech Quiêch
|
||||||
|
giieech giiêch
|
||||||
|
Giieech Giiêch
|
||||||
|
quieec quiêc
|
||||||
|
Quieec Quiêc
|
||||||
|
giieec giiêc
|
||||||
|
Giieec Giiêc
|
||||||
|
quiee quiê
|
||||||
|
Quiee Quiê
|
||||||
|
giiee giiê
|
||||||
|
Giiee Giiê
|
||||||
|
quieem quiêm
|
||||||
|
Quieem Quiêm
|
||||||
|
giieem giiêm
|
||||||
|
Giieem Giiêm
|
||||||
|
quieeng quiêng
|
||||||
|
Quieeng Quiêng
|
||||||
|
giieeng giiêng
|
||||||
|
Giieeng Giiêng
|
||||||
|
quieenh quiênh
|
||||||
|
Quieenh Quiênh
|
||||||
|
giieenh giiênh
|
||||||
|
Giieenh Giiênh
|
||||||
|
quieen quiên
|
||||||
|
Quieen Quiên
|
||||||
|
giieen giiên
|
||||||
|
Giieen Giiên
|
||||||
|
quieep quiêp
|
||||||
|
Quieep Quiêp
|
||||||
|
giieep giiêp
|
||||||
|
Giieep Giiêp
|
||||||
|
quieet quiêt
|
||||||
|
Quieet Quiêt
|
||||||
|
giieet giiêt
|
||||||
|
Giieet Giiêt
|
||||||
|
quieeu quiêu
|
||||||
|
Quieeu Quiêu
|
||||||
|
giieeu giiêu
|
||||||
|
Giieeu Giiêu
|
||||||
|
quie quie
|
||||||
|
Quie Quie
|
||||||
|
giie giie
|
||||||
|
Giie Giie
|
||||||
|
qui qui
|
||||||
|
Qui Qui
|
||||||
|
gii gii
|
||||||
|
Gii Gii
|
||||||
|
quim quim
|
||||||
|
Quim Quim
|
||||||
|
giim giim
|
||||||
|
Giim Giim
|
||||||
|
quing quing
|
||||||
|
Quing Quing
|
||||||
|
giing giing
|
||||||
|
Giing Giing
|
||||||
|
quinh quinh
|
||||||
|
Quinh Quinh
|
||||||
|
giinh giinh
|
||||||
|
Giinh Giinh
|
||||||
|
quin quin
|
||||||
|
Quin Quin
|
||||||
|
giin giin
|
||||||
|
Giin Giin
|
||||||
|
quip quip
|
||||||
|
Quip Quip
|
||||||
|
giip giip
|
||||||
|
Giip Giip
|
||||||
|
quit quit
|
||||||
|
Quit Quit
|
||||||
|
giit giit
|
||||||
|
Giit Giit
|
||||||
|
quiu quiu
|
||||||
|
Quiu Quiu
|
||||||
|
giiu giiu
|
||||||
|
Giiu Giiu
|
||||||
|
quoach quoach
|
||||||
|
Quoach Quoach
|
||||||
|
gioach gioach
|
||||||
|
Gioach Gioach
|
||||||
|
quoac quoac
|
||||||
|
Quoac Quoac
|
||||||
|
gioac gioac
|
||||||
|
Gioac Gioac
|
||||||
|
quoai quoai
|
||||||
|
Quoai Quoai
|
||||||
|
gioai gioai
|
||||||
|
Gioai Gioai
|
||||||
|
quoam quoam
|
||||||
|
Quoam Quoam
|
||||||
|
gioam gioam
|
||||||
|
Gioam Gioam
|
||||||
|
quoang quoang
|
||||||
|
Quoang Quoang
|
||||||
|
gioang gioang
|
||||||
|
Gioang Gioang
|
||||||
|
quoanh quoanh
|
||||||
|
Quoanh Quoanh
|
||||||
|
gioanh gioanh
|
||||||
|
Gioanh Gioanh
|
||||||
|
quoan quoan
|
||||||
|
Quoan Quoan
|
||||||
|
gioan gioan
|
||||||
|
Gioan Gioan
|
||||||
|
quoa quoa
|
||||||
|
Quoa Quoa
|
||||||
|
gioa gioa
|
||||||
|
Gioa Gioa
|
||||||
|
quoap quoap
|
||||||
|
Quoap Quoap
|
||||||
|
gioap gioap
|
||||||
|
Gioap Gioap
|
||||||
|
quoat quoat
|
||||||
|
Quoat Quoat
|
||||||
|
gioat gioat
|
||||||
|
Gioat Gioat
|
||||||
|
quoawch quoăch
|
||||||
|
Quoawch Quoăch
|
||||||
|
gioawch gioăch
|
||||||
|
Gioawch Gioăch
|
||||||
|
quoawc quoăc
|
||||||
|
Quoawc Quoăc
|
||||||
|
gioawc gioăc
|
||||||
|
Gioawc Gioăc
|
||||||
|
quoawm quoăm
|
||||||
|
Quoawm Quoăm
|
||||||
|
gioawm gioăm
|
||||||
|
Gioawm Gioăm
|
||||||
|
quoawng quoăng
|
||||||
|
Quoawng Quoăng
|
||||||
|
gioawng gioăng
|
||||||
|
Gioawng Gioăng
|
||||||
|
quoawnh quoănh
|
||||||
|
Quoawnh Quoănh
|
||||||
|
gioawnh gioănh
|
||||||
|
Gioawnh Gioănh
|
||||||
|
quoawn quoăn
|
||||||
|
Quoawn Quoăn
|
||||||
|
gioawn gioăn
|
||||||
|
Gioawn Gioăn
|
||||||
|
quoaw quoă
|
||||||
|
Quoaw Quoă
|
||||||
|
gioaw gioă
|
||||||
|
Gioaw Gioă
|
||||||
|
quoawp quoăp
|
||||||
|
Quoawp Quoăp
|
||||||
|
gioawp gioăp
|
||||||
|
Gioawp Gioăp
|
||||||
|
quoawt quoăt
|
||||||
|
Quoawt Quoăt
|
||||||
|
gioawt gioăt
|
||||||
|
Gioawt Gioăt
|
||||||
|
quoay quoay
|
||||||
|
Quoay Quoay
|
||||||
|
gioay gioay
|
||||||
|
Gioay Gioay
|
||||||
|
quoch quoch
|
||||||
|
Quoch Quoch
|
||||||
|
gioch gioch
|
||||||
|
Gioch Gioch
|
||||||
|
quoc quoc
|
||||||
|
Quoc Quoc
|
||||||
|
gioc gioc
|
||||||
|
Gioc Gioc
|
||||||
|
quoe quoe
|
||||||
|
Quoe Quoe
|
||||||
|
gioe gioe
|
||||||
|
Gioe Gioe
|
||||||
|
quoich quoich
|
||||||
|
Quoich Quoich
|
||||||
|
gioich gioich
|
||||||
|
Gioich Gioich
|
||||||
|
quoic quoic
|
||||||
|
Quoic Quoic
|
||||||
|
gioic gioic
|
||||||
|
Gioic Gioic
|
||||||
|
quoim quoim
|
||||||
|
Quoim Quoim
|
||||||
|
gioim gioim
|
||||||
|
Gioim Gioim
|
||||||
|
quoing quoing
|
||||||
|
Quoing Quoing
|
||||||
|
gioing gioing
|
||||||
|
Gioing Gioing
|
||||||
|
quoinh quoinh
|
||||||
|
Quoinh Quoinh
|
||||||
|
gioinh gioinh
|
||||||
|
Gioinh Gioinh
|
||||||
|
quoin quoin
|
||||||
|
Quoin Quoin
|
||||||
|
gioin gioin
|
||||||
|
Gioin Gioin
|
||||||
|
quoi quoi
|
||||||
|
Quoi Quoi
|
||||||
|
gioi gioi
|
||||||
|
Gioi Gioi
|
||||||
|
quoip quoip
|
||||||
|
Quoip Quoip
|
||||||
|
gioip gioip
|
||||||
|
Gioip Gioip
|
||||||
|
quoit quoit
|
||||||
|
Quoit Quoit
|
||||||
|
gioit gioit
|
||||||
|
Gioit Gioit
|
||||||
|
quom quom
|
||||||
|
Quom Quom
|
||||||
|
giom giom
|
||||||
|
Giom Giom
|
||||||
|
quong quong
|
||||||
|
Quong Quong
|
||||||
|
giong giong
|
||||||
|
Giong Giong
|
||||||
|
quonh quonh
|
||||||
|
Quonh Quonh
|
||||||
|
gionh gionh
|
||||||
|
Gionh Gionh
|
||||||
|
quon quon
|
||||||
|
Quon Quon
|
||||||
|
gion gion
|
||||||
|
Gion Gion
|
||||||
|
quo quo
|
||||||
|
Quo Quo
|
||||||
|
gio gio
|
||||||
|
Gio Gio
|
||||||
|
quooch quôch
|
||||||
|
Quooch Quôch
|
||||||
|
giooch giôch
|
||||||
|
Giooch Giôch
|
||||||
|
quooc quôc
|
||||||
|
Quooc Quôc
|
||||||
|
giooc giôc
|
||||||
|
Giooc Giôc
|
||||||
|
quoom quôm
|
||||||
|
Quoom Quôm
|
||||||
|
gioom giôm
|
||||||
|
Gioom Giôm
|
||||||
|
quoong quông
|
||||||
|
Quoong Quông
|
||||||
|
gioong giông
|
||||||
|
Gioong Giông
|
||||||
|
quoonh quônh
|
||||||
|
Quoonh Quônh
|
||||||
|
gioonh giônh
|
||||||
|
Gioonh Giônh
|
||||||
|
quoon quôn
|
||||||
|
Quoon Quôn
|
||||||
|
gioon giôn
|
||||||
|
Gioon Giôn
|
||||||
|
quoo quô
|
||||||
|
Quoo Quô
|
||||||
|
gioo giô
|
||||||
|
Gioo Giô
|
||||||
|
quooo quoo
|
||||||
|
Quooo Quoo
|
||||||
|
giooo gioo
|
||||||
|
Giooo Gioo
|
||||||
|
quoop quôp
|
||||||
|
Quoop Quôp
|
||||||
|
gioop giôp
|
||||||
|
Gioop Giôp
|
||||||
|
quoot quôt
|
||||||
|
Quoot Quôt
|
||||||
|
gioot giôt
|
||||||
|
Gioot Giôt
|
||||||
|
quop quop
|
||||||
|
Quop Quop
|
||||||
|
giop giop
|
||||||
|
Giop Giop
|
||||||
|
quot quot
|
||||||
|
Quot Quot
|
||||||
|
giot giot
|
||||||
|
Giot Giot
|
||||||
|
quowch quơch
|
||||||
|
Quowch Quơch
|
||||||
|
giowch giơch
|
||||||
|
Giowch Giơch
|
||||||
|
quowc quơc
|
||||||
|
Quowc Quơc
|
||||||
|
giowc giơc
|
||||||
|
Giowc Giơc
|
||||||
|
quowm quơm
|
||||||
|
Quowm Quơm
|
||||||
|
giowm giơm
|
||||||
|
Giowm Giơm
|
||||||
|
quowng quơng
|
||||||
|
Quowng Quơng
|
||||||
|
giowng giơng
|
||||||
|
Giowng Giơng
|
||||||
|
quownh quơnh
|
||||||
|
Quownh Quơnh
|
||||||
|
giownh giơnh
|
||||||
|
Giownh Giơnh
|
||||||
|
quown quơn
|
||||||
|
Quown Quơn
|
||||||
|
giown giơn
|
||||||
|
Giown Giơn
|
||||||
|
quow quơ
|
||||||
|
Quow Quơ
|
||||||
|
giow giơ
|
||||||
|
Giow Giơ
|
||||||
|
quowp quơp
|
||||||
|
Quowp Quơp
|
||||||
|
giowp giơp
|
||||||
|
Giowp Giơp
|
||||||
|
quowt quơt
|
||||||
|
Quowt Quơt
|
||||||
|
giowt giơt
|
||||||
|
Giowt Giơt
|
||||||
|
quoww quow
|
||||||
|
Quoww Quow
|
||||||
|
gioww giow
|
||||||
|
Gioww Giow
|
||||||
|
giuaach giuâch
|
||||||
|
Giuaach Giuâch
|
||||||
|
giuaac giuâc
|
||||||
|
Giuaac Giuâc
|
||||||
|
giuaam giuâm
|
||||||
|
Giuaam Giuâm
|
||||||
|
giuaang giuâng
|
||||||
|
Giuaang Giuâng
|
||||||
|
giuaanh giuânh
|
||||||
|
Giuaanh Giuânh
|
||||||
|
giuaan giuân
|
||||||
|
Giuaan Giuân
|
||||||
|
giuaap giuâp
|
||||||
|
Giuaap Giuâp
|
||||||
|
giuaat giuât
|
||||||
|
Giuaat Giuât
|
||||||
|
giuaa giuâ
|
||||||
|
Giuaa Giuâ
|
||||||
|
giua giua
|
||||||
|
Giua Giua
|
||||||
|
giuch giuch
|
||||||
|
Giuch Giuch
|
||||||
|
giuc giuc
|
||||||
|
Giuc Giuc
|
||||||
|
giuich giuich
|
||||||
|
Giuich Giuich
|
||||||
|
giuic giuic
|
||||||
|
Giuic Giuic
|
||||||
|
giuim giuim
|
||||||
|
Giuim Giuim
|
||||||
|
giuing giuing
|
||||||
|
Giuing Giuing
|
||||||
|
giuinh giuinh
|
||||||
|
Giuinh Giuinh
|
||||||
|
giuin giuin
|
||||||
|
Giuin Giuin
|
||||||
|
giuip giuip
|
||||||
|
Giuip Giuip
|
||||||
|
giuit giuit
|
||||||
|
Giuit Giuit
|
||||||
|
giui giui
|
||||||
|
Giui Giui
|
||||||
|
gium gium
|
||||||
|
Gium Gium
|
||||||
|
giung giung
|
||||||
|
Giung Giung
|
||||||
|
giunh giunh
|
||||||
|
Giunh Giunh
|
||||||
|
giun giun
|
||||||
|
Giun Giun
|
||||||
|
giuooch giuôch
|
||||||
|
Giuooch Giuôch
|
||||||
|
giuooc giuôc
|
||||||
|
Giuooc Giuôc
|
||||||
|
giuooi giuôi
|
||||||
|
Giuooi Giuôi
|
||||||
|
giuoom giuôm
|
||||||
|
Giuoom Giuôm
|
||||||
|
giuoong giuông
|
||||||
|
Giuoong Giuông
|
||||||
|
giuoonh giuônh
|
||||||
|
Giuoonh Giuônh
|
||||||
|
giuoon giuôn
|
||||||
|
Giuoon Giuôn
|
||||||
|
giuoop giuôp
|
||||||
|
Giuoop Giuôp
|
||||||
|
giuoot giuôt
|
||||||
|
Giuoot Giuôt
|
||||||
|
giuoo giuô
|
||||||
|
Giuoo Giuô
|
||||||
|
giuo giuo
|
||||||
|
Giuo Giuo
|
||||||
|
giuowch giươch
|
||||||
|
Giuowch Giươch
|
||||||
|
giuowc giươc
|
||||||
|
Giuowc Giươc
|
||||||
|
giuowi giươi
|
||||||
|
Giuowi Giươi
|
||||||
|
giuowm giươm
|
||||||
|
Giuowm Giươm
|
||||||
|
giuowng giương
|
||||||
|
Giuowng Giương
|
||||||
|
giuownh giươnh
|
||||||
|
Giuownh Giươnh
|
||||||
|
giuown giươn
|
||||||
|
Giuown Giươn
|
||||||
|
giuowp giươp
|
||||||
|
Giuowp Giươp
|
||||||
|
giuowt giươt
|
||||||
|
Giuowt Giươt
|
||||||
|
giuow giươ
|
||||||
|
Giuow Giươ
|
||||||
|
giup giup
|
||||||
|
Giup Giup
|
||||||
|
giut giut
|
||||||
|
Giut Giut
|
||||||
|
giu giu
|
||||||
|
Giu Giu
|
||||||
|
giuwa giưa
|
||||||
|
Giuwa Giưa
|
||||||
|
giuwch giưch
|
||||||
|
Giuwch Giưch
|
||||||
|
giuwc giưc
|
||||||
|
Giuwc Giưc
|
||||||
|
giuwm giưm
|
||||||
|
Giuwm Giưm
|
||||||
|
giuwng giưng
|
||||||
|
Giuwng Giưng
|
||||||
|
giuwnh giưnh
|
||||||
|
Giuwnh Giưnh
|
||||||
|
giuwn giưn
|
||||||
|
Giuwn Giưn
|
||||||
|
giuwow giươ
|
||||||
|
Giuwow Giươ
|
||||||
|
giuwp giưp
|
||||||
|
Giuwp Giưp
|
||||||
|
giuwt giưt
|
||||||
|
Giuwt Giưt
|
||||||
|
giuw giư
|
||||||
|
Giuw Giư
|
||||||
|
giuww giuw
|
||||||
|
Giuww Giuw
|
||||||
|
giuya giuya
|
||||||
|
Giuya Giuya
|
||||||
|
giuych giuych
|
||||||
|
Giuych Giuych
|
||||||
|
giuyc giuyc
|
||||||
|
Giuyc Giuyc
|
||||||
|
giuyee giuyê
|
||||||
|
Giuyee Giuyê
|
||||||
|
giuym giuym
|
||||||
|
Giuym Giuym
|
||||||
|
giuyng giuyng
|
||||||
|
Giuyng Giuyng
|
||||||
|
giuynh giuynh
|
||||||
|
Giuynh Giuynh
|
||||||
|
giuyn giuyn
|
||||||
|
Giuyn Giuyn
|
||||||
|
giuyp giuyp
|
||||||
|
Giuyp Giuyp
|
||||||
|
giuyt giuyt
|
||||||
|
Giuyt Giuyt
|
||||||
|
giuy giuy
|
||||||
|
Giuy Giuy
|
||||||
|
quych quych
|
||||||
|
Quych Quych
|
||||||
|
giych giych
|
||||||
|
Giych Giych
|
||||||
|
quyc quyc
|
||||||
|
Quyc Quyc
|
||||||
|
giyc giyc
|
||||||
|
Giyc Giyc
|
||||||
|
quyeech quyêch
|
||||||
|
Quyeech Quyêch
|
||||||
|
giyeech giyêch
|
||||||
|
Giyeech Giyêch
|
||||||
|
quyeec quyêc
|
||||||
|
Quyeec Quyêc
|
||||||
|
giyeec giyêc
|
||||||
|
Giyeec Giyêc
|
||||||
|
quyeem quyêm
|
||||||
|
Quyeem Quyêm
|
||||||
|
giyeem giyêm
|
||||||
|
Giyeem Giyêm
|
||||||
|
quyeeng quyêng
|
||||||
|
Quyeeng Quyêng
|
||||||
|
giyeeng giyêng
|
||||||
|
Giyeeng Giyêng
|
||||||
|
quyeenh quyênh
|
||||||
|
Quyeenh Quyênh
|
||||||
|
giyeenh giyênh
|
||||||
|
Giyeenh Giyênh
|
||||||
|
quyeen quyên
|
||||||
|
Quyeen Quyên
|
||||||
|
giyeen giyên
|
||||||
|
Giyeen Giyên
|
||||||
|
quyeep quyêp
|
||||||
|
Quyeep Quyêp
|
||||||
|
giyeep giyêp
|
||||||
|
Giyeep Giyêp
|
||||||
|
quyeet quyêt
|
||||||
|
Quyeet Quyêt
|
||||||
|
giyeet giyêt
|
||||||
|
Giyeet Giyêt
|
||||||
|
quyeeu quyêu
|
||||||
|
Quyeeu Quyêu
|
||||||
|
giyeeu giyêu
|
||||||
|
Giyeeu Giyêu
|
||||||
|
quyee quyê
|
||||||
|
Quyee Quyê
|
||||||
|
giyee giyê
|
||||||
|
Giyee Giyê
|
||||||
|
quye quye
|
||||||
|
Quye Quye
|
||||||
|
giye giye
|
||||||
|
Giye Giye
|
||||||
|
quym quym
|
||||||
|
Quym Quym
|
||||||
|
giym giym
|
||||||
|
Giym Giym
|
||||||
|
quyng quyng
|
||||||
|
Quyng Quyng
|
||||||
|
giyng giyng
|
||||||
|
Giyng Giyng
|
||||||
|
quynh quynh
|
||||||
|
Quynh Quynh
|
||||||
|
giynh giynh
|
||||||
|
Giynh Giynh
|
||||||
|
quyn quyn
|
||||||
|
Quyn Quyn
|
||||||
|
giyn giyn
|
||||||
|
Giyn Giyn
|
||||||
|
quyp quyp
|
||||||
|
Quyp Quyp
|
||||||
|
giyp giyp
|
||||||
|
Giyp Giyp
|
||||||
|
quyt quyt
|
||||||
|
Quyt Quyt
|
||||||
|
giyt giyt
|
||||||
|
Giyt Giyt
|
||||||
|
quy quy
|
||||||
|
Quy Quy
|
||||||
|
giy giy
|
||||||
|
Giy Giy
|
||||||
|
gic gic
|
||||||
|
Gic Gic
|
||||||
|
gim gim
|
||||||
|
Gim Gim
|
||||||
|
gin gin
|
||||||
|
Gin Gin
|
||||||
|
gip gip
|
||||||
|
Gip Gip
|
||||||
|
git git
|
||||||
|
Git Git
|
||||||
|
gich gich
|
||||||
|
Gich Gich
|
||||||
|
ging ging
|
||||||
|
Ging Ging
|
||||||
|
ginh ginh
|
||||||
|
Ginh Ginh
|
||||||
|
|||||||
32
vi.c
32
vi.c
@@ -89,12 +89,37 @@ applytone(Rune c, int tidx)
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In qu- and gi- onsets the u/i is a glide that belongs to the onset,
|
||||||
|
* not the rime, so it must not bear the tone (qua -> quá, gia -> giá).
|
||||||
|
* The i of gi- is only a glide when another vowel follows; otherwise it
|
||||||
|
* is the nucleus itself (gì, gìn). Returns the rune index to skip, or -1.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
onsetglide(Str *m)
|
||||||
|
{
|
||||||
|
Rune a, b;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(m->n < 2)
|
||||||
|
return -1;
|
||||||
|
a = m->r[0];
|
||||||
|
b = removetone(m->r[1]);
|
||||||
|
if((a == 'q' || a == 'Q') && (b == 'u' || b == 'U'))
|
||||||
|
return 1;
|
||||||
|
if((a == 'g' || a == 'G') && (b == 'i' || b == 'I'))
|
||||||
|
for(i = 2; i < m->n; i++)
|
||||||
|
if(isvowel(removetone(m->r[i])))
|
||||||
|
return 1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
Emit
|
Emit
|
||||||
transvi(Im *im, Rune c)
|
transvi(Im *im, Rune c)
|
||||||
{
|
{
|
||||||
Emit e;
|
Emit e;
|
||||||
Str mapped, pre;
|
Str mapped, pre;
|
||||||
int i, tidx, vi, last, penult;
|
int i, tidx, vi, last, penult, glide;
|
||||||
Rune v, b1, b2;
|
Rune v, b1, b2;
|
||||||
|
|
||||||
if(!istone(c) && c != 'z')
|
if(!istone(c) && c != 'z')
|
||||||
@@ -115,9 +140,12 @@ transvi(Im *im, Rune c)
|
|||||||
}
|
}
|
||||||
if(!mapget(im->l->map, &im->pre, &mapped))
|
if(!mapget(im->l->map, &im->pre, &mapped))
|
||||||
mapped = im->pre;
|
mapped = im->pre;
|
||||||
|
glide = onsetglide(&mapped);
|
||||||
last = -1;
|
last = -1;
|
||||||
penult = -1;
|
penult = -1;
|
||||||
for(i = 0; i < mapped.n; i++){
|
for(i = 0; i < mapped.n; i++){
|
||||||
|
if(i == glide)
|
||||||
|
continue;
|
||||||
v = removetone(mapped.r[i]);
|
v = removetone(mapped.r[i]);
|
||||||
if(isvowel(v)){
|
if(isvowel(v)){
|
||||||
penult = last;
|
penult = last;
|
||||||
@@ -140,9 +168,7 @@ transvi(Im *im, Rune c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(vi < 0){
|
if(vi < 0){
|
||||||
e.eat = 1;
|
|
||||||
e.s = mapped;
|
e.s = mapped;
|
||||||
sputr(&e.s, c);
|
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user