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
@@ -27,18 +27,56 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
27
27
|
\beg changelog
|
28
28
|
\entry 0.0.1 "First version"
|
29
29
|
\entry 0.0.2 "Ported to virtual chars."
|
30
|
+
\entry 0.0.3 "Merging with blackspeech Annatar".
|
31
|
+
\entry 0.0.4 "Adding double tehtar handling."
|
32
|
+
\entry 0.0.5 "Fixing ORE/ROMEN, refactoring."
|
33
|
+
\entry 0.0.6 "Added support for the FreeMonoTengwar font"
|
34
|
+
\entry "0.1.0" "Added support for the Tengwar Elfica font"
|
30
35
|
\end
|
31
36
|
|
32
37
|
\language "Black Speech"
|
33
38
|
\writing "Tengwar"
|
34
39
|
\mode "General Use"
|
35
|
-
\version "0.0
|
36
|
-
\authors "Talagan (Benjamin Babut)"
|
40
|
+
\version "0.1.0"
|
41
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
37
42
|
|
38
|
-
\charset
|
39
|
-
\charset
|
43
|
+
\charset tengwar_ds_sindarin false
|
44
|
+
\charset tengwar_ds_parmaite false
|
45
|
+
\charset tengwar_ds_eldamar false
|
46
|
+
\charset tengwar_ds_annatar true
|
47
|
+
\charset tengwar_ds_elfica false
|
48
|
+
\charset tengwar_freemono false
|
40
49
|
|
41
50
|
\beg options
|
51
|
+
|
52
|
+
\beg option reverse_o_u_tehtar O_UP_U_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_DOUBLE_TEHTAR
|
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 true
|
63
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
64
|
+
\end
|
65
|
+
\beg option double_tehta_i true
|
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_WAVE
|
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
|
@@ -65,6 +103,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
65
103
|
\rxsubstitute "(ō|ô|oo)" "ó"
|
66
104
|
\rxsubstitute "(ū|û|uu)" "ú"
|
67
105
|
|
106
|
+
\** For ORE/ROMEN **\
|
107
|
+
\rxsubstitute "r(a|e|i|o|u|á|é|í|ó|ú)" "R\\1"
|
108
|
+
|
68
109
|
\** Preprocess numbers **\
|
69
110
|
\elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
|
70
111
|
\end
|
@@ -72,118 +113,151 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
72
113
|
\beg processor
|
73
114
|
|
74
115
|
\beg rules litteral
|
75
|
-
|
76
|
-
{AA} === á
|
77
|
-
{E} === e
|
78
|
-
{EE} === é
|
79
|
-
{I} === i
|
80
|
-
{II} === í
|
81
|
-
{O} === o
|
82
|
-
{OO} === ó
|
83
|
-
{U} === u
|
84
|
-
{UU} === ú
|
85
|
-
|
86
|
-
{AI} === {A}{I} \** attested **\
|
87
|
-
{AU} === {A}{U} \** attested **\
|
88
|
-
{OI} === {O}{I} \** Not quite sure (dushgoi) **\
|
89
|
-
|
116
|
+
|
90
117
|
{K} === (c,k)
|
91
118
|
|
92
|
-
|
93
|
-
|
119
|
+
\if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
|
120
|
+
{GEMINATE} === GEMINATE_SIGN_TILD
|
121
|
+
{NASAL} === NASALIZE_SIGN_TILD
|
122
|
+
\else
|
123
|
+
{GEMINATE} === GEMINATE_SIGN
|
124
|
+
{NASAL} === NASALIZE_SIGN
|
125
|
+
\endif
|
126
|
+
|
127
|
+
{VOWELS} === a * e * i * o * u
|
128
|
+
{LVOWELS} === á * é * í * ó * ú
|
94
129
|
|
95
|
-
|
96
|
-
|
130
|
+
\if "reverse_o_u_tehtar == U_UP_O_DOWN"
|
131
|
+
{O_LOOP} === O_TEHTA
|
132
|
+
{O_LOOP_DOUBLE} === O_TEHTA_DOUBLE
|
133
|
+
{U_LOOP} === U_TEHTA
|
134
|
+
{U_LOOP_DOUBLE} === U_TEHTA_DOUBLE
|
135
|
+
\else
|
136
|
+
{O_LOOP} === U_TEHTA
|
137
|
+
{O_LOOP_DOUBLE} === U_TEHTA_DOUBLE
|
138
|
+
{U_LOOP} === O_TEHTA
|
139
|
+
{U_LOOP_DOUBLE} === O_TEHTA_DOUBLE
|
140
|
+
\endif
|
141
|
+
|
142
|
+
{_TEHTAR_} === A_TEHTA * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP}
|
97
143
|
|
98
|
-
{DIPHTHONGS}
|
99
|
-
{_DIPHTHONGS_}
|
144
|
+
{DIPHTHONGS} === ai * au * oi
|
145
|
+
{_DIPHTHONGS_} === YANTA A_TEHTA * URE A_TEHTA * YANTA {O_LOOP}
|
146
|
+
{WDIPHTHONGS} === * {DIPHTHONGS}
|
147
|
+
{_WDIPHTHONGS_} === * {_DIPHTHONGS_}
|
148
|
+
|
149
|
+
{WLONG} === {NULL} \** long vowels that can be used as tehtar **\
|
150
|
+
{_WLONG_} === {NULL} \** tehtar of long vowels that can be used as tehtar **\
|
151
|
+
|
152
|
+
{_LONG_A_} === ARA A_TEHTA
|
153
|
+
{_LONG_E_} === ARA E_TEHTA
|
154
|
+
{_LONG_I_} === ARA I_TEHTA
|
155
|
+
{_LONG_O_} === ARA {O_LOOP}
|
156
|
+
{_LONG_U_} === ARA {U_LOOP}
|
157
|
+
{_LONE_LONG_A_} === {_LONG_A_}
|
158
|
+
{_LONE_LONG_E_} === {_LONG_E_}
|
159
|
+
{_LONE_LONG_I_} === {_LONG_I_}
|
160
|
+
{_LONE_LONG_O_} === {_LONG_O_}
|
161
|
+
{_LONE_LONG_U_} === {_LONG_U_}
|
162
|
+
|
163
|
+
\if "long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR"
|
164
|
+
\if double_tehta_e
|
165
|
+
{_LONG_E_} === E_TEHTA_DOUBLE
|
166
|
+
{_LONE_LONG_E_} === TELCO {_LONG_E_}
|
167
|
+
{WLONG} === {WLONG} * é
|
168
|
+
{_WLONG_} === {_WLONG_} * {_LONG_E_}
|
169
|
+
\endif
|
170
|
+
\if double_tehta_i
|
171
|
+
{_LONG_I_} === I_TEHTA_DOUBLE
|
172
|
+
{_LONE_LONG_I_} === TELCO {_LONG_I_}
|
173
|
+
{WLONG} === {WLONG} * í
|
174
|
+
{_WLONG_} === {_WLONG_} * {_LONG_I_}
|
175
|
+
\endif
|
176
|
+
\if double_tehta_o
|
177
|
+
{_LONG_O_} === {O_LOOP_DOUBLE}
|
178
|
+
{_LONE_LONG_O_} === TELCO {_LONG_O_}
|
179
|
+
{WLONG} === {WLONG} * ó
|
180
|
+
{_WLONG_} === {_WLONG_} * {_LONG_O_}
|
181
|
+
\endif
|
182
|
+
\if double_tehta_u
|
183
|
+
{_LONG_U_} === {U_LOOP_DOUBLE}
|
184
|
+
{_LONE_LONG_U_} === TELCO {_LONG_U_}
|
185
|
+
{WLONG} === {WLONG} * ú
|
186
|
+
{_WLONG_} === {_WLONG_} * {_LONG_U_}
|
187
|
+
\endif
|
188
|
+
\endif
|
189
|
+
|
190
|
+
{_LTEHTAR_} === {_LONG_A_} * {_LONG_E_} * {_LONG_I_} * {_LONG_O_} * {_LONG_U_}
|
100
191
|
|
101
|
-
[{VOWELS}
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
[{VOWELS}] d --> ANDO [{TEHTAR}]
|
192
|
+
{V_D} === [ {VOWELS} {WLONG} ]
|
193
|
+
{V_D_WN} === [ {VOWELS} {WLONG} * {NULL} ]
|
194
|
+
|
195
|
+
{_V_D_} === [ {_TEHTAR_} {_WLONG_} ]
|
196
|
+
{_V_D_WN_} === [ {_TEHTAR_} {_WLONG_} * {NULL} ]
|
197
|
+
|
198
|
+
\** LONE SHORT VOWELS **\
|
199
|
+
[{VOWELS}] --> TELCO [{_TEHTAR_}] \** Replace isolated short vowels **\
|
110
200
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
201
|
+
\** LONE LONG VOWELS **\
|
202
|
+
[{LVOWELS}] --> [{_LONE_LONG_A_} * {_LONE_LONG_E_} * {_LONE_LONG_I_} * {_LONE_LONG_O_} * {_LONE_LONG_U_}]
|
203
|
+
|
204
|
+
[{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
|
205
|
+
|
206
|
+
\** ========================= **\
|
207
|
+
|
208
|
+
{V_D_WN}p --> PARMA {_V_D_WN_}
|
209
|
+
{V_D_WN}t --> TINCO {_V_D_WN_}
|
210
|
+
{V_D_WN}{K} --> QUESSE {_V_D_WN_}
|
211
|
+
|
212
|
+
{V_D_WN} b --> UMBAR {_V_D_WN_}
|
213
|
+
{V_D_WN} d --> ANDO {_V_D_WN_}
|
214
|
+
{V_D_WN} f --> FORMEN_EXT {_V_D_WN_} \** Beware. **\
|
215
|
+
{V_D_WN} g --> UNGWE {_V_D_WN_}
|
216
|
+
{V_D_WN} gh --> UNGWE_EXT {_V_D_WN_}
|
217
|
+
{V_D_WN} h --> HYARMEN {_V_D_WN_}
|
122
218
|
|
123
219
|
\** ======================== **\
|
124
220
|
|
125
|
-
{K}
|
126
|
-
|
127
|
-
|
128
|
-
{K}h --> HWESTA
|
129
|
-
[{VOWELS}]{K}h --> HWESTA_EXT [{TEHTAR}] \** Take care. **\
|
221
|
+
{K}h --> HWESTA
|
222
|
+
{V_D}{K}h --> HWESTA_EXT {_V_D_} \** Take care. **\
|
130
223
|
|
131
224
|
\** ======================== **\
|
132
225
|
|
133
|
-
l
|
134
|
-
[{VOWELS}] l --> LAMBE [{TEHTAR}]
|
226
|
+
{V_D_WN} l --> LAMBE {_V_D_WN_}
|
135
227
|
|
136
228
|
\** ======================== **\
|
137
229
|
|
138
|
-
m
|
139
|
-
|
140
|
-
|
141
|
-
mb --> UMBAR NASALIZE_SIGN_TILD
|
142
|
-
[{VOWELS}] mb --> UMBAR NASALIZE_SIGN_TILD [{TEHTAR}]
|
143
|
-
|
144
|
-
mp --> PARMA NASALIZE_SIGN_TILD
|
145
|
-
[{VOWELS}] mp --> PARMA NASALIZE_SIGN_TILD [{TEHTAR}]
|
230
|
+
{V_D_WN} m --> MALTA {_V_D_WN_}
|
231
|
+
{V_D_WN} mb --> UMBAR {NASAL} {_V_D_WN_}
|
232
|
+
{V_D_WN} mp --> PARMA {NASAL} {_V_D_WN_}
|
146
233
|
|
147
234
|
\** ======================== **\
|
148
235
|
|
149
|
-
n
|
150
|
-
|
151
|
-
|
152
|
-
n{K} --> QUESSE NASALIZE_SIGN_TILD
|
153
|
-
[{VOWELS}]n{K} --> QUESSE NASALIZE_SIGN_TILD [{TEHTAR}]
|
236
|
+
{V_D_WN}n --> NUMEN {_V_D_WN_}
|
237
|
+
{V_D_WN}n{K} --> QUESSE {NASAL} {_V_D_WN_}
|
154
238
|
|
155
239
|
\** ======================== **\
|
156
240
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
r_ --> ORE
|
161
|
-
[{VOWELS}]r --> ORE [{TEHTAR}]
|
162
|
-
|
163
|
-
[{VOWELS}]rb --> ORE [{TEHTAR}] UMBAR
|
164
|
-
[{LVOWELS}]rb --> ARA [{TEHTAR}] ORE UMBAR
|
165
|
-
|
166
|
-
[{VOWELS}]rz --> ORE [{TEHTAR}] ESSE
|
167
|
-
[{LVOWELS}]rz --> ARA [{TEHTAR}] ORE ESSE
|
241
|
+
\** ROMEN / ORE handling probably not accurate **\
|
242
|
+
{V_D_WN}r --> ORE {_V_D_WN_}
|
243
|
+
{V_D_WN}R --> ROMEN {_V_D_WN_}
|
168
244
|
|
169
245
|
\** ======================== **\
|
170
246
|
|
171
247
|
s --> SILME
|
248
|
+
{V_D} s --> SILME_NUQUERNA {_V_D_}
|
249
|
+
z --> ESSE
|
250
|
+
{V_D} z --> ESSE_NUQUERNA {_V_D_}
|
172
251
|
|
173
252
|
\** ======================== **\
|
174
253
|
|
175
254
|
sh --> AHA
|
176
|
-
|
255
|
+
{V_D} sh --> AHA_EXT {_V_D_} \** BEWARE. **\
|
177
256
|
|
178
|
-
t --> TINCO
|
179
|
-
[{VOWELS}]t --> TINCO [{TEHTAR}]
|
180
257
|
|
181
258
|
th --> SULE
|
182
259
|
|
183
260
|
y --> ANNA
|
184
|
-
|
185
|
-
z --> ESSE
|
186
|
-
[{VOWELS}] z --> ESSE_NUQUERNA [{TEHTAR}]
|
187
261
|
|
188
262
|
\end
|
189
263
|
|
@@ -0,0 +1,49 @@
|
|
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
|
+
\** FOR NOW THIS IS JUST A TEMPLATE **\
|
26
|
+
|
27
|
+
\beg changelog
|
28
|
+
\end
|
29
|
+
|
30
|
+
\language "English"
|
31
|
+
\writing "Tengwar"
|
32
|
+
\mode "Phonemic IPA"
|
33
|
+
\version "0.0.1"
|
34
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
35
|
+
|
36
|
+
\charset tengwar_ds_sindarin false
|
37
|
+
\charset tengwar_ds_parmaite false
|
38
|
+
\charset tengwar_ds_eldamar false
|
39
|
+
\charset tengwar_ds_annatar true
|
40
|
+
\charset tengwar_freemono false
|
41
|
+
|
42
|
+
\beg preprocessor
|
43
|
+
\end
|
44
|
+
|
45
|
+
\beg processor
|
46
|
+
\end
|
47
|
+
|
48
|
+
\beg postprocessor
|
49
|
+
\end
|
@@ -0,0 +1,49 @@
|
|
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
|
+
\** FOR NOW THIS IS JUST A TEMPLATE **\
|
26
|
+
|
27
|
+
\beg changelog
|
28
|
+
\end
|
29
|
+
|
30
|
+
\language "French"
|
31
|
+
\writing "Tengwar"
|
32
|
+
\mode "Phonemic IPA"
|
33
|
+
\version "0.0.1"
|
34
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
35
|
+
|
36
|
+
\charset tengwar_ds_sindarin false
|
37
|
+
\charset tengwar_ds_parmaite false
|
38
|
+
\charset tengwar_ds_eldamar false
|
39
|
+
\charset tengwar_ds_annatar true
|
40
|
+
\charset tengwar_freemono false
|
41
|
+
|
42
|
+
\beg preprocessor
|
43
|
+
\end
|
44
|
+
|
45
|
+
\beg processor
|
46
|
+
\end
|
47
|
+
|
48
|
+
\beg postprocessor
|
49
|
+
\end
|
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
26
26
|
\writing "Runes"
|
27
27
|
\mode "Futhark Codex Runicus"
|
28
28
|
\version "0.0.1"
|
29
|
-
\authors "Talagan (Benjamin Babut)"
|
29
|
+
\authors "Historical, impl. Talagan (Benjamin Babut)"
|
30
30
|
|
31
31
|
\charset unicode_runes true
|
32
32
|
|
@@ -40,13 +40,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
40
40
|
{A} === (a,á)
|
41
41
|
{E} === (e,é)
|
42
42
|
{I} === (i,í,j)
|
43
|
-
{O} === (o
|
43
|
+
{O} === (o,ó,ą,ą́)
|
44
44
|
{U} === (u,ú)
|
45
45
|
{Y} === (y,ý)
|
46
46
|
|
47
47
|
{AE} === (æ,ǽ,ę)
|
48
48
|
{OE} === (ø,ǿ,œ)
|
49
|
-
{OTREM} === (
|
49
|
+
{OTREM} === (ö,ǫ,ǫ́,ǭ)
|
50
50
|
{AEI} === (æi,ei)
|
51
51
|
|
52
52
|
\** VOWELS **\
|
@@ -97,7 +97,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
97
97
|
p --> DOTTED_P
|
98
98
|
\** pp: ok **\
|
99
99
|
\** mp: ok **\
|
100
|
-
r
|
100
|
+
(r,ř) --> REID
|
101
101
|
\** rr: ok **\
|
102
102
|
\** ř < z = rune ýr, none in this mode **\
|
103
103
|
s --> SIGEL
|
@@ -0,0 +1,129 @@
|
|
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
|
+
\language "Old Norse"
|
26
|
+
\writing "Runes"
|
27
|
+
\mode "Younger Futhark"
|
28
|
+
\version "0.0.1"
|
29
|
+
\authors "Historical impl. Bertrand Bellet"
|
30
|
+
|
31
|
+
\charset unicode_runes true
|
32
|
+
|
33
|
+
\beg options
|
34
|
+
\beg option runic_style RUNIC_STYLE_LONG_BRANCH
|
35
|
+
\value RUNIC_STYLE_LONG_BRANCH 0
|
36
|
+
\value RUNIC_STYLE_SHORT_TWIG 1
|
37
|
+
\end
|
38
|
+
\end
|
39
|
+
|
40
|
+
\beg preprocessor
|
41
|
+
\downcase
|
42
|
+
|
43
|
+
\** Dis-ambiguate q,c,k **\
|
44
|
+
\rxsubstitute "(q|c|k)" "k"
|
45
|
+
\end
|
46
|
+
|
47
|
+
\beg processor
|
48
|
+
|
49
|
+
\beg rules litteral
|
50
|
+
{A} === (a,á,æ,ǽ,ę)
|
51
|
+
{I} === (i,í,j,e,é)
|
52
|
+
{O} === (ą,ą́,ö,ǫ,ǫ́,ǭ)
|
53
|
+
{U} === (u,ú,o,ó,y,ý,ø,ǿ,œ)
|
54
|
+
{AI} === (æi,ei)
|
55
|
+
{AU} === (au,ǫu,ey,æy,øy,œy)
|
56
|
+
|
57
|
+
\** VOWELS **\
|
58
|
+
\if "runic_style == RUNIC_STYLE_LONG_BRANCH"
|
59
|
+
{AR} === LONG_BRANCH_AR
|
60
|
+
{OSS} === LONG_BRANCH_OSS
|
61
|
+
\else
|
62
|
+
{AR} === SHORT_TWIG_AR
|
63
|
+
{OSS} === SHORT_TWIG_OSS
|
64
|
+
\endif
|
65
|
+
|
66
|
+
{A} --> {AR}
|
67
|
+
{I} --> ISS
|
68
|
+
{O} --> {OSS}
|
69
|
+
{U} --> UR
|
70
|
+
{AI} --> {AR} ISS
|
71
|
+
{AU} --> {OSS} UR
|
72
|
+
|
73
|
+
\** CONSONANTS **\
|
74
|
+
\if "runic_style == RUNIC_STYLE_LONG_BRANCH"
|
75
|
+
{BJARKAN} === BJARKAN
|
76
|
+
{HAGALL} === LONG_BRANCH_HAGALL
|
77
|
+
{MADR} === LONG_BRANCH_MADR
|
78
|
+
{NAUD} === NAUD
|
79
|
+
{YR} === LONG_BRANCH_YR
|
80
|
+
{SOL} === LONG_BRANCH_SOL
|
81
|
+
{TYR} === TYR
|
82
|
+
\else
|
83
|
+
{BJARKAN} === SHORT_TWIG_BJARKAN
|
84
|
+
{HAGALL} === SHORT_TWIG_HAGALL
|
85
|
+
{MADR} === SHORT_TWIG_MADR
|
86
|
+
{NAUD} === SHORT_TWIG_NAUD
|
87
|
+
{YR} === SHORT_TWIG_YR
|
88
|
+
{SOL} === SHORT_TWIG_SOL
|
89
|
+
{TYR} === SHORT_TWIG_TYR
|
90
|
+
\endif
|
91
|
+
|
92
|
+
(b,bb,mb,p,pp,mp) --> {BJARKAN}
|
93
|
+
(f,ff) --> FE
|
94
|
+
_g --> KAUN \** # Initial / After prefix **\
|
95
|
+
(g,g_) --> {HAGALL} \** # Median or final spirant **\
|
96
|
+
(h,hh) --> {HAGALL}
|
97
|
+
(k,nk,kk,gg,ng) --> KAUN
|
98
|
+
(l,ll) --> LOGR
|
99
|
+
(m,mm) --> {MADR}
|
100
|
+
(n,nn) --> {NAUD}
|
101
|
+
(r,rr) --> REID
|
102
|
+
(ř) --> {YR} \** ř < Germanic z **\
|
103
|
+
(s,ss) --> {SOL}
|
104
|
+
(t,tt,nt,d,dd,nd) --> {TYR}
|
105
|
+
(þ,þþ,ð,ðð) --> THURS
|
106
|
+
(v,vv,w,ww) --> URUZ
|
107
|
+
x --> KAUN {SOL}
|
108
|
+
z --> {TYR} {SOL}
|
109
|
+
|
110
|
+
\** nasalization of a **\
|
111
|
+
{A}(m,mm) --> {OSS} {MADR}
|
112
|
+
{A}(n,nn) --> {OSS} {NAUD}
|
113
|
+
{A}(mp,mb) --> {OSS} {BJARKAN}
|
114
|
+
{A}(nt,nd) --> {OSS} {TYR}
|
115
|
+
{A}(nk,ng) --> {OSS} KAUN
|
116
|
+
\end
|
117
|
+
|
118
|
+
\beg rules punctuation
|
119
|
+
, --> RUNIC_SINGLE_PUNCTUATION
|
120
|
+
; --> RUNIC_SINGLE_PUNCTUATION
|
121
|
+
: --> RUNIC_MULTIPLE_PUNCTUATION
|
122
|
+
. --> RUNIC_MULTIPLE_PUNCTUATION
|
123
|
+
! --> RUNIC_MULTIPLE_PUNCTUATION
|
124
|
+
? --> RUNIC_CROSS_PUNCTUATION
|
125
|
+
\end
|
126
|
+
\end
|
127
|
+
|
128
|
+
|
129
|
+
|