glaemscribe 1.0.19 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/glaemresources/charsets/tengwar_ds_annatar.cst +509 -0
  3. data/glaemresources/charsets/tengwar_ds_eldamar.cst +22 -16
  4. data/glaemresources/charsets/tengwar_ds_elfica.cst +461 -0
  5. data/glaemresources/charsets/tengwar_ds_parmaite.cst +500 -0
  6. data/glaemresources/charsets/{tengwar_ds.cst → tengwar_ds_sindarin.cst} +59 -62
  7. data/glaemresources/charsets/tengwar_freemono.cst +176 -0
  8. data/glaemresources/charsets/unicode_runes.cst +1 -0
  9. data/glaemresources/modes/adunaic.glaem +50 -28
  10. data/glaemresources/modes/blackspeech.glaem +156 -82
  11. data/glaemresources/modes/english-ipa.glaem +49 -0
  12. data/glaemresources/modes/french-ipa.glaem +49 -0
  13. data/glaemresources/modes/{oldnorse-medieval.glaem → futhark-runicus.glaem} +4 -4
  14. data/glaemresources/modes/futhark-younger.glaem +129 -0
  15. data/glaemresources/modes/{futhorc.glaem.disabled → futhorc.glaem} +76 -38
  16. data/glaemresources/modes/gothic.glaem +1 -1
  17. data/glaemresources/modes/khuzdul.glaem +1 -1
  18. data/glaemresources/modes/mercian.glaem +31 -16
  19. data/glaemresources/modes/quenya-sarati.glaem +5 -3
  20. data/glaemresources/modes/quenya.glaem +168 -77
  21. data/glaemresources/modes/rlyehian.glaem +41 -43
  22. data/glaemresources/modes/sindarin-beleriand.glaem +39 -17
  23. data/glaemresources/modes/sindarin-daeron.glaem +1 -1
  24. data/glaemresources/modes/{sindarin-classical.glaem → sindarin.glaem} +73 -37
  25. data/glaemresources/modes/telerin.glaem +161 -64
  26. data/glaemresources/modes/valarin-sarati.glaem +1 -1
  27. data/glaemresources/modes/westron.glaem +83 -44
  28. data/glaemresources/modes/westsaxon.glaem +30 -13
  29. data/lib/api/charset.rb +29 -11
  30. data/lib/api/charset_parser.rb +15 -3
  31. data/lib/api/mode.rb +15 -3
  32. data/lib/api/mode_parser.rb +7 -2
  33. data/lib/api/option.rb +15 -1
  34. data/lib/api/post_processor/resolve_virtuals.rb +35 -24
  35. data/lib/api/transcription_pre_post_processor.rb +2 -1
  36. metadata +15 -11
  37. data/glaemresources/modes/blackspeech-annatar.glaem +0 -320
  38. data/glaemresources/modes/futhark-long-branch.glaem.disabled +0 -101
  39. data/glaemresources/modes/futhark-short-twig.glaem.disabled +0 -101
@@ -33,10 +33,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
33
33
  \language "R'lyehian"
34
34
  \writing Tengwar
35
35
  \mode Glaemscrafu
36
- \version 0.0.1
37
- \authors "Fthalagn"
36
+ \version 0.0.3
37
+ \authors "H.P.Lovecraft & The Great Ancient Gods, impl. Fthalagn"
38
38
 
39
- \charset tengwar_ds true
39
+ \beg changelog
40
+ \entry "0.0.1" "First version"
41
+ \entry 0.0.2 "Ported to virtual chars"
42
+ \entry 0.0.3 "Ported to various charsets"
43
+ \end
44
+
45
+ \charset tengwar_ds_sindarin true
46
+ \charset tengwar_ds_parmaite false
47
+ \charset tengwar_ds_eldamar false
48
+ \charset tengwar_ds_annatar false
49
+ \charset tengwar_ds_elfica false
50
+ \charset tengwar_freemono false
40
51
 
41
52
  \beg options
42
53
  \end
@@ -158,38 +169,21 @@ y palatal semi vowel ?
158
169
  \beg rules litteral
159
170
  {VOWELS} === a * e * i * o * u * w
160
171
 
161
- {O_LOOP_XS} === U_TEHTA_XS
162
- {O_LOOP_S} === U_TEHTA_S
163
- {O_LOOP_L} === U_TEHTA_L
164
- {O_LOOP_XL} === U_TEHTA_XL
165
- {U_LOOP_XS} === O_TEHTA_XS
166
- {U_LOOP_S} === O_TEHTA_S
167
- {U_LOOP_L} === O_TEHTA_L
168
- {U_LOOP_XL} === O_TEHTA_XL
169
-
170
- {TEHTA_XS} === A_TEHTA_XS * E_TEHTA_XS * I_TEHTA_XS * {O_LOOP_XS} * {U_LOOP_XS} * THSUP_SEV_XS
171
- {TEHTA__S} === A_TEHTA_S * E_TEHTA_S * I_TEHTA_S * {O_LOOP_S} * {U_LOOP_S} * THSUP_SEV_S
172
- {TEHTA__L} === A_TEHTA_L * E_TEHTA_L * I_TEHTA_L * {O_LOOP_L} * {U_LOOP_L} * THSUP_SEV_L
173
- {TEHTA_XL} === A_TEHTA_XL * E_TEHTA_XL * I_TEHTA_XL * {O_LOOP_XL} * {U_LOOP_XL} * THSUP_SEV_XL
174
-
175
- [{VOWELS}] --> TELCO [{TEHTA_XS}] \** Replace isolated short vowels **\
172
+ {O_LOOP} === O_TEHTA
173
+ {U_LOOP} === U_TEHTA
174
+
175
+ {TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * O_TEHTA * U_TEHTA * SEV_TEHTA
176
+
177
+ [{VOWELS}] --> TELCO [{TEHTAR}] \** Replace isolated short vowels **\
176
178
 
177
-
178
179
  {WDIPHTHONGS} === {NULL}
179
180
  {WDIPHTHENGS} === {NULL}
180
181
 
181
182
  {V_D_KER} === [ {VOWELS} {WDIPHTHONGS} ]
182
183
  {V_D_KER_WN} === [ {VOWELS} {WDIPHTHONGS} * {NULL} ]
183
184
 
184
- {V_D_IMG_XS} === [ {TEHTA_XS} {WDIPHTHENGS} ]
185
- {V_D_IMG__S} === [ {TEHTA__L} {WDIPHTHENGS} ]
186
- {V_D_IMG__L} === [ {TEHTA__S} {WDIPHTHENGS} ]
187
- {V_D_IMG_XL} === [ {TEHTA_XL} {WDIPHTHENGS} ]
188
- {V_D_IMG_XS_WN} === [ {TEHTA_XS} {WDIPHTHENGS} * {NULL} ]
189
- {V_D_IMG__S_WN} === [ {TEHTA__L} {WDIPHTHENGS} * {NULL} ]
190
- {V_D_IMG__L_WN} === [ {TEHTA__S} {WDIPHTHENGS} * {NULL} ]
191
- {V_D_IMG_XL_WN} === [ {TEHTA_XL} {WDIPHTHENGS} * {NULL} ]
192
-
185
+ {V_D_IMG} === [ {TEHTAR} {WDIPHTHENGS} ]
186
+ {V_D_IMG_WN} === [ {TEHTAR} {WDIPHTHENGS} * {NULL} ]
193
187
 
194
188
  {L1_KER_1} === t * p
195
189
  {L1_IMG_1} === TINCO * PARMA
@@ -197,30 +191,30 @@ y palatal semi vowel ?
197
191
  {L1_IMG_2} === CALMA
198
192
 
199
193
  \** NORMAL **\
200
- [ {L1_KER_1} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_1} ] [{NULL} * TILD_INF_S] {V_D_IMG__S_WN}
201
- [ {L1_KER_2} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_2} ] [{NULL} * TILD_INF_S] {V_D_IMG__S_WN}
194
+ [ {L1_KER_1} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_1} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
195
+ [ {L1_KER_2} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_2} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
202
196
 
203
197
  {L2_KER} === d * b * g
204
198
  {L2_IMG} === ANDO * UMBAR * ANGA
205
- [ {L2_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L2_IMG} ] [{NULL} * TILD_INF_L] {V_D_IMG_XL_WN}
199
+ [ {L2_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L2_IMG} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
206
200
 
207
201
  {L3_KER} === f
208
202
  {L3_IMG} === FORMEN
209
- [ {L3_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L3_IMG} ] [{NULL} * TILD_INF_S] {V_D_IMG_XL_WN}
203
+ [ {L3_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L3_IMG} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
210
204
 
211
205
  {L5_KER} === n * m
212
206
  {L5_IMG} === NUMEN * MALTA
213
- [ {L5_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L5_IMG} ] [{NULL} * TILD_INF_L] {V_D_IMG_XL_WN}
207
+ [ {L5_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L5_IMG} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
214
208
 
215
- r [{NULL} * y * h] {V_D_KER_WN} --> ROMEN [{NULL} * THINF_DDOT_S * LAMBE_MARK_TILD] {V_D_IMG__L_WN}
216
- s {V_D_KER_WN} --> SILME_NUQUERNA {V_D_IMG__L_WN}
217
- z {V_D_KER_WN} --> ESSE_NUQUERNA {V_D_IMG__L_WN}
209
+ r [{NULL} * y * h] {V_D_KER_WN} --> ROMEN [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
210
+ s {V_D_KER_WN} --> SILME_NUQUERNA {V_D_IMG_WN}
211
+ z {V_D_KER_WN} --> ESSE_NUQUERNA {V_D_IMG_WN}
218
212
 
219
- l [{NULL} * y * h] {V_D_KER_WN} --> LAMBE [{NULL} * LAMBE_MARK_DDOT * LAMBE_MARK_TILD] {V_D_IMG__L_WN}
220
- h [{NULL} * y * h] {V_D_KER_WN} --> AHA [{NULL} * THINF_DDOT_L * LAMBE_MARK_TILD] {V_D_IMG_XL_WN}
221
- v [{NULL} * y * h] {V_D_KER_WN} --> VALA [{NULL} * THINF_DDOT_L * LAMBE_MARK_TILD] {V_D_IMG__S_WN}
213
+ l [{NULL} * y * h] {V_D_KER_WN} --> LAMBE [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
214
+ h [{NULL} * y * h] {V_D_KER_WN} --> AHA [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
215
+ v [{NULL} * y * h] {V_D_KER_WN} --> VALA [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
222
216
 
223
- y {V_D_KER_WN} --> VILYA {V_D_IMG__L_WN}
217
+ y {V_D_KER_WN} --> VILYA {V_D_IMG_WN}
224
218
 
225
219
  ' --> HARP_SHAPED
226
220
  ’ --> HARP_SHAPED
@@ -252,8 +246,8 @@ y palatal semi vowel ?
252
246
  » --> DQUOT_CLOSE
253
247
 
254
248
  - --> PUNCT_DOT
255
- – --> WAVE_MED_SIMPLE
256
- — --> WAVE_MED_DOUBLE
249
+ – --> PUNCT_TILD
250
+ — --> PUNCT_DTILD
257
251
 
258
252
  [ --> PUNCT_PAREN_L
259
253
  ] --> PUNCT_PAREN_R
@@ -284,6 +278,10 @@ y palatal semi vowel ?
284
278
  A --> NUM_10
285
279
  B --> NUM_11
286
280
  \end
287
-
281
+
288
282
  \end
289
283
 
284
+
285
+ \beg postprocessor
286
+ \resolve_virtuals
287
+ \end
@@ -24,21 +24,34 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
24
24
 
25
25
  \** Sindarin Beleriand mode for glaemscribe (MAY BE INCOMPLETE) **\
26
26
  \beg changelog
27
- \entry 0.0.2 "Added lw"
28
- \entry 0.0.3 "Added thorn as equivalent for th"
29
- \entry 0.0.4 "Porting to virtual chars to simplify and beautify"
27
+ \entry "0.0.2" "Added lw"
28
+ \entry "0.0.3" "Added thorn as equivalent for th"
29
+ \entry "0.0.4" "Porting to virtual chars to simplify and beautify"
30
+ \entry "0.0.5" "Added charset support for Annatar"
31
+ \entry "0.0.6" "Added support for the FreeMonoTengwar font"
32
+ \entry "0.1.0" "Added support for the Tengwar Elfica font"
30
33
  \end
31
34
 
32
35
  \language "Sindarin"
33
36
  \writing "Tengwar"
34
37
  \mode "Beleriand"
35
- \version "0.0.4"
36
- \authors "Talagan (Benjamin Babut)"
38
+ \version "0.1.0"
39
+ \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
37
40
 
38
- \charset tengwar_ds true
39
- \charset tengwar_ds_eldamar false
41
+ \charset tengwar_ds_sindarin true
42
+ \charset tengwar_ds_parmaite false
43
+ \charset tengwar_ds_eldamar false
44
+ \charset tengwar_ds_annatar false
45
+ \charset tengwar_ds_elfica false
46
+ \charset tengwar_freemono false
40
47
 
41
48
  \beg options
49
+
50
+ \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
51
+ \value CONSONANT_MODIFICATION_STYLE_WAVE 0
52
+ \value CONSONANT_MODIFICATION_STYLE_BAR 1
53
+ \end
54
+
42
55
  \option reverse_numbers true
43
56
  \beg option numbers_base BASE_12
44
57
  \value BASE_10 10
@@ -79,6 +92,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
79
92
  \beg processor
80
93
 
81
94
  \beg rules litteral
95
+
96
+ \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
97
+ {GEMINATE} === GEMINATE_SIGN_TILD
98
+ {NASAL} === NASALIZE_SIGN_TILD
99
+ \else
100
+ {GEMINATE} === GEMINATE_SIGN
101
+ {NASAL} === NASALIZE_SIGN
102
+ \endif
103
+
82
104
  {A} === a
83
105
  {AA} === á
84
106
  {E} === e
@@ -134,9 +156,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
134
156
 
135
157
  [{L1}] --> [{_L1_}]
136
158
 
137
- nt --> TINCO NASALIZE_SIGN
138
- mp --> PARMA NASALIZE_SIGN
139
- n{K} --> CALMA NASALIZE_SIGN
159
+ nt --> TINCO {NASAL}
160
+ mp --> PARMA {NASAL}
161
+ n{K} --> CALMA {NASAL}
140
162
 
141
163
  \** ======== **\
142
164
  \** 2ND LINE **\
@@ -146,8 +168,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
146
168
 
147
169
  [{L2}] --> [{_L2_}]
148
170
 
149
- mb --> UMBAR NASALIZE_SIGN
150
- nd --> ANDO NASALIZE_SIGN
171
+ mb --> UMBAR {NASAL}
172
+ nd --> ANDO {NASAL}
151
173
 
152
174
  \** ======== **\
153
175
  \** 3RD LINE **\
@@ -157,10 +179,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
157
179
 
158
180
  [{L3}] --> [{_L3_}]
159
181
 
160
- nth --> SULE NASALIZE_SIGN
161
- mph --> FORMEN NASALIZE_SIGN
162
- nf --> FORMEN NASALIZE_SIGN
163
- nch --> AHA NASALIZE_SIGN
182
+ nth --> SULE {NASAL}
183
+ mph --> FORMEN {NASAL}
184
+ nf --> FORMEN {NASAL}
185
+ nch --> AHA {NASAL}
164
186
 
165
187
  \** ======== **\
166
188
  \** 4TH LINE **\
@@ -202,7 +224,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
202
224
 
203
225
  [{S_LINE}] --> [{_S_LINE_}]
204
226
 
205
- ns --> SILME_NUQUERNA NASALIZE_SIGN
227
+ ns --> SILME_NUQUERNA {NASAL}
206
228
 
207
229
  \** ======== **\
208
230
  \** OTHERS **\
@@ -34,7 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
34
34
  \writing "Cirth"
35
35
  \mode "Angerthas Daeron"
36
36
  \version "0.0.4"
37
- \authors "Talagan (Benjamin Babut)"
37
+ \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
38
38
 
39
39
  \charset cirth_ds true
40
40
 
@@ -25,34 +25,54 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
  \** Sindarin Classical mode for glaemscribe (MAY BE INCOMPLETE) **\
26
26
 
27
27
  \beg changelog
28
- \entry 0.0.2 "Fixed some tehtar versions which did not look quite nice for ch, dh, v, mb. Reworked the problem of labialized consonnants (+w), adding an option for treating the u-curl + tehta combination."
29
- \entry 0.0.3 "Extended the labialized consonnants option."
30
- \entry 0.0.4 "Fixed nw (BUG : was using ORE from the beleriand mode), added lw"
31
- \entry 0.0.5 "Added thorn as equivalent for th"
32
- \entry 0.0.6 "Porting to virtual chars to simplify and beautify"
28
+ \entry "0.0.2" "Fixed some tehtar versions which did not look quite nice for ch, dh, v, mb. Reworked the problem of labialized consonnants (+w), adding an option for treating the u-curl + tehta combination."
29
+ \entry "0.0.3" "Extended the labialized consonnants option."
30
+ \entry "0.0.4" "Fixed nw (BUG : was using ORE from the beleriand mode), added lw"
31
+ \entry "0.0.5" "Added thorn as equivalent for th"
32
+ \entry "0.0.6" "Porting to virtual chars to simplify and beautify"
33
+ \entry "0.0.7" "Added charset support for Annatar"
34
+ \entry "0.0.8" "Added support for the FreeMonoTengwar font"
35
+ \entry "0.1.0" "Added support for the Tengwar Elfica font"
33
36
  \end
34
37
 
35
38
 
36
39
  \language "Sindarin"
37
40
  \writing "Tengwar"
38
- \mode "Classical"
39
- \version "0.0.6"
40
- \authors "Talagan (Benjamin Babut)"
41
+ \mode "General Use"
42
+ \version "0.1.0"
43
+ \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
41
44
 
42
- \charset tengwar_ds true
43
- \charset tengwar_ds_eldamar false
45
+ \charset tengwar_ds_sindarin true
46
+ \charset tengwar_ds_parmaite false
47
+ \charset tengwar_ds_eldamar false
48
+ \charset tengwar_ds_annatar false
49
+ \charset tengwar_ds_elfica false
50
+ \charset tengwar_freemono false
44
51
 
45
52
  \beg options
46
- \option reverse_numbers true
47
- \beg option numbers_base BASE_12
48
- \value BASE_10 10
49
- \value BASE_12 12
53
+
54
+ \beg option reverse_o_u_tehtar U_UP_O_DOWN
55
+ \value O_UP_U_DOWN 1
56
+ \value U_UP_O_DOWN 2
50
57
  \end
58
+
59
+ \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
60
+ \value CONSONANT_MODIFICATION_STYLE_WAVE 0
61
+ \value CONSONANT_MODIFICATION_STYLE_BAR 1
62
+ \end
63
+
51
64
  \beg option labialized_consonants_u_curl LABIALIZED_U_CURL_ALWAYS
52
65
  \value LABIALIZED_U_CURL_NONE 1
53
66
  \value LABIALIZED_U_CURL_NO_TEHTAR 2
54
67
  \value LABIALIZED_U_CURL_ALWAYS 3
55
68
  \end
69
+
70
+ \option reverse_numbers true
71
+ \beg option numbers_base BASE_12
72
+ \value BASE_10 10
73
+ \value BASE_12 12
74
+ \end
75
+
56
76
  \end
57
77
 
58
78
  \beg preprocessor
@@ -89,6 +109,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
89
109
 
90
110
  \beg rules litteral
91
111
 
112
+ \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
113
+ {GEMINATE} === GEMINATE_SIGN_TILD
114
+ {NASAL} === NASALIZE_SIGN_TILD
115
+ \else
116
+ {GEMINATE} === GEMINATE_SIGN
117
+ {NASAL} === NASALIZE_SIGN
118
+ \endif
119
+
120
+ \if "reverse_o_u_tehtar == U_UP_O_DOWN"
121
+ {O_LOOP} === O_TEHTA
122
+ {U_LOOP} === U_TEHTA
123
+ \else
124
+ {O_LOOP} === U_TEHTA
125
+ {U_LOOP} === O_TEHTA
126
+ \endif
127
+
92
128
  \** VOWELS **\
93
129
  {A} === a
94
130
  {AA} === á
@@ -117,12 +153,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
117
153
  {VOWELS} === {A} * {E} * {I} * {O} * {U} * {Y}
118
154
  {LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU} * {YY}
119
155
 
120
- {TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * O_TEHTA * U_TEHTA * Y_TEHTA
156
+ {TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP} * Y_TEHTA
121
157
 
122
- {_LTEHTAR_} === ARA A_TEHTA * ARA E_TEHTA * ARA I_TEHTA * ARA O_TEHTA * ARA U_TEHTA * ARA Y_TEHTA
158
+ {_LTEHTAR_} === ARA A_TEHTA * ARA E_TEHTA * ARA I_TEHTA * ARA {O_LOOP} * ARA {U_LOOP} * ARA Y_TEHTA
123
159
 
124
160
  {DIPHTHONGS} === {AI} * {AU} * {AW} * {EI} * {UI} * {AE} * {OE}
125
- {_DIPHTHONGS_} === ANNA A_TEHTA * VALA A_TEHTA * VALA A_TEHTA * ANNA E_TEHTA * ANNA U_TEHTA * YANTA A_TEHTA * YANTA O_TEHTA
161
+ {_DIPHTHONGS_} === ANNA A_TEHTA * VALA A_TEHTA * VALA A_TEHTA * ANNA E_TEHTA * ANNA {U_LOOP} * YANTA A_TEHTA * YANTA {O_LOOP}
126
162
 
127
163
  \** Consonants + Vowels, we will often need these ones **\
128
164
  {V_D} === [ {VOWELS} ]
@@ -142,18 +178,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
142
178
 
143
179
  {V_D_WN}[{L1}] --> 2,1 --> [{_L1_}]{_V_D_WN_}
144
180
 
145
- {V_D_WN}nt --> TINCO NASALIZE_SIGN {_V_D_WN_}
146
- {V_D_WN}mp --> PARMA NASALIZE_SIGN {_V_D_WN_}
147
- {V_D_WN}n{K} --> CALMA NASALIZE_SIGN {_V_D_WN_}
181
+ {V_D_WN}nt --> TINCO {NASAL} {_V_D_WN_}
182
+ {V_D_WN}mp --> PARMA {NASAL} {_V_D_WN_}
183
+ {V_D_WN}n{K} --> CALMA {NASAL} {_V_D_WN_}
148
184
 
149
185
  \** 2ND LINE **\
150
186
  {L2} === d * b * g * ng \** * g **\
151
- {_L2_} === ANDO * UMBAR * UNGWE * UNGWE NASALIZE_SIGN \** * s **\
187
+ {_L2_} === ANDO * UMBAR * UNGWE * UNGWE {NASAL} \** * s **\
152
188
 
153
189
  {V_D_WN}[{L2}] --> 2,1 --> [{_L2_}]{_V_D_WN_}
154
190
 
155
- {V_D_WN}mb --> UMBAR NASALIZE_SIGN {_V_D_WN_}
156
- {V_D_WN}nd --> ANDO NASALIZE_SIGN {_V_D_WN_}
191
+ {V_D_WN}mb --> UMBAR {NASAL} {_V_D_WN_}
192
+ {V_D_WN}nd --> ANDO {NASAL} {_V_D_WN_}
157
193
 
158
194
  \** 3RD LINE **\
159
195
  {L3} === (þ,th) * (f,ph,ff) * ch
@@ -161,10 +197,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
161
197
 
162
198
  {V_D_WN}[{L3}] --> 2,1 --> [{_L3_}]{_V_D_WN_}
163
199
 
164
- {V_D_WN}nth --> SULE NASALIZE_SIGN {_V_D_WN_}
165
- {V_D_WN}mph --> FORMEN NASALIZE_SIGN {_V_D_WN_}
166
- {V_D_WN}nf --> FORMEN NASALIZE_SIGN {_V_D_WN_}
167
- {V_D_WN}nch --> HWESTA NASALIZE_SIGN {_V_D_WN_}
200
+ {V_D_WN}nth --> SULE {NASAL} {_V_D_WN_}
201
+ {V_D_WN}mph --> FORMEN {NASAL} {_V_D_WN_}
202
+ {V_D_WN}nf --> FORMEN {NASAL} {_V_D_WN_}
203
+ {V_D_WN}nch --> HWESTA {NASAL} {_V_D_WN_}
168
204
 
169
205
  \** 4TH LINE **\
170
206
  {L4} === (đ,ð,ðh,dh) * (v,bh,f_) \** Some noldorin variants here ... **\
@@ -178,14 +214,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
178
214
 
179
215
  {V_D_WN}[{L5}] --> 2,1 --> [{_L5_}]{_V_D_WN_}
180
216
 
181
- {V_D_WN}nn --> NUMEN NASALIZE_SIGN {_V_D_WN_}
182
- {V_D_WN}mm --> MALTA NASALIZE_SIGN {_V_D_WN_}
217
+ {V_D_WN}nn --> NUMEN {NASAL} {_V_D_WN_}
218
+ {V_D_WN}mm --> MALTA {NASAL} {_V_D_WN_}
183
219
 
184
220
  \** 6TH LINE **\
185
221
 
186
222
  \** 7TH LINE **\
187
223
  {L7} === r_ * r * l * ll * w
188
- {_L7_} === ORE * ROMEN * LAMBE * LAMBE LAMBE_MARK_TILD * VALA
224
+ {_L7_} === ORE * ROMEN * LAMBE * LAMBE {GEMINATE} * VALA
189
225
 
190
226
  {V_D_WN}[{L7}] --> 2,1 --> [{_L7_}]{_V_D_WN_}
191
227
 
@@ -198,7 +234,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
198
234
 
199
235
  {V_D_WN}[{L8}] --> 2,1 --> [{_L8_}]{_V_D_WN_}
200
236
 
201
- {V_D_WN}ns --> SILME_NUQUERNA NASALIZE_SIGN {_V_D_WN_}
237
+ {V_D_WN}ns --> SILME_NUQUERNA {NASAL} {_V_D_WN_}
202
238
 
203
239
  s --> SILME
204
240
 
@@ -226,12 +262,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
226
262
  rw --> ROMEN SEV_TEHTA
227
263
  \endif
228
264
 
229
- \if "labialized_consonants_u_curl == LABIALIZED_U_CURL_ALWAYS"
230
- {V_D}dw --> ANDO SEV_TEHTA {_V_D_}
231
- {V_D}gw --> UNGWE SEV_TEHTA {_V_D_}
232
- {V_D}lw --> LAMBE SEV_TEHTA {_V_D_}
233
- {V_D}nw --> NUMEN SEV_TEHTA {_V_D_}
234
- {V_D}rw --> ROMEN SEV_TEHTA {_V_D_}
265
+ \if "labialized_consonants_u_curl == LABIALIZED_U_CURL_ALWAYS"
266
+ {V_D}dw --> ANDO SEV_TEHTA {_V_D_}
267
+ {V_D}gw --> UNGWE SEV_TEHTA {_V_D_}
268
+ {V_D}lw --> LAMBE SEV_TEHTA {_V_D_}
269
+ {V_D}nw --> NUMEN SEV_TEHTA {_V_D_}
270
+ {V_D}rw --> ROMEN SEV_TEHTA {_V_D_}
235
271
  \endif
236
272
  \end
237
273
 
@@ -25,20 +25,58 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
  \** Telerin mode for glaemscribe (MAY BE INCOMPLETE) - Derived from Quenya **\
26
26
 
27
27
  \beg changelog
28
- \entry 0.0.2 "Correcting ts/ps sequences to work better with eldamar"
29
- \entry 0.0.3 "Porting to virtual chars"
28
+ \entry "0.0.2" "Correcting ts/ps sequences to work better with eldamar"
29
+ \entry "0.0.3" "Porting to virtual chars"
30
+ \entry "0.0.4" "Added charset support for Annatar"
31
+ \entry "0.0.5" "Added support for the FreeMonoTengwar font"
32
+ \entry "0.0.6" "Ported some options from the quenya mode"
33
+ \entry "0.1.0" "Added support for the Tengwar Elfica font"
30
34
  \end
31
35
 
32
36
  \language "Telerin"
33
37
  \writing "Tengwar"
34
38
  \mode "Glaemscrafu"
35
- \version "0.0.3"
36
- \authors "Talagan (Benjamin Babut)"
39
+ \version "0.1.0"
40
+ \authors "Talagan (Benjamin Babut), based on J.R.R Tolkien"
41
+
42
+ \charset tengwar_ds_sindarin true
43
+ \charset tengwar_ds_parmaite false
44
+ \charset tengwar_ds_eldamar false
45
+ \charset tengwar_ds_annatar false
46
+ \charset tengwar_ds_elfica false
47
+ \charset tengwar_freemono false
37
48
 
38
- \charset tengwar_ds true
39
- \charset tengwar_ds_eldamar false
40
49
 
41
50
  \beg options
51
+
52
+ \beg option reverse_o_u_tehtar U_UP_O_DOWN
53
+ \value O_UP_U_DOWN 1
54
+ \value U_UP_O_DOWN 2
55
+ \end
56
+
57
+ \beg option long_vowels_format LONG_VOWELS_USE_LONG_CARRIER
58
+ \value LONG_VOWELS_USE_LONG_CARRIER 1
59
+ \value LONG_VOWELS_USE_DOUBLE_TEHTAR 2
60
+ \end
61
+
62
+ \beg option double_tehta_e false
63
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
64
+ \end
65
+ \beg option double_tehta_i false
66
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
67
+ \end
68
+ \beg option double_tehta_o true
69
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
70
+ \end
71
+ \beg option double_tehta_u true
72
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
73
+ \end
74
+
75
+ \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
76
+ \value CONSONANT_MODIFICATION_STYLE_WAVE 0
77
+ \value CONSONANT_MODIFICATION_STYLE_BAR 1
78
+ \end
79
+
42
80
  \option reverse_numbers true
43
81
  \beg option numbers_base BASE_12
44
82
  \value BASE_10 10
@@ -74,52 +112,109 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
74
112
  \beg processor
75
113
 
76
114
  \beg rules litteral
77
- {A} === a
78
- {AA} === á
79
- {E} === e
80
- {EE} === é
81
- {I} === i
82
- {II} === í
83
- {O} === o
84
- {OO} === ó
85
- {U} === u
86
- {UU} === ú
87
-
88
- {AI} === {A}{I}
89
- {AU} === {A}{U}
90
- {EU} === {E}{U}
91
- {IU} === {I}{U}
92
- {OI} === {O}{I}
93
- {UI} === {U}{I}
94
-
95
-
115
+
96
116
  {K} === (c,k)
97
117
  {W} === (v,w)
98
118
  {SS} === (z,ss)
99
119
 
100
- \** {MB} === (b,mb) **\
101
- \** {SS} === (z,ss) **\
102
-
103
- {VOWELS} === {A} * {E} * {I} * {O} * {U}
104
- {LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU}
120
+ \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
121
+ {GEMINATE} === GEMINATE_SIGN_TILD
122
+ \else
123
+ {GEMINATE} === GEMINATE_SIGN
124
+ \endif
105
125
 
106
- {TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * O_TEHTA * U_TEHTA
107
-
108
- {DIPHTHONGS} === {AI} * {AU} * {EU} * {IU} * {OI} * {UI}
109
- {_DIPHTHONGS_} === YANTA A_TEHTA * URE A_TEHTA * URE E_TEHTA * URE I_TEHTA * YANTA O_TEHTA * YANTA U_TEHTA
110
-
126
+ {VOWELS} === a * e * i * o * u
127
+ {LVOWELS} === á * é * í * ó * ú
128
+
129
+ \if "reverse_o_u_tehtar == U_UP_O_DOWN"
130
+ {O_LOOP} === O_TEHTA
131
+ {O_LOOP_DOUBLE} === O_TEHTA_DOUBLE
132
+ {U_LOOP} === U_TEHTA
133
+ {U_LOOP_DOUBLE} === U_TEHTA_DOUBLE
134
+ \else
135
+ {O_LOOP} === U_TEHTA
136
+ {O_LOOP_DOUBLE} === U_TEHTA_DOUBLE
137
+ {U_LOOP} === O_TEHTA
138
+ {U_LOOP_DOUBLE} === O_TEHTA_DOUBLE
139
+ \endif
140
+
141
+ \** Shape of the a, option removed from quenya, may be readded later **\
142
+ {A_SHAPE} === A_TEHTA
143
+
144
+ \** Implicit a, option removed from quenya, may be readded later **\
145
+ {_A_} === {A_SHAPE}
146
+ {_NVOWEL_} === {NULL}
147
+
148
+ {_TEHTAR_} === {_A_} * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP}
111
149
 
112
- {V_D} === [ {VOWELS} * {DIPHTHONGS} ]
113
- {_V_D_} === [ {TEHTAR} * {_DIPHTHONGS_} ]
150
+ \** Split diphtongs option removed from quenya, may be readded later **\
151
+ {DIPHTHONGS} === ai * au * eu * iu * oi * ui
152
+ {_DIPHTHONGS_} === YANTA {_A_} * URE {_A_} * URE E_TEHTA * URE I_TEHTA * YANTA {O_LOOP} * YANTA {U_LOOP}
153
+ {WDIPHTHONGS} === * {DIPHTHONGS} \** groovy! **\
154
+ {_WDIPHTHONGS_} === * {_DIPHTHONGS_} \** same thing **\
114
155
 
115
- {V_D_WN} === [ {VOWELS} * {DIPHTHONGS} * {NULL} ]
116
- {_V_D_WN_} === [ {TEHTAR} * {_DIPHTHONGS_} * {NULL} ]
117
-
118
- \** VOWEL RULES **\
119
- [{VOWELS}] --> TELCO[{TEHTAR}] \** Replace isolated short vowels **\
120
- [{LVOWELS}] --> ARA[{TEHTAR}] \** Replace long vowels **\
121
- [{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
156
+ {_LONG_A_} === ARA {A_SHAPE}
157
+ {_LONG_E_} === ARA E_TEHTA
158
+ {_LONG_I_} === ARA I_TEHTA
159
+ {_LONG_O_} === ARA {O_LOOP}
160
+ {_LONG_U_} === ARA {U_LOOP}
161
+ {_LONE_LONG_A_} === {_LONG_A_}
162
+ {_LONE_LONG_E_} === {_LONG_E_}
163
+ {_LONE_LONG_I_} === {_LONG_I_}
164
+ {_LONE_LONG_O_} === {_LONG_O_}
165
+ {_LONE_LONG_U_} === {_LONG_U_}
166
+
167
+ {LTEHTAR} === {NULL}
168
+ {_LTEHTAR_} === {NULL}
169
+
170
+ \if "long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR"
171
+ \if double_tehta_e
172
+ {_LONG_E_} === E_TEHTA_DOUBLE
173
+ {_LONE_LONG_E_} === TELCO {_LONG_E_}
174
+ {LTEHTAR} === {LTEHTAR} * é
175
+ {_LTEHTAR_} === {_LTEHTAR_} * {_LONG_E_}
176
+ \endif
177
+ \if double_tehta_i
178
+ {_LONG_I_} === I_TEHTA_DOUBLE
179
+ {_LONE_LONG_I_} === TELCO {_LONG_I_}
180
+ {LTEHTAR} === {LTEHTAR} * í
181
+ {_LTEHTAR_} === {_LTEHTAR_} * {_LONG_I_}
182
+ \endif
183
+ \if double_tehta_o
184
+ {_LONG_O_} === {O_LOOP_DOUBLE}
185
+ {_LONE_LONG_O_} === TELCO {_LONG_O_}
186
+ {LTEHTAR} === {LTEHTAR} * ó
187
+ {_LTEHTAR_} === {_LTEHTAR_} * {_LONG_O_}
188
+ \endif
189
+ \if double_tehta_u
190
+ {_LONG_U_} === {U_LOOP_DOUBLE}
191
+ {_LONE_LONG_U_} === TELCO {_LONG_U_}
192
+ {LTEHTAR} === {LTEHTAR} * ú
193
+ {_LTEHTAR_} === {_LTEHTAR_} * {_LONG_U_}
194
+ \endif
195
+ \endif
196
+
197
+ \** images of long vowels, either tehtar or ara versions **\
198
+ {_LVOWELS_} === {_LONG_A_} * {_LONG_E_} * {_LONG_I_} * {_LONG_O_} * {_LONG_U_}
199
+
200
+ {WLONG} === * {LVOWELS}
201
+ {_WLONG_} === * {_LVOWELS_}
202
+
203
+ {V_D} === [ {VOWELS} {WLONG} {WDIPHTHONGS} ]
204
+ {V_D_WN} === [ {VOWELS} {WLONG} {WDIPHTHONGS} * {NULL} ]
205
+
206
+ {_V_D_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} ]
207
+ {_V_D_WN_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} * {_NVOWEL_} ]
208
+
209
+ \** LONE SHORT VOWELS **\
210
+ [{VOWELS}] --> TELCO [{_TEHTAR_}] \** Replace isolated short vowels **\
211
+
212
+ \** LONE LONG VOWELS **\
213
+ [{LVOWELS}] --> [{_LONE_LONG_A_} * {_LONE_LONG_E_} * {_LONE_LONG_I_} * {_LONE_LONG_O_} * {_LONE_LONG_U_}]
122
214
 
215
+ [{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
216
+
217
+
123
218
  \** TELERIN: changed v/w, removed all y rules **\
124
219
 
125
220
  \** ===================== **\
@@ -129,14 +224,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
129
224
  {_L1_} === CALMA * QUESSE * TINCO * PARMA
130
225
 
131
226
  {L1_GEMS} === {K}{K} * tt * pp
132
- {_L1_GEMS_} === CALMA GEMINATE_SIGN * TINCO GEMINATE_SIGN * PARMA GEMINATE_SIGN
227
+ {_L1_GEMS_} === CALMA {GEMINATE} * TINCO {GEMINATE} * PARMA {GEMINATE}
133
228
 
134
229
  \** NORMAL **\
135
230
  [ {L1} ] {V_D_WN} --> [ {_L1_} ] {_V_D_WN_}
136
231
  [ {L1_GEMS} ] {V_D_WN} --> [ {_L1_GEMS_} ] {_V_D_WN_}
137
232
 
138
- ts{V_D_WN} --> TINCO {_V_D_WN_} ALVEOLAR_SIGN
139
- ps{V_D_WN} --> PARMA {_V_D_WN_} ALVEOLAR_SIGN
233
+ ts{V_D_WN} --> TINCO ALVEOLAR_SIGN {_V_D_WN_}
234
+ ps{V_D_WN} --> PARMA ALVEOLAR_SIGN {_V_D_WN_}
140
235
  {K}s{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_}
141
236
  x{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_} \** render ks for x **\
142
237
 
@@ -159,9 +254,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
159
254
  [{L3}]{V_D_WN} --> [{_L3_}]{_V_D_WN_}
160
255
 
161
256
  \** Override h with vowels (descendent) **\
162
- _h{V_D} --> HYARMEN {_V_D_}
163
- h[{LVOWELS}] --> HYARMEN ARA [{TEHTAR}]
164
- h --> AHA
257
+ _h{V_D} --> HYARMEN {_V_D_}
258
+ \** Starting voiced h before long vowels **\
259
+ _h[{LVOWELS}] --> HYARMEN [{_LVOWELS_}]
260
+
261
+ (h,χ) --> AHA
165
262
 
166
263
  \** ===================== **\
167
264
  \** 4TH LINE RULES **\
@@ -180,8 +277,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
180
277
 
181
278
  [{L5}]{V_D_WN} --> [{_L5_}]{_V_D_WN_}
182
279
 
183
- nn{V_D_WN} --> NUMEN GEMINATE_SIGN {_V_D_WN_}
184
- mm{V_D_WN} --> MALTA GEMINATE_SIGN {_V_D_WN_}
280
+ nn{V_D_WN} --> NUMEN {GEMINATE} {_V_D_WN_}
281
+ mm{V_D_WN} --> MALTA {GEMINATE} {_V_D_WN_}
185
282
 
186
283
  \** ===================== **\
187
284
  \** 6TH LINE RULES **\
@@ -191,32 +288,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
191
288
 
192
289
  [{L6}]{V_D_WN} --> [{_L6_}]{_V_D_WN_}
193
290
 
194
- rr{V_D_WN} --> ROMEN GEMINATE_SIGN {_V_D_WN_}
291
+ rr{V_D_WN} --> ROMEN {GEMINATE} {_V_D_WN_}
195
292
  rd{V_D_WN} --> ARDA {_V_D_WN_}
196
293
 
197
294
  \** ===================== **\
198
295
  \** L LINE RULES **\
199
296
  \** ===================== **\
200
297
  {LINE_L} === l * ld * ll
201
- {_LINE_L_} === LAMBE * ALDA * LAMBE GEMINATE_SIGN
298
+ {_LINE_L_} === LAMBE * ALDA * LAMBE {GEMINATE}
202
299
 
203
300
  [{LINE_L}]{V_D_WN} --> [{_LINE_L_}]{_V_D_WN_}
301
+
204
302
  hl{V_D_WN} --> HALLA LAMBE {_V_D_WN_}
205
303
  hr{V_D_WN} --> HALLA ROMEN {_V_D_WN_}
206
-
304
+
207
305
  \** ===================== **\
208
306
  \** S/Z LINE RULES **\
209
307
  \** ===================== **\
210
- {L8} === s * {SS}
211
- {_L8_} === SILME_NUQUERNA * ESSE_NUQUERNA
212
-
213
- [{L8}]{V_D_WN} --> [{_L8_}]{_V_D_WN_}
308
+ {L8} === s * {SS}
309
+ {_L8_TEHTAR_} === SILME_NUQUERNA * ESSE_NUQUERNA
310
+ {_L8_NO_TEHTAR_} === SILME * ESSE
214
311
 
215
- \** Override lonely s / ss / before consonant **\
216
- s --> SILME
217
- s[{LVOWELS}] --> SILME ARA [{TEHTAR}]
218
- {SS} --> ESSE
219
- {SS}[{LVOWELS}] --> ESSE ARA [{TEHTAR}]
312
+ [{L8}][{VOWELS}] --> [{_L8_TEHTAR_}][{_TEHTAR_}]
313
+ [{L8}][{LTEHTAR}] --> [{_L8_TEHTAR_}][{_LTEHTAR_}]
314
+
315
+ {L8} --> {_L8_NO_TEHTAR_}
316
+ {L8}[{DIPHTHONGS}] --> {_L8_NO_TEHTAR_}[{_DIPHTHONGS_}]
220
317
  \end
221
318
 
222
319
  \beg rules punctuation