glaemscribe 1.1.14 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/bin/glaemscribe +21 -17
  3. data/glaemresources/charsets/cirth_ds.cst +540 -0
  4. data/glaemresources/charsets/eldamar.cst +210 -0
  5. data/glaemresources/charsets/sarati_eldamar.cst +256 -0
  6. data/glaemresources/charsets/tengwar_ds_annatar.cst +2868 -0
  7. data/glaemresources/charsets/tengwar_ds_eldamar.cst +2729 -0
  8. data/glaemresources/charsets/tengwar_ds_elfica.cst +2742 -0
  9. data/glaemresources/charsets/tengwar_ds_parmaite.cst +2726 -0
  10. data/glaemresources/charsets/tengwar_ds_sindarin.cst +2722 -0
  11. data/glaemresources/charsets/tengwar_freemono.cst +217 -0
  12. data/glaemresources/charsets/tengwar_guni_annatar.cst +2948 -0
  13. data/glaemresources/charsets/tengwar_guni_eldamar.cst +2809 -0
  14. data/glaemresources/charsets/tengwar_guni_elfica.cst +2809 -0
  15. data/glaemresources/charsets/tengwar_guni_parmaite.cst +2813 -0
  16. data/glaemresources/charsets/tengwar_guni_sindarin.cst +2808 -0
  17. data/glaemresources/charsets/tengwar_telcontar.cst +225 -0
  18. data/glaemresources/charsets/unicode_gothic.cst +64 -0
  19. data/glaemresources/charsets/unicode_runes.cst +121 -0
  20. data/glaemresources/modes/{adunaic.glaem → adunaic-tengwar-glaemscrafu.glaem} +14 -2
  21. data/glaemresources/modes/{blackspeech.glaem → blackspeech-tengwar-general_use.glaem} +13 -3
  22. data/glaemresources/modes/english-cirth-espeak.glaem +687 -0
  23. data/glaemresources/modes/english-tengwar-espeak.glaem +814 -0
  24. data/glaemresources/modes/japanese-tengwar.glaem +776 -0
  25. data/glaemresources/modes/{khuzdul.glaem → khuzdul-cirth-moria.glaem} +4 -1
  26. data/glaemresources/modes/lang_belta-tengwar-dadef.glaem +248 -0
  27. data/glaemresources/modes/{futhorc.glaem → old_english-futhorc.glaem} +0 -0
  28. data/glaemresources/modes/{mercian.glaem → old_english-tengwar-mercian.glaem} +22 -12
  29. data/glaemresources/modes/{westsaxon.glaem → old_english-tengwar-westsaxon.glaem} +20 -11
  30. data/glaemresources/modes/{futhark-runicus.glaem → old_norse-futhark-runicus.glaem} +0 -0
  31. data/glaemresources/modes/{futhark-younger.glaem → old_norse-futhark-younger.glaem} +0 -0
  32. data/glaemresources/modes/{quenya.glaem → quenya-tengwar-classical.glaem} +32 -50
  33. data/glaemresources/modes/raw-cirth.glaem +154 -0
  34. data/glaemresources/modes/raw-tengwar.glaem +46 -23
  35. data/glaemresources/modes/{rlyehian.glaem → rlyehian-tengwar.glaem} +14 -3
  36. data/glaemresources/modes/{sindarin-daeron.glaem → sindarin-cirth-daeron.glaem} +55 -14
  37. data/glaemresources/modes/{sindarin-beleriand.glaem → sindarin-tengwar-beleriand.glaem} +154 -28
  38. data/glaemresources/modes/{sindarin.glaem → sindarin-tengwar-general_use.glaem} +86 -25
  39. data/glaemresources/modes/{telerin.glaem → telerin-tengwar-glaemscrafu.glaem} +16 -6
  40. data/glaemresources/modes/{westron.glaem → westron-tengwar-glaemscrafu.glaem} +18 -8
  41. data/lib/api/charset.rb +67 -7
  42. data/lib/api/charset_parser.rb +14 -1
  43. data/lib/api/constants.rb +3 -4
  44. data/lib/api/fragment.rb +26 -5
  45. data/lib/api/if_tree.rb +70 -8
  46. data/lib/api/macro.rb +40 -0
  47. data/lib/api/mode.rb +66 -19
  48. data/lib/api/mode_parser.rb +117 -14
  49. data/lib/api/object_additions.rb +23 -1
  50. data/lib/api/option.rb +17 -2
  51. data/lib/api/post_processor/outspace.rb +44 -0
  52. data/lib/api/post_processor/resolve_virtuals.rb +25 -9
  53. data/lib/api/resource_manager.rb +1 -0
  54. data/lib/api/rule_group.rb +170 -26
  55. data/lib/api/sheaf_chain_iterator.rb +1 -1
  56. data/lib/api/transcription_pre_post_processor.rb +8 -5
  57. data/lib/api/transcription_processor.rb +15 -12
  58. data/lib/api/tts.rb +51 -0
  59. data/lib/glaemscribe.rb +36 -31
  60. data/lib_espeak/espeakng.for.glaemscribe.nowasm.sync.js +35 -0
  61. data/lib_espeak/glaemscribe_tts.js +505 -0
  62. metadata +76 -24
@@ -33,12 +33,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
33
33
  \entry "0.1.1" "Added support for inlined raw tengwar"
34
34
  \entry "0.1.2" "Fine tuning handling of the aw diphthong (Thanks to Dmitry Kourmyshov!)"
35
35
  \entry "0.1.3" "Merging au/aw"
36
+ \entry "0.1.4" "Added support for new unicode charsets"
37
+ \entry "0.1.5" "Added support for the Tengwar Telcontar font"
38
+ \entry "0.1.6" "Corrected use of silme_nuquerna in ns / y, added a few exotic combinations. Reworked median point behaviour, and ng."
39
+ \entry "0.1.7" "Added variants with dot for short vowels, added gasdil."
36
40
  \end
37
41
 
38
42
  \language "Sindarin"
39
43
  \writing "Tengwar"
40
44
  \mode "Sindarin Tengwar - Beleriand"
41
- \version "0.1.3"
45
+ \version "0.1.6"
42
46
  \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
43
47
 
44
48
  \world arda
@@ -51,10 +55,64 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
51
55
  \charset tengwar_ds_eldamar false
52
56
  \charset tengwar_ds_annatar false
53
57
  \charset tengwar_ds_elfica false
58
+
59
+ \charset tengwar_guni_sindarin false
60
+ \charset tengwar_guni_parmaite false
61
+ \charset tengwar_guni_eldamar false
62
+ \charset tengwar_guni_annatar false
63
+ \charset tengwar_guni_elfica false
64
+
54
65
  \charset tengwar_freemono false
66
+ \charset tengwar_telcontar false
55
67
 
56
68
  \beg options
57
69
 
70
+ \beg option short_a SHORT_A_WITHOUT_DOT
71
+ \radio
72
+ \value SHORT_A_WITHOUT_DOT 0
73
+ \value SHORT_A_WITH_DOT 1
74
+ \end
75
+
76
+ \beg option short_e SHORT_E_WITHOUT_DOT
77
+ \radio
78
+ \value SHORT_E_WITHOUT_DOT 0
79
+ \value SHORT_E_WITH_DOT 1
80
+ \end
81
+
82
+ \beg option short_i SHORT_I_WITHOUT_DOT
83
+ \radio
84
+ \value SHORT_I_WITHOUT_DOT 0
85
+ \value SHORT_I_WITH_DOT 1
86
+ \end
87
+
88
+ \beg option short_o SHORT_O_WITHOUT_DOT
89
+ \radio
90
+ \value SHORT_O_WITHOUT_DOT 0
91
+ \value SHORT_O_WITH_DOT 1
92
+ \end
93
+
94
+ \beg option short_u SHORT_U_WITHOUT_DOT
95
+ \radio
96
+ \value SHORT_U_WITHOUT_DOT 0
97
+ \value SHORT_U_WITH_DOT 1
98
+ \end
99
+
100
+ \beg option short_y SHORT_Y_WITHOUT_DOT
101
+ \radio
102
+ \value SHORT_Y_WITHOUT_DOT 0
103
+ \value SHORT_Y_WITH_DOT 1
104
+ \end
105
+
106
+ \beg option apostrophe APOSTROPHE_IGNORED
107
+ \value APOSTROPHE_IGNORED 0
108
+ \value APOSTROPHE_GASDIL 1
109
+ \end
110
+
111
+ \beg option hyphen HYPHEN_WORD_BREAKER
112
+ \value HYPHEN_WORD_BREAKER 0
113
+ \value HYPHEN_WORD_JOINER 1
114
+ \end
115
+
58
116
  \beg option beleriand_aw_diphthong AW_VILYA_AT_ENDINGS_CURL_ELSE
59
117
  \value AW_VILYA_AT_ENDINGS_CURL_ELSE 0
60
118
  \value AW_ALWAYS_VILYA 1
@@ -79,6 +137,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
79
137
  \** Work exclusively downcase **\
80
138
  \downcase
81
139
 
140
+ \if "hyphen == HYPHEN_WORD_JOINER"
141
+ \** Replace hyphen by median point **\
142
+ \substitute "-" "·"
143
+ \else
144
+ \** Replace hyphen by glaemscribe's word breaker **\
145
+ \substitute "-" "|"
146
+ \endif
147
+
148
+ \** Add keyboard friendly word joiner **\
149
+ \substitute "*" "·"
150
+
82
151
  \** Simplify trema vowels **\
83
152
  \substitute ä a
84
153
  \substitute ë e
@@ -105,6 +174,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
105
174
  since it seems more logical that aw would behave as a semi vowel **\
106
175
  \rxsubstitute "aw([aeouyáāâéēêíīîóōôúūûýȳŷ])" "a|w\\1"
107
176
 
177
+ \** Special case for ng : before the vast majority of consonnants, treat as ŋ **\
178
+ \** Don't include r / l / lh / w **\
179
+ \rxsubstitute "ng([tpckbdfðvnmhs])" "ŋ\\1"
180
+
181
+ \** Avoid mutated ng of being treated as strong middle word n|g (ex : i·ngelaidh [iŋɛlaið] ) **\
182
+ \substitute "·ng" "·ŋ"
183
+ \** But avoid losing the strong g in nasal mutation of g (ex : in·Gelydh [iŋgɛlyð]] ) **\
184
+ \substitute "n·g" "·ŋg"
185
+ \** Use median dot as word joiner **\
186
+ \substitute "·" ""
187
+
108
188
  \** Preprocess numbers **\
109
189
  \elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
110
190
  \end
@@ -143,34 +223,62 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
143
223
  {OE} === {O}{E}
144
224
 
145
225
  {K} === (c,k)
146
-
147
- \** RULES **\
148
- {A} --> OSSE
149
- {E} --> YANTA
150
- {I} --> TELCO
151
- {O} --> ANNA
152
- {U} --> URE
153
226
 
154
- {Y} --> SILME_NUQUERNA_ALT
227
+ \if "short_a == SHORT_A_WITH_DOT"
228
+ {A} --> OSSE I_TEHTA
229
+ \else
230
+ {A} --> OSSE
231
+ \endif
232
+
233
+ \if "short_e == SHORT_E_WITH_DOT"
234
+ {E} --> YANTA I_TEHTA
235
+ \else
236
+ {E} --> YANTA
237
+ \endif
238
+
239
+ \if "short_i == SHORT_I_WITH_DOT"
240
+ {I} --> TELCO I_TEHTA
241
+ \else
242
+ {I} --> TELCO
243
+ \endif
244
+
245
+ \if "short_o == SHORT_O_WITH_DOT"
246
+ {O} --> ANNA I_TEHTA
247
+ \else
248
+ {O} --> ANNA
249
+ \endif
250
+
251
+ \if "short_u == SHORT_U_WITH_DOT"
252
+ {U} --> URE I_TEHTA
253
+ \else
254
+ {U} --> URE
255
+ \endif
256
+
257
+ \if "short_y == SHORT_Y_WITH_DOT"
258
+ {Y} --> SILME_NUQUERNA I_TEHTA
259
+ \else
260
+ {Y} --> SILME_NUQUERNA
261
+ \endif
155
262
 
156
263
  {AA} --> OSSE E_TEHTA
157
264
  {EE} --> YANTA E_TEHTA
158
265
  {II} --> TELCO E_TEHTA
159
266
  {OO} --> ANNA E_TEHTA
160
267
  {UU} --> URE E_TEHTA
161
- {YY} --> SILME_NUQUERNA_ALT E_TEHTA
268
+ {YY} --> SILME_NUQUERNA E_TEHTA
162
269
 
163
- {AE} --> OSSE YANTA \** Should chose between OSSE YANTA and OSSE THSUP_TICK_INV_L. Old tengscribe had second one, amanye tenceli has first one. **\
270
+ \** Should chose between OSSE YANTA and OSSE THSUP_TICK_INV. Old tengscribe had second one, amanye tenceli has first one. **\
271
+ {AE} --> OSSE YANTA
164
272
  {AI} --> OSSE Y_TEHTA
165
- {AU} --> OSSE SEV_TEHTA
273
+ {AU} --> OSSE WA_TEHTA
166
274
 
167
275
  \if "beleriand_aw_diphthong == AW_VILYA_AT_ENDINGS_CURL_ELSE"
168
- ({AU},{AW}) --> OSSE SEV_TEHTA
276
+ ({AU},{AW}) --> OSSE WA_TEHTA
169
277
  ({AU},{AW})_ --> OSSE VILYA
170
278
  \elsif "beleriand_aw_diphthong == AW_ALWAYS_VILYA"
171
279
  ({AU},{AW}) --> OSSE VILYA
172
280
  \elsif "beleriand_aw_diphthong == AW_ALWAYS_CURL"
173
- ({AU},{AW}) --> OSSE SEV_TEHTA
281
+ ({AU},{AW}) --> OSSE WA_TEHTA
174
282
  \endif
175
283
 
176
284
  {EI} --> YANTA Y_TEHTA
@@ -197,9 +305,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
197
305
 
198
306
  [{L2}] --> [{_L2_}]
199
307
 
200
- mb --> UMBAR {NASAL}
201
- nd --> ANDO {NASAL}
202
-
308
+ mb --> UMBAR {NASAL}
309
+ nd --> ANDO {NASAL}
310
+
311
+ \** /ŋg/ : this is ng in middle of words + might be found at word start on mutation.
312
+ \** See also final/initial ng_ / _ng below **\
313
+ (ng,ngg,ŋg,ñg) --> ANGA {NASAL}
314
+
203
315
  \** ======== **\
204
316
  \** 3RD LINE **\
205
317
  \** ======== **\
@@ -224,7 +336,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
224
336
  \** ======== **\
225
337
  \** 5TH LINE **\
226
338
  \** ======== **\
227
- {L5} === nn * mm * ng
339
+ {L5} === nn * mm * (ng_,_ng,ŋ,ñ)
228
340
  {_L5_} === NUMEN * MALTA * NOLDO
229
341
 
230
342
  [{L5}] --> [{_L5_}]
@@ -253,7 +365,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
253
365
 
254
366
  [{S_LINE}] --> [{_S_LINE_}]
255
367
 
256
- ns --> SILME_NUQUERNA {NASAL}
368
+ \** REMOVING NEXT ONE WHICH CLASHES WITH Y **\
369
+ \** ns --> SILME_NUQUERNA {NASAL} **\
257
370
 
258
371
  \** ======== **\
259
372
  \** OTHERS **\
@@ -266,12 +379,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
266
379
  hw --> HWESTA_SINDARINWA
267
380
 
268
381
  \** labialized consonants **\
269
- dw --> ANDO SEV_TEHTA
270
- gw --> ANGA SEV_TEHTA
271
- lw --> LAMBE SEV_TEHTA
272
- nw --> ORE SEV_TEHTA
273
- rw --> ROMEN SEV_TEHTA
274
-
382
+ bw --> UMBAR WA_TEHTA \** Gnomish **\
383
+ dw --> ANDO WA_TEHTA
384
+ gw --> ANGA WA_TEHTA
385
+ lw --> LAMBE WA_TEHTA
386
+ nw --> ORE WA_TEHTA
387
+ rw --> ROMEN WA_TEHTA
388
+ (ng,ngg,ŋg,ñg)w --> ANGA {NASAL} WA_TEHTA
389
+ (_ng,ng_,ŋ,ñ)w --> NOLDO WA_TEHTA
390
+
391
+ \if "apostrophe == APOSTROPHE_IGNORED"
392
+ ' --> {NULL}
393
+ ’ --> {NULL}
394
+ \else
395
+ \** use gasdil **\
396
+ ' --> HALLA
397
+ ’ --> HALLA
398
+ \endif
399
+
400
+ \** Forced gasdil **\
401
+ ° --> HALLA
275
402
  \end
276
403
 
277
404
  \beg rules punctuation
@@ -297,8 +424,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
297
424
 
298
425
  \** Apostrophe **\
299
426
 
300
- ' --> {NULL}
301
- ’ --> {NULL}
427
+
302
428
 
303
429
  \** NBSP **\
304
430
  {NBSP} --> NBSP
@@ -320,7 +446,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
320
446
  > --> PUNCT_PAREN_R
321
447
 
322
448
  \** Not universal between fonts ... **\
323
- $ --> BOOKMARK_SIGN
449
+ $ --> ELVISH_PAREN
324
450
  ≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
325
451
  ≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
326
452
  \end
@@ -35,12 +35,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
35
35
  \entry "0.1.0" "Added support for the Tengwar Elfica font"
36
36
  \entry "0.1.1" "Added support for inlined raw tengwar"
37
37
  \entry "0.1.2" "Added support for non-breaking spaces"
38
+ \entry "0.1.3" "Added support for new unicode charsets"
39
+ \entry "0.1.4" "Added support for the Tengwar Telcontar font"
40
+ \entry "0.1.5" "Added a few labial exotic combinations. Reworked median point behaviour, and ng."
41
+ \entry "0.1.6" "Added gasdil handling."
38
42
  \end
39
43
 
40
44
  \language "Sindarin"
41
45
  \writing "Tengwar"
42
46
  \mode "Sindarin Tengwar - General Use"
43
- \version "0.1.2"
47
+ \version "0.1.6"
44
48
  \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
45
49
 
46
50
  \world arda
@@ -51,7 +55,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
51
55
  \charset tengwar_ds_eldamar false
52
56
  \charset tengwar_ds_annatar false
53
57
  \charset tengwar_ds_elfica false
58
+
59
+ \charset tengwar_guni_sindarin false
60
+ \charset tengwar_guni_parmaite false
61
+ \charset tengwar_guni_eldamar false
62
+ \charset tengwar_guni_annatar false
63
+ \charset tengwar_guni_elfica false
64
+
54
65
  \charset tengwar_freemono false
66
+ \charset tengwar_telcontar false
55
67
 
56
68
  \raw_mode "raw-tengwar"
57
69
 
@@ -62,6 +74,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
62
74
  \value U_UP_O_DOWN 2
63
75
  \end
64
76
 
77
+ \beg option apostrophe APOSTROPHE_IGNORED
78
+ \value APOSTROPHE_IGNORED 0
79
+ \value APOSTROPHE_GASDIL 1
80
+ \end
81
+
82
+ \beg option hyphen HYPHEN_WORD_BREAKER
83
+ \value HYPHEN_WORD_BREAKER 0
84
+ \value HYPHEN_WORD_JOINER 1
85
+ \end
86
+
65
87
  \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
66
88
  \value CONSONANT_MODIFICATION_STYLE_WAVE 0
67
89
  \value CONSONANT_MODIFICATION_STYLE_BAR 1
@@ -85,6 +107,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
85
107
  \** Work exclusively downcase **\
86
108
  \downcase
87
109
 
110
+ \if "hyphen == HYPHEN_WORD_JOINER"
111
+ \** Replace hyphen by median point **\
112
+ \substitute "-" "·"
113
+ \else
114
+ \** Replace hyphen by glaemscribe's word breaker **\
115
+ \substitute "-" "|"
116
+ \endif
117
+
118
+ \** Add keyboard friendly word joiner **\
119
+ \substitute "*" "·"
120
+
88
121
  \** Simplify trema vowels **\
89
122
  \substitute ä a
90
123
  \substitute ë e
@@ -107,6 +140,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
107
140
  \** Special case of starting 'i' before vowels, replace i by j **\
108
141
  \rxsubstitute "\\bi([aeouyáāâéēêíīîóōôúūûýȳŷ])" "j\\1"
109
142
 
143
+ \** Special case for ng : before the vast majority of consonnants, treat as ŋ **\
144
+ \** Don't include r / l / lh / w **\
145
+ \rxsubstitute "ng([tpckbdfðvnmhs])" "ŋ\\1"
146
+
147
+ \** Avoid mutated ng of being treated as strong middle word n|g (ex : i·ngelaidh [iŋɛlaið] ) **\
148
+ \substitute "·ng" "·ŋ"
149
+ \** But avoid losing the strong g in nasal mutation of g (ex : in·Gelydh [iŋgɛlyð]] ) **\
150
+ \substitute "n·g" "·ŋg"
151
+ \** Use median dot as word joiner **\
152
+ \substitute "·" ""
153
+
110
154
  \** Preprocess numbers **\
111
155
  \elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
112
156
  \end
@@ -189,8 +233,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
189
233
  {V_D_WN}n{K} --> CALMA {NASAL} {_V_D_WN_}
190
234
 
191
235
  \** 2ND LINE **\
192
- {L2} === d * b * g * ng \** * g **\
193
- {_L2_} === ANDO * UMBAR * UNGWE * UNGWE {NASAL} \** * s **\
236
+ \**
237
+ /ŋg/ : this is ng in middle of words + might be found at word start.
238
+ See also final/initial ng_ / _ng below
239
+ **\
240
+ {L2} === d * b * g * (ng,ngg,ŋg,ñg)
241
+ {_L2_} === ANDO * UMBAR * UNGWE * UNGWE {NASAL}
194
242
 
195
243
  {V_D_WN}[{L2}] --> 2,1 --> [{_L2_}]{_V_D_WN_}
196
244
 
@@ -210,13 +258,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
210
258
 
211
259
  \** 4TH LINE **\
212
260
  {L4} === (đ,ð,ðh,dh) * (v,bh,f_) \** Some noldorin variants here ... **\
213
- {_L4_} === ANTO * AMPA
261
+ {_L4_} === ANTO * AMPA
214
262
 
215
263
  {V_D_WN}[{L4}] --> 2,1 --> [{_L4_}]{_V_D_WN_}
216
264
 
217
265
  \** 5TH LINE **\
218
- {L5} === n * m * _ng * _mh
219
- {_L5_} === NUMEN * MALTA * NWALME * MALTA_W_HOOK
266
+ {L5} === n * m * (_ng,ng_,ŋ,ñ) * _mh \** weak ng at initial and final **\
267
+ {_L5_} === NUMEN * MALTA * NWALME * MALTA_W_HOOK
220
268
 
221
269
  {V_D_WN}[{L5}] --> 2,1 --> [{_L5_}]{_V_D_WN_}
222
270
 
@@ -226,7 +274,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
226
274
  \** 6TH LINE **\
227
275
 
228
276
  \** 7TH LINE **\
229
- {L7} === r_ * r * l * ll * w
277
+ {L7} === r_ * r * l * ll * w
230
278
  {_L7_} === ORE * ROMEN * LAMBE * LAMBE {GEMINATE} * VALA
231
279
 
232
280
  {V_D_WN}[{L7}] --> 2,1 --> [{_L7_}]{_V_D_WN_}
@@ -252,29 +300,47 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
252
300
 
253
301
  \**
254
302
  Ok here come the labialized consonants which are really tricky
255
- The fonts generally do not handle well the u curl + tehtar, this should be one more argument for
303
+ The fonts generally do not handle well the wa-tehta curl + tehtar, this should be one more argument for
256
304
  adopting open type anchors with which we can stack diacritics (see the sarati modes).
257
305
  For here, we cheat. Either we don't have any tehta on the tengwa, and it's easy.
258
306
  Or, we put the two signs in their small versions, side by side.
259
307
  We give an option not to use that trick, if the option is not set, we simply do not use
260
- the u-curl at all when there's a tehta on the tengwa.
308
+ the wa-tehta curl at all when there's a tehta on the tengwa.
261
309
  **\
262
310
 
263
311
  \if "labialized_consonants_u_curl == LABIALIZED_U_CURL_NO_TEHTAR || labialized_consonants_u_curl == LABIALIZED_U_CURL_ALWAYS"
264
- dw --> ANDO SEV_TEHTA
265
- gw --> UNGWE SEV_TEHTA
266
- lw --> LAMBE SEV_TEHTA
267
- nw --> NUMEN SEV_TEHTA
268
- rw --> ROMEN SEV_TEHTA
312
+ bw --> UMBAR WA_TEHTA
313
+ dw --> ANDO WA_TEHTA
314
+ gw --> UNGWE WA_TEHTA
315
+ lw --> LAMBE WA_TEHTA
316
+ nw --> NUMEN WA_TEHTA
317
+ rw --> ROMEN WA_TEHTA
318
+ (ng,ngg,ŋg,ñg)w --> UNGWE {NASAL} WA_TEHTA
319
+ (_ng,ng_,ŋ,ñ)w --> NWALME WA_TEHTA
269
320
  \endif
270
321
 
271
322
  \if "labialized_consonants_u_curl == LABIALIZED_U_CURL_ALWAYS"
272
- {V_D}dw --> ANDO SEV_TEHTA {_V_D_}
273
- {V_D}gw --> UNGWE SEV_TEHTA {_V_D_}
274
- {V_D}lw --> LAMBE SEV_TEHTA {_V_D_}
275
- {V_D}nw --> NUMEN SEV_TEHTA {_V_D_}
276
- {V_D}rw --> ROMEN SEV_TEHTA {_V_D_}
323
+ {V_D}bw --> UMBAR WA_TEHTA {_V_D_}
324
+ {V_D}dw --> ANDO WA_TEHTA {_V_D_}
325
+ {V_D}gw --> UNGWE WA_TEHTA {_V_D_}
326
+ {V_D}lw --> LAMBE WA_TEHTA {_V_D_}
327
+ {V_D}nw --> NUMEN WA_TEHTA {_V_D_}
328
+ {V_D}rw --> ROMEN WA_TEHTA {_V_D_}
329
+ {V_D}(ng,ngg,ŋg,ñg)w --> UNGWE {NASAL} WA_TEHTA {_V_D_}
330
+ {V_D}(_ng,ng_,ŋ,ñ)w --> NWALME WA_TEHTA {_V_D_}
277
331
  \endif
332
+
333
+ \if "apostrophe == APOSTROPHE_IGNORED"
334
+ ' --> {NULL}
335
+ ’ --> {NULL}
336
+ \else
337
+ \** use gasdil **\
338
+ ' --> HALLA
339
+ ’ --> HALLA
340
+ \endif
341
+
342
+ \** Forced gasdil **\
343
+ ° --> HALLA
278
344
  \end
279
345
 
280
346
  \beg rules punctuation
@@ -297,11 +363,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
297
363
  - --> {NULL}
298
364
  – --> PUNCT_TILD
299
365
  — --> PUNCT_TILD
300
-
301
- \** Apostrophe **\
302
-
303
- ' --> {NULL}
304
- ’ --> {NULL}
305
366
 
306
367
  \** NBSP **\
307
368
  {NBSP} --> NBSP
@@ -323,7 +384,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
323
384
  > --> PUNCT_PAREN_R
324
385
 
325
386
  \** Not universal between fonts ... **\
326
- $ --> BOOKMARK_SIGN
387
+ $ --> ELVISH_PAREN
327
388
  ≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
328
389
  ≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
329
390
  \end
@@ -34,12 +34,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
34
34
  \entry "0.1.1" "Added support for inlined raw tengwar"
35
35
  \entry "0.1.2" "Added support for non-breaking spaces"
36
36
  \entry "0.1.3" "Correcting visibility options to conform to new glaeml args strict syntax"
37
+ \entry "0.1.4" "Added support for new unicode charsets"
38
+ \entry "0.1.5" "Added support for the Tengwar Telcontar font"
37
39
  \end
38
40
 
39
41
  \language "Telerin"
40
42
  \writing "Tengwar"
41
43
  \mode "Telerin Tengwar - G*"
42
- \version "0.1.3"
44
+ \version "0.1.5"
43
45
  \authors "Talagan (Benjamin Babut), based on J.R.R Tolkien"
44
46
 
45
47
  \world arda
@@ -50,7 +52,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
50
52
  \charset tengwar_ds_eldamar false
51
53
  \charset tengwar_ds_annatar false
52
54
  \charset tengwar_ds_elfica false
55
+
56
+ \charset tengwar_guni_sindarin false
57
+ \charset tengwar_guni_parmaite false
58
+ \charset tengwar_guni_eldamar false
59
+ \charset tengwar_guni_annatar false
60
+ \charset tengwar_guni_elfica false
61
+
53
62
  \charset tengwar_freemono false
63
+ \charset tengwar_telcontar false
54
64
 
55
65
  \raw_mode "raw-tengwar"
56
66
 
@@ -237,10 +247,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
237
247
  [ {L1} ] {V_D_WN} --> [ {_L1_} ] {_V_D_WN_}
238
248
  [ {L1_GEMS} ] {V_D_WN} --> [ {_L1_GEMS_} ] {_V_D_WN_}
239
249
 
240
- ts{V_D_WN} --> TINCO ALVEOLAR_SIGN {_V_D_WN_}
241
- ps{V_D_WN} --> PARMA ALVEOLAR_SIGN {_V_D_WN_}
242
- {K}s{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_}
243
- x{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_} \** render ks for x **\
250
+ ts{V_D_WN} --> TINCO SARINCE {_V_D_WN_}
251
+ ps{V_D_WN} --> PARMA SARINCE {_V_D_WN_}
252
+ {K}s{V_D_WN} --> CALMA SARINCE {_V_D_WN_}
253
+ x{V_D_WN} --> CALMA SARINCE {_V_D_WN_} \** render ks for x **\
244
254
 
245
255
  \** ===================== **\
246
256
  \** 2ND LINE RULES **\
@@ -369,7 +379,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
369
379
  > --> PUNCT_PAREN_R
370
380
 
371
381
  \** Not universal between fonts ... **\
372
- $ --> BOOKMARK_SIGN
382
+ $ --> ELVISH_PAREN
373
383
  ≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
374
384
  ≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
375
385
 
@@ -30,13 +30,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
30
30
  \entry "0.1.0" "Added support for the Tengwar Elfica font"
31
31
  \entry "0.1.1" "Added support for inlined raw tengwar"
32
32
  \entry "0.1.2" "Added support for non-breaking spaces"
33
+ \entry "0.1.3" "Added support for new unicode charsets"
34
+ \entry "0.1.4" "Added support for the Tengwar Telcontar font"
33
35
  \end
34
36
 
35
37
  \** Westron mode for glaemscribe (MAY BE INCOMPLETE) **\
36
38
  \language Westron
37
39
  \writing Tengwar
38
40
  \mode "Westron Tengwar - G*"
39
- \version "0.1.2"
41
+ \version "0.1.4"
40
42
  \authors "Talagan (Benjamin Babut), based on J.R.R. Tolkien"
41
43
 
42
44
  \world arda
@@ -49,7 +51,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49
51
  \charset tengwar_ds_eldamar false
50
52
  \charset tengwar_ds_annatar false
51
53
  \charset tengwar_ds_elfica false
54
+
55
+ \charset tengwar_guni_sindarin false
56
+ \charset tengwar_guni_parmaite false
57
+ \charset tengwar_guni_eldamar false
58
+ \charset tengwar_guni_annatar false
59
+ \charset tengwar_guni_elfica false
60
+
52
61
  \charset tengwar_freemono false
62
+ \charset tengwar_telcontar false
53
63
 
54
64
  \beg options
55
65
 
@@ -293,13 +303,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
293
303
  nz{V_D} --> ESSE_NUQUERNA {NASAL} {_V_D_}
294
304
  nz --> ESSE_NUQUERNA {NASAL}
295
305
 
296
- ts --> TINCO ALVEOLAR_SIGN
297
- ps --> PARMA ALVEOLAR_SIGN
298
- (ks,cs,x) --> QUESSE ALVEOLAR_SIGN
306
+ ts --> TINCO SARINCE
307
+ ps --> PARMA SARINCE
308
+ (ks,cs,x) --> QUESSE SARINCE
299
309
 
300
- ts{V_D} --> TINCO ALVEOLAR_SIGN {_V_D_}
301
- ps{V_D} --> PARMA ALVEOLAR_SIGN {_V_D_}
302
- (ks,cs,x){V_D} --> QUESSE ALVEOLAR_SIGN {_V_D_}
310
+ ts{V_D} --> TINCO SARINCE {_V_D_}
311
+ ps{V_D} --> PARMA SARINCE {_V_D_}
312
+ (ks,cs,x){V_D} --> QUESSE SARINCE {_V_D_}
303
313
 
304
314
  h{V_D} --> HYARMEN {_V_D_}
305
315
  h --> HYARMEN
@@ -366,7 +376,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
366
376
  > --> PUNCT_PAREN_R
367
377
 
368
378
  \** Not universal between fonts ... **\
369
- $ --> BOOKMARK_SIGN
379
+ $ --> ELVISH_PAREN
370
380
  ≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
371
381
  ≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
372
382
  \end