@heroiclands/package-build 24.0.3 → 24.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.
- package/CHANGELOG.md +53 -0
- package/README.md +6 -0
- package/assets/styles/content-base.css +25 -10
- package/docs/authoring/links-and-markup.md +221 -176
- package/docs/commands.md +5 -2
- package/docs/configuration.md +6 -3
- package/docs/content-format.md +4 -3
- package/docs/diagnostics.md +57 -29
- package/docs/guides/book.md +1 -1
- package/docs/guides/module-project.md +2 -2
- package/docs/guides/site.md +2 -2
- package/docs/guides/writing-in-invented-scripts.md +175 -125
- package/docs/reference/format-details.md +65 -38
- package/docs/reference/note-types.md +10 -10
- package/docs/reference/theme-pages.md +18 -9
- package/engine/content-render.mjs +23 -2
- package/engine/content-scripts.mjs +349 -120
- package/engine/content-spans.mjs +13 -1
- package/engine/content-verse.mjs +158 -373
- package/engine/core-report.mjs +10 -2
- package/engine/map-lexicon.mjs +37 -5
- package/engine/note-vocabulary.mjs +5 -5
- package/engine/pdf-render.mjs +63 -44
- package/engine/run-rows.mjs +18 -20
- package/engine/run-words.mjs +7 -7
- package/engine/verse-metre.mjs +36 -8
- package/engine/written-in.mjs +9 -13
- package/package.json +1 -1
- package/site-theme/static/css/style.css +19 -10
- package/types/engine/content-scripts.d.mts +18 -7
- package/types/engine/content-verse.d.mts +37 -163
- package/types/engine/map-lexicon.d.mts +3 -1
- package/types/engine/run-rows.d.mts +16 -9
- package/types/engine/run-words.d.mts +2 -1
- package/types/engine/verse-metre.d.mts +4 -3
|
@@ -44,15 +44,22 @@ These ideas carry everything else.
|
|
|
44
44
|
several languages are written in one script, as many Earth languages share
|
|
45
45
|
the Latin alphabet. A mapping therefore belongs to a script and serves every
|
|
46
46
|
language written in it. What differs between languages is their dictionaries.
|
|
47
|
-
5. **
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
6.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
5. **Language and presentation are separate.** `lang=` identifies the
|
|
48
|
+
language, retaining the authored Roman spelling and the surrounding prose
|
|
49
|
+
font. Language and vocabulary checks still apply.
|
|
50
|
+
6. **`.nativefont` requests native presentation.** It requires an explicit
|
|
51
|
+
`lang=` on that same span, div or fence, then selects the language's
|
|
52
|
+
configured native map and font. Each marked child makes its own choice;
|
|
53
|
+
native presentation is not inherited by a language-only child.
|
|
54
|
+
7. **`font=` and `map=` override independently.** A native run takes any
|
|
55
|
+
missing half from the language's `data.writtenIn`; if neither the run nor
|
|
56
|
+
its language provides a font, the build reports the needed `font=` override.
|
|
57
|
+
When the language supplies no map, native code points can be typed directly.
|
|
58
|
+
A native font or map without `.nativefont` is an error. Ordinary Roman
|
|
59
|
+
`font=mono`, `serif` and `sans` remain available without native opt-in.
|
|
60
|
+
8. **Native mapping uses the dictionary first.** A word the dictionary does
|
|
61
|
+
not write is spelled by the mapping's rows. Every word must belong to the
|
|
62
|
+
language where its configured note supplies a dictionary.
|
|
56
63
|
|
|
57
64
|
A script that writes meanings rather than sounds is **logographic**. It has no
|
|
58
65
|
sound rules, so every word is written from the dictionary and never guessed;
|
|
@@ -74,20 +81,24 @@ The pipeline for one marked run reads left to right:
|
|
|
74
81
|
| Face coverage | the face's `fonts.json` code points | a character the face does not draw |
|
|
75
82
|
| Element | the face, the tag and the direction | nothing |
|
|
76
83
|
|
|
77
|
-
##
|
|
84
|
+
## Language and native presentation
|
|
78
85
|
|
|
79
86
|
The keys go in the attribute block that a span, a fenced div or a `verse`
|
|
80
87
|
fence already takes:
|
|
81
88
|
|
|
82
|
-
| Written
|
|
83
|
-
|
|
|
84
|
-
| `[Daimela, helthos.]{lang=vyl}`
|
|
85
|
-
| `[
|
|
86
|
-
| `[Zaron lonak]{lang=vyl font=semaron-kuriale map=semaron}` | Vylari
|
|
87
|
-
| `[
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
89
|
+
| Written | Meaning |
|
|
90
|
+
| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
91
|
+
| `[Daimela, helthos.]{lang=vyl}` | Vylari in authored Roman spelling and the page's font, with language validation. |
|
|
92
|
+
| `[Zaron lonak]{lang=vyl .nativefont}` | Vylari mapped and drawn with its configured native defaults. |
|
|
93
|
+
| `[Zaron lonak]{lang=vyl .nativefont font=semaron-kuriale map=semaron}` | Native Vylari with both defaults explicitly overridden. |
|
|
94
|
+
| `[ad astra]{lang=la font=serif}` | A real language's BCP 47 tag, in the reader's serif. |
|
|
95
|
+
| `::: {lang=vyl .nativefont}` … `:::` | Native presentation for a passage's unmarked paragraphs. |
|
|
96
|
+
| a `verse` fence opened with `{lang=vyl .nativefont}` | Native presentation for a poem's unmarked lines. |
|
|
97
|
+
|
|
98
|
+
The class is explicit on each construct. `[Zaron]{.nativefont}` is an error
|
|
99
|
+
even inside a passage marked `lang=vyl`: add `lang=vyl` to that span. A native
|
|
100
|
+
font such as `font=semaron-kuriale`, or any `map=`, requires `.nativefont`.
|
|
101
|
+
Generic Roman `font=serif`, `sans` and `mono` do not.
|
|
91
102
|
|
|
92
103
|
**`lang=`** is read in this order. First a short name declared in the
|
|
93
104
|
configuration's `languages`; then a BCP 47 language tag for a real language
|
|
@@ -150,77 +161,101 @@ data:
|
|
|
150
161
|
writtenIn: { map: semaron, font: semaron-kuriale }
|
|
151
162
|
```
|
|
152
163
|
|
|
153
|
-
A
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
only
|
|
164
|
+
A language-only run stays Roman: `[Zaron lonak]{lang=vyl}`. Add
|
|
165
|
+
`.nativefont` to select both defaults:
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
[Zaron lonak]{lang=vyl .nativefont}
|
|
169
|
+
[Zaron lonak]{lang=vyl .nativefont font=semaron-kuriale map=semaron}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Those two spans display the same native text. `font=` replaces only the font;
|
|
173
|
+
`map=` replaces only the map. A missing font default produces an error naming the
|
|
174
|
+
needed `font=` override, and incompatible map/font pairs are errors. A map
|
|
175
|
+
is optional when the language supplies none; directly typed signs then
|
|
176
|
+
reach the selected font unchanged. The build does
|
|
177
|
+
not discard a default to make an override fit. This applies to spans, divs,
|
|
178
|
+
verse fences, scroll fences and standalone wikilinks. The language note's
|
|
179
|
+
keys are checked at their values:
|
|
163
180
|
|
|
164
181
|
> `` `data.writtenIn.map` is `semoran`, which no mapping note's `data.map.name` declares; did you mean `semaron`? ``
|
|
165
182
|
|
|
166
183
|
> `` `data.writtenIn.font` is `teng-chou`, which the map `semaron` is not drawn in; it is drawn in `semaron-kuriale` ``
|
|
167
184
|
|
|
168
|
-
**
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
but still drawn through Semaron's rows:
|
|
185
|
+
**Unmarked text follows its passage; marked children choose their own
|
|
186
|
+
presentation.** A language-only child stays Roman, even in the same language
|
|
187
|
+
as its native parent:
|
|
172
188
|
|
|
173
189
|
```markdown
|
|
174
|
-
::: {lang=vyl
|
|
175
|
-
Zaron lonak, [
|
|
190
|
+
::: {lang=vyl .nativefont}
|
|
191
|
+
Zaron lonak, [Zaron lonak]{lang=vyl}, lokamen zaron.
|
|
192
|
+
[Gar-Anlagh]{lang=khel .nativefont font=qalezu-hand map=qalezu}
|
|
176
193
|
:::
|
|
177
194
|
```
|
|
178
195
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
the
|
|
196
|
+
The first Vylari phrase and the unmarked text use Semaron; the language-only
|
|
197
|
+
span gives the Roman reading. The Khelathi span opts in independently and uses
|
|
198
|
+
its own map and font. Qalezu runs right to left inside the left-to-right line
|
|
199
|
+
with no `dir=` written. An English gloss, `[an oath]{lang=en font=serif}`,
|
|
200
|
+
uses the page's serif. A child's own native defaults and overrides are used;
|
|
201
|
+
the parent's explicit map and font are not copied into the child.
|
|
202
|
+
|
|
203
|
+
**References make the same choice.** The first name below stays Roman; the
|
|
204
|
+
second uses Vylari's native defaults:
|
|
205
|
+
|
|
206
|
+
```markdown
|
|
207
|
+
[[lore-marendasdty|Marendas]]{lang=vyl}
|
|
208
|
+
[[lore-marendasdty|Marendas]]{lang=vyl .nativefont}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Only the displayed name is mapped and set in the native face. The destination,
|
|
212
|
+
spoiler and `.show` behavior, draft cue and book page references are preserved.
|
|
213
|
+
Keep adjacent prose and its spaces in sibling spans; a longer native passage
|
|
214
|
+
cannot contain an embedded link.
|
|
184
215
|
|
|
185
216
|
**What a run may hold.** A marked span or verse line is plain text: no
|
|
186
217
|
emphasis (other than the stars a face's run takes, see [emphasis in a
|
|
187
218
|
script](#emphasis-in-a-script)), link, image, footnote, wikilink, code or HTML.
|
|
188
|
-
A
|
|
219
|
+
A standalone resolved reference may carry the language and native class, as
|
|
220
|
+
above; only its label is set. A marked div holds paragraphs and line breaks only. The text is read as written,
|
|
189
221
|
so `[`, `]`, `"`, `<<`, `>>`, `!` and `@ # $ % ^ &` are characters; a bracket
|
|
190
222
|
pair is markup only when `(` makes a link, `{` a span or a second `[` a
|
|
191
223
|
wikilink, and an unbalanced bracket takes a backslash, `\[`. A code fence is
|
|
192
224
|
verbatim: `[…]{…}` inside it stays literal text. Text marked with a real
|
|
193
|
-
language's tag alone keeps its Markdown
|
|
225
|
+
language's tag alone keeps its Markdown when that language is English; a span
|
|
226
|
+
with a non-English effective language cannot contain actual bold or italic
|
|
227
|
+
markup, even when the language is real.
|
|
194
228
|
|
|
195
|
-
The
|
|
229
|
+
The language, font and map keys are errors on a named block such as a secret block. Put a marked
|
|
196
230
|
div inside the block instead.
|
|
197
231
|
|
|
198
|
-
##
|
|
232
|
+
## Roman text and directly typed signs
|
|
199
233
|
|
|
200
|
-
|
|
234
|
+
Language-only text retains its spelling and the surrounding prose font:
|
|
201
235
|
|
|
202
236
|
```markdown
|
|
203
|
-
|
|
237
|
+
[Zaron lonak]{lang=vyl}
|
|
238
|
+
[Zaron lonak]{lang=vyl font=serif}
|
|
204
239
|
```
|
|
205
240
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
is reported once per run:
|
|
210
|
-
|
|
211
|
-
> `` `x` (U+0078) is not drawn by the font `semaron-kuriale` ``
|
|
241
|
+
The second span explicitly chooses the ordinary serif. Neither selects the
|
|
242
|
+
language's native defaults. A configured language's existing vocabulary and
|
|
243
|
+
language checks still apply; presentation does not turn those checks off.
|
|
212
244
|
|
|
213
|
-
|
|
214
|
-
what it draws.
|
|
245
|
+
Text already typed in a script's code points also opts in explicitly:
|
|
215
246
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
either case the note holds the characters and needs only `font=`. Typing roman
|
|
220
|
-
and letting `map=` convert it keeps the note's source readable and diffable and
|
|
221
|
-
is the usual choice for a language with a dictionary.
|
|
247
|
+
```markdown
|
|
248
|
+
The lintel is cut with []{lang=und .nativefont font=semaron-kuriale}.
|
|
249
|
+
```
|
|
222
250
|
|
|
223
|
-
|
|
251
|
+
Here `und` identifies an unspecified language with no configured map. The
|
|
252
|
+
font receives the typed code points unchanged. If a map is selected, rows
|
|
253
|
+
leave characters with no matching row unchanged. The selected face must draw
|
|
254
|
+
every resulting character, except whitespace, or the build
|
|
255
|
+
reports the source character. Keyboard layouts and Emacs input methods for
|
|
256
|
+
the scripts ship under the fonts package's `keyboards/`; an editor font that
|
|
257
|
+
carries the script draws its code points where they are typed. Typing Roman
|
|
258
|
+
and mapping it keeps the source readable and diffable.
|
|
224
259
|
|
|
225
260
|
## Mapping notes
|
|
226
261
|
|
|
@@ -430,13 +465,14 @@ A character the face does not draw inside a native form reports at the word:
|
|
|
430
465
|
|
|
431
466
|
> `` `zaron` is written U+F024F by the lexicon of `vyl` for the map `semaron`, which the font `semaron-kuriale` does not draw ``
|
|
432
467
|
|
|
433
|
-
A run
|
|
468
|
+
A native run whose explicit `lang=` is a bare BCP 47 tag, and a declared
|
|
434
469
|
language with no `note` are spelled by the rows alone.
|
|
435
470
|
|
|
436
471
|
## The checks
|
|
437
472
|
|
|
438
|
-
A run with `lang
|
|
439
|
-
word.
|
|
473
|
+
A run with `lang=`, whose language has a `note`, is checked word by
|
|
474
|
+
word. This applies to Roman language-only runs and native runs alike;
|
|
475
|
+
`.nativefont` selects presentation and does not turn vocabulary checks off. The comparison is case folded and NFC, with `’` read as `'`. A word passes
|
|
440
476
|
when it is any of these:
|
|
441
477
|
|
|
442
478
|
1. **A lexicon word:** a `data.words[].form` of the language. A form listed in a
|
|
@@ -648,7 +684,7 @@ words:
|
|
|
648
684
|
built: [halzi, -unet]
|
|
649
685
|
```
|
|
650
686
|
|
|
651
|
-
`[halzi halzunet halziim]{lang=khel font=khelathi-zethu-glyphs map=zethu}` is
|
|
687
|
+
`[halzi halzunet halziim]{lang=khel font=khelathi-zethu-glyphs map=zethu .nativefont}` is
|
|
652
688
|
written U+1EABB, then U+1EABB U+1EBC7, then U+1EABB U+1EBE1, with the spaces the
|
|
653
689
|
rows write between them. An affix's `native` and `data.grammar.native` are read
|
|
654
690
|
only under a logographic map; naming any other map is an error at the entry.
|
|
@@ -667,7 +703,10 @@ typed in a run hold no letter, so they are no word and pass through as typed.
|
|
|
667
703
|
with no writing is an error. A foreign name is written deliberately: its signs
|
|
668
704
|
typed directly, or through a mapping whose rows read a sign-by-sign notation
|
|
669
705
|
(sign ids and joiners, as in Manuel de Codage input), which an author writes the
|
|
670
|
-
way any other mapping is written
|
|
706
|
+
way any other mapping is written. A native run with an explicit bare BCP 47
|
|
707
|
+
tag such as `lang=und` has no configured dictionary and uses the rows alone;
|
|
708
|
+
it still needs `.nativefont`, an explicit map for conversion and an explicit
|
|
709
|
+
font where no language default supplies one.
|
|
671
710
|
|
|
672
711
|
**An unknown word gets two errors:** the lexicon check reports it is no word of
|
|
673
712
|
the language, and the writing check reports it has no writing.
|
|
@@ -714,8 +753,14 @@ data:
|
|
|
714
753
|
`emphasis` sets both `*…*` and `**…**`, and `strongEmphasis` optionally sets
|
|
715
754
|
`**…**` alone. A tongue that states nothing takes its script's convention.
|
|
716
755
|
|
|
717
|
-
**
|
|
718
|
-
|
|
756
|
+
**Non-English spans do not take Markdown emphasis.** Bold and italic markup in
|
|
757
|
+
a span with an effective non-English language is an error, whether it has a
|
|
758
|
+
font or not, and whether its language is declared on that span or inherited.
|
|
759
|
+
English (`en`) and English BCP 47 tags remain eligible. Escaped literal
|
|
760
|
+
delimiters are not emphasis. This restriction applies throughout the note.
|
|
761
|
+
|
|
762
|
+
`data.emphasis: words` also makes emphasis an error: it says the language marks
|
|
763
|
+
stress with a word, so stars in its runs are refused:
|
|
719
764
|
|
|
720
765
|
> `` `ban` marks emphasis with a word, not a mark; write the word ``
|
|
721
766
|
|
|
@@ -747,7 +792,7 @@ the contents of a fence byte for byte, which is why a poem is a fence and not
|
|
|
747
792
|
paragraphs: indentation, line breaks and spans survive formatting untouched.
|
|
748
793
|
|
|
749
794
|
````markdown
|
|
750
|
-
```verse {lang=vyl font=semaron-kuriale map=semaron}
|
|
795
|
+
```verse {lang=vyl font=semaron-kuriale map=semaron .nativefont}
|
|
751
796
|
Lokazor lonak,
|
|
752
797
|
lokamen zaron.
|
|
753
798
|
```
|
|
@@ -755,52 +800,51 @@ Lokazor lonak,
|
|
|
755
800
|
|
|
756
801
|
### Verse in columns
|
|
757
802
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
`col1=` maps it into Semaron, and the second entry of `col2=` sets the same line
|
|
772
|
-
in roman.
|
|
803
|
+
`form=epic` records the poem's kind without inferring its layout or metre.
|
|
804
|
+
`cols` is a positive whole number, defaulting to `1`. A single-column poem
|
|
805
|
+
uses its physical lines without numeric prefixes. With `cols` above one,
|
|
806
|
+
every content line starts with a column number and one or more spaces.
|
|
807
|
+
Blank lines separate logical verse rows, and `***` separates stanzas.
|
|
808
|
+
|
|
809
|
+
Numbers are in `1..cols` and nondecreasing within a row. Skip a number to
|
|
810
|
+
leave that cell empty. Repeat a number for as many readings as the column
|
|
811
|
+
needs: its first reading is foreground, and all its later readings are grey.
|
|
812
|
+
That choice is independent for each column and resets at each new row.
|
|
813
|
+
|
|
814
|
+
Here is a sparse three-column poem. The first row omits column two. The next
|
|
815
|
+
fills it, and the last row begins a new stanza:
|
|
773
816
|
|
|
774
817
|
````markdown
|
|
775
|
-
```verse {numstep=1 lang=vyl
|
|
776
|
-
[Lokazor lonak zaron.]{lang=vyl}
|
|
777
|
-
[He walks the oath road.]{lang=en}
|
|
818
|
+
```verse {numstep=1 lang=vyl cols=3}
|
|
819
|
+
1 [Lokazor lonak zaron.]{lang=vyl .nativefont}
|
|
820
|
+
3 [He walks the oath road.]{lang=en}
|
|
821
|
+
3 [Lokazor lonak zaron.]{lang=vyl}
|
|
778
822
|
|
|
779
|
-
[Lokamen lonak zaron.]{lang=vyl}
|
|
780
|
-
[
|
|
823
|
+
1 [Lokamen lonak zaron.]{lang=vyl .nativefont}
|
|
824
|
+
2 [Nothing to say]{lang=en}
|
|
825
|
+
3 [I walk the oath road.]{lang=en}
|
|
826
|
+
3 [Lokamen lonak zaron.]{lang=vyl}
|
|
781
827
|
|
|
782
828
|
***
|
|
783
829
|
|
|
784
|
-
alathos lokazor.
|
|
785
|
-
[That one walks.]{lang=en}
|
|
830
|
+
1 [alathos lokazor.]{lang=vyl .nativefont}
|
|
831
|
+
3 [That one walks.]{lang=en}
|
|
832
|
+
3 [alathos lokazor.]{lang=vyl}
|
|
786
833
|
```
|
|
787
834
|
````
|
|
788
835
|
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
836
|
+
Each native span opts in explicitly and uses the Vylari note's configured
|
|
837
|
+
map and font. Each Roman repeat is authored separately and stays Roman.
|
|
838
|
+
`lang=` identifies the language without choosing a column; number prefixes
|
|
839
|
+
alone place the readings. Inline links, language changes and authored spaces
|
|
840
|
+
remain inside the chosen reading. Leading periods indent that reading.
|
|
793
841
|
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
assets/content/Lore/Walking.md:14:1: error: this verse line has no `en` line, which `col2=` sets
|
|
801
|
-
assets/content/Lore/Walking.md:18:1: error: this verse line gives `en` twice; give each language once
|
|
802
|
-
assets/content/Lore/Walking.md:22:1: error: no column sets `khel`; a verse line gives the languages `col1=` and `col2=` name
|
|
803
|
-
```
|
|
842
|
+
`numstep=N` counts logical rows, so repeated readings and empty cells do not
|
|
843
|
+
advance its counter. Every target aligns each row's cells at the top, and
|
|
844
|
+
narrow web or Foundry displays stack the cells in numbered order. A
|
|
845
|
+
right-to-left reading stays in its cell and follows its own script's direction.
|
|
846
|
+
Invalid counts and prefixes are located at the authored value or number;
|
|
847
|
+
missing prefixes are located at the line's first content character.
|
|
804
848
|
|
|
805
849
|
### Metre
|
|
806
850
|
|
|
@@ -867,7 +911,7 @@ anything, each an error:
|
|
|
867
911
|
|
|
868
912
|
> ``the language `vyl` is not a configured language with a `note`, so it has no stress rule for `scan=` to count beats by``
|
|
869
913
|
|
|
870
|
-
> `` `scan=` counts the beats of one language's lines; a verse
|
|
914
|
+
> `` `scan=` counts the beats of one language's lines; a verse with cols>1 groups independent physical lines ``
|
|
871
915
|
|
|
872
916
|
A repeated metre name is an error too:
|
|
873
917
|
|
|
@@ -891,7 +935,7 @@ paragraphs, and each paragraph starts at the top of a fresh column. `rows=`
|
|
|
891
935
|
sets the characters in a column and `cols=` the columns in a panel:
|
|
892
936
|
|
|
893
937
|
````markdown
|
|
894
|
-
```scroll {rows=25 cols=12 lang=tsu map=tengchou}
|
|
938
|
+
```scroll {rows=25 cols=12 lang=tsu map=tengchou .nativefont}
|
|
895
939
|
chen teng chou hing
|
|
896
940
|
tan tsou dou rou
|
|
897
941
|
|
|
@@ -900,7 +944,7 @@ gen chei chou tsuen
|
|
|
900
944
|
````
|
|
901
945
|
|
|
902
946
|
Where the Tantsou note states `writtenIn: { map: tengchou, font: teng-chou }`,
|
|
903
|
-
` ```scroll {rows=25 cols=12 lang=tsu} ` is enough.
|
|
947
|
+
` ```scroll {rows=25 cols=12 lang=tsu .nativefont} ` is enough.
|
|
904
948
|
|
|
905
949
|
The site, the preview and Foundry set it in columns, in a panel that scrolls
|
|
906
950
|
sideways from the right. The book draws it as panel images from the face's
|
|
@@ -965,8 +1009,8 @@ whose notes set no text in a face, ships none of it.
|
|
|
965
1009
|
## The commands
|
|
966
1010
|
|
|
967
1011
|
`package-build transliterate <map> [--lang <language>] [--font <slug>] [--hex] [text..]`
|
|
968
|
-
maps a passage exactly as the build maps a run marked
|
|
969
|
-
font=<slug>`. The text is the words given; `-` or none reads standard input.
|
|
1012
|
+
maps a passage exactly as the build maps a run marked
|
|
1013
|
+
`lang=<language> .nativefont map=<map> font=<slug>`. The text is the words given; `-` or none reads standard input.
|
|
970
1014
|
`--font` defaults to the language's `writtenIn` face where the mapping is drawn
|
|
971
1015
|
in it, and is otherwise required when the mapping lists more than one face.
|
|
972
1016
|
`--hex` prints `U+XXXX` code points separated by spaces.
|
|
@@ -1070,6 +1114,7 @@ name: { full: Vylari Language }
|
|
|
1070
1114
|
type: skill
|
|
1071
1115
|
subType: language
|
|
1072
1116
|
data:
|
|
1117
|
+
writtenIn: { map: semaron, font: semaron-kuriale }
|
|
1073
1118
|
core: true
|
|
1074
1119
|
fields:
|
|
1075
1120
|
- { name: Law, holds: "Oaths, seals and roads." }
|
|
@@ -1132,7 +1177,7 @@ The lintel over the door of the oath road is cut with a couplet, and the
|
|
|
1132
1177
|
stonecutter set the couplet in the script of the court, so that every traveller
|
|
1133
1178
|
could read it as the court reads it.
|
|
1134
1179
|
|
|
1135
|
-
[Lokazor lonak thiruthrimar, lokamen zaron.]{lang=vyl font=semaron-kuriale map=semaron}
|
|
1180
|
+
[Lokazor lonak thiruthrimar, lokamen zaron.]{lang=vyl font=semaron-kuriale map=semaron .nativefont}
|
|
1136
1181
|
```
|
|
1137
1182
|
|
|
1138
1183
|
Linting reports the unknown word, at its first character:
|
|
@@ -1153,6 +1198,7 @@ name: { full: Vylari Language }
|
|
|
1153
1198
|
type: skill
|
|
1154
1199
|
subType: language
|
|
1155
1200
|
data:
|
|
1201
|
+
writtenIn: { map: semaron, font: semaron-kuriale }
|
|
1156
1202
|
core: true
|
|
1157
1203
|
fields:
|
|
1158
1204
|
- { name: Law, holds: "Oaths, seals and roads." }
|
|
@@ -1222,8 +1268,8 @@ capital `L` of the rows, `zaron` is the exception's long vowel, and the comma
|
|
|
1222
1268
|
and full stop are the script's one point.
|
|
1223
1269
|
|
|
1224
1270
|
A poem in columns and a poem with its metre checked sit on one note. Both parse
|
|
1225
|
-
with no finding: the first sets Vylari in
|
|
1226
|
-
Vylari in
|
|
1271
|
+
with no finding: the first sets native Vylari in column one and English over Roman
|
|
1272
|
+
Vylari in column three, with a sparse middle cell, and the second's lines each carry three beats.
|
|
1227
1273
|
|
|
1228
1274
|
**`assets/content/Lore/Walking.md`**
|
|
1229
1275
|
|
|
@@ -1238,17 +1284,21 @@ The walking of the oath road is sung in two settings. The first sets the poem
|
|
|
1238
1284
|
beside its translation, and the second keeps the metre that the court keeps, so
|
|
1239
1285
|
that a line with the wrong count is reported to the author who wrote it.
|
|
1240
1286
|
|
|
1241
|
-
```verse {numstep=1 lang=vyl
|
|
1242
|
-
[Lokazor lonak zaron.]{lang=vyl}
|
|
1243
|
-
[He walks the oath road.]{lang=en}
|
|
1287
|
+
```verse {numstep=1 lang=vyl cols=3}
|
|
1288
|
+
1 [Lokazor lonak zaron.]{lang=vyl .nativefont}
|
|
1289
|
+
3 [He walks the oath road.]{lang=en}
|
|
1290
|
+
3 [Lokazor lonak zaron.]{lang=vyl}
|
|
1244
1291
|
|
|
1245
|
-
[Lokamen lonak zaron.]{lang=vyl}
|
|
1246
|
-
[
|
|
1292
|
+
1 [Lokamen lonak zaron.]{lang=vyl .nativefont}
|
|
1293
|
+
2 [Nothing to say]{lang=en}
|
|
1294
|
+
3 [I walk the oath road.]{lang=en}
|
|
1295
|
+
3 [Lokamen lonak zaron.]{lang=vyl}
|
|
1247
1296
|
|
|
1248
1297
|
***
|
|
1249
1298
|
|
|
1250
|
-
alathos lokazor.
|
|
1251
|
-
[That one walks.]{lang=en}
|
|
1299
|
+
1 [alathos lokazor.]{lang=vyl .nativefont}
|
|
1300
|
+
3 [That one walks.]{lang=en}
|
|
1301
|
+
3 [alathos lokazor.]{lang=vyl}
|
|
1252
1302
|
```
|
|
1253
1303
|
|
|
1254
1304
|
```verse {lang=vyl scan=trimeter}
|
|
@@ -1287,11 +1337,11 @@ name: { full: The Marked Door }
|
|
|
1287
1337
|
type: lore
|
|
1288
1338
|
---
|
|
1289
1339
|
|
|
1290
|
-
The door is marked with the same words as the lintel
|
|
1291
|
-
|
|
1292
|
-
|
|
1340
|
+
The door is marked with the same words as the lintel. Although Semaron's
|
|
1341
|
+
convention is rubric, this Vylari span uses no Markdown emphasis: spans with a
|
|
1342
|
+
non-English language cannot contain bold or italic markup.
|
|
1293
1343
|
|
|
1294
|
-
[Lokazor
|
|
1344
|
+
[Lokazor lonak, zaron.]{lang=vyl font=semaron-kuriale map=semaron .nativefont}
|
|
1295
1345
|
```
|
|
1296
1346
|
|
|
1297
1347
|
Finally, the core report lists what the language still lacks:
|
|
@@ -1306,4 +1356,4 @@ Vylari Language (skill-vylarilng): 1 of 4 core concepts have no word
|
|
|
1306
1356
|
Everything in this package comes from the guide. A new script follows the same
|
|
1307
1357
|
steps: a mapping note for its face, `languages` entries for the languages
|
|
1308
1358
|
written in it, a language note with the dictionary, and runs marked with the
|
|
1309
|
-
|
|
1359
|
+
language key and native presentation class.
|