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):
|
||||
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)
|
||||
@@ -147,6 +150,24 @@ def final():
|
||||
for t in tone:
|
||||
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()
|
||||
vowel2()
|
||||
vowel3()
|
||||
@@ -157,3 +178,4 @@ tone1mod()
|
||||
tone2mod()
|
||||
escape()
|
||||
final()
|
||||
onsets()
|
||||
|
||||
900
map/telex.map
900
map/telex.map
@@ -587,3 +587,903 @@ Yt Yt
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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
|
||||
transvi(Im *im, Rune c)
|
||||
{
|
||||
Emit e;
|
||||
Str mapped, pre;
|
||||
int i, tidx, vi, last, penult;
|
||||
int i, tidx, vi, last, penult, glide;
|
||||
Rune v, b1, b2;
|
||||
|
||||
if(!istone(c) && c != 'z')
|
||||
@@ -115,9 +140,12 @@ transvi(Im *im, Rune c)
|
||||
}
|
||||
if(!mapget(im->l->map, &im->pre, &mapped))
|
||||
mapped = im->pre;
|
||||
glide = onsetglide(&mapped);
|
||||
last = -1;
|
||||
penult = -1;
|
||||
for(i = 0; i < mapped.n; i++){
|
||||
if(i == glide)
|
||||
continue;
|
||||
v = removetone(mapped.r[i]);
|
||||
if(isvowel(v)){
|
||||
penult = last;
|
||||
@@ -140,9 +168,7 @@ transvi(Im *im, Rune c)
|
||||
}
|
||||
}
|
||||
if(vi < 0){
|
||||
e.eat = 1;
|
||||
e.s = mapped;
|
||||
sputr(&e.s, c);
|
||||
return e;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user