glaemscribe 1.0.19 → 1.1.0
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.
- checksums.yaml +4 -4
- data/glaemresources/charsets/tengwar_ds_annatar.cst +509 -0
- data/glaemresources/charsets/tengwar_ds_eldamar.cst +22 -16
- data/glaemresources/charsets/tengwar_ds_elfica.cst +461 -0
- data/glaemresources/charsets/tengwar_ds_parmaite.cst +500 -0
- data/glaemresources/charsets/{tengwar_ds.cst → tengwar_ds_sindarin.cst} +59 -62
- data/glaemresources/charsets/tengwar_freemono.cst +176 -0
- data/glaemresources/charsets/unicode_runes.cst +1 -0
- data/glaemresources/modes/adunaic.glaem +50 -28
- data/glaemresources/modes/blackspeech.glaem +156 -82
- data/glaemresources/modes/english-ipa.glaem +49 -0
- data/glaemresources/modes/french-ipa.glaem +49 -0
- data/glaemresources/modes/{oldnorse-medieval.glaem → futhark-runicus.glaem} +4 -4
- data/glaemresources/modes/futhark-younger.glaem +129 -0
- data/glaemresources/modes/{futhorc.glaem.disabled → futhorc.glaem} +76 -38
- data/glaemresources/modes/gothic.glaem +1 -1
- data/glaemresources/modes/khuzdul.glaem +1 -1
- data/glaemresources/modes/mercian.glaem +31 -16
- data/glaemresources/modes/quenya-sarati.glaem +5 -3
- data/glaemresources/modes/quenya.glaem +168 -77
- data/glaemresources/modes/rlyehian.glaem +41 -43
- data/glaemresources/modes/sindarin-beleriand.glaem +39 -17
- data/glaemresources/modes/sindarin-daeron.glaem +1 -1
- data/glaemresources/modes/{sindarin-classical.glaem → sindarin.glaem} +73 -37
- data/glaemresources/modes/telerin.glaem +161 -64
- data/glaemresources/modes/valarin-sarati.glaem +1 -1
- data/glaemresources/modes/westron.glaem +83 -44
- data/glaemresources/modes/westsaxon.glaem +30 -13
- data/lib/api/charset.rb +29 -11
- data/lib/api/charset_parser.rb +15 -3
- data/lib/api/mode.rb +15 -3
- data/lib/api/mode_parser.rb +7 -2
- data/lib/api/option.rb +15 -1
- data/lib/api/post_processor/resolve_virtuals.rb +35 -24
- data/lib/api/transcription_pre_post_processor.rb +2 -1
- metadata +15 -11
- data/glaemresources/modes/blackspeech-annatar.glaem +0 -320
- data/glaemresources/modes/futhark-long-branch.glaem.disabled +0 -101
- data/glaemresources/modes/futhark-short-twig.glaem.disabled +0 -101
@@ -26,10 +26,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
26
26
|
\writing "Runes"
|
27
27
|
\mode "Futhorc"
|
28
28
|
\version "0.0.1"
|
29
|
-
\authors "Bertrand Bellet"
|
29
|
+
\authors "Historical impl. Bertrand Bellet"
|
30
30
|
|
31
31
|
\charset unicode_runes true
|
32
32
|
|
33
|
+
\beg options
|
34
|
+
\option use_cweorth true
|
35
|
+
\option use_stan true
|
36
|
+
\option use_calc_and_gar true
|
37
|
+
\end
|
38
|
+
|
33
39
|
\beg preprocessor
|
34
40
|
\downcase
|
35
41
|
\end
|
@@ -45,9 +51,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
45
51
|
{Y} === (y,ý)
|
46
52
|
{AE} === (æ,ǽ)
|
47
53
|
{OE} === (œ,œ́)
|
48
|
-
|
49
|
-
|
50
|
-
|
54
|
+
{EA} === (ea,éa)
|
55
|
+
{EO} === (eo,éo)
|
56
|
+
{IO} === (io,ío)
|
51
57
|
|
52
58
|
\** VOWELS **\
|
53
59
|
|
@@ -59,54 +65,86 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
59
65
|
{Y} --> YR
|
60
66
|
{AE} --> AESC
|
61
67
|
{OE} --> ETHEL
|
62
|
-
|
63
|
-
|
64
|
-
|
68
|
+
{EA} --> EAR
|
69
|
+
{EO} --> EOH
|
70
|
+
{IO} --> IOR
|
65
71
|
|
66
72
|
\** IOTATED VOWELS **\
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
i{
|
71
|
-
i{U} --> GER UR
|
72
|
-
i{Y} --> GER YR
|
73
|
-
i{AE} --> GER AESC
|
74
|
-
i{OE} --> GER ETHEL
|
75
|
-
i{EA} --> GER EAR
|
76
|
-
i{EO} --> GER EOH
|
73
|
+
{IOTABLES} === {A} * {E} * {O} * {U} * {Y} * {AE} * {OE} * {EA} * {EO}
|
74
|
+
{_IOTABLES_} === AC * EH * OS * UR * YR * AESC * ETHEL * EAR * EOH
|
75
|
+
|
76
|
+
i [{IOTABLES}] --> GER [{_IOTABLES_} ]
|
77
77
|
|
78
78
|
\** CONSONANTS **\
|
79
|
-
|
80
79
|
(b,bb) --> BEORC
|
81
|
-
|
80
|
+
|
81
|
+
\** (c,cc,k,kk) --> CALC **\
|
82
|
+
\** (ċ,ċċ) --> CEN **\
|
83
|
+
(c,cc,k,kk) --> CEN
|
82
84
|
(ċ,ċċ) --> CEN
|
85
|
+
\if use_calc_and_gar
|
86
|
+
\** overload when option is on **\
|
87
|
+
(c,cc,k,kk) --> CALC
|
88
|
+
\endif
|
89
|
+
|
83
90
|
(d,dd) --> DAEG
|
84
|
-
(
|
85
|
-
|
91
|
+
(f,ff,v) --> FEOH
|
92
|
+
|
93
|
+
\** (g,gg,cg) --> GAR **\
|
94
|
+
\** (ȝ,ġ,ġġ,ċġ) --> GYFU **\
|
95
|
+
(g,gg,cg) --> GYFU
|
86
96
|
(ȝ,ġ,ġġ,ċġ) --> GYFU
|
87
|
-
|
88
|
-
|
97
|
+
\if use_calc_and_gar
|
98
|
+
\** overload when option is on **\
|
99
|
+
(g,gg,cg) --> GAR
|
100
|
+
\endif
|
101
|
+
|
102
|
+
(h,hh,ç,χ) --> HAEGL
|
103
|
+
(j,jj,ĭ) --> GER
|
89
104
|
(l,ll) --> LAGU
|
90
105
|
(m,mm) --> MAN
|
91
106
|
(n,nn) --> NYD
|
92
107
|
(p,pp) --> PEORTH
|
93
108
|
(r,rr) --> RAD
|
94
|
-
(s,ss)
|
109
|
+
(s,ss,z) --> SIGEL
|
95
110
|
(t,tt) --> TIR
|
96
|
-
(
|
111
|
+
(þ,þþ,ð,ðð) --> THORN
|
97
112
|
(w,ww) --> WYNN
|
98
|
-
|
99
|
-
\**
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
113
|
+
|
114
|
+
\** OLD ENGLISH AND **\
|
115
|
+
|
116
|
+
⁊ --> OS NYD DAEG
|
117
|
+
|
118
|
+
\** CLUSTERS WITH ING **\
|
119
|
+
|
120
|
+
\** ng --> ING GAR **\
|
121
|
+
\** nġ --> ING GYFU **\
|
122
|
+
ng --> ING GYFU
|
123
|
+
nġ --> ING GYFU
|
124
|
+
\if use_calc_and_gar
|
125
|
+
ng --> ING GAR
|
126
|
+
\endif
|
127
|
+
|
128
|
+
\** nc --> ING CALC **\
|
129
|
+
\** (nċ,nk,nq) --> ING CEN **\
|
130
|
+
nc --> ING CEN
|
131
|
+
(nċ,nk,nq) --> ING CEN
|
132
|
+
\if use_calc_and_gar
|
133
|
+
ng --> ING CALC
|
134
|
+
\endif
|
135
|
+
|
136
|
+
\** CLUSTERS WITH S **\
|
137
|
+
x --> EOLHX
|
138
|
+
(z,ts) --> TIR SIGEL
|
139
|
+
|
140
|
+
\** ADDITIONAL RUNES **\
|
141
|
+
\if use_cweorth
|
142
|
+
(cw,qu,ccw,cqu) --> CWEORTH
|
143
|
+
\endif
|
144
|
+
\if use_stan
|
145
|
+
st --> STAN
|
146
|
+
\endif
|
147
|
+
|
110
148
|
\end
|
111
149
|
|
112
150
|
\beg rules punctuation
|
@@ -115,7 +153,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
115
153
|
: --> RUNIC_MULTIPLE_PUNCTUATION
|
116
154
|
. --> RUNIC_MULTIPLE_PUNCTUATION
|
117
155
|
! --> RUNIC_MULTIPLE_PUNCTUATION
|
118
|
-
? --> RUNIC_CROSS_PUNCTUATION
|
156
|
+
? --> RUNIC_CROSS_PUNCTUATION
|
119
157
|
\end
|
120
158
|
\end
|
121
159
|
|
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
26
26
|
\writing "Gothic Alphabet"
|
27
27
|
\mode "Standard"
|
28
28
|
\version "0.0.1"
|
29
|
-
\authors "Talagan (Benjamin Babut)"
|
29
|
+
\authors "Historical, impl. Talagan (Benjamin Babut)"
|
30
30
|
|
31
31
|
\charset unicode_gothic true
|
32
32
|
|
@@ -28,7 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
28
28
|
\writing "Cirth"
|
29
29
|
\mode "Angerthas Moria"
|
30
30
|
\version "0.0.2"
|
31
|
-
\authors "Talagan (Benjamin Babut)"
|
31
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
32
32
|
|
33
33
|
\charset cirth_ds true
|
34
34
|
|
@@ -29,10 +29,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
29
29
|
\language "Old English"
|
30
30
|
\writing "Tengwar"
|
31
31
|
\mode "Mercian"
|
32
|
-
\version "0.0
|
33
|
-
\authors "Talagan (Benjamin Babut)"
|
32
|
+
\version "0.1.0"
|
33
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
34
34
|
|
35
35
|
\charset tengwar_ds_eldamar true
|
36
|
+
\** Other charsets cannot handle all diacritics we are using here ... **\
|
37
|
+
|
38
|
+
\beg options
|
39
|
+
\beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_WAVE
|
40
|
+
\value CONSONANT_MODIFICATION_STYLE_WAVE 0
|
41
|
+
\value CONSONANT_MODIFICATION_STYLE_BAR 1
|
42
|
+
\end
|
43
|
+
\end
|
36
44
|
|
37
45
|
\beg preprocessor
|
38
46
|
\** Work exclusively downcase **\
|
@@ -63,6 +71,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
63
71
|
\beg processor
|
64
72
|
|
65
73
|
\beg rules litteral
|
74
|
+
|
75
|
+
\if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
|
76
|
+
{NASAL} === NASALIZE_SIGN_TILD
|
77
|
+
\else
|
78
|
+
{NASAL} === NASALIZE_SIGN
|
79
|
+
\endif
|
80
|
+
|
66
81
|
{A} === a
|
67
82
|
{AA} === á
|
68
83
|
{E} === e
|
@@ -86,7 +101,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
86
101
|
\** @ is the phantom vowel added by the preprocessor **\
|
87
102
|
|
88
103
|
{S_VOWELS_NP_KERNEL} === {A} * {AE} * {OE} * {E} * {I} * {O} * {U} * {Y}
|
89
|
-
{S_VOWELS_WP_KERNEL}
|
104
|
+
{S_VOWELS_WP_KERNEL} === {S_VOWELS_NP_KERNEL} * @
|
90
105
|
|
91
106
|
\** UP TEHTAS **\
|
92
107
|
{TEHTAR_UP_NP} === A_TEHTA * Y_TEHTA * E_TEHTA_DOUBLE * E_TEHTA * I_TEHTA * O_TEHTA * U_TEHTA * SEV_TEHTA
|
@@ -167,12 +182,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
167
182
|
\** Nasals (tild above) **\
|
168
183
|
\** nC, nCV, nCVV **\
|
169
184
|
\** We also have rules for long vowels **\
|
170
|
-
[ nt * mp ] --> [ TINCO
|
171
|
-
[ nċ * nc ] --> [ CALMA
|
172
|
-
[ nt * mp ]{S_VOWELS}{S_VOWELS_WN} --> [ TINCO
|
173
|
-
[ nċ * nc ]{S_VOWELS}{S_VOWELS_WN} --> [ CALMA
|
174
|
-
[ nt * mp ][{LVOWELS}] --> [ TINCO
|
175
|
-
[ nċ * nc ][{LVOWELS}] --> [ CALMA
|
185
|
+
[ nt * mp ] --> [ TINCO {NASAL} * PARMA {NASAL} ]
|
186
|
+
[ nċ * nc ] --> [ CALMA {NASAL} * QUESSE {NASAL} ]
|
187
|
+
[ nt * mp ]{S_VOWELS}{S_VOWELS_WN} --> [ TINCO {NASAL} * PARMA {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
|
188
|
+
[ nċ * nc ]{S_VOWELS}{S_VOWELS_WN} --> [ CALMA {NASAL} * QUESSE {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
|
189
|
+
[ nt * mp ][{LVOWELS}] --> [ TINCO {NASAL} * PARMA {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
|
190
|
+
[ nċ * nc ][{LVOWELS}] --> [ CALMA {NASAL} * QUESSE {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
|
176
191
|
|
177
192
|
\** ========== **\
|
178
193
|
\** 2nd Line (Voiced occlusives) **\
|
@@ -193,9 +208,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
193
208
|
[{L2_KER_GEMS}]{S_VOWELS_WN} --> [{L2_IMG_GEMS}]{_S_VOWELS_UP_WN_}
|
194
209
|
|
195
210
|
\** Nasals, with diphthongs! **\
|
196
|
-
[ nd * mb * nġ * ng ] --> [ ANDO
|
197
|
-
[ nd * mb * nġ * ng ]{S_VOWELS}{S_VOWELS_WN} --> [ ANDO
|
198
|
-
[ nd * mb * nġ * ng ][{LVOWELS}] --> [ ANDO
|
211
|
+
[ nd * mb * nġ * ng ] --> [ ANDO {NASAL} * UMBAR {NASAL} * ANGA {NASAL} * UNGWE {NASAL} ]
|
212
|
+
[ nd * mb * nġ * ng ]{S_VOWELS}{S_VOWELS_WN} --> [ ANDO {NASAL} * UMBAR {NASAL} * ANGA {NASAL} * UNGWE {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
|
213
|
+
[ nd * mb * nġ * ng ][{LVOWELS}] --> [ ANDO {NASAL} * UMBAR {NASAL} * ANGA {NASAL} * UNGWE {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
|
199
214
|
|
200
215
|
\** ========== **\
|
201
216
|
\** 3rd Line (Voiceless fricatives) **\
|
@@ -256,9 +271,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
256
271
|
\** Gemination === nasalisation **\
|
257
272
|
\** So prefer using tild to put tehtas up and down for diphthongs and long vowels **\
|
258
273
|
|
259
|
-
[ nn * mm ] --> [ NUMEN
|
260
|
-
[ nn * mm ]{S_VOWELS}{S_VOWELS_WN} --> [ NUMEN
|
261
|
-
[ nn * mm ][{LVOWELS}] --> [ NUMEN
|
274
|
+
[ nn * mm ] --> [ NUMEN {NASAL} * MALTA {NASAL} ]
|
275
|
+
[ nn * mm ]{S_VOWELS}{S_VOWELS_WN} --> [ NUMEN {NASAL} * MALTA {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
|
276
|
+
[ nn * mm ][{LVOWELS}] --> [ NUMEN {NASAL} * MALTA {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
|
262
277
|
|
263
278
|
\** ========== **\
|
264
279
|
\** 6th Line (Approximants == fr : Spirantes) **\
|
@@ -345,7 +360,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
345
360
|
|
346
361
|
x{S_VOWELS_WN} --> QUESSE ALVEOLAR_SIGN {_S_VOWELS_UP_WN_}
|
347
362
|
xx{S_VOWELS_WN} --> QUESSE ALVEOLAR_SIGN GEMINATE_DOUBLE {_S_VOWELS_UP_WN_}
|
348
|
-
nx{S_VOWELS_WN} --> QUESSE ALVEOLAR_SIGN
|
363
|
+
nx{S_VOWELS_WN} --> QUESSE ALVEOLAR_SIGN {NASAL} {_S_VOWELS_UP_WN_}
|
349
364
|
\end
|
350
365
|
|
351
366
|
\beg rules punctuation
|
@@ -33,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
33
33
|
\writing "Sarati"
|
34
34
|
\mode "Quenya Usage"
|
35
35
|
\version "0.0.1"
|
36
|
-
\authors "Talagan (Benjamin Babut)"
|
36
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
37
37
|
|
38
38
|
\charset sarati_eldamar true
|
39
39
|
|
@@ -65,9 +65,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
65
65
|
\substitute "oi" "oy"
|
66
66
|
\substitute "ui" "uy"
|
67
67
|
|
68
|
-
|
68
|
+
\** Split long a **\
|
69
|
+
\substitute "á" "aa"
|
69
70
|
|
70
|
-
|
71
|
+
\** Dis-ambiguate qu **\
|
72
|
+
\substitute "qu" "q"
|
71
73
|
\end
|
72
74
|
|
73
75
|
\beg processor
|
@@ -23,21 +23,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
23
23
|
**\
|
24
24
|
|
25
25
|
\beg changelog
|
26
|
-
\entry "0.0.2"
|
27
|
-
\entry "0.0.3"
|
28
|
-
\entry "0.0.4"
|
29
|
-
\entry "0.0.5"
|
30
|
-
\entry "0.0.6"
|
31
|
-
\entry "0.0.7"
|
32
|
-
\entry "0.0.8"
|
33
|
-
\entry "0.0.9"
|
34
|
-
\entry "0.1.0"
|
35
|
-
\entry "0.1.1"
|
36
|
-
\entry "0.1.2"
|
37
|
-
\entry "0.1.3"
|
38
|
-
\entry "0.1.4"
|
39
|
-
\entry "0.1.5"
|
40
|
-
\entry "0.1.6"
|
26
|
+
\entry "0.0.2" "added χ for the word χarina, correcting ts/ps sequences to work better with eldamar"
|
27
|
+
\entry "0.0.3" "added o/u curl option"
|
28
|
+
\entry "0.0.4" "added voiced plosives corner cases treatment and option to chose method"
|
29
|
+
\entry "0.0.5" "fixing h+long vowel medially"
|
30
|
+
\entry "0.0.6" "adding option for alveolarized consonants st (t+t), pt (p+t), ht (c+t)"
|
31
|
+
\entry "0.0.7" "Fixing rb/lb, to be treated as r+mb and l+mb"
|
32
|
+
\entry "0.0.8" "Correcting double dot version for ry (aesthetics)"
|
33
|
+
\entry "0.0.9" "Adding 'implicit a' option."
|
34
|
+
\entry "0.1.0" "Simplified diacritic use by using new post-processor directive"
|
35
|
+
\entry "0.1.1" "Added default option for voiced plosives : use mb, nd, ng, ngw"
|
36
|
+
\entry "0.1.2" "Added a tehta shape selection"
|
37
|
+
\entry "0.1.3" "Fixing ks, ps, ts. Fixing dot under ore, romen in implicit a mode."
|
38
|
+
\entry "0.1.4" "Conforming to the new csub format. Cleaning with new csub classes."
|
39
|
+
\entry "0.1.5" "csub removed. Now using virtual chars defined in charsets."
|
40
|
+
\entry "0.1.6" "Removing unutixe under óre for coherency in implicit a submode."
|
41
|
+
\entry "0.9.0" "Adding double tehtar support"
|
42
|
+
\entry "0.9.1" "Added support for the FreeMonoTengwar font"
|
43
|
+
\entry "0.9.2" "Added support for the Tengwar Elfica font"
|
41
44
|
\end
|
42
45
|
|
43
46
|
\**
|
@@ -48,14 +51,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
48
51
|
\language "Quenya"
|
49
52
|
\writing "Tengwar"
|
50
53
|
\mode "Classical"
|
51
|
-
\version "0.
|
52
|
-
\authors "Talagan (Benjamin Babut)"
|
54
|
+
\version "0.9.2"
|
55
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
56
|
+
|
57
|
+
\charset tengwar_ds_sindarin true
|
58
|
+
\charset tengwar_ds_parmaite false
|
59
|
+
\charset tengwar_ds_eldamar false
|
60
|
+
\charset tengwar_ds_annatar false
|
61
|
+
\charset tengwar_ds_elfica false
|
62
|
+
\charset tengwar_freemono false
|
53
63
|
|
54
|
-
\charset tengwar_ds true
|
55
|
-
\charset tengwar_ds_eldamar false
|
56
64
|
|
57
65
|
\beg options
|
58
66
|
\option implicit_a false
|
67
|
+
|
59
68
|
\beg option a_tetha_shape A_SHAPE_THREE_DOTS
|
60
69
|
\value A_SHAPE_THREE_DOTS 1
|
61
70
|
\value A_SHAPE_CIRCUMFLEX 2
|
@@ -64,6 +73,29 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
64
73
|
\value O_UP_U_DOWN 1
|
65
74
|
\value U_UP_O_DOWN 2
|
66
75
|
\end
|
76
|
+
\beg option long_vowels_format LONG_VOWELS_USE_LONG_CARRIER
|
77
|
+
\value LONG_VOWELS_USE_LONG_CARRIER 1
|
78
|
+
\value LONG_VOWELS_USE_DOUBLE_TEHTAR 2
|
79
|
+
\end
|
80
|
+
|
81
|
+
\** REMOVED BECAUSE UNATTESTED
|
82
|
+
\beg option double_tehta_a false
|
83
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
84
|
+
\end
|
85
|
+
**\
|
86
|
+
\beg option double_tehta_e false
|
87
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
88
|
+
\end
|
89
|
+
\beg option double_tehta_i false
|
90
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
91
|
+
\end
|
92
|
+
\beg option double_tehta_o true
|
93
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
94
|
+
\end
|
95
|
+
\beg option double_tehta_u true
|
96
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
97
|
+
\end
|
98
|
+
|
67
99
|
\option split_diphthongs false
|
68
100
|
\option always_use_romen_for_r false
|
69
101
|
\beg option voiced_plosives_treatment VOICED_PLOSIVES_AS_NASALIZED
|
@@ -75,6 +107,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
75
107
|
\value ST_PT_HT_SEPARATED 1
|
76
108
|
\value ST_PT_HT_WITH_XTD 2
|
77
109
|
\end
|
110
|
+
|
111
|
+
\beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
|
112
|
+
\value CONSONANT_MODIFICATION_STYLE_WAVE 0
|
113
|
+
\value CONSONANT_MODIFICATION_STYLE_BAR 1
|
114
|
+
\end
|
115
|
+
|
78
116
|
\option reverse_numbers true
|
79
117
|
\beg option numbers_base BASE_12
|
80
118
|
\value BASE_10 10
|
@@ -102,7 +140,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
102
140
|
\rxsubstitute "(ū|û|uu)" "ú"
|
103
141
|
\rxsubstitute "(ȳ|ŷ|yy)" "ý"
|
104
142
|
|
105
|
-
|
143
|
+
\** Dis-ambiguate qu **\
|
144
|
+
\substitute "qu" "q"
|
106
145
|
|
107
146
|
\elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
|
108
147
|
\end
|
@@ -111,25 +150,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
111
150
|
\beg processor
|
112
151
|
|
113
152
|
\beg rules litteral
|
114
|
-
|
153
|
+
|
115
154
|
{K} === (c,k)
|
116
155
|
{SS} === (z,ss)
|
156
|
+
|
157
|
+
\if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
|
158
|
+
{GEMINATE} === GEMINATE_SIGN_TILD
|
159
|
+
\else
|
160
|
+
{GEMINATE} === GEMINATE_SIGN
|
161
|
+
\endif
|
117
162
|
|
118
163
|
{VOWELS} === a * e * i * o * u
|
119
164
|
{LVOWELS} === á * é * í * ó * ú
|
120
165
|
|
121
166
|
\if "reverse_o_u_tehtar == U_UP_O_DOWN"
|
122
|
-
{O_LOOP}
|
123
|
-
{
|
167
|
+
{O_LOOP} === O_TEHTA
|
168
|
+
{O_LOOP_DOUBLE} === O_TEHTA_DOUBLE
|
169
|
+
{U_LOOP} === U_TEHTA
|
170
|
+
{U_LOOP_DOUBLE} === U_TEHTA_DOUBLE
|
124
171
|
\else
|
125
|
-
{O_LOOP}
|
126
|
-
{
|
172
|
+
{O_LOOP} === U_TEHTA
|
173
|
+
{O_LOOP_DOUBLE} === U_TEHTA_DOUBLE
|
174
|
+
{U_LOOP} === O_TEHTA
|
175
|
+
{U_LOOP_DOUBLE} === O_TEHTA_DOUBLE
|
127
176
|
\endif
|
128
177
|
|
129
178
|
\if "a_tetha_shape == A_SHAPE_THREE_DOTS"
|
130
|
-
{A_SHAPE}
|
179
|
+
{A_SHAPE} === A_TEHTA
|
131
180
|
\else
|
132
|
-
{A_SHAPE}
|
181
|
+
{A_SHAPE} === A_TEHTA_CIRCUM
|
133
182
|
\endif
|
134
183
|
|
135
184
|
\if implicit_a
|
@@ -151,35 +200,80 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
151
200
|
{WDIPHTHONGS} === * {DIPHTHONGS} \** groovy! **\
|
152
201
|
{_WDIPHTHONGS_} === * {_DIPHTHONGS_} \** same thing **\
|
153
202
|
\endif
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
203
|
+
|
204
|
+
{_LONG_A_} === ARA {A_SHAPE}
|
205
|
+
{_LONG_E_} === ARA E_TEHTA
|
206
|
+
{_LONG_I_} === ARA I_TEHTA
|
207
|
+
{_LONG_O_} === ARA {O_LOOP}
|
208
|
+
{_LONG_U_} === ARA {U_LOOP}
|
209
|
+
{_LONE_LONG_A_} === {_LONG_A_}
|
210
|
+
{_LONE_LONG_E_} === {_LONG_E_}
|
211
|
+
{_LONE_LONG_I_} === {_LONG_I_}
|
212
|
+
{_LONE_LONG_O_} === {_LONG_O_}
|
213
|
+
{_LONE_LONG_U_} === {_LONG_U_}
|
214
|
+
|
215
|
+
{LTEHTAR} === {NULL}
|
216
|
+
{_LTEHTAR_} === {NULL}
|
217
|
+
|
218
|
+
\if implicit_a
|
219
|
+
{_LONG_A_} === {A_SHAPE} \** Eat the long a **\
|
220
|
+
{_LONE_LONG_A_} === TELCO {A_SHAPE} \** Eat the long a **\
|
221
|
+
{LTEHTAR} === {LTEHTAR} * á
|
222
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_A_}
|
168
223
|
\endif
|
224
|
+
|
225
|
+
\if "long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR"
|
226
|
+
\** REMOVED BECAUSE UNATTESTED
|
227
|
+
\if "double_tehta_a && !implicit_a"
|
228
|
+
{_LONG_A_} === A_TEHTA_DOUBLE
|
229
|
+
{_LONE_LONG_A_} === TELCO {_LONG_A_}
|
230
|
+
{LTEHTAR} === {LTEHTAR} * á
|
231
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_A_}
|
232
|
+
\endif
|
233
|
+
**\
|
234
|
+
\if double_tehta_e
|
235
|
+
{_LONG_E_} === E_TEHTA_DOUBLE
|
236
|
+
{_LONE_LONG_E_} === TELCO {_LONG_E_}
|
237
|
+
{LTEHTAR} === {LTEHTAR} * é
|
238
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_E_}
|
239
|
+
\endif
|
240
|
+
\if double_tehta_i
|
241
|
+
{_LONG_I_} === I_TEHTA_DOUBLE
|
242
|
+
{_LONE_LONG_I_} === TELCO {_LONG_I_}
|
243
|
+
{LTEHTAR} === {LTEHTAR} * í
|
244
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_I_}
|
245
|
+
\endif
|
246
|
+
\if double_tehta_o
|
247
|
+
{_LONG_O_} === {O_LOOP_DOUBLE}
|
248
|
+
{_LONE_LONG_O_} === TELCO {_LONG_O_}
|
249
|
+
{LTEHTAR} === {LTEHTAR} * ó
|
250
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_O_}
|
251
|
+
\endif
|
252
|
+
\if double_tehta_u
|
253
|
+
{_LONG_U_} === {U_LOOP_DOUBLE}
|
254
|
+
{_LONE_LONG_U_} === TELCO {_LONG_U_}
|
255
|
+
{LTEHTAR} === {LTEHTAR} * ú
|
256
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_U_}
|
257
|
+
\endif
|
258
|
+
\endif
|
259
|
+
|
260
|
+
\** images of long vowels, either tehtar or ara versions **\
|
261
|
+
{_LVOWELS_} === {_LONG_A_} * {_LONG_E_} * {_LONG_I_} * {_LONG_O_} * {_LONG_U_}
|
262
|
+
|
263
|
+
{WLONG} === * {LVOWELS}
|
264
|
+
{_WLONG_} === * {_LVOWELS_}
|
169
265
|
|
170
266
|
{V_D} === [ {VOWELS} {WLONG} {WDIPHTHONGS} ]
|
171
267
|
{V_D_WN} === [ {VOWELS} {WLONG} {WDIPHTHONGS} * {NULL} ]
|
172
268
|
|
173
269
|
{_V_D_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} ]
|
174
270
|
{_V_D_WN_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} * {_NVOWEL_} ]
|
175
|
-
|
176
|
-
|
271
|
+
|
272
|
+
\** LONE SHORT VOWELS **\
|
177
273
|
[{VOWELS}] --> TELCO [{_TEHTAR_}] \** Replace isolated short vowels **\
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
[{LVOWELS}] --> [{_LTEHTAR_}] \** Replace long vowels **\
|
182
|
-
\endif
|
274
|
+
|
275
|
+
\** LONE LONG VOWELS **\
|
276
|
+
[{LVOWELS}] --> [{_LONE_LONG_A_} * {_LONE_LONG_E_} * {_LONE_LONG_I_} * {_LONE_LONG_O_} * {_LONE_LONG_U_}]
|
183
277
|
|
184
278
|
\if !split_diphthongs
|
185
279
|
[{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
|
@@ -192,8 +286,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
192
286
|
{_L1_} === TINCO * PARMA * CALMA * QUESSE
|
193
287
|
|
194
288
|
\** GEMINATED **\
|
195
|
-
{L1_1_GEMS} === tt
|
196
|
-
{_L1_1_GEMS_} === TINCO
|
289
|
+
{L1_1_GEMS} === tt * pp * {K}{K}
|
290
|
+
{_L1_1_GEMS_} === TINCO {GEMINATE} * PARMA {GEMINATE} * CALMA {GEMINATE}
|
197
291
|
|
198
292
|
\** NORMAL **\
|
199
293
|
[ {L1} * {L1_1_GEMS} ] {V_D_WN} --> [ {_L1_} * {_L1_1_GEMS_} ] {_V_D_WN_}
|
@@ -202,8 +296,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
202
296
|
ty{V_D_WN} --> TINCO PALATAL_SIGN {_V_D_WN_}
|
203
297
|
py{V_D_WN} --> PARMA PALATAL_SIGN {_V_D_WN_}
|
204
298
|
|
205
|
-
|
206
|
-
|
299
|
+
\** For alveolarized consonants, we must put the alveolar_sign just after the tengwa
|
300
|
+
because else, FreeMonoTengwar will not handle well the ligature. Anyway, this is
|
301
|
+
more logical, but the tehta placement will not be perfect for older fonts **\
|
302
|
+
ts{V_D_WN} --> TINCO ALVEOLAR_SIGN {_V_D_WN_}
|
303
|
+
ps{V_D_WN} --> PARMA ALVEOLAR_SIGN {_V_D_WN_}
|
207
304
|
{K}s{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_}
|
208
305
|
x{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_} \** render ks for x **\
|
209
306
|
|
@@ -225,7 +322,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
225
322
|
\if "voiced_plosives_treatment == VOICED_PLOSIVES_AS_NASALIZED"
|
226
323
|
[{L2_UN}]{V_D_WN} --> [{_L2_}] {_V_D_WN_}
|
227
324
|
\elsif "voiced_plosives_treatment == VOICED_PLOSIVES_WITH_STROKE"
|
228
|
-
[{L2_UN}]{V_D_WN} --> [{_L2_}]
|
325
|
+
[{L2_UN}]{V_D_WN} --> [{_L2_}] THINF_STROKE {_V_D_WN_}
|
229
326
|
\else
|
230
327
|
{_L2_UN_} === TW_EXT_21 * TW_EXT_22 * TW_EXT_23 * TW_EXT_24
|
231
328
|
[{L2_UN}]{V_D_WN} --> [{_L2_UN_}] {_V_D_WN_}
|
@@ -252,7 +349,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
252
349
|
|
253
350
|
\** Override h with vowels (descendent of hy) **\
|
254
351
|
_h{V_D} --> HYARMEN {_V_D_}
|
255
|
-
|
352
|
+
\** Starting voiced h before long vowels **\
|
353
|
+
_h[{LVOWELS}] --> HYARMEN [{_LVOWELS_}]
|
256
354
|
|
257
355
|
(h,χ) --> AHA
|
258
356
|
|
@@ -276,9 +374,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
276
374
|
[{L5}]{V_D_WN} --> [{_L5_}]{_V_D_WN_}
|
277
375
|
|
278
376
|
ny{V_D_WN} --> NUMEN PALATAL_SIGN {_V_D_WN_}
|
279
|
-
nn{V_D_WN} --> NUMEN
|
377
|
+
nn{V_D_WN} --> NUMEN {GEMINATE} {_V_D_WN_}
|
280
378
|
my{V_D_WN} --> MALTA PALATAL_SIGN {_V_D_WN_}
|
281
|
-
mm{V_D_WN} --> MALTA
|
379
|
+
mm{V_D_WN} --> MALTA {GEMINATE} {_V_D_WN_}
|
282
380
|
|
283
381
|
\** ===================== **\
|
284
382
|
\** 6TH LINE RULES **\
|
@@ -295,13 +393,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
295
393
|
|
296
394
|
[{L6}]{V_D_WN} --> [{_L6_}]{_V_D_WN_}
|
297
395
|
|
298
|
-
\** r before long vowels is voiced **\
|
299
|
-
r[{LVOWELS}] --> ROMEN [{_LTEHTAR_}]
|
300
|
-
|
301
396
|
\** Override rule r + null **\
|
302
397
|
r --> {_LONE_R_}
|
303
398
|
|
304
|
-
rr{V_D_WN} --> ROMEN
|
399
|
+
rr{V_D_WN} --> ROMEN {GEMINATE} {_V_D_WN_}
|
305
400
|
ry{V_D_WN} --> ROMEN PALATAL_SIGN {_V_D_WN_}
|
306
401
|
rd{V_D_WN} --> ARDA {_V_D_WN_}
|
307
402
|
|
@@ -309,7 +404,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
309
404
|
\** L LINE RULES **\
|
310
405
|
\** ===================== **\
|
311
406
|
{LINE_L} === l * ld * ll
|
312
|
-
{_LINE_L_} === LAMBE * ALDA * LAMBE
|
407
|
+
{_LINE_L_} === LAMBE * ALDA * LAMBE {GEMINATE}
|
313
408
|
|
314
409
|
[{LINE_L}]{V_D_WN} --> [{_LINE_L_}]{_V_D_WN_}
|
315
410
|
|
@@ -320,22 +415,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
320
415
|
\** ===================== **\
|
321
416
|
\** S/Z LINE RULES **\
|
322
417
|
\** ===================== **\
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
{
|
333
|
-
|
334
|
-
|
335
|
-
sá --> SILME_NUQUERNA {A_SHAPE}
|
336
|
-
{SS}á --> ESSE_NUQUERNA {A_SHAPE}
|
337
|
-
\endif
|
338
|
-
|
418
|
+
|
419
|
+
\** SILME is a bit tricky : the shape is not linked to voicing but to a tehta presence or not **\
|
420
|
+
{L8} === s * {SS}
|
421
|
+
{_L8_TEHTAR_} === SILME_NUQUERNA * ESSE_NUQUERNA
|
422
|
+
{_L8_NO_TEHTAR_} === SILME * ESSE
|
423
|
+
|
424
|
+
[{L8}][{VOWELS}] --> [{_L8_TEHTAR_}][{_TEHTAR_}]
|
425
|
+
[{L8}][{LTEHTAR}] --> [{_L8_TEHTAR_}][{_LTEHTAR_}]
|
426
|
+
|
427
|
+
{L8} --> {_L8_NO_TEHTAR_}
|
428
|
+
{L8}[{DIPHTHONGS}] --> {_L8_NO_TEHTAR_}[{_DIPHTHONGS_}]
|
429
|
+
|
339
430
|
\end
|
340
431
|
|
341
432
|
\beg rules punctuation
|