glaemscribe 1.0.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 +7 -0
- data/LICENSE.txt +19 -0
- data/bin/glaemscribe +307 -0
- data/glaemresources/charsets/cirth_ds.cst +205 -0
- data/glaemresources/charsets/sarati_eldamar.cst +256 -0
- data/glaemresources/charsets/tengwar_ds.cst +318 -0
- data/glaemresources/charsets/unicode_gothic.cst +64 -0
- data/glaemresources/charsets/unicode_runes.cst +120 -0
- data/glaemresources/modes/adunaic.glaem +251 -0
- data/glaemresources/modes/blackspeech-annatar.glaem +318 -0
- data/glaemresources/modes/blackspeech.glaem +260 -0
- data/glaemresources/modes/gothic.glaem +78 -0
- data/glaemresources/modes/khuzdul.glaem +141 -0
- data/glaemresources/modes/mercian.glaem +419 -0
- data/glaemresources/modes/oldnorse-medieval.glaem +127 -0
- data/glaemresources/modes/quenya-sarati.glaem +320 -0
- data/glaemresources/modes/quenya.glaem +307 -0
- data/glaemresources/modes/sindarin-beleriand.glaem +285 -0
- data/glaemresources/modes/sindarin-classical.glaem +276 -0
- data/glaemresources/modes/sindarin-daeron.glaem +182 -0
- data/glaemresources/modes/telerin.glaem +302 -0
- data/glaemresources/modes/valarin-sarati.glaem +210 -0
- data/glaemresources/modes/westron.glaem +340 -0
- data/glaemresources/modes/westsaxon.glaem +342 -0
- data/lib/api/charset.rb +84 -0
- data/lib/api/charset_parser.rb +55 -0
- data/lib/api/constants.rb +29 -0
- data/lib/api/debug.rb +36 -0
- data/lib/api/eval.rb +268 -0
- data/lib/api/fragment.rb +113 -0
- data/lib/api/glaeml.rb +200 -0
- data/lib/api/if_tree.rb +96 -0
- data/lib/api/mode.rb +112 -0
- data/lib/api/mode_parser.rb +314 -0
- data/lib/api/option.rb +64 -0
- data/lib/api/post_processor/reverse.rb +36 -0
- data/lib/api/pre_processor/downcase.rb +35 -0
- data/lib/api/pre_processor/elvish_numbers.rb +47 -0
- data/lib/api/pre_processor/rxsubstitute.rb +40 -0
- data/lib/api/pre_processor/substitute.rb +38 -0
- data/lib/api/pre_processor/up_down_tehta_split.rb +138 -0
- data/lib/api/resource_manager.rb +130 -0
- data/lib/api/rule.rb +99 -0
- data/lib/api/rule_group.rb +159 -0
- data/lib/api/sheaf.rb +70 -0
- data/lib/api/sheaf_chain.rb +86 -0
- data/lib/api/sheaf_chain_iterator.rb +108 -0
- data/lib/api/sub_rule.rb +40 -0
- data/lib/api/transcription_pre_post_processor.rb +118 -0
- data/lib/api/transcription_processor.rb +137 -0
- data/lib/api/transcription_tree_node.rb +91 -0
- data/lib/glaemscribe.rb +70 -0
- metadata +112 -0
@@ -0,0 +1,285 @@
|
|
1
|
+
\**
|
2
|
+
|
3
|
+
Glǽmscribe (also written Glaemscribe) is a software dedicated to
|
4
|
+
the transcription of texts between writing systems, and more
|
5
|
+
specifically dedicated to the transcription of J.R.R. Tolkien's
|
6
|
+
invented languages to some of his devised writing systems.
|
7
|
+
|
8
|
+
Copyright (C) 2015 Benjamin Babut (Talagan).
|
9
|
+
|
10
|
+
This program is free software: you can redistribute it and/or modify
|
11
|
+
it under the terms of the GNU Affero General Public License as published by
|
12
|
+
the Free Software Foundation, either version 3 of the License, or
|
13
|
+
any later version.
|
14
|
+
|
15
|
+
This program is distributed in the hope that it will be useful,
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
GNU Affero General Public License for more details.
|
19
|
+
|
20
|
+
You should have received a copy of the GNU Affero General Public License
|
21
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
22
|
+
|
23
|
+
**\
|
24
|
+
|
25
|
+
\** Sindarin Beleriand mode 0.5 for jrrtranscribe (MAY BE INCOMPLETE) **\
|
26
|
+
|
27
|
+
\language "Sindarin"
|
28
|
+
\writing "Tengwar"
|
29
|
+
\mode "Beleriand"
|
30
|
+
\version "0.0.1"
|
31
|
+
\authors "Talagan (Benjamin Babut)"
|
32
|
+
|
33
|
+
\charset tengwar_ds true
|
34
|
+
|
35
|
+
\beg options
|
36
|
+
\option reverse_numbers true
|
37
|
+
\beg option numbers_base BASE_12
|
38
|
+
\value BASE_10 10
|
39
|
+
\value BASE_12 12
|
40
|
+
\end
|
41
|
+
\end
|
42
|
+
|
43
|
+
\beg preprocessor
|
44
|
+
\** Work exclusively downcase **\
|
45
|
+
\downcase
|
46
|
+
|
47
|
+
\** Simplify trema vowels **\
|
48
|
+
\substitute ä a
|
49
|
+
\substitute ë e
|
50
|
+
\substitute ï i
|
51
|
+
\substitute ö o
|
52
|
+
\substitute ü u
|
53
|
+
\substitute ÿ y
|
54
|
+
|
55
|
+
\** We should do better for that one (todo) **\
|
56
|
+
\substitute œ e
|
57
|
+
|
58
|
+
\** Dis-ambiguate long vowels **\
|
59
|
+
\rxsubstitute "(ā|â|aa)" "á"
|
60
|
+
\rxsubstitute "(ē|ê|ee)" "é"
|
61
|
+
\rxsubstitute "(ī|î|ii)" "í"
|
62
|
+
\rxsubstitute "(ō|ô|oo)" "ó"
|
63
|
+
\rxsubstitute "(ū|û|uu)" "ú"
|
64
|
+
\rxsubstitute "(ȳ|ŷ|yy)" "ý"
|
65
|
+
|
66
|
+
\** Special case of starting 'i' before vowels, replace i by j **\
|
67
|
+
\rxsubstitute "\\bi([aeouyáāâéēêíīîóōôúūûýȳŷ])" "j\\1"
|
68
|
+
|
69
|
+
\** Preprocess numbers **\
|
70
|
+
\elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
|
71
|
+
\end
|
72
|
+
|
73
|
+
\beg processor
|
74
|
+
|
75
|
+
\beg rules litteral
|
76
|
+
{A} === a
|
77
|
+
{AA} === á
|
78
|
+
{E} === e
|
79
|
+
{EE} === é
|
80
|
+
{I} === i
|
81
|
+
{II} === í
|
82
|
+
{O} === o
|
83
|
+
{OO} === ó
|
84
|
+
{U} === u
|
85
|
+
{UU} === ú
|
86
|
+
{Y} === y
|
87
|
+
{YY} === ý
|
88
|
+
|
89
|
+
{AE} === {A}{E}
|
90
|
+
{AI} === {A}{I}
|
91
|
+
{AU} === {A}{U}
|
92
|
+
{AW} === {A}w
|
93
|
+
{EI} === {E}{I}
|
94
|
+
{UI} === {U}{I}
|
95
|
+
{OE} === {O}{E}
|
96
|
+
|
97
|
+
{K} === (c,k)
|
98
|
+
|
99
|
+
\** RULES **\
|
100
|
+
{A} --> OSSE
|
101
|
+
{E} --> YANTA
|
102
|
+
{I} --> TELCO
|
103
|
+
{O} --> ANNA
|
104
|
+
{U} --> URE
|
105
|
+
|
106
|
+
{Y} --> SILME_NUQUERNA_ALT
|
107
|
+
|
108
|
+
{AA} --> OSSE E_TEHTA_S
|
109
|
+
{EE} --> YANTA E_TEHTA_S
|
110
|
+
{II} --> TELCO E_TEHTA_XS
|
111
|
+
{OO} --> ANNA E_TEHTA_S
|
112
|
+
{UU} --> URE E_TEHTA_S
|
113
|
+
{YY} --> SILME_NUQUERNA_ALT E_TEHTA_S
|
114
|
+
|
115
|
+
{AE} --> OSSE YANTA \** Should chose between OSSE YANTA and OSSE THSUP_TICK_INV_L. Old tengscribe had second one, amanye tenceli has first one. **\
|
116
|
+
{AI} --> OSSE THSUP_DDOT_L
|
117
|
+
{AU} --> OSSE THSUP_SEV_L
|
118
|
+
{AW} --> OSSE THSUP_SEV_L
|
119
|
+
{EI} --> YANTA THSUP_DDOT_L
|
120
|
+
{UI} --> URE THSUP_DDOT_L
|
121
|
+
{OE} --> ANNA YANTA
|
122
|
+
|
123
|
+
\** ======== **\
|
124
|
+
\** 1ST LINE **\
|
125
|
+
\** ======== **\
|
126
|
+
{LINE_1ST_KER_1} === t * p
|
127
|
+
{LINE_1ST_IMG_1} === TINCO * PARMA
|
128
|
+
{LINE_1ST_KER_2} === {K}
|
129
|
+
{LINE_1ST_IMG_2} === CALMA
|
130
|
+
|
131
|
+
[{LINE_1ST_KER_1}] --> [{LINE_1ST_IMG_1}]
|
132
|
+
[{LINE_1ST_KER_2}] --> [{LINE_1ST_IMG_2}]
|
133
|
+
|
134
|
+
nt --> TINCO DASH_SUP_S
|
135
|
+
mp --> PARMA DASH_SUP_S
|
136
|
+
n{K} --> CALMA DASH_SUP_S
|
137
|
+
|
138
|
+
\** ======== **\
|
139
|
+
\** 2ND LINE **\
|
140
|
+
\** ======== **\
|
141
|
+
{LINE_2ND_KER} === d * b * g
|
142
|
+
{LINE_2ND_IMG} === ANDO * UMBAR * ANGA
|
143
|
+
|
144
|
+
[{LINE_2ND_KER}] --> [{LINE_2ND_IMG}]
|
145
|
+
|
146
|
+
mb --> UMBAR DASH_SUP_L
|
147
|
+
nd --> ANDO DASH_SUP_L
|
148
|
+
|
149
|
+
\** ======== **\
|
150
|
+
\** 3RD LINE **\
|
151
|
+
\** ======== **\
|
152
|
+
{LINE_3RD_KER_1} === th * (f,ph,ff)
|
153
|
+
{LINE_3RD_IMG_1} === SULE * FORMEN
|
154
|
+
{LINE_3RD_KER_2} === ch
|
155
|
+
{LINE_3RD_IMG_2} === AHA
|
156
|
+
|
157
|
+
[{LINE_3RD_KER_1}] --> [{LINE_3RD_IMG_1}]
|
158
|
+
[{LINE_3RD_KER_2}] --> [{LINE_3RD_IMG_2}]
|
159
|
+
|
160
|
+
nth --> SULE DASH_SUP_S
|
161
|
+
mph --> FORMEN DASH_SUP_S
|
162
|
+
nf --> FORMEN DASH_SUP_S
|
163
|
+
nch --> AHA DASH_SUP_S
|
164
|
+
|
165
|
+
\** ======== **\
|
166
|
+
\** 4TH LINE **\
|
167
|
+
\** ======== **\
|
168
|
+
{LINE_4TH_KER} === (ð,ðh,dh) * (v,bh,f_)
|
169
|
+
{LINE_4TH_IMG} === ANTO * AMPA
|
170
|
+
|
171
|
+
[{LINE_4TH_KER}] --> [{LINE_4TH_IMG}]
|
172
|
+
|
173
|
+
\** ======== **\
|
174
|
+
\** 5TH LINE **\
|
175
|
+
\** ======== **\
|
176
|
+
{LINE_5TH_KER} === nn * mm * ng
|
177
|
+
{LINE_5TH_IMG} === NUMEN * MALTA * NOLDO
|
178
|
+
|
179
|
+
[{LINE_5TH_KER}] --> [{LINE_5TH_IMG}]
|
180
|
+
|
181
|
+
\** ======== **\
|
182
|
+
\** 6TH LINE **\
|
183
|
+
\** ======== **\
|
184
|
+
{LINE_6TH_KER} === n * m * w * _mh
|
185
|
+
{LINE_6TH_IMG} === ORE * VALA * VILYA * MALTA_W_HOOK
|
186
|
+
|
187
|
+
[{LINE_6TH_KER}] --> [{LINE_6TH_IMG}]
|
188
|
+
|
189
|
+
\** ======== **\
|
190
|
+
\** R/L LINE **\
|
191
|
+
\** ======== **\
|
192
|
+
{LINE_L_KER} === r * _rh * l * _lh
|
193
|
+
{LINE_L_IMG} === ROMEN * ARDA * LAMBE * ALDA
|
194
|
+
|
195
|
+
[{LINE_L_KER}] --> [{LINE_L_IMG}]
|
196
|
+
|
197
|
+
\** ======== **\
|
198
|
+
\** S/Z LINE **\
|
199
|
+
\** ======== **\
|
200
|
+
{LINE_8TH_KER} === s
|
201
|
+
{LINE_8TH_IMG} === SILME
|
202
|
+
|
203
|
+
[{LINE_8TH_KER}] --> [{LINE_8TH_IMG}]
|
204
|
+
|
205
|
+
ns --> SILME_NUQUERNA DASH_SUP_S
|
206
|
+
|
207
|
+
\** ======== **\
|
208
|
+
\** OTHERS **\
|
209
|
+
\** ======== **\
|
210
|
+
|
211
|
+
j --> ARA
|
212
|
+
|
213
|
+
h --> HYARMEN
|
214
|
+
|
215
|
+
hw --> HWESTA_SINDARINWA
|
216
|
+
gw --> ANGA THSUP_SEV_XL
|
217
|
+
dw --> ANDO THSUP_SEV_XL
|
218
|
+
nw --> ORE THSUP_SEV_L
|
219
|
+
rw --> ROMEN THSUP_SEV_L
|
220
|
+
\end
|
221
|
+
|
222
|
+
\beg rules punctuation
|
223
|
+
. --> PUNCT_DDOT
|
224
|
+
.. --> PUNCT_DOT PUNCT_DDOT PUNCT_DOT
|
225
|
+
... --> PUNCT_TILD
|
226
|
+
… --> PUNCT_TILD
|
227
|
+
.... --> PUNCT_TILD
|
228
|
+
..... --> PUNCT_TILD
|
229
|
+
...... --> PUNCT_TILD
|
230
|
+
....... --> PUNCT_TILD
|
231
|
+
|
232
|
+
, --> PUNCT_DOT
|
233
|
+
: --> PUNCT_DOT
|
234
|
+
; --> PUNCT_DOT
|
235
|
+
! --> PUNCT_EXCLAM
|
236
|
+
? --> PUNCT_INTERR
|
237
|
+
· --> {NULL}
|
238
|
+
|
239
|
+
- --> {NULL}
|
240
|
+
– --> PUNCT_TILD
|
241
|
+
— --> PUNCT_TILD
|
242
|
+
|
243
|
+
\** Apostrophe **\
|
244
|
+
|
245
|
+
' --> {NULL}
|
246
|
+
’ --> {NULL}
|
247
|
+
|
248
|
+
\** Quotes **\
|
249
|
+
|
250
|
+
“ --> DQUOT_OPEN
|
251
|
+
” --> DQUOT_CLOSE
|
252
|
+
« --> DQUOT_OPEN
|
253
|
+
» --> DQUOT_CLOSE
|
254
|
+
|
255
|
+
[ --> PUNCT_PAREN_L
|
256
|
+
] --> PUNCT_PAREN_R
|
257
|
+
( --> PUNCT_PAREN_L
|
258
|
+
) --> PUNCT_PAREN_R
|
259
|
+
{ --> PUNCT_PAREN_L
|
260
|
+
} --> PUNCT_PAREN_R
|
261
|
+
< --> PUNCT_PAREN_L
|
262
|
+
> --> PUNCT_PAREN_R
|
263
|
+
|
264
|
+
\** Not universal between fonts ... **\
|
265
|
+
$ --> BOOKMARK_SIGN
|
266
|
+
≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
|
267
|
+
≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
|
268
|
+
\end
|
269
|
+
|
270
|
+
\beg rules numbers
|
271
|
+
0 --> NUM_0
|
272
|
+
1 --> NUM_1
|
273
|
+
2 --> NUM_2
|
274
|
+
3 --> NUM_3
|
275
|
+
4 --> NUM_4
|
276
|
+
5 --> NUM_5
|
277
|
+
6 --> NUM_6
|
278
|
+
7 --> NUM_7
|
279
|
+
8 --> NUM_8
|
280
|
+
9 --> NUM_9
|
281
|
+
A --> NUM_10
|
282
|
+
B --> NUM_11
|
283
|
+
\end
|
284
|
+
|
285
|
+
\end
|
@@ -0,0 +1,276 @@
|
|
1
|
+
\**
|
2
|
+
|
3
|
+
Glǽmscribe (also written Glaemscribe) is a software dedicated to
|
4
|
+
the transcription of texts between writing systems, and more
|
5
|
+
specifically dedicated to the transcription of J.R.R. Tolkien's
|
6
|
+
invented languages to some of his devised writing systems.
|
7
|
+
|
8
|
+
Copyright (C) 2015 Benjamin Babut (Talagan).
|
9
|
+
|
10
|
+
This program is free software: you can redistribute it and/or modify
|
11
|
+
it under the terms of the GNU Affero General Public License as published by
|
12
|
+
the Free Software Foundation, either version 3 of the License, or
|
13
|
+
any later version.
|
14
|
+
|
15
|
+
This program is distributed in the hope that it will be useful,
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
GNU Affero General Public License for more details.
|
19
|
+
|
20
|
+
You should have received a copy of the GNU Affero General Public License
|
21
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
22
|
+
|
23
|
+
**\
|
24
|
+
|
25
|
+
\** Sindarin Classical mode for glaemscribe (MAY BE INCOMPLETE) **\
|
26
|
+
|
27
|
+
\language "Sindarin"
|
28
|
+
\writing "Tengwar"
|
29
|
+
\mode "Classical"
|
30
|
+
\version "0.0.1"
|
31
|
+
\authors "Talagan (Benjamin Babut)"
|
32
|
+
|
33
|
+
\charset tengwar_ds true
|
34
|
+
|
35
|
+
\beg options
|
36
|
+
\option reverse_numbers true
|
37
|
+
\beg option numbers_base BASE_12
|
38
|
+
\value BASE_10 10
|
39
|
+
\value BASE_12 12
|
40
|
+
\end
|
41
|
+
\end
|
42
|
+
|
43
|
+
\beg preprocessor
|
44
|
+
\** Work exclusively downcase **\
|
45
|
+
\downcase
|
46
|
+
|
47
|
+
\** Simplify trema vowels **\
|
48
|
+
\substitute ä a
|
49
|
+
\substitute ë e
|
50
|
+
\substitute ï i
|
51
|
+
\substitute ö o
|
52
|
+
\substitute ü u
|
53
|
+
\substitute ÿ y
|
54
|
+
|
55
|
+
\** We should do better for that one (todo) **\
|
56
|
+
\substitute œ e
|
57
|
+
|
58
|
+
\** Dis-ambiguate long vowels **\
|
59
|
+
\rxsubstitute "(ā|â|aa)" "á"
|
60
|
+
\rxsubstitute "(ē|ê|ee)" "é"
|
61
|
+
\rxsubstitute "(ī|î|ii)" "í"
|
62
|
+
\rxsubstitute "(ō|ô|oo)" "ó"
|
63
|
+
\rxsubstitute "(ū|û|uu)" "ú"
|
64
|
+
\rxsubstitute "(ȳ|ŷ|yy)" "ý"
|
65
|
+
|
66
|
+
\** Special case of starting 'i' before vowels, replace i by j **\
|
67
|
+
\rxsubstitute "\\bi([aeouyáāâéēêíīîóōôúūûýȳŷ])" "j\\1"
|
68
|
+
|
69
|
+
\** Preprocess numbers **\
|
70
|
+
\elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
|
71
|
+
\end
|
72
|
+
|
73
|
+
\beg processor
|
74
|
+
|
75
|
+
\beg rules litteral
|
76
|
+
|
77
|
+
\** VOWELS **\
|
78
|
+
{A} === a
|
79
|
+
{AA} === á
|
80
|
+
{E} === e
|
81
|
+
{EE} === é
|
82
|
+
{I} === i
|
83
|
+
{II} === í
|
84
|
+
{O} === o
|
85
|
+
{OO} === ó
|
86
|
+
{U} === u
|
87
|
+
{UU} === ú
|
88
|
+
{Y} === y
|
89
|
+
{YY} === ý
|
90
|
+
|
91
|
+
{AE} === {A}{E}
|
92
|
+
{AI} === {A}{I}
|
93
|
+
{AU} === {A}{U}
|
94
|
+
{AW} === {A}w
|
95
|
+
{EI} === {E}{I}
|
96
|
+
{OE} === {O}{E}
|
97
|
+
{UI} === {U}{I}
|
98
|
+
|
99
|
+
\** CONSONANTS **\
|
100
|
+
{K} === (c,k)
|
101
|
+
|
102
|
+
{VOWELS} === {A} * {E} * {I} * {O} * {U} * {Y}
|
103
|
+
{LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU} * {YY}
|
104
|
+
|
105
|
+
|
106
|
+
{TEHTA_XS} === A_TEHTA_XS * E_TEHTA_XS * I_TEHTA_XS * O_TEHTA_XS * U_TEHTA_XS * Y_TEHTA_XS
|
107
|
+
{TEHTA__S} === A_TEHTA_S * E_TEHTA_S * I_TEHTA_S * O_TEHTA_S * U_TEHTA_S * Y_TEHTA_S
|
108
|
+
{TEHTA__L} === A_TEHTA_L * E_TEHTA_L * I_TEHTA_L * O_TEHTA_L * U_TEHTA_L * Y_TEHTA_L
|
109
|
+
{TEHTA_XL} === A_TEHTA_XL * E_TEHTA_XL * I_TEHTA_XL * O_TEHTA_XL * U_TEHTA_XL * Y_TEHTA_XL
|
110
|
+
|
111
|
+
{LVOWELS_IMG} === ARA A_TEHTA_XS * ARA E_TEHTA_XS * ARA I_TEHTA_XS * ARA O_TEHTA_XS * ARA U_TEHTA_XS * ARA Y_TEHTA_XS
|
112
|
+
|
113
|
+
{DIPHTHONGS} === {AI} * {AU} * {AW} * {EI} * {UI} * {AE} * {OE}
|
114
|
+
{DIPHTHENGS} === ANNA A_TEHTA_L * VALA A_TEHTA_S * VALA A_TEHTA_S * ANNA E_TEHTA_S * ANNA U_TEHTA_L * YANTA A_TEHTA_S * YANTA O_TEHTA_S
|
115
|
+
|
116
|
+
\** Consonants + Vowels, we will often need these ones **\
|
117
|
+
{V_D_KER} === [ {VOWELS} ]
|
118
|
+
{V_D_KER_WN} === [ {VOWELS} * {NULL} ]
|
119
|
+
|
120
|
+
{V_D_IMG_XS} === [ {TEHTA_XS} ]
|
121
|
+
{V_D_IMG__S} === [ {TEHTA__L} ]
|
122
|
+
{V_D_IMG__L} === [ {TEHTA__S} ]
|
123
|
+
{V_D_IMG_XL} === [ {TEHTA_XL} ]
|
124
|
+
{V_D_IMG_XS_WN} === [ {TEHTA_XS} * {NULL} ]
|
125
|
+
{V_D_IMG__S_WN} === [ {TEHTA__L} * {NULL} ]
|
126
|
+
{V_D_IMG__L_WN} === [ {TEHTA__S} * {NULL} ]
|
127
|
+
{V_D_IMG_XL_WN} === [ {TEHTA_XL} * {NULL} ]
|
128
|
+
|
129
|
+
\** Vowel rules **\
|
130
|
+
[{VOWELS}] --> TELCO [{TEHTA_XS}] \** Replace isolated short vowels **\
|
131
|
+
[{LVOWELS}] --> [{LVOWELS_IMG}] \** Replace long vowels **\
|
132
|
+
[{DIPHTHONGS}] --> [{DIPHTHENGS}] \** Replace diphthongs **\
|
133
|
+
|
134
|
+
\** 1ST LINE **\
|
135
|
+
{LINE_1ST_KER_1} === t * p
|
136
|
+
{LINE_1ST_IMG_1} === TINCO * PARMA
|
137
|
+
{LINE_1ST_KER_2} === {K}
|
138
|
+
{LINE_1ST_IMG_2} === QUESSE
|
139
|
+
|
140
|
+
{V_D_KER_WN}[{LINE_1ST_KER_1}] --> 2,1 --> [{LINE_1ST_IMG_1}]{V_D_IMG__S_WN}
|
141
|
+
{V_D_KER_WN}[{LINE_1ST_KER_2}] --> 2,1 --> [{LINE_1ST_IMG_2}]{V_D_IMG__S_WN}
|
142
|
+
|
143
|
+
{V_D_KER_WN}nt --> TINCO DASH_SUP_S {V_D_IMG__S_WN}
|
144
|
+
{V_D_KER_WN}mp --> PARMA DASH_SUP_S {V_D_IMG__S_WN}
|
145
|
+
{V_D_KER_WN}n{K} --> CALMA DASH_SUP_S {V_D_IMG__S_WN}
|
146
|
+
|
147
|
+
\** 2ND LINE **\
|
148
|
+
{LINE_2ND_KER} === d * b * g * ng \** * g **\
|
149
|
+
{LINE_2ND_IMG} === ANDO * UMBAR * UNGWE * UNGWE DASH_SUP_L \** * s **\
|
150
|
+
|
151
|
+
{V_D_KER_WN}[{LINE_2ND_KER}] --> 2,1 --> [{LINE_2ND_IMG}]{V_D_IMG_XL_WN}
|
152
|
+
|
153
|
+
{V_D_KER_WN}mb --> UMBAR DASH_SUP_L {V_D_IMG__S_WN}
|
154
|
+
{V_D_KER_WN}nd --> ANDO DASH_SUP_L {V_D_IMG_XL_WN}
|
155
|
+
|
156
|
+
\** 3RD LINE **\
|
157
|
+
{LINE_3RD_KER_1} === th * (f,ph,ff)
|
158
|
+
{LINE_3RD_IMG_1} === SULE * FORMEN
|
159
|
+
{LINE_3RD_KER_2} === ch
|
160
|
+
{LINE_3RD_IMG_2} === HWESTA
|
161
|
+
|
162
|
+
{V_D_KER_WN}[{LINE_3RD_KER_1}] --> 2,1 --> [{LINE_3RD_IMG_1}]{V_D_IMG__S_WN}
|
163
|
+
{V_D_KER_WN}[{LINE_3RD_KER_2}] --> 2,1 --> [{LINE_3RD_IMG_2}]{V_D_IMG__L_WN} \** Tengscribe uses _S **\
|
164
|
+
|
165
|
+
{V_D_KER_WN}nth --> SULE DASH_SUP_S {V_D_IMG__S_WN}
|
166
|
+
{V_D_KER_WN}mph --> FORMEN DASH_SUP_S {V_D_IMG__S_WN}
|
167
|
+
{V_D_KER_WN}nf --> FORMEN DASH_SUP_S {V_D_IMG_XL_WN}
|
168
|
+
{V_D_KER_WN}nch --> HWESTA DASH_SUP_S {V_D_IMG__S_WN}
|
169
|
+
|
170
|
+
\** 4TH LINE **\
|
171
|
+
{LINE_4TH_KER} === (ð,ðh,dh) * (v,bh,f_) \** Some noldorin variants here ... **\
|
172
|
+
{LINE_4TH_IMG} === ANTO * AMPA
|
173
|
+
{V_D_KER_WN}[{LINE_4TH_KER}] --> 2,1 --> [{LINE_4TH_IMG}]{V_D_IMG__L_WN}
|
174
|
+
|
175
|
+
\** 5TH LINE **\
|
176
|
+
{LINE_5TH_KER} === n * m * _ng * _mh
|
177
|
+
{LINE_5TH_IMG} === NUMEN * MALTA * NWALME * MALTA_W_HOOK
|
178
|
+
|
179
|
+
{V_D_KER_WN}[{LINE_5TH_KER}] --> 2,1 --> [{LINE_5TH_IMG}]{V_D_IMG_XL_WN}
|
180
|
+
|
181
|
+
{V_D_KER_WN}nn --> NUMEN DASH_SUP_L {V_D_IMG_XL_WN}
|
182
|
+
{V_D_KER_WN}mm --> MALTA DASH_SUP_L {V_D_IMG_XL_WN}
|
183
|
+
|
184
|
+
\** 6TH LINE **\
|
185
|
+
|
186
|
+
\** 7TH LINE **\
|
187
|
+
{LINE_L_KER} === r_ * r * _rh * l * _lh * ll * w
|
188
|
+
{LINE_L_IMG} === ORE * ROMEN * ARDA * LAMBE * ALDA * LAMBE LAMBE_MARK_TILD * VALA
|
189
|
+
|
190
|
+
{V_D_KER_WN}[{LINE_L_KER}] --> 2,1 --> [{LINE_L_IMG}]{V_D_IMG__S_WN}
|
191
|
+
|
192
|
+
\** S/Z LINE **\
|
193
|
+
{LINE_8TH_KER} === s * y * ss
|
194
|
+
{LINE_8TH_IMG} === SILME_NUQUERNA * SILME_NUQUERNA_ALT * ESSE_NUQUERNA
|
195
|
+
|
196
|
+
{V_D_KER_WN}[{LINE_8TH_KER}] --> 2,1 --> [{LINE_8TH_IMG}]{V_D_IMG__S_WN}
|
197
|
+
|
198
|
+
{V_D_KER_WN}ns --> SILME_NUQUERNA DASH_SUP_S {V_D_IMG__S_WN}
|
199
|
+
|
200
|
+
s --> SILME
|
201
|
+
|
202
|
+
\** OTHERS **\
|
203
|
+
j --> YANTA
|
204
|
+
|
205
|
+
{V_D_KER_WN}h --> HYARMEN {V_D_IMG__S_WN}
|
206
|
+
{V_D_KER_WN}hw --> HWESTA_SINDARINWA {V_D_IMG__S_WN}
|
207
|
+
|
208
|
+
{V_D_KER_WN}gw --> UNGWE THSUP_SEV_XL {V_D_IMG__S_WN}
|
209
|
+
{V_D_KER_WN}dw --> ANDO THSUP_SEV_XS {V_D_IMG_XL_WN}
|
210
|
+
{V_D_KER_WN}nw --> ORE THSUP_SEV_L {V_D_IMG__S_WN}
|
211
|
+
{V_D_KER_WN}rw --> ROMEN THSUP_SEV_L {V_D_IMG__S_WN}
|
212
|
+
\end
|
213
|
+
|
214
|
+
\beg rules punctuation
|
215
|
+
. --> PUNCT_DDOT
|
216
|
+
.. --> PUNCT_DOT PUNCT_DDOT PUNCT_DOT
|
217
|
+
... --> PUNCT_TILD
|
218
|
+
… --> PUNCT_TILD
|
219
|
+
.... --> PUNCT_TILD
|
220
|
+
..... --> PUNCT_TILD
|
221
|
+
...... --> PUNCT_TILD
|
222
|
+
....... --> PUNCT_TILD
|
223
|
+
|
224
|
+
, --> PUNCT_DOT
|
225
|
+
: --> PUNCT_DOT
|
226
|
+
; --> PUNCT_DOT
|
227
|
+
! --> PUNCT_EXCLAM
|
228
|
+
? --> PUNCT_INTERR
|
229
|
+
· --> {NULL}
|
230
|
+
|
231
|
+
- --> {NULL}
|
232
|
+
– --> PUNCT_TILD
|
233
|
+
— --> PUNCT_TILD
|
234
|
+
|
235
|
+
\** Apostrophe **\
|
236
|
+
|
237
|
+
' --> {NULL}
|
238
|
+
’ --> {NULL}
|
239
|
+
|
240
|
+
\** Quotes **\
|
241
|
+
|
242
|
+
“ --> DQUOT_OPEN
|
243
|
+
” --> DQUOT_CLOSE
|
244
|
+
« --> DQUOT_OPEN
|
245
|
+
» --> DQUOT_CLOSE
|
246
|
+
|
247
|
+
[ --> PUNCT_PAREN_L
|
248
|
+
] --> PUNCT_PAREN_R
|
249
|
+
( --> PUNCT_PAREN_L
|
250
|
+
) --> PUNCT_PAREN_R
|
251
|
+
{ --> PUNCT_PAREN_L
|
252
|
+
} --> PUNCT_PAREN_R
|
253
|
+
< --> PUNCT_PAREN_L
|
254
|
+
> --> PUNCT_PAREN_R
|
255
|
+
|
256
|
+
\** Not universal between fonts ... **\
|
257
|
+
$ --> BOOKMARK_SIGN
|
258
|
+
≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
|
259
|
+
≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
|
260
|
+
\end
|
261
|
+
|
262
|
+
\beg rules numbers
|
263
|
+
0 --> NUM_0
|
264
|
+
1 --> NUM_1
|
265
|
+
2 --> NUM_2
|
266
|
+
3 --> NUM_3
|
267
|
+
4 --> NUM_4
|
268
|
+
5 --> NUM_5
|
269
|
+
6 --> NUM_6
|
270
|
+
7 --> NUM_7
|
271
|
+
8 --> NUM_8
|
272
|
+
9 --> NUM_9
|
273
|
+
A --> NUM_10
|
274
|
+
B --> NUM_11
|
275
|
+
\end
|
276
|
+
\end
|