glaemscribe 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/glaemresources/charsets/tengwar_ds_annatar.cst +36 -34
  3. data/glaemresources/charsets/tengwar_ds_eldamar.cst +6 -4
  4. data/glaemresources/charsets/tengwar_ds_elfica.cst +14 -14
  5. data/glaemresources/charsets/tengwar_ds_parmaite.cst +6 -3
  6. data/glaemresources/charsets/tengwar_ds_sindarin.cst +6 -3
  7. data/glaemresources/charsets/tengwar_freemono.cst +7 -2
  8. data/glaemresources/modes/adunaic.glaem +9 -2
  9. data/glaemresources/modes/blackspeech.glaem +11 -8
  10. data/glaemresources/modes/english-ipa.glaem.ignored +382 -0
  11. data/glaemresources/modes/{french-ipa.glaem → french-ipa.glaem.ignored} +0 -0
  12. data/glaemresources/modes/futhark-runicus.glaem +8 -5
  13. data/glaemresources/modes/futhark-younger.glaem +9 -6
  14. data/glaemresources/modes/futhorc.glaem +8 -5
  15. data/glaemresources/modes/gothic.glaem +4 -1
  16. data/glaemresources/modes/japanese-tengwar.glaem.ignored +548 -0
  17. data/glaemresources/modes/khuzdul.glaem +7 -9
  18. data/glaemresources/modes/mercian.glaem +58 -37
  19. data/glaemresources/modes/quenya-sarati.glaem +4 -1
  20. data/glaemresources/modes/quenya.glaem +10 -4
  21. data/glaemresources/modes/raw-tengwar.glaem +90 -73
  22. data/glaemresources/modes/rlyehian.glaem +8 -3
  23. data/glaemresources/modes/sindarin-beleriand.glaem +8 -2
  24. data/glaemresources/modes/sindarin-daeron.glaem +4 -1
  25. data/glaemresources/modes/sindarin.glaem +11 -4
  26. data/glaemresources/modes/telerin.glaem +10 -4
  27. data/glaemresources/modes/valarin-sarati.glaem +9 -7
  28. data/glaemresources/modes/westron.glaem +10 -3
  29. data/glaemresources/modes/westsaxon.glaem +52 -36
  30. data/lib/api/constants.rb +4 -0
  31. data/lib/api/fragment.rb +1 -5
  32. data/lib/api/mode.rb +9 -0
  33. data/lib/api/mode_parser.rb +2 -0
  34. data/lib/api/rule.rb +1 -1
  35. data/lib/api/rule_group.rb +3 -0
  36. data/lib/api/sheaf_chain_iterator.rb +4 -2
  37. metadata +6 -5
  38. data/glaemresources/modes/english-ipa.glaem +0 -245
@@ -22,16 +22,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22
22
 
23
23
  **\
24
24
 
25
+ \beg changelog
26
+ \entry "0.0.1" "Initial version"
27
+ \entry "0.0.2" "Adding quotes handling"
28
+ \end
29
+
25
30
  \language "Old Norse"
26
31
  \writing "Runes"
27
- \mode "Futhark Codex Runicus"
32
+ \mode "Old Norse Futhark - Codex Runicus"
28
33
  \version "0.0.2"
29
34
  \authors "Historical, impl. Talagan (Benjamin Babut)"
30
35
 
31
- \beg changelog
32
- \entry "0.0.1" "Initial version"
33
- \entry "0.0.2" "Adding quotes handling"
34
- \end
36
+ \world primary_related_to_arda
37
+ \invention historical
35
38
 
36
39
  \charset unicode_runes true
37
40
 
@@ -22,18 +22,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22
22
 
23
23
  **\
24
24
 
25
+ \beg changelog
26
+ \entry "0.0.1" "Initial version"
27
+ \entry "0.0.2" "Adding quotes handling"
28
+ \end
29
+
25
30
  \language "Old Norse"
26
31
  \writing "Runes"
27
- \mode "Younger Futhark"
32
+ \mode "Old Norse Futhark - Younger Futhark"
28
33
  \version "0.0.2"
29
34
  \authors "Historical impl. Bertrand Bellet"
30
35
 
31
- \charset unicode_runes true
36
+ \world primary_related_to_arda
37
+ \invention historical
32
38
 
33
- \beg changelog
34
- \entry "0.0.1" "Initial version"
35
- \entry "0.0.2" "Adding quotes handling"
36
- \end
39
+ \charset unicode_runes true
37
40
 
38
41
  \beg options
39
42
  \beg option runic_style RUNIC_STYLE_LONG_BRANCH
@@ -22,16 +22,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22
22
 
23
23
  **\
24
24
 
25
+ \beg changelog
26
+ \entry "0.0.1" "Initial version"
27
+ \entry "0.0.2" "Adding quotes handling"
28
+ \end
29
+
25
30
  \language "Old English"
26
31
  \writing "Runes"
27
- \mode "Futhorc"
32
+ \mode "Old English Futhorc"
28
33
  \version "0.0.2"
29
34
  \authors "Historical impl. Bertrand Bellet"
30
35
 
31
- \beg changelog
32
- \entry "0.0.1" "Initial version"
33
- \entry "0.0.2" "Adding quotes handling"
34
- \end
36
+ \world primary_related_to_arda
37
+ \invention historical
35
38
 
36
39
  \charset unicode_runes true
37
40
 
@@ -24,10 +24,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
24
24
 
25
25
  \language "Gothic"
26
26
  \writing "Gothic Alphabet"
27
- \mode "Standard"
27
+ \mode "Gothic - Standard"
28
28
  \version "0.0.1"
29
29
  \authors "Historical, impl. Talagan (Benjamin Babut)"
30
30
 
31
+ \world primary_related_to_arda
32
+ \invention historical
33
+
31
34
  \charset unicode_gothic true
32
35
 
33
36
  \beg preprocessor
@@ -0,0 +1,548 @@
1
+ \language "Japanese"
2
+ \writing "Tengwar"
3
+ \mode "Japanese Tengwar - G*"
4
+ \authors "Talagan (Benjamin Babut)"
5
+ \version "0.0.1"
6
+
7
+ \world primary
8
+ \invention experimental
9
+
10
+ \raw_mode "raw-tengwar"
11
+
12
+ \charset tengwar_ds_sindarin false
13
+ \charset tengwar_ds_parmaite false
14
+ \charset tengwar_ds_eldamar false
15
+ \charset tengwar_ds_annatar true
16
+ \charset tengwar_ds_elfica false
17
+ \charset tengwar_freemono false
18
+
19
+ \beg options
20
+ \beg option gojuon_y GOJUON_Y_USE_YANTA
21
+ \value GOJUON_Y_USE_TELCO 0
22
+ \value GOJUON_Y_USE_YANTA 1
23
+ \end
24
+
25
+ \beg option gojuon_w GOJUON_W_USE_URE
26
+ \value GOJUON_W_USE_TELCO 0
27
+ \value GOJUON_W_USE_URE 1
28
+ \end
29
+
30
+ \beg option isolated_n ISOLATED_N_USE_NOLDO
31
+ \value ISOLATED_N_USE_NOLDO 0
32
+ \value ISOLATED_N_USE_MODIFIER 1
33
+ \end
34
+
35
+ \beg option choon_long_vowels CHOON_CONFLATE
36
+ \value CHOON_CONFLATE 0
37
+ \value CHOON_KEEP_SEPARATE 1
38
+ \end
39
+
40
+ \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_WAVE
41
+ \value CONSONANT_MODIFICATION_STYLE_WAVE 0
42
+ \value CONSONANT_MODIFICATION_STYLE_BAR 1
43
+ \end
44
+
45
+
46
+ \end
47
+
48
+ \beg preprocessor
49
+
50
+ \downcase
51
+
52
+ \** Normalize explicitly written long vowels **\
53
+ \rxsubstitute "[āâàá]" "aー"
54
+ \rxsubstitute "[īîíì]" "iー"
55
+ \rxsubstitute "[ūûúù]" "uー"
56
+ \rxsubstitute "[ēêéè]" "eー"
57
+ \rxsubstitute "[ōôóò]" "oー"
58
+
59
+ \** Normalize elvish bizarrerie **\
60
+ \substitute "ä" "a"
61
+ \substitute "ï" "i"
62
+ \substitute "ü" "u"
63
+ \substitute "ë" "e"
64
+ \substitute "ö" "o"
65
+
66
+ \if "choon_long_vowels == CHOON_CONFLATE"
67
+ \** Normalization of long vowels : gojuon **\
68
+ \** a **\ \rxsubstitute "([あアカかさサたタなナはハまマらラがガざザだダばバぱパやヤわワ])[あアー]" "\\1ー"
69
+ \** i **\ \rxsubstitute "([いイきキしシちチにニひヒみミりリぎギじジぢヂびビぴピゐヰ])[いイー]" "\\1ー"
70
+ \** u **\ \rxsubstitute "([うウくクすスつツぬヌふフむムるルぐグずズづヅぶブぷプゆユ])[うウー]" "\\1ー"
71
+ \** e **\ \rxsubstitute "([えエけケせセてテねネへヘめメれレげゲぜゼでデべベぺペゑヱ])[いイー]" "\\1ー"
72
+ \** o **\ \rxsubstitute "([おオこコそソとトのノほホもモろロごゴぞゾどドぼボぽポよヨをヲ])[うウー]" "\\1ー"
73
+
74
+ \** ookami, too **\
75
+ \rxsubstitute "([とトおオ])[おオ]" "\\1ー"
76
+ \** ee, nee, oneesan **\
77
+ \rxsubstitute "([ねネえエ])[えエ]" "\\1ー"
78
+
79
+ \** Normalization of long vowels : yoon & foreign extended katakana **\
80
+ \** a **\ \rxsubstitute "([ラ゜ゃャァヮ])[あアー]" "\\1ー"
81
+ \** i **\ \rxsubstitute "([リ゜ィ])[いイー]" "\\1ー"
82
+ \** u **\ \rxsubstitute "([ル゜ゅュゥヴ])[うウー]" "\\1ー"
83
+ \** e **\ \rxsubstitute "([レ゜ェえエ])[いイー]" "\\1ー"
84
+ \** o **\ \rxsubstitute "([ロ゜ょョォ])[うウー]" "\\1ー"
85
+
86
+ \rxsubstitute "ei" "eー"
87
+ \rxsubstitute "ou" "oー"
88
+
89
+ \rxsubstitute "aa" "aー"
90
+ \rxsubstitute "ii" "iー"
91
+ \rxsubstitute "uu" "uー"
92
+ \rxsubstitute "ee" "eー"
93
+ \rxsubstitute "oo" "oー"
94
+ \endif
95
+
96
+ \** Normalization of geminates. Simply introduce っ in romanisation ;) **\
97
+ \rxsubstitute "([tpkcs])\\1" "っ\\1"
98
+ \rxsubstitute "tch" "っch"
99
+ \** Far less common, maybe even impossible **\
100
+ \rxsubstitute "([h])\\1" "っ\\1"
101
+ \rxsubstitute "([dbgz])\\1" "っ\\1"
102
+ \rxsubstitute "([fvl])\\1" "っ\\1"
103
+ \rxsubstitute "([rwy])\\1" "っ\\1"
104
+
105
+ \** Normalization of isolated nasalizer n (&m). Simply introduce ん in romanisation :) **\
106
+ \rxsubstitute "(n|m)([^aeiouy]|$)" "ん\\2"
107
+
108
+ \end
109
+
110
+ \beg processor
111
+ \beg rules litteral
112
+
113
+ \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
114
+ {GEMINATE} === GEMINATE_SIGN_TILD
115
+ {NASAL} === NASALIZE_SIGN_TILD
116
+ \else
117
+ {GEMINATE} === GEMINATE_SIGN
118
+ {NASAL} === NASALIZE_SIGN
119
+ \endif
120
+
121
+ {_A_} === A_TEHTA
122
+ {_I_} === I_TEHTA
123
+ {_U_} === U_TEHTA
124
+ {_E_} === E_TEHTA
125
+ {_O_} === O_TEHTA
126
+
127
+ {_AA_} === A_TEHTA_REVERSED
128
+ {_II_} === I_TEHTA_DOUBLE
129
+ {_UU_} === U_TEHTA_DOUBLE
130
+ {_EE_} === E_TEHTA_DOUBLE
131
+ {_OO_} === O_TEHTA_DOUBLE
132
+
133
+ {_SHORT_VOWELS_} === [{_A_} * {_I_} * {_U_} * {_E_} * {_O_}]
134
+ {_LONG_VOWELS_} === [{_AA_} * {_II_} * {_UU_} * {_EE_} * {_OO_}]
135
+
136
+ {_SHORT_VOWELS_YON_} === [{_A_} * {_U_} * {_O_}]
137
+ {_LONG_VOWELS_YON_} === [{_AA_} * {_UU_} * {_OO_}]
138
+
139
+ {NASAL_OR_NOT} === [{NULL} * (ん,ン)]
140
+ {GEMINATE_OR_NOT} === [{NULL} * (っ,ッ)]
141
+ {MODS} === {NASAL_OR_NOT} {GEMINATE_OR_NOT}
142
+
143
+ {_PALATAL_} === UNUTIXE
144
+ {_NASAL_} === {NASAL}
145
+ {_GEMINATE_} === {GEMINATE}
146
+ {_LABIAL_} === U_TEHTA_INF
147
+ {_CANCELLER_} === THINNAS
148
+ {_ALVEOLAR_} === ALVEOLAR_SIGN
149
+ {_CANCEL_THEN_PALATAL_} === CIRC_TEHTA_INF
150
+
151
+ {_GEMINATE_OR_NOT_} === [{NULL} * {_GEMINATE_}]
152
+
153
+ \if "isolated_n == ISOLATED_N_USE_NOLDO"
154
+ {_NASAL_OR_NOT_PRE_} === [{NULL} * NOLDO]
155
+ {_NASAL_OR_NOT_POST_} === {NULL}
156
+ \else
157
+ {_NASAL_OR_NOT_PRE_} === {NULL}
158
+ {_NASAL_OR_NOT_POST_} === [{NULL} * {_NASAL_}]
159
+ \endif
160
+
161
+ {_PREMODS_} === {_NASAL_OR_NOT_PRE_}
162
+ {_POSTMODS_} === {_NASAL_OR_NOT_POST_} {_GEMINATE_OR_NOT_}
163
+
164
+ \** Isolated vowels / Y Serie **\
165
+ {GOJUON} === [(あ,ア,a) * (い,イ,i) * (う,ウ,u) * (え,エ,e) * (お,オ,o)]
166
+ {YOON} === [(や,ヤ,ya) * (ゆ,ユ,yu) * (よ,ヨ,yo)]
167
+ {GOJUON} --> TELCO {_SHORT_VOWELS_}
168
+ {GOJUON}ー --> TELCO {_LONG_VOWELS_}
169
+ \if "gojuon_y == GOJUON_Y_USE_YANTA"
170
+ {TENGWA} === YANTA
171
+ \else
172
+ {TENGWA} === TELCO {_PALATAL_}
173
+ \endif
174
+ {YOON} --> {TENGWA} {_SHORT_VOWELS_YON_}
175
+ {YOON}ー --> {TENGWA} {_LONG_VOWELS_YON_}
176
+
177
+
178
+ \** T serie **\
179
+ {GOJUON} === [(た,タ,ta) * (ち,チ,chi) * (つ,ツ,tsu) * (て,テ,te) * (と,ト,to)]
180
+ {YOON} === [(ちゃ,チャ,cha) * (ちゅ,チュ,chu) * (ちょ,チョ,cho)]
181
+ {TENGWA} === TINCO
182
+
183
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
184
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
185
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
186
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
187
+
188
+ \** P serie **\
189
+ {GOJUON} === [(ぱ,パ,pa) * (ぴ,ピ,pi) * (ぷ,プ,pu) * (ぺ,ペ,pe) * (ぽ,ポ,po)]
190
+ {YOON} === [(ぴゃ,ピャ,pya) * (ぴゅ,ピュ,pyu) * (ぴょ,ピョ,pyo)]
191
+ {TENGWA} === PARMA
192
+
193
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
194
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
195
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
196
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
197
+
198
+ \** K serie **\
199
+ {GOJUON} === [(か,カ,ka) * (き,キ,ki) * (く,ク,ku) * (け,ケ,ke) * (こ,コ,ko)]
200
+ {YOON} === [(きゃ,キャ,kya) * (きゅ,キュ,kyu) * (きょ,キョ,kyo)]
201
+ {TENGWA} === CALMA
202
+
203
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
204
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
205
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
206
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
207
+
208
+ \** D serie **\
209
+ {GOJUON} === [(だ,ダ,da) * (ぢ,ヂ,dji) * (づ,ヅ,dzu) * (で,デ,de) * (ど,ド,do)]
210
+ {YOON} === [(ぢゃ,ヂャ,dja) * (ぢゅ,ヂュ,dju) * (ぢょ,ヂョ,djo)]
211
+ {TENGWA} === ANDO
212
+
213
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
214
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
215
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
216
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
217
+
218
+ \** B serie **\
219
+ {GOJUON} === [(ば,バ,ba) * (び,ビ,bi) * (ぶ,ブ,bu) * (べ,ベ,be) * (ぼ,ボ,bo)]
220
+ {YOON} === [(びゃ,ビャ,bya) * (びゅ,ビュ,byu) * (びょ,ビョ,byo)]
221
+ {TENGWA} === UMBAR
222
+
223
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
224
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
225
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
226
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
227
+
228
+ \** G Serie **\
229
+ {GOJUON} === [(が,ガ,ga) * (ぎ,ギ,gi) * (ぐ,グ,gu) * (げ,ゲ,ge) * (ご,ゴ,go)]
230
+ {YOON} === [(ぎゃ,ギャ,gya) * (ぎゅ,ギュ,gyu) * (ぎょ,ギョ,gyo)]
231
+ {TENGWA} === ANGA
232
+
233
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
234
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
235
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
236
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
237
+
238
+ \** N serie **\
239
+ {GOJUON} === [(な,ナ,na) * (に,ニ,ni) * (ぬ,ヌ,nu) * (ね,ネ,ne) * (の,ノ,no)]
240
+ {YOON} === [(にゃ,ニャ,nya) * (にゅ,ニュ,nyu) * (にょ,ニョ,nyo)]
241
+ {TENGWA} === NUMEN
242
+
243
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
244
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
245
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
246
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
247
+ (ん,ン) --> NOLDO
248
+
249
+ \** M serie **\
250
+ {GOJUON} === [(ま,マ,ma) * (み,ミ,mi) * (む,ム,mu) * (め,メ,me) * (も,モ,mo)]
251
+ {YOON} === [(みゃ,ミャ,mya) * (みゅ,ミュ,myu) * (みょ,ミョ,myo)]
252
+ {TENGWA} === MALTA
253
+
254
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
255
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
256
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
257
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
258
+
259
+ \** H serie **\
260
+ {GOJUON} === [(は,ハ,ha) * (ひ,ヒ,hi) * (ふ,フ,fu) * (へ,ヘ,he) * (ほ,ホ,ho)]
261
+ {YOON} === [(ひゃ,ヒャ,hya) * (ひゅ,ヒュ,hyu) * (ひょ,ヒョ,hyo)]
262
+ {TENGWA} === VALA
263
+
264
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
265
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
266
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
267
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
268
+
269
+ \** S serie **\
270
+ {GOJUON} === [(さ,サ,sa) * (し,シ,shi) * (す,ス,su) * (せ,セ,se) * (そ,ソ,so)]
271
+ {YOON} === [(しゃ,シャ,sha) * (しゅ,シュ,shu) * (しょ,ショ,sho)]
272
+ {TENGWA} === SILME_NUQUERNA
273
+
274
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
275
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
276
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
277
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
278
+
279
+ \** Z serie **\
280
+ {GOJUON} === [(ざ,ザ,za) * (じ,ジ,ji) * (ず,ズ,zu) * (ぜ,ゼ,ze) * (ぞ,ゾ,zo)]
281
+ {YOON} === [(じゃ,ジャ,ja) * (じゅ,ジュ,ju) * (じょ,ジョ,jo)]
282
+ {TENGWA} === ESSE_NUQUERNA
283
+
284
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
285
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
286
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
287
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
288
+
289
+ \** R serie **\
290
+ {GOJUON} === [(ら,ラ,ra) * (り,リ,ri) * (る,ル,ru) * (れ,レ,re) * (ろ,ロ,ro)]
291
+ {YOON} === [(りゃ,リャ,rya) * (りゅ,リュ,ryu) * (りょ,リョ,ryo)]
292
+ {TENGWA} === ROMEN
293
+
294
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
295
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
296
+ {MODS} {YOON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_SHORT_VOWELS_YON_}
297
+ {MODS} {YOON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_LONG_VOWELS_YON_}
298
+
299
+ \** W serie **\
300
+ {GOJUON} === [(わ,ワ,wa) * (ゐ,ヰ,wi) * (ゑ,ヱ,we) ]
301
+ \if "gojuon_w == GOJUON_W_USE_URE"
302
+ {TENGWA} === URE
303
+ \else
304
+ {TENGWA} === TELCO {_LABIAL_}
305
+ \endif
306
+ {MODS} {GOJUON} --> {_PREMODS_} {TENGWA} {_POSTMODS_} [{_A_} * {_I_} * {_E_}]
307
+ {MODS} {GOJUON}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} [{_AA_} * {_II_} * {_EE_}]
308
+
309
+ \** SPECIALS **\
310
+ {UNDERSCORE}(は,ha,wa) --> HWESTA_SINDARINWA
311
+ (を,ヲ,wo,{UNDERSCORE}を,{UNDERSCORE}ヲ,{UNDERSCORE}wo,{UNDERSCORE}o) --> VAIA
312
+
313
+ \** ***************** **\
314
+ \** Extended katakana **\
315
+ \** ***************** **\
316
+
317
+ {YI} === (イィ,yi)
318
+ \if "gojuon_y == GOJUON_Y_USE_YANTA"
319
+ {TENGWA} === YANTA
320
+ \else
321
+ {TENGWA} === TELCO {_PALATAL_}
322
+ \endif
323
+ {YI} --> {TENGWA} {_I_}
324
+ {YI}ー --> {TENGWA} {_II_}
325
+
326
+ \** va vi vu ve vo **\
327
+ {SERIE} === [(ヴァ,va) * (ヴィ,vi) * (ヴ,vu) * (ヴェ,ve) * (ヴォ,vo)]
328
+ {TENGWA} === TW_EXT_22
329
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
330
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
331
+
332
+ \** v yon : vya vyu vye vyo **\
333
+ {SERIE} === [(ヴャ,vya) * (ヴュ,vyu) * (ヴィェ,vye) * (ヴョ,vyo)]
334
+ {TENGWA} === TW_EXT_22
335
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_A_} * {_U_} * {_E_} * {_O_}]
336
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_AA_} * {_UU_} * {_EE_} * {_OO_}]
337
+
338
+ \** kye **\
339
+ {SERIE} === [(キェ,kye)]
340
+ {TENGWA} === CALMA
341
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
342
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
343
+
344
+ \** kwa, kWa, kwi, kwe, kwo **\
345
+ {SERIE} === [(クァ,クヮ,kwa) * (クィ,kwi) * (クェ,kwe) * (クォ,kwo)]
346
+ {TENGWA} === CALMA
347
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LABIAL_} [{_A_} * {_I_} * {_E_} * {_O_}]
348
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LABIAL_} [{_AA_} * {_II_} * {_EE_} * {_OO_}]
349
+
350
+ \** gye **\
351
+ {SERIE} === [(ギェ,gye)]
352
+ {TENGWA} === ANGA
353
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
354
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
355
+
356
+ \** gwa, gWa, gwi, gwe, gwo **\
357
+ {SERIE} === [(グァ,グヮ,gwa) * (グィ,gwi) * (グェ,gwe) * (グォ,gwo)]
358
+ {TENGWA} === ANGA
359
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LABIAL_} [{_A_} * {_I_} * {_E_} * {_O_}]
360
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LABIAL_} [{_AA_} * {_II_} * {_EE_} * {_OO_}]
361
+
362
+ \** she **\
363
+ {SERIE} === [(シェ,she)]
364
+ {TENGWA} === SILME_NUQUERNA
365
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
366
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
367
+
368
+ \** je **\
369
+ {SERIE} === [(ジェ,je)]
370
+ {TENGWA} === ESSE_NUQUERNA
371
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
372
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
373
+
374
+ \** si **\
375
+ {SERIE} === [(スィ,si)]
376
+ {TENGWA} === SILME_NUQUERNA
377
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_I_}]
378
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_II_}]
379
+
380
+ \** zi **\
381
+ {SERIE} === [(ズィ,zi)]
382
+ {TENGWA} === ESSE_NUQUERNA
383
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_I_}]
384
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_II_}]
385
+
386
+ \** che **\
387
+ {SERIE} === [(チェ,che)]
388
+ {TENGWA} === TINCO
389
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
390
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
391
+
392
+ \** tsa, tsi, tse, tso **\
393
+ {SERIE} === [(ツァ,tsa) * (ツィ,tsi) * (ツェ,tse) * (ツォ,tso)]
394
+ {TENGWA} === TINCO
395
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_ALVEOLAR_} [{_A_} * {_I_} * {_E_} * {_O_}]
396
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_ALVEOLAR_} [{_AA_} * {_II_} * {_EE_} * {_OO_}]
397
+
398
+ \** tsyu = t alveolaire + palatale + u **\
399
+ {SERIE} === [(ツァ,tsyu)]
400
+ {TENGWA} === TINCO
401
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_ALVEOLAR_} [{_U_}]
402
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} {_ALVEOLAR_} [{_UU_}]
403
+
404
+ \** ti, tu **\
405
+ {SERIE} === [(ティ,ti) * (トゥ,tu)]
406
+ {TENGWA} === TINCO
407
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_I_} * {_U_}]
408
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_II_} * {_UU_}]
409
+
410
+ \** tyu **\
411
+ {SERIE} === [(テュ,tyu)]
412
+ {TENGWA} === TINCO
413
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCEL_THEN_PALATAL_} [{_U_}]
414
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCEL_THEN_PALATAL_} [{_UU_}]
415
+
416
+ \** di, du **\
417
+ {SERIE} === [(ディ,di) * (ドゥ,du)]
418
+ {TENGWA} === ANDO
419
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_I_} * {_U_}]
420
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_II_} * {_UU_}]
421
+
422
+ \** dyu **\
423
+ {SERIE} === [(デュ,dyu)]
424
+ {TENGWA} === TINCO
425
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCEL_THEN_PALATAL_} [{_U_}]
426
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCEL_THEN_PALATAL_} [{_UU_}]
427
+
428
+ \** nye **\
429
+ {SERIE} === [(ニェ,nye)]
430
+ {TENGWA} === NUMEN
431
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
432
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
433
+
434
+ \** hye **\
435
+ {SERIE} === [(ヒェ,hye)]
436
+ {TENGWA} === VALA
437
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
438
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
439
+
440
+ \** bye **\
441
+ {SERIE} === [(ビェ,bye)]
442
+ {TENGWA} === UMBAR
443
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
444
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
445
+
446
+ \** pye **\
447
+ {SERIE} === [(ピェ,pye)]
448
+ {TENGWA} === PARMA
449
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
450
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
451
+
452
+ \** fa, fi, fu, fe, fo **\
453
+ {SERIE} === [(ファ,fa) * (フィ,fi) * (フェ,fe) * (フォ,fo)]
454
+ {TENGWA} === TW_EXT_12
455
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} [{_A_} * {_I_} * {_E_} * {_O_}]
456
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} [{_AA_} * {_II_} * {_EE_} * {_OO_}]
457
+
458
+ \** fya, fyu, fye, fyo **\
459
+ {SERIE} === [(フャ,fya) * (フュ,fyu) * (フィ,fye) * (フョ,fyo)]
460
+ {TENGWA} === TW_EXT_12
461
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} [{_A_} * {_U_} * {_E_} * {_O_}]
462
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} [{_AA_} * {_UU_} * {_EE_} * {_OO_}]
463
+
464
+ \** hu **\
465
+ {SERIE} === [(ホゥ,hu)]
466
+ {TENGWA} === VALA
467
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_U_}]
468
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_CANCELLER_} [{_UU_}]
469
+
470
+ \** mye **\
471
+ {SERIE} === [(ミェ,mye)]
472
+ {TENGWA} === MALTA
473
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
474
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
475
+
476
+ \** rye **\
477
+ {SERIE} === [(リェ,rye)]
478
+ {TENGWA} === ROMEN
479
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_E_}]
480
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_PALATAL_} [{_EE_}]
481
+
482
+ \** la, li, lu, le, lo / sons of the patriots **\
483
+ {SERIE} === [(ラ゜,la) * (リ゜,li) * (ル゜ ,lu) * (レ゜,le) * (ロ゜,lo)]
484
+ {TENGWA} === LAMBE
485
+
486
+ {MODS} {SERIE} --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_SHORT_VOWELS_}
487
+ {MODS} {SERIE}ー --> {_PREMODS_} {TENGWA} {_POSTMODS_} {_LONG_VOWELS_}
488
+
489
+ \end
490
+
491
+ \beg rules punctuation
492
+ . --> PUNCT_DDOT
493
+ 。 --> PUNCT_DDOT
494
+ .. --> PUNCT_DOT PUNCT_DDOT PUNCT_DOT
495
+ … --> PUNCT_TILD
496
+ ... --> PUNCT_TILD
497
+ .... --> PUNCT_TILD
498
+ ..... --> PUNCT_TILD
499
+ ...... --> PUNCT_TILD
500
+ ....... --> PUNCT_TILD
501
+
502
+ , --> PUNCT_DOT
503
+ 、 --> PUNCT_DOT
504
+ : --> PUNCT_DOT
505
+ ; --> PUNCT_DOT
506
+ ! --> PUNCT_EXCLAM
507
+ ? --> PUNCT_INTERR
508
+ · --> PUNCT_DOT
509
+
510
+ \** Apostrophe **\
511
+
512
+ ' --> {NULL}
513
+ ’ --> {NULL}
514
+
515
+ \** NBSP **\
516
+ {NBSP} --> NBSP
517
+
518
+ \** Quotes **\
519
+
520
+ “ --> DQUOT_OPEN
521
+ ” --> DQUOT_CLOSE
522
+ « --> DQUOT_OPEN
523
+ » --> DQUOT_CLOSE
524
+
525
+ - --> {NULL}
526
+ – --> PUNCT_TILD
527
+ — --> PUNCT_TILD
528
+
529
+ [ --> PUNCT_PAREN_L
530
+ ] --> PUNCT_PAREN_R
531
+ ( --> PUNCT_PAREN_L
532
+ ) --> PUNCT_PAREN_R
533
+ { --> PUNCT_PAREN_L
534
+ } --> PUNCT_PAREN_R
535
+ < --> PUNCT_PAREN_L
536
+ > --> PUNCT_PAREN_R
537
+
538
+ \** Not universal between fonts ... **\
539
+ $ --> BOOKMARK_SIGN
540
+ ≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
541
+ ≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
542
+
543
+ \end
544
+ \end
545
+
546
+ \beg postprocessor
547
+ \resolve_virtuals
548
+ \end