@heroiclands/package-build 25.1.2 → 25.1.3

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.
@@ -454,266 +454,267 @@ These fields are accepted by every note type. A field's value can still be irrel
454
454
 
455
455
  **Subtypes:** `social`, `nature`, `craft`, `lore`, `language`, `script`, `mystical`, `physical`, `combat`, `combattechnique`.
456
456
 
457
- | Field | Shape | Meaning |
458
- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
459
- | `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
460
- | `data.templatePriority` | number | Template priority; unset means the note is not a template. |
461
- | `data.masteryLevel` | number | Mastery before any modifier. |
462
- | `data.parentSkill` | an Address | The skill this one specialises. |
463
- | `data.names` | a language's name lists | How this language's speakers are named, for `package-build npc new`: `pattern` builds a name from placeholders such as "{given} {clan}" and literal text, `given` maps a gender to a list of given names, `female` and `male` required, and every other key is a list of names a placeholder of the same name draws from. A language skill note only. See [name lists](format-details.md#name-lists). |
464
- | `data.family` | an Address | The parent language, as a language skill note: this language reads the parent's words, and its parents' in turn, as its own. A language skill note only. See [a language's words](format-details.md#a-languages-words). |
465
- | `data.abbreviation` | a string, such as `Prov.` | The tag a dictionary prints for the language, beside an entry's class and in an etymology, as `Prov.`; the language's full name where unstated. A language skill note only. See [a language's words](format-details.md#a-languages-words). |
466
- | `data.core` | `true` or `false` | Whether the language must cover the core vocabulary: `true` lists it in the `package-build core` report. A language skill note only. See [the core vocabulary](format-details.md#the-core-vocabulary). |
467
- | `data.classModifiers` | list of word class modifiers | The class modifiers the language uses, from the master word classes. A word's class may carry only these. Empty when unstated. A language skill note only. |
468
- | `data.fields` | list of `{ name, holds }` | The fields the language's words are grouped under. A language skill note only. |
469
- | `data.words` | list of `{ form, class, field, gloss, … }` | The words this language states, one map each, in authored order; its automatic dictionary sorts them alphabetically. A language skill note only. See [a language's words](format-details.md#a-languages-words). |
470
- | `data.affixes` | list of `{ form, gloss, attaches?, examples? }` | The affixes a word's `built` pieces may name, each with its gloss. A language skill note only. |
471
- | `data.roman` | a literal NFC string of additional source characters, including exact letter case and digits | The additional Roman source characters the language permits, each once. Standard punctuation and structural whitespace remain available. No ranges, case expansion or inherited inventory. An empty string declares no additions. Required on each configured language note. |
472
- | `data.grammar` | a map — `{ plural?, verbs?, agreement?, participles?, native? }` | Optional noun plurals, one verb pattern, agreement, participles and the endings' native writings, for dictionary presentation, language word checks and encodings. Only the shape of supplied keys is checked; no word must follow or state a rule. A language skill note only. |
473
- | `data.tongues` | list of `{ tag, meaning, language? }` | The tags a register row's `tongue` may name, each with what it means. A language skill note only. |
474
- | `data.register` | list of `{ name, tongue?, kind?, built?, gloss?, why? }` | Every name the setting gives in the language's reach, with its tongue and pieces; the notes carrying each name are derived. A language skill note only. |
475
- | `data.retired` | list of `{ form, instead?, why }` | The forms the setting does not write, and why. A language skill note only. |
476
- | `data.scope` | a map — `{ folders?, cultures?, lore?, parents?, addresses?, paths?, types?, skip? }` | The notes the register covers. A language skill note only. |
477
- | `data.sounds` | a map — `{ letters?, edges?, clusters?, stress?, finals?, syllables?, joining?, joins?, marks?, skeleton?, frames?, readPast?, mutations? }` | The letters the language writes and the rules its words keep. A language skill note only. |
478
- | `data.soundChanges` | list of `{ name, from?, to?, takes?, steps }` | Named sets of ordered changes, each making one tongue's words from another's. A language skill note only. |
479
- | `data.elements` | list of `{ form, variants?, position?, kind?, sense, examples?, word?, joining? }` | The elements the language's names are built from. A language skill note only. |
480
- | `data.roots` | list of `{ root, sense, field? }` | The consonantal roots the language's words are set from. A language skill note only. |
481
- | `data.cognates` | list of `{ forms, proto?, gloss }` | Sets of forms one older word takes in several languages, stated on the eldest. A language skill note only. |
482
- | `data.callingNames` | a map — `{ closings, minSyllables }` | The short name a long given name is called by. A language skill note only. |
483
- | `data.older` | list of `{ form, gloss?, layer? }` | The words and names older than the language's rules, which no sound or name rule holds. A language skill note only. |
484
- | `data.negation` | a map — `{ particle, mutation? }` | How a verb is negated. A language skill note only. |
485
- | `data.naming` | a map — `{ shapes?, edges?, draws?, heldFrom?, nearName? }` | The shapes, edges and sources the language's names keep beyond its words' rules. A language skill note only. |
486
- | `data.emphasis` | `words`, `rubric` or `overline` | How the language marks a stressed word, over its script's `emphasis`: `rubric` or `overline` sets `*…*` and `**…**` so in a run of the language, and `words` marks it with a word, so either is a finding. Only a skill of `subType: language` states it. |
487
- | `data.script` | a map — `{ fonts, emphasis, direction? }` | A script note's faces, how it marks emphasis and the direction it is written in. Only a skill of `subType: script` states it. |
457
+ | Field | Shape | Meaning |
458
+ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
459
+ | `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
460
+ | `data.templatePriority` | number | Template priority; unset means the note is not a template. |
461
+ | `data.masteryLevel` | number | Mastery before any modifier. |
462
+ | `data.parentSkill` | an Address | The skill this one specialises. |
463
+ | `data.names` | a language's name lists | How this language's speakers are named, for `package-build npc new`: `pattern` builds a name from placeholders such as "{given} {clan}" and literal text, `given` maps a gender to a list of given names, `female` and `male` required, and `en` holds groups of English names, and every other key is a list of names a placeholder of the same name draws from. A language skill note only. See [name lists](format-details.md#name-lists). |
464
+ | `data.family` | an Address | The parent language, as a language skill note: this language reads the parent's words, and its parents' in turn, as its own. A language skill note only. See [a language's words](format-details.md#a-languages-words). |
465
+ | `data.abbreviation` | a string, such as `Prov.` | The tag a dictionary prints for the language, beside an entry's class and in an etymology, as `Prov.`; the language's full name where unstated. A language skill note only. See [a language's words](format-details.md#a-languages-words). |
466
+ | `data.core` | `true` or `false` | Whether the language must cover the core vocabulary: `true` lists it in the `package-build core` report. A language skill note only. See [the core vocabulary](format-details.md#the-core-vocabulary). |
467
+ | `data.classModifiers` | list of word class modifiers | The class modifiers the language uses, from the master word classes. A word's class may carry only these. Empty when unstated. A language skill note only. |
468
+ | `data.fields` | list of `{ name, holds }` | The fields the language's words are grouped under. A language skill note only. |
469
+ | `data.words` | list of `{ form, class, field, gloss, … }` | The words this language states, one map each, in authored order; its automatic dictionary sorts them alphabetically. A language skill note only. See [a language's words](format-details.md#a-languages-words). |
470
+ | `data.affixes` | list of `{ form, gloss, attaches?, examples? }` | The affixes a word's `built` pieces may name, each with its gloss. A language skill note only. |
471
+ | `data.roman` | a literal NFC string of additional source characters, including exact letter case and digits | The additional Roman source characters the language permits, each once. Standard punctuation and structural whitespace remain available. No ranges, case expansion or inherited inventory. An empty string declares no additions. Required on each configured language note. |
472
+ | `data.grammar` | a map — `{ plural?, verbs?, agreement?, participles?, native? }` | Optional noun plurals, one verb pattern, agreement, participles and the endings' native writings, for dictionary presentation, language word checks and encodings. Only the shape of supplied keys is checked; no word must follow or state a rule. A language skill note only. |
473
+ | `data.tongues` | list of `{ tag, meaning, language? }` | The tags a register row's `tongue` may name, each with what it means. A language skill note only. |
474
+ | `data.register` | list of `{ name, tongue?, kind?, built?, gloss?, why? }` | Every name the setting gives in the language's reach, with its tongue and pieces; the notes carrying each name are derived. A language skill note only. |
475
+ | `data.retired` | list of `{ form, instead?, why }` | The forms the setting does not write, and why. A language skill note only. |
476
+ | `data.scope` | a map — `{ folders?, cultures?, lore?, parents?, addresses?, paths?, types?, skip? }` | The notes the register covers. A language skill note only. |
477
+ | `data.sounds` | a map — `{ letters?, edges?, clusters?, stress?, finals?, syllables?, joining?, joins?, marks?, skeleton?, frames?, readPast?, mutations? }` | The letters the language writes and the rules its words keep. A language skill note only. |
478
+ | `data.soundChanges` | list of `{ name, from?, to?, takes?, steps }` | Named sets of ordered changes, each making one tongue's words from another's. A language skill note only. |
479
+ | `data.elements` | list of `{ form, variants?, position?, kind?, sense, examples?, word?, joining? }` | The elements the language's names are built from. A language skill note only. |
480
+ | `data.roots` | list of `{ root, sense, field? }` | The consonantal roots the language's words are set from. A language skill note only. |
481
+ | `data.cognates` | list of `{ forms, proto?, gloss }` | Sets of forms one older word takes in several languages, stated on the eldest. A language skill note only. |
482
+ | `data.callingNames` | a map — `{ closings, minSyllables }` | The short name a long given name is called by. A language skill note only. |
483
+ | `data.older` | list of `{ form, gloss?, layer? }` | The words and names older than the language's rules, which no sound or name rule holds. A language skill note only. |
484
+ | `data.negation` | a map — `{ particle, mutation? }` | How a verb is negated. A language skill note only. |
485
+ | `data.naming` | a map — `{ shapes?, edges?, draws?, heldFrom?, nearName? }` | The shapes, edges and sources the language's names keep beyond its words' rules. A language skill note only. |
486
+ | `data.emphasis` | `words`, `rubric` or `overline` | How the language marks a stressed word, over its script's `emphasis`: `rubric` or `overline` sets `*…*` and `**…**` so in a run of the language, and `words` marks it with a word, so either is a finding. Only a skill of `subType: language` states it. |
487
+ | `data.script` | a map — `{ fonts, emphasis, direction? }` | A script note's faces, how it marks emphasis and the direction it is written in. Only a skill of `subType: script` states it. |
488
488
 
489
489
  **Inner keys** — a key a field's value does not declare is an error at its own line and column.
490
490
 
491
- | Key | Shape | Required | Meaning |
492
- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
493
- | `data.names.pattern` | a pattern such as "{given} {clan}", a list of them, or a map of genders to either | yes | How a name is built: each `{list}` placeholder is filled from the list of that name, `{given.<gender>}` from that gender's given names, and the text around them is written as it stands. A list states every form a name may take; a map keyed by gender states each gender's forms, and a gender with none takes every pattern stated. |
494
- | `data.names.given` | a map of genders to lists of names | yes | Given names by gender word. A gender with no list draws from every given list together. |
495
- | `data.fields[].name` | a string | yes | The field's name, which a word's `field` names. |
496
- | `data.fields[].holds` | a string | yes | What the field holds. |
497
- | `data.words[].form` | the word as cited, bare | yes | The word as cited, with no backticks. |
498
- | `data.words[].variants` | a list of forms | no | The word's other forms, such as a long form beside a short one; a marked use of one cites the word, and a mapped run accepts it and the forms the language's rules derive from it. |
499
- | `data.words[].name_sort` | a string | no | The sort key; the form when unstated. |
500
- | `data.words[].class` | a word class, base first, such as `n I f` | yes | A class from the master word classes: a base, then the modifiers the language declares in `classModifiers`. |
501
- | `data.words[].plural` | a string | no | The noun's explicit plural, where it differs from the language's optional plural rule. A dictionary uses this form before the rule; no rule agreement is checked. |
502
- | `data.words[].field` | one of the language's `fields` names | yes | The field tag beside the dictionary entry, named in the language's `fields`. |
503
- | `data.words[].gloss` | a string, or a list of senses | yes | The meaning, in brief; a list states one sense per entry, which a dictionary numbers. |
504
- | `data.words[].concept` | a core concept's id, or a list of them | no | The core concepts the word serves, each an `id` of a `data.concepts` list. The core report counts the word toward them. |
505
- | `data.words[].source` | a map — `{ kind, language?, form? }` | no | Where the word comes from. |
506
- | `data.words[].source.kind` | one of inherited, borrowed, kept, worn, coined, substrate, island | yes | How the word came into the tongue. |
507
- | `data.words[].source.language` | a language skill Address | no | The tongue the word was borrowed from; required for `borrowed`. |
508
- | `data.words[].source.form` | a string | no | The form the word had in its source, bare. |
509
- | `data.words[].built` | a list of pieces | no | The pieces the word is built from, in order, as the language's words and affixes write them; absent for a root word. |
510
- | `data.words[].note` | a string | no | What a source says of the word beyond its pieces, such as a cognate it is read with. |
511
- | `data.words[].pronunciation` | a respelling such as `sol-MEH-reh` | no | A respelling in hyphen-separated syllables, the stressed one in capitals: letters, apostrophes and hyphens only, and at most one capitalised syllable. |
512
- | `data.words[].tones` | a string | no | A tone pattern, such as `LHL`. |
513
- | `data.words[].root` | a string | no | A consonantal skeleton, such as `d-l-k`. |
514
- | `data.words[].frame` | a frame of the language's `sounds.frames` | no | The frame a root is set in, named in the language's `sounds.frames`. |
515
- | `data.words[].native` | a list of `{ enc, font?, text }` | no | The word's own writing for an encoding and optional face. It precedes complete parts and the encoding's rows; an entry for a face precedes an unqualified entry. Derived forms can use the stem and explicitly written grammatical endings. |
516
- | `data.words[].native[].enc` | an encoding document Address | yes | The encoding the native form is written for. |
517
- | `data.words[].native[].font` | a face the encoding lists | no | The one face the native form is for; unstated, it is for every face the encoding lists, and a form stated for a face wins over it there. |
518
- | `data.words[].native[].text` | the word in the script, as the encoding's characters | yes | The word as the script writes it, where the encoding's rows would write it otherwise, or by an explicit native spelling. |
519
- | `data.affixes[].form` | the affix as written, such as `-rith` | no | The affix as a word's `built` names it; absent on a zero affix. |
520
- | `data.affixes[].zero` | `true` | no | The affix is written as nothing, such as a case with no ending; it states no `form`, prints as `∅`, and no `built` piece names it. |
521
- | `data.affixes[].kind` | one of case, derivation, tense, aspect, mood, voice, name, lineage | no | What the affix makes. |
522
- | `data.affixes[].given` | one of man, woman, either | no | Who a given name closing on it belongs to; an affix of kind `name` only. |
523
- | `data.affixes[].where` | a string, such as `before a stop` | no | Where this form stands, for an affix written two ways; everywhere where absent. |
524
- | `data.affixes[].gloss` | a string | yes | What the affix means. |
525
- | `data.affixes[].attaches` | a string | no | How it attaches, in words, such as `replaces a closing vowel`. |
526
- | `data.affixes[].replaces` | `vowel`, or the letters, such as `a` | no | What it takes the place of at the close of the stem: `vowel` for any closing vowel, or the letters it replaces; added to the whole stem where absent. |
527
- | `data.affixes[].attachesTo` | a list of word classes, such as `[n, adj]` | no | The word classes it attaches to, by their base; every class where absent. A suffix stating `replaces` derives forms of these classes' words alone. |
528
- | `data.affixes[].lengthens` | `true` or `false` | no | Whether the stem's last vowel lengthens before the affix; `false` where unstated. An affix that `replaces` the stem's close does not also lengthen it. |
529
- | `data.affixes[].front` | the affix as written, such as `-ür` | no | Its form after front vowels, where the language keeps vowel harmony. |
530
- | `data.affixes[].examples` | a list of strings | no | The names the affix is read from. |
531
- | `data.affixes[].barredAfter` | a list of sounds | no | The sounds a stem may not close on to take the affix. |
532
- | `data.affixes[].tones` | a tone pattern, such as `L` | no | The tone pattern the affix carries, written as a word's `tones` is. |
533
- | `data.affixes[].native` | a list of `{ enc, font?, text }` | no | The affix's writing under an encoding, which a word whose `built` names the affix is written with. |
534
- | `data.affixes[].native[].enc` | an encoding document Address | yes | The encoding the native form is written for. |
535
- | `data.affixes[].native[].font` | a face the encoding lists | no | The one face the native form is for; unstated, it is for every face the encoding lists, and a form stated for a face wins over it there. |
536
- | `data.affixes[].native[].text` | the word in the script, as the encoding's characters | yes | The word as the script writes it, where the encoding's rows would write it otherwise, or by an explicit native spelling. |
537
- | `data.grammar.plural` | list of `{ ending, becomes }` | no | Default noun plurals, replacing the first matching literal ending in authored order. A word's explicit plural wins; no word is checked against this rule. |
538
- | `data.grammar.plural[].ending` | a literal ending string, which may be empty | yes | The bare suffix replaced by this rule; empty matches every noun. |
539
- | `data.grammar.plural[].becomes` | a literal ending string, which may be empty | yes | The bare replacement; empty removes the matching suffix. |
540
- | `data.grammar.verbs` | a map — `{ invariant: true }` or `{ persons: { I, you, heShe, we, youAll, they }, replaces? }` | no | One optional regular present pattern, printed once at the dictionary head. |
541
- | `data.grammar.verbs.invariant` | true, as the alternative to persons | no | True where verbs keep the citation form for every person; excludes `persons`. |
542
- | `data.grammar.verbs.persons` | a map — `{ I, you, heShe, we, youAll, they }` of ending strings | no | All six present endings, each added to the citation form or in place of its closing `replaces`; excludes `invariant`. |
543
- | `data.grammar.verbs.persons.I` | an ending string, empty for unchanged | yes | The ending for I, added to the citation form or in place of its closing `replaces`. |
544
- | `data.grammar.verbs.persons.you` | an ending string, empty for unchanged | yes | The ending for you, added to the citation form or in place of its closing `replaces`. |
545
- | `data.grammar.verbs.persons.heShe` | an ending string, empty for unchanged | yes | The ending for he/she, added to the citation form or in place of its closing `replaces`. |
546
- | `data.grammar.verbs.persons.we` | an ending string, empty for unchanged | yes | The ending for we, added to the citation form or in place of its closing `replaces`. |
547
- | `data.grammar.verbs.persons.youAll` | an ending string, empty for unchanged | yes | The ending for you all, added to the citation form or in place of its closing `replaces`. |
548
- | `data.grammar.verbs.persons.they` | an ending string, empty for unchanged | yes | The ending for they, added to the citation form or in place of its closing `replaces`. |
549
- | `data.grammar.verbs.replaces` | the closing letters every ending takes the place of | no | Letters a citation form closes on, swapped for each `persons` ending: with `then`, `lokathen` and `zor` give `lokazor`. A citation form closing otherwise takes the ending whole. With `persons` only. |
550
- | `data.grammar.agreement` | a map — `{ classes, endings }` | no | How words of the named classes agree with a noun: a word closing on one of the `endings` also takes each other one, and each form takes the `plural` rule. Read by the mapped-run word check. |
551
- | `data.grammar.agreement.classes` | a list of word class bases, such as `[adj, pron]` | yes | The word classes that agree, each a base of the master word classes. |
552
- | `data.grammar.agreement.endings` | a list of at least two literal endings, such as `[os, a, on]` | yes | The singular endings an agreeing word swaps among, one for each gender; the `plural` rule gives each one's plural. A word closing on none does not agree. |
553
- | `data.grammar.participles` | a map — `{ root, affixes }` | no | Participles on the verb root: a verb closing on a `root` ending drops it, and each named suffix attaches to what is left; a participle closing on an `agreement` ending agrees. Read by the mapped-run word check. |
554
- | `data.grammar.participles.root` | a list of closing letters, such as `[athen, ethen]` | yes | The infinitive endings a verb's citation form drops to give its root, the longest that matches first. A verb closing on none has no participle. |
555
- | `data.grammar.participles.affixes` | a list of suffixes of `data.affixes`, such as `[-andar, -thos]` | yes | The participle suffixes, each attaching to the root as its own `replaces` says: `vowel` or letters take the place of the root's close, and none adds it whole. |
556
- | `data.grammar.native` | a list of `{ ending, enc, font?, text }` | no | Under an encoding, the signs a noun's plural or a verb's present form is written with after its stem's writing, one entry per ending, encoding and face. |
557
- | `data.grammar.native[].ending` | one of plural, I, you, heShe, we, youAll, they | yes | The ending written: `plural` for a noun's plural, or a person of `verbs.persons` for a verb's present form. |
558
- | `data.grammar.native[].enc` | an encoding document Address | yes | The encoding the ending is written for. |
559
- | `data.grammar.native[].font` | a face the encoding lists | no | The one face the writing is for; unstated, it is for every face the encoding lists, and a writing stated for a face wins over it there. |
560
- | `data.grammar.native[].text` | the ending in the script, as the map's characters; empty writes the stem alone | yes | The signs written after the stem's writing. |
561
- | `data.tongues[].tag` | a tag such as `dunhari`, or `exonym:<tongue>` | yes | The tag a register row's `tongue` names: lowercase letters and digits, or a tag closing on `:<tongue>`, which declares one tag per tongue named after the colon. |
562
- | `data.tongues[].meaning` | a string | yes | What a name of this tongue is. |
563
- | `data.tongues[].language` | a language skill Address | no | The language note the tag names, where it is one. |
564
- | `data.register[].name` | a name as the setting writes it | yes | A name the setting gives, as it is written. |
565
- | `data.register[].tongue` | a tag of `data.tongues`, or `translation` | no | The tongue the name is in, as a tag `data.tongues` declares, or `translation`. A row states a `tongue`, a `kind`, or both. |
566
- | `data.register[].kind` | one of byname, given, place | no | What kind of name it is, in a language that sorts its names by kind. |
567
- | `data.register[].built` | a list of pieces | no | The pieces the name is built from, in order, as a word's `built` writes them. |
568
- | `data.register[].gloss` | a string | no | What the name means, where the pages give its sense. |
569
- | `data.register[].why` | a string | no | Why the name stands outside the pattern the language's names are built by. |
570
- | `data.retired[].form` | a string | yes | The form the setting does not write. |
571
- | `data.retired[].instead` | a string, or a list of them | no | What is written in its place, one form or several; absent where nothing is. |
572
- | `data.retired[].why` | a string | yes | Why the setting does not write it. |
573
- | `data.scope.folders` | a list of folder Addresses | no | Every note whose `data.packFolder` is one of these folders. |
574
- | `data.scope.cultures` | a list of culture Addresses | no | Every note whose `data.culture` is one of these cultures. |
575
- | `data.scope.lore` | a list of lore Addresses | no | Every note whose `data.lore` names one of these notes. |
576
- | `data.scope.parents` | a list of Addresses | no | Every note whose `data.parents` names one of these notes. |
577
- | `data.scope.addresses` | a list of Addresses | no | These notes themselves. |
578
- | `data.scope.paths` | a list of content paths | no | Every note whose file sits below one of these paths of the content tree. |
579
- | `data.scope.types` | a list of note types | no | The note types the register covers; where stated, a note of another type is out of scope whatever else catches it. |
580
- | `data.scope.skip` | a list of Addresses | no | Notes out of scope whatever else catches them. |
581
- | `data.sounds.letters` | list of `{ letters, kind, like?, place?, ipa?, tongue? }` | no | The letters the language writes, and the sounds they stand for. |
582
- | `data.sounds.letters[].letters` | a list of letters | yes | The letters or digraphs the row describes, as written. |
583
- | `data.sounds.letters[].kind` | a string, such as `consonant` or `long vowel` | yes | What kind of sound they write. |
584
- | `data.sounds.letters[].like` | a string | no | What they sound like; absent where the row states only their kind and place. |
585
- | `data.sounds.letters[].place` | a string, such as `lips` or `tongue-tip` | no | Where in the mouth they are made. |
586
- | `data.sounds.letters[].ipa` | a string in the International Phonetic Alphabet, such as `ʃ` | no | The sounds they write, in the International Phonetic Alphabet. |
587
- | `data.sounds.letters[].tongue` | a tag or a language note's Address, or a list of them | no | The tongues that write them, each a tag `data.tongues` declares or the Address of a language note; every one where absent. A `doc` note's rows name language notes only. |
588
- | `data.sounds.edges` | list of `{ edge, sounds }` | no | The sounds that may stand at each edge of a word, one entry per edge. |
589
- | `data.sounds.edges[].edge` | one of openConsonant, openCluster, closeConsonant, closeCluster, innerCluster, vowelPair, glide, syllabic | yes | Which edge of a word the sounds stand at. |
590
- | `data.sounds.edges[].sounds` | a list of sounds, or `any` | yes | The sounds, as written; `any` for every one, and an empty list for none. |
591
- | `data.sounds.clusters` | a map — `{ max, groups? }` | no | How many consonants may stand together. |
592
- | `data.sounds.clusters.max` | a whole number | yes | The most consonants that stand together inside a word. |
593
- | `data.sounds.clusters.groups` | list of `{ what, clusters, use }` | no | The clusters that may stand inside a word, in groups; a language stating them states no `innerCluster` edge. |
594
- | `data.sounds.clusters.groups[].what` | a string, such as `a nasal and a fricative` | yes | What the clusters of the group are made of. |
595
- | `data.sounds.clusters.groups[].clusters` | a list of clusters | yes | The clusters, as written; a digraph counts as one consonant. |
596
- | `data.sounds.clusters.groups[].use` | one of common, sparing | yes | How often the group's clusters stand inside a word. |
597
- | `data.sounds.stress` | a map — `{ two, longer, mark? }` | no | Where a word's stress falls, as a rule a program reads. |
598
- | `data.sounds.stress.two` | one of first, last | yes | The stressed syllable of a word of two syllables. |
599
- | `data.sounds.stress.longer` | one of first, antepenultimate, penultimate, final | yes | The stressed syllable of a word of three or more: `first`, or counted from its end. |
600
- | `data.sounds.stress.mark` | one of acute, grave, circumflex | no | The diacritic that marks a stress the rule would not choose; it moves the stress to the syllable it sits on. |
601
- | `data.sounds.finals` | list of `{ final, like, ipa? }` | no | The syllable finals, for a language whose syllables are parsed by them. |
602
- | `data.sounds.finals[].final` | a final as written, such as `ang` | yes | The final. |
603
- | `data.sounds.finals[].like` | a string | yes | What it sounds like. |
604
- | `data.sounds.finals[].ipa` | a string in the International Phonetic Alphabet, such as `ʃ` | no | Its sound, in the International Phonetic Alphabet. |
605
- | `data.sounds.syllables` | a map of syllable rules | no | What a syllable and a word may open and close on. |
606
- | `data.sounds.syllables.onsets` | one of single | no | What a syllable opens on: `single`, a single consonant. |
607
- | `data.sounds.syllables.codas` | a list of sounds, or `any` | no | The consonants that may close a syllable; `any` for every one. |
608
- | `data.sounds.syllables.finals` | a list of sounds, or `any` | no | The consonants that may close a word; `any` for every one. |
609
- | `data.sounds.syllables.doubled` | a list of letters | no | The doubled consonants a word may hold; none where empty. |
610
- | `data.sounds.syllables.vowelPairs` | a list of vowel pairs | no | The vowels that may stand together; none where empty. |
611
- | `data.sounds.syllables.initialVowel` | `true` or `false` | no | Whether a word may open on a vowel. |
612
- | `data.sounds.syllables.finalVowel` | `true` or `false` | no | Whether a word may close on a vowel; `true` where unstated. |
613
- | `data.sounds.syllables.neverInitial` | a list of letters | no | The letters that never open a word. |
614
- | `data.sounds.syllables.signature` | a list of letters | no | The letters that mark a word as the language's own. |
615
- | `data.sounds.syllables.harmony` | a map — `{ back, front, neutral?, neutralAs?, partners? }` | no | The vowel harmony a word keeps. |
616
- | `data.sounds.syllables.harmony.back` | a list of vowels | yes | The back vowels. |
617
- | `data.sounds.syllables.harmony.front` | a list of vowels | yes | The front vowels. |
618
- | `data.sounds.syllables.harmony.neutral` | a list of vowels | no | The vowels of neither set. |
619
- | `data.sounds.syllables.harmony.neutralAs` | one of back, front | no | The set a word of neutral vowels alone counts as. |
620
- | `data.sounds.syllables.harmony.partners` | a map of vowels to front vowels | no | The front vowel each vowel turns to in an affix's front form, keyed by the vowel; every key is a vowel of the harmony and every value one of its `front` vowels. |
621
- | `data.sounds.joining` | list of `{ first, second, written, example? }` | no | How two parts are written where the first closes and the second opens on the given sounds. |
622
- | `data.sounds.joining[].first` | a list of sounds | yes | The sounds the first part closes on. |
623
- | `data.sounds.joining[].second` | a list of sounds | yes | The sounds the second part opens on. |
624
- | `data.sounds.joining[].written` | a string, such as `â` or `y+` | yes | What is written where they meet: the sound that stands for both, or a join closing on `+`, which keeps both and sets it between. |
625
- | `data.sounds.joining[].example` | a string | no | A word joined so. |
626
- | `data.sounds.joins` | list of `{ meeting, rule, letters?, where? }` | no | What happens where two parts of a word meet, one entry per meeting. |
627
- | `data.sounds.joins[].meeting` | one of C+C, V+C, V+V | yes | Which sounds meet: a consonant `C` or a vowel `V` closing the first part, then opening the second. |
628
- | `data.sounds.joins[].rule` | one of merge, insert, drop, double | yes | What happens where they meet. |
629
- | `data.sounds.joins[].letters` | a list of letters | no | The letters the rule takes: what `insert` sets between, or what `double` doubles. |
630
- | `data.sounds.joins[].where` | a string, such as `between stems` | no | Where the rule holds; everywhere where absent. |
631
- | `data.sounds.marks` | list of `{ mark, letters, kind, limit }` | no | The marks the language writes on its letters. |
632
- | `data.sounds.marks[].mark` | a string, such as `acute` | yes | The mark's name. |
633
- | `data.sounds.marks[].letters` | a list of letters | yes | The letters that carry it. |
634
- | `data.sounds.marks[].kind` | one of stress, length, apart | yes | What the mark says of its letter. |
635
- | `data.sounds.marks[].limit` | one of one, any | yes | How many a word may carry: `one` at most, or `any`. |
636
- | `data.sounds.skeleton` | list of `{ second, between? }` | no | The vowel set between a root's second and third consonants. |
637
- | `data.sounds.skeleton[].second` | a list of sounds, or `any` | yes | The second consonants of a root the row holds for; `any` for every other. |
638
- | `data.sounds.skeleton[].third` | a list of sounds, or `any` | no | The third consonants of a root the row holds for; every third consonant where absent. |
639
- | `data.sounds.skeleton[].between` | a vowel, such as `a` | no | The vowel set between the second and third consonants; nothing where absent. |
640
- | `data.sounds.frames` | list of `{ frame, shape, class, makes, examples? }` | no | The patterns a root is set in. |
641
- | `data.sounds.frames[].frame` | a string, such as `bare` | yes | The frame's name, which a word's `frame` names. |
642
- | `data.sounds.frames[].shape` | a pattern, such as `K1aK2K3` | yes | The pattern, the root's consonants numbered `K1`, `K2`, `K3`. |
643
- | `data.sounds.frames[].class` | a list of word class bases | yes | The classes of word the frame makes, each a base of the master word classes. |
644
- | `data.sounds.frames[].makes` | a string | yes | What the frame makes of a root. |
645
- | `data.sounds.frames[].examples` | a map of roots to forms | no | The form a root takes in the frame, keyed by the root. |
646
- | `data.sounds.readPast` | list of `{ written, readAs?, what }` | no | Marks and spellings a word is read through before the sound rules hold it. |
647
- | `data.sounds.readPast[].written` | a string | yes | A mark or spelling the pages write. |
648
- | `data.sounds.readPast[].readAs` | a string | no | What a word is read with in its place; absent where it is read as nothing. |
649
- | `data.sounds.readPast[].what` | a string | yes | What the mark or spelling is. |
650
- | `data.sounds.mutations` | list of `{ mutation, sound, becomes, example? }` | no | The sounds a word changes where a named mutation holds, one entry per sound, such as a stop worn to a fricative or a consonant voiced inside a compound. |
651
- | `data.sounds.mutations[].mutation` | a string, such as `wearing` | yes | The mutation's name; its rows share it, and `data.negation` names it. |
652
- | `data.sounds.mutations[].sound` | a sound as written, such as `p` | yes | The sound as it stands where the mutation does not hold; once per mutation. |
653
- | `data.sounds.mutations[].becomes` | a sound as written, such as `v` | yes | What the sound becomes where the mutation holds. |
654
- | `data.sounds.mutations[].example` | a string | no | A word that shows it. |
655
- | `data.soundChanges[].name` | a string, such as `From Helonic to Byzarian` | yes | The set's name, which no other set of the note shares. |
656
- | `data.soundChanges[].from` | a language skill Address | no | The language whose words the steps start from. |
657
- | `data.soundChanges[].to` | a language skill Address | no | The language whose words the steps make. |
658
- | `data.soundChanges[].takes` | a case, such as `accusative` | no | The form of the older word the steps start from; its citation form where absent. |
659
- | `data.soundChanges[].steps` | list of `{ step, change, where? }` | yes | The steps, in the order they apply; no step label stands twice in a set. |
660
- | `data.soundChanges[].steps[].step` | a string, such as `A1` or `"1"` | yes | The step's label, in the order the changes apply. |
661
- | `data.soundChanges[].steps[].change` | a change in arrow notation, such as `` `ph` > `f`; `kh` > `h` `` | yes | The change, in arrow notation: one or more `` `sources` > `targets` `` rules separated by `;`, or the operation a step names in words. |
662
- | `data.soundChanges[].steps[].where` | a string, such as `word end` | no | Where the change holds; everywhere where absent. |
663
- | `data.elements[].form` | the element as written, such as `arn-` | yes | The element a name is built from. |
664
- | `data.elements[].variants` | a list of forms | no | The element's other forms, such as `aldr-` beside `ald-`. |
665
- | `data.elements[].position` | one of opening, closing, either, link | no | Where in a name the element stands. |
666
- | `data.elements[].kind` | one of byname, given, place | no | The kind of name the element builds, in a language that keeps one set of elements per kind; every kind where absent. |
667
- | `data.elements[].sense` | a string | yes | What the element means. |
668
- | `data.elements[].examples` | a list of names | no | The names the element is read from. |
669
- | `data.elements[].word` | a form of the language's words | no | The word the element is the stem of, a form of `data.words` of the language or an ancestor. |
670
- | `data.elements[].joining` | the element as written, such as `-borgar` | no | The element's joining form, as written when it qualifies another word. |
671
- | `data.roots[].root` | a consonantal skeleton, such as `d-l-k` | yes | The root. |
672
- | `data.roots[].sense` | a string | yes | What the root means. |
673
- | `data.roots[].field` | a string, such as `stone` | no | The field the root belongs to. |
674
- | `data.cognates[].forms` | a map of language Addresses to forms | yes | The form the set takes in each language, keyed by the language note's Address. |
675
- | `data.cognates[].proto` | a form, bare | no | The reconstructed form the set descends from, in no attested language; printed with an asterisk. |
676
- | `data.cognates[].gloss` | a string | yes | What the forms mean. |
677
- | `data.callingNames.closings` | list of `{ form?, doubled?, usual }` | yes | What a calling name closes on. |
678
- | `data.callingNames.closings[].form` | an ending, such as `-u` | no | The ending; a row states `form` or `doubled`, never both. |
679
- | `data.callingNames.closings[].doubled` | `true` | no | The calling name doubles the first syllable rather than taking an ending. |
680
- | `data.callingNames.closings[].usual` | one of man, woman, either | yes | Whose name it usually makes. |
681
- | `data.callingNames.minSyllables` | a whole number | yes | The fewest syllables a given name has that the pages give a calling name. |
682
- | `data.older[].form` | a form as the setting writes it | yes | A word or name whose shape the language's rules do not make. |
683
- | `data.older[].gloss` | a string | no | What it means. |
684
- | `data.older[].layer` | a string, such as `Primordial` | no | The historical layer it belongs to. |
685
- | `data.negation.particle` | a form of the language's words | yes | The particle that stands before a verb to negate it, a form of `data.words` of the language or an ancestor. |
686
- | `data.negation.mutation` | a mutation of `data.sounds.mutations` | no | The mutation the negated verb takes, named in `data.sounds.mutations`. |
687
- | `data.naming.shapes` | list of `{ of, syllables?, perVowel? }` | no | How long each class of name runs. |
688
- | `data.naming.shapes[].of` | one of name, given, clan, bound, compound | yes | The class of name the shape holds for; once per class. |
689
- | `data.naming.shapes[].syllables` | a map — `{ min, max }` | no | How many syllables a name of the class runs to. |
690
- | `data.naming.shapes[].syllables.min` | a whole number | yes | The fewest syllables a name of the class runs to. |
691
- | `data.naming.shapes[].syllables.max` | a whole number | yes | The most syllables a name of the class runs to; never below `min`. |
692
- | `data.naming.shapes[].perVowel` | a map — `{ min, max }` | no | How many consonants a name of the class carries to each vowel; a shape states this, `syllables`, or both. |
693
- | `data.naming.shapes[].perVowel.min` | a number | yes | The fewest consonants a name of the class carries to each vowel. |
694
- | `data.naming.shapes[].perVowel.max` | a number | yes | The most consonants a name of the class carries to each vowel; never below `min`. |
695
- | `data.naming.edges` | list of `{ edge, sounds, vowel?, of? }` | no | The sounds a name may open and close on, where names keep edges ordinary words do not; an edge stands once for each class of name. |
696
- | `data.naming.edges[].edge` | one of openConsonant, openCluster, closeConsonant, closeCluster, innerCluster, vowelPair, glide, syllabic | yes | Which edge of a name the sounds stand at. |
697
- | `data.naming.edges[].sounds` | a list of sounds, or `any` | yes | The sounds, as written; `any` for every one, and an empty list for none. |
698
- | `data.naming.edges[].vowel` | `true` or `false` | no | Whether a vowel may stand at the edge too; `false` where unstated. |
699
- | `data.naming.edges[].of` | one of name, given, clan, bound, compound | no | The class of name the edge holds for; `name`, every name, where absent. |
700
- | `data.naming.draws` | list of `{ kind, elements }` | no | The element kinds each kind of name is built from. |
701
- | `data.naming.draws[].kind` | one of byname, given, place | yes | The kind of name; once per kind. |
702
- | `data.naming.draws[].elements` | a list of element kinds | yes | The kinds of element, as `data.elements` states them, the name is built from. |
703
- | `data.naming.heldFrom` | list of `{ source, takes, clip?, joining?, elements? }` | no | What a place name takes first, by what the place is held from. |
704
- | `data.naming.heldFrom[].source` | a string, such as `a founder` | yes | What the place is held from. |
705
- | `data.naming.heldFrom[].takes` | one of stem, godName, givenName, element | yes | What stands first: a name-stem in any grade, a god's name, a founder's given name, or one of `elements`. |
706
- | `data.naming.heldFrom[].clip` | one of first | no | How the name is clipped: `first`, to its first element; whole where absent. |
707
- | `data.naming.heldFrom[].joining` | a list of endings | no | The joining endings, one of which stands at the seam after the name. |
708
- | `data.naming.heldFrom[].elements` | a list of elements | no | The elements that may stand first, for a row that takes an `element`. |
709
- | `data.naming.nearName` | a map — `{ minSyllables, examples? }` | no | The near name a long given name carries. |
710
- | `data.naming.nearName.minSyllables` | a whole number | yes | The fewest syllables a given name has that carries a near name. |
711
- | `data.naming.nearName.examples` | list of `{ near, given }` | no | Worked near names, each beside its given name. |
712
- | `data.naming.nearName.examples[].near` | a near name, such as `Anlâ` | yes | The near name. |
713
- | `data.naming.nearName.examples[].given` | a given name | yes | The given name it is the near name of. |
714
- | `data.script.fonts` | list of installed faces' slugs | yes | The faces the script is written in, by the slug `font=` names them by. A face belongs to one script. |
715
- | `data.script.emphasis` | `rubric` or `overline` | yes | How the script marks a stressed word: `rubric` sets it in red, `overline` draws a line above it. It sets `.emph` and accepted English emphasis inside a run in one of its faces, unless the run's language states its own `emphasis`. |
716
- | `data.script.direction` | `vertical-rl` | no | How the script is written: `vertical-rl` is columns, top to bottom, read from the right, which a `scroll` fence sets. A script stating none is written in lines. |
491
+ | Key | Shape | Required | Meaning |
492
+ | ----------------------------------------- | --------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
493
+ | `data.names.pattern` | a pattern such as "{given} {clan}", a list of them, or a map of genders to either | yes | How a name is built: each `{list}` placeholder is filled from the list of that name, `{given.<gender>}` from that gender's given names, `{en.<list>}` from a list of English names, and the text around them is written as it stands. A list states every form a name may take; a map keyed by gender states each gender's forms, and a gender with none takes every pattern stated. |
494
+ | `data.names.given` | a map of genders to lists of names | yes | Given names by gender word. A gender with no list draws from every given list together. |
495
+ | `data.names.en` | a map of list names to lists of English names | no | English names, never encoded in the tongue's script. A pattern draws from one list as `{en.<list>}`, as `{en.epithet}` does. |
496
+ | `data.fields[].name` | a string | yes | The field's name, which a word's `field` names. |
497
+ | `data.fields[].holds` | a string | yes | What the field holds. |
498
+ | `data.words[].form` | the word as cited, bare | yes | The word as cited, with no backticks. |
499
+ | `data.words[].variants` | a list of forms | no | The word's other forms, such as a long form beside a short one; a marked use of one cites the word, and a mapped run accepts it and the forms the language's rules derive from it. |
500
+ | `data.words[].name_sort` | a string | no | The sort key; the form when unstated. |
501
+ | `data.words[].class` | a word class, base first, such as `n I f` | yes | A class from the master word classes: a base, then the modifiers the language declares in `classModifiers`. |
502
+ | `data.words[].plural` | a string | no | The noun's explicit plural, where it differs from the language's optional plural rule. A dictionary uses this form before the rule; no rule agreement is checked. |
503
+ | `data.words[].field` | one of the language's `fields` names | yes | The field tag beside the dictionary entry, named in the language's `fields`. |
504
+ | `data.words[].gloss` | a string, or a list of senses | yes | The meaning, in brief; a list states one sense per entry, which a dictionary numbers. |
505
+ | `data.words[].concept` | a core concept's id, or a list of them | no | The core concepts the word serves, each an `id` of a `data.concepts` list. The core report counts the word toward them. |
506
+ | `data.words[].source` | a map — `{ kind, language?, form? }` | no | Where the word comes from. |
507
+ | `data.words[].source.kind` | one of inherited, borrowed, kept, worn, coined, substrate, island | yes | How the word came into the tongue. |
508
+ | `data.words[].source.language` | a language skill Address | no | The tongue the word was borrowed from; required for `borrowed`. |
509
+ | `data.words[].source.form` | a string | no | The form the word had in its source, bare. |
510
+ | `data.words[].built` | a list of pieces | no | The pieces the word is built from, in order, as the language's words and affixes write them; absent for a root word. |
511
+ | `data.words[].note` | a string | no | What a source says of the word beyond its pieces, such as a cognate it is read with. |
512
+ | `data.words[].pronunciation` | a respelling such as `sol-MEH-reh` | no | A respelling in hyphen-separated syllables, the stressed one in capitals: letters, apostrophes and hyphens only, and at most one capitalised syllable. |
513
+ | `data.words[].tones` | a string | no | A tone pattern, such as `LHL`. |
514
+ | `data.words[].root` | a string | no | A consonantal skeleton, such as `d-l-k`. |
515
+ | `data.words[].frame` | a frame of the language's `sounds.frames` | no | The frame a root is set in, named in the language's `sounds.frames`. |
516
+ | `data.words[].native` | a list of `{ enc, font?, text }` | no | The word's own writing for an encoding and optional face. It precedes complete parts and the encoding's rows; an entry for a face precedes an unqualified entry. Derived forms can use the stem and explicitly written grammatical endings. |
517
+ | `data.words[].native[].enc` | an encoding document Address | yes | The encoding the native form is written for. |
518
+ | `data.words[].native[].font` | a face the encoding lists | no | The one face the native form is for; unstated, it is for every face the encoding lists, and a form stated for a face wins over it there. |
519
+ | `data.words[].native[].text` | the word in the script, as the encoding's characters | yes | The word as the script writes it, where the encoding's rows would write it otherwise, or by an explicit native spelling. |
520
+ | `data.affixes[].form` | the affix as written, such as `-rith` | no | The affix as a word's `built` names it; absent on a zero affix. |
521
+ | `data.affixes[].zero` | `true` | no | The affix is written as nothing, such as a case with no ending; it states no `form`, prints as `∅`, and no `built` piece names it. |
522
+ | `data.affixes[].kind` | one of case, derivation, tense, aspect, mood, voice, name, lineage | no | What the affix makes. |
523
+ | `data.affixes[].given` | one of man, woman, either | no | Who a given name closing on it belongs to; an affix of kind `name` only. |
524
+ | `data.affixes[].where` | a string, such as `before a stop` | no | Where this form stands, for an affix written two ways; everywhere where absent. |
525
+ | `data.affixes[].gloss` | a string | yes | What the affix means. |
526
+ | `data.affixes[].attaches` | a string | no | How it attaches, in words, such as `replaces a closing vowel`. |
527
+ | `data.affixes[].replaces` | `vowel`, or the letters, such as `a` | no | What it takes the place of at the close of the stem: `vowel` for any closing vowel, or the letters it replaces; added to the whole stem where absent. |
528
+ | `data.affixes[].attachesTo` | a list of word classes, such as `[n, adj]` | no | The word classes it attaches to, by their base; every class where absent. A suffix stating `replaces` derives forms of these classes' words alone. |
529
+ | `data.affixes[].lengthens` | `true` or `false` | no | Whether the stem's last vowel lengthens before the affix; `false` where unstated. An affix that `replaces` the stem's close does not also lengthen it. |
530
+ | `data.affixes[].front` | the affix as written, such as `-ür` | no | Its form after front vowels, where the language keeps vowel harmony. |
531
+ | `data.affixes[].examples` | a list of strings | no | The names the affix is read from. |
532
+ | `data.affixes[].barredAfter` | a list of sounds | no | The sounds a stem may not close on to take the affix. |
533
+ | `data.affixes[].tones` | a tone pattern, such as `L` | no | The tone pattern the affix carries, written as a word's `tones` is. |
534
+ | `data.affixes[].native` | a list of `{ enc, font?, text }` | no | The affix's writing under an encoding, which a word whose `built` names the affix is written with. |
535
+ | `data.affixes[].native[].enc` | an encoding document Address | yes | The encoding the native form is written for. |
536
+ | `data.affixes[].native[].font` | a face the encoding lists | no | The one face the native form is for; unstated, it is for every face the encoding lists, and a form stated for a face wins over it there. |
537
+ | `data.affixes[].native[].text` | the word in the script, as the encoding's characters | yes | The word as the script writes it, where the encoding's rows would write it otherwise, or by an explicit native spelling. |
538
+ | `data.grammar.plural` | list of `{ ending, becomes }` | no | Default noun plurals, replacing the first matching literal ending in authored order. A word's explicit plural wins; no word is checked against this rule. |
539
+ | `data.grammar.plural[].ending` | a literal ending string, which may be empty | yes | The bare suffix replaced by this rule; empty matches every noun. |
540
+ | `data.grammar.plural[].becomes` | a literal ending string, which may be empty | yes | The bare replacement; empty removes the matching suffix. |
541
+ | `data.grammar.verbs` | a map — `{ invariant: true }` or `{ persons: { I, you, heShe, we, youAll, they }, replaces? }` | no | One optional regular present pattern, printed once at the dictionary head. |
542
+ | `data.grammar.verbs.invariant` | true, as the alternative to persons | no | True where verbs keep the citation form for every person; excludes `persons`. |
543
+ | `data.grammar.verbs.persons` | a map — `{ I, you, heShe, we, youAll, they }` of ending strings | no | All six present endings, each added to the citation form or in place of its closing `replaces`; excludes `invariant`. |
544
+ | `data.grammar.verbs.persons.I` | an ending string, empty for unchanged | yes | The ending for I, added to the citation form or in place of its closing `replaces`. |
545
+ | `data.grammar.verbs.persons.you` | an ending string, empty for unchanged | yes | The ending for you, added to the citation form or in place of its closing `replaces`. |
546
+ | `data.grammar.verbs.persons.heShe` | an ending string, empty for unchanged | yes | The ending for he/she, added to the citation form or in place of its closing `replaces`. |
547
+ | `data.grammar.verbs.persons.we` | an ending string, empty for unchanged | yes | The ending for we, added to the citation form or in place of its closing `replaces`. |
548
+ | `data.grammar.verbs.persons.youAll` | an ending string, empty for unchanged | yes | The ending for you all, added to the citation form or in place of its closing `replaces`. |
549
+ | `data.grammar.verbs.persons.they` | an ending string, empty for unchanged | yes | The ending for they, added to the citation form or in place of its closing `replaces`. |
550
+ | `data.grammar.verbs.replaces` | the closing letters every ending takes the place of | no | Letters a citation form closes on, swapped for each `persons` ending: with `then`, `lokathen` and `zor` give `lokazor`. A citation form closing otherwise takes the ending whole. With `persons` only. |
551
+ | `data.grammar.agreement` | a map — `{ classes, endings }` | no | How words of the named classes agree with a noun: a word closing on one of the `endings` also takes each other one, and each form takes the `plural` rule. Read by the mapped-run word check. |
552
+ | `data.grammar.agreement.classes` | a list of word class bases, such as `[adj, pron]` | yes | The word classes that agree, each a base of the master word classes. |
553
+ | `data.grammar.agreement.endings` | a list of at least two literal endings, such as `[os, a, on]` | yes | The singular endings an agreeing word swaps among, one for each gender; the `plural` rule gives each one's plural. A word closing on none does not agree. |
554
+ | `data.grammar.participles` | a map — `{ root, affixes }` | no | Participles on the verb root: a verb closing on a `root` ending drops it, and each named suffix attaches to what is left; a participle closing on an `agreement` ending agrees. Read by the mapped-run word check. |
555
+ | `data.grammar.participles.root` | a list of closing letters, such as `[athen, ethen]` | yes | The infinitive endings a verb's citation form drops to give its root, the longest that matches first. A verb closing on none has no participle. |
556
+ | `data.grammar.participles.affixes` | a list of suffixes of `data.affixes`, such as `[-andar, -thos]` | yes | The participle suffixes, each attaching to the root as its own `replaces` says: `vowel` or letters take the place of the root's close, and none adds it whole. |
557
+ | `data.grammar.native` | a list of `{ ending, enc, font?, text }` | no | Under an encoding, the signs a noun's plural or a verb's present form is written with after its stem's writing, one entry per ending, encoding and face. |
558
+ | `data.grammar.native[].ending` | one of plural, I, you, heShe, we, youAll, they | yes | The ending written: `plural` for a noun's plural, or a person of `verbs.persons` for a verb's present form. |
559
+ | `data.grammar.native[].enc` | an encoding document Address | yes | The encoding the ending is written for. |
560
+ | `data.grammar.native[].font` | a face the encoding lists | no | The one face the writing is for; unstated, it is for every face the encoding lists, and a writing stated for a face wins over it there. |
561
+ | `data.grammar.native[].text` | the ending in the script, as the map's characters; empty writes the stem alone | yes | The signs written after the stem's writing. |
562
+ | `data.tongues[].tag` | a tag such as `dunhari`, or `exonym:<tongue>` | yes | The tag a register row's `tongue` names: lowercase letters and digits, or a tag closing on `:<tongue>`, which declares one tag per tongue named after the colon. |
563
+ | `data.tongues[].meaning` | a string | yes | What a name of this tongue is. |
564
+ | `data.tongues[].language` | a language skill Address | no | The language note the tag names, where it is one. |
565
+ | `data.register[].name` | a name as the setting writes it | yes | A name the setting gives, as it is written. |
566
+ | `data.register[].tongue` | a tag of `data.tongues`, or `translation` | no | The tongue the name is in, as a tag `data.tongues` declares, or `translation`. A row states a `tongue`, a `kind`, or both. |
567
+ | `data.register[].kind` | one of byname, given, place | no | What kind of name it is, in a language that sorts its names by kind. |
568
+ | `data.register[].built` | a list of pieces | no | The pieces the name is built from, in order, as a word's `built` writes them. |
569
+ | `data.register[].gloss` | a string | no | What the name means, where the pages give its sense. |
570
+ | `data.register[].why` | a string | no | Why the name stands outside the pattern the language's names are built by. |
571
+ | `data.retired[].form` | a string | yes | The form the setting does not write. |
572
+ | `data.retired[].instead` | a string, or a list of them | no | What is written in its place, one form or several; absent where nothing is. |
573
+ | `data.retired[].why` | a string | yes | Why the setting does not write it. |
574
+ | `data.scope.folders` | a list of folder Addresses | no | Every note whose `data.packFolder` is one of these folders. |
575
+ | `data.scope.cultures` | a list of culture Addresses | no | Every note whose `data.culture` is one of these cultures. |
576
+ | `data.scope.lore` | a list of lore Addresses | no | Every note whose `data.lore` names one of these notes. |
577
+ | `data.scope.parents` | a list of Addresses | no | Every note whose `data.parents` names one of these notes. |
578
+ | `data.scope.addresses` | a list of Addresses | no | These notes themselves. |
579
+ | `data.scope.paths` | a list of content paths | no | Every note whose file sits below one of these paths of the content tree. |
580
+ | `data.scope.types` | a list of note types | no | The note types the register covers; where stated, a note of another type is out of scope whatever else catches it. |
581
+ | `data.scope.skip` | a list of Addresses | no | Notes out of scope whatever else catches them. |
582
+ | `data.sounds.letters` | list of `{ letters, kind, like?, place?, ipa?, tongue? }` | no | The letters the language writes, and the sounds they stand for. |
583
+ | `data.sounds.letters[].letters` | a list of letters | yes | The letters or digraphs the row describes, as written. |
584
+ | `data.sounds.letters[].kind` | a string, such as `consonant` or `long vowel` | yes | What kind of sound they write. |
585
+ | `data.sounds.letters[].like` | a string | no | What they sound like; absent where the row states only their kind and place. |
586
+ | `data.sounds.letters[].place` | a string, such as `lips` or `tongue-tip` | no | Where in the mouth they are made. |
587
+ | `data.sounds.letters[].ipa` | a string in the International Phonetic Alphabet, such as `ʃ` | no | The sounds they write, in the International Phonetic Alphabet. |
588
+ | `data.sounds.letters[].tongue` | a tag or a language note's Address, or a list of them | no | The tongues that write them, each a tag `data.tongues` declares or the Address of a language note; every one where absent. A `doc` note's rows name language notes only. |
589
+ | `data.sounds.edges` | list of `{ edge, sounds }` | no | The sounds that may stand at each edge of a word, one entry per edge. |
590
+ | `data.sounds.edges[].edge` | one of openConsonant, openCluster, closeConsonant, closeCluster, innerCluster, vowelPair, glide, syllabic | yes | Which edge of a word the sounds stand at. |
591
+ | `data.sounds.edges[].sounds` | a list of sounds, or `any` | yes | The sounds, as written; `any` for every one, and an empty list for none. |
592
+ | `data.sounds.clusters` | a map — `{ max, groups? }` | no | How many consonants may stand together. |
593
+ | `data.sounds.clusters.max` | a whole number | yes | The most consonants that stand together inside a word. |
594
+ | `data.sounds.clusters.groups` | list of `{ what, clusters, use }` | no | The clusters that may stand inside a word, in groups; a language stating them states no `innerCluster` edge. |
595
+ | `data.sounds.clusters.groups[].what` | a string, such as `a nasal and a fricative` | yes | What the clusters of the group are made of. |
596
+ | `data.sounds.clusters.groups[].clusters` | a list of clusters | yes | The clusters, as written; a digraph counts as one consonant. |
597
+ | `data.sounds.clusters.groups[].use` | one of common, sparing | yes | How often the group's clusters stand inside a word. |
598
+ | `data.sounds.stress` | a map — `{ two, longer, mark? }` | no | Where a word's stress falls, as a rule a program reads. |
599
+ | `data.sounds.stress.two` | one of first, last | yes | The stressed syllable of a word of two syllables. |
600
+ | `data.sounds.stress.longer` | one of first, antepenultimate, penultimate, final | yes | The stressed syllable of a word of three or more: `first`, or counted from its end. |
601
+ | `data.sounds.stress.mark` | one of acute, grave, circumflex | no | The diacritic that marks a stress the rule would not choose; it moves the stress to the syllable it sits on. |
602
+ | `data.sounds.finals` | list of `{ final, like, ipa? }` | no | The syllable finals, for a language whose syllables are parsed by them. |
603
+ | `data.sounds.finals[].final` | a final as written, such as `ang` | yes | The final. |
604
+ | `data.sounds.finals[].like` | a string | yes | What it sounds like. |
605
+ | `data.sounds.finals[].ipa` | a string in the International Phonetic Alphabet, such as `ʃ` | no | Its sound, in the International Phonetic Alphabet. |
606
+ | `data.sounds.syllables` | a map of syllable rules | no | What a syllable and a word may open and close on. |
607
+ | `data.sounds.syllables.onsets` | one of single | no | What a syllable opens on: `single`, a single consonant. |
608
+ | `data.sounds.syllables.codas` | a list of sounds, or `any` | no | The consonants that may close a syllable; `any` for every one. |
609
+ | `data.sounds.syllables.finals` | a list of sounds, or `any` | no | The consonants that may close a word; `any` for every one. |
610
+ | `data.sounds.syllables.doubled` | a list of letters | no | The doubled consonants a word may hold; none where empty. |
611
+ | `data.sounds.syllables.vowelPairs` | a list of vowel pairs | no | The vowels that may stand together; none where empty. |
612
+ | `data.sounds.syllables.initialVowel` | `true` or `false` | no | Whether a word may open on a vowel. |
613
+ | `data.sounds.syllables.finalVowel` | `true` or `false` | no | Whether a word may close on a vowel; `true` where unstated. |
614
+ | `data.sounds.syllables.neverInitial` | a list of letters | no | The letters that never open a word. |
615
+ | `data.sounds.syllables.signature` | a list of letters | no | The letters that mark a word as the language's own. |
616
+ | `data.sounds.syllables.harmony` | a map — `{ back, front, neutral?, neutralAs?, partners? }` | no | The vowel harmony a word keeps. |
617
+ | `data.sounds.syllables.harmony.back` | a list of vowels | yes | The back vowels. |
618
+ | `data.sounds.syllables.harmony.front` | a list of vowels | yes | The front vowels. |
619
+ | `data.sounds.syllables.harmony.neutral` | a list of vowels | no | The vowels of neither set. |
620
+ | `data.sounds.syllables.harmony.neutralAs` | one of back, front | no | The set a word of neutral vowels alone counts as. |
621
+ | `data.sounds.syllables.harmony.partners` | a map of vowels to front vowels | no | The front vowel each vowel turns to in an affix's front form, keyed by the vowel; every key is a vowel of the harmony and every value one of its `front` vowels. |
622
+ | `data.sounds.joining` | list of `{ first, second, written, example? }` | no | How two parts are written where the first closes and the second opens on the given sounds. |
623
+ | `data.sounds.joining[].first` | a list of sounds | yes | The sounds the first part closes on. |
624
+ | `data.sounds.joining[].second` | a list of sounds | yes | The sounds the second part opens on. |
625
+ | `data.sounds.joining[].written` | a string, such as `â` or `y+` | yes | What is written where they meet: the sound that stands for both, or a join closing on `+`, which keeps both and sets it between. |
626
+ | `data.sounds.joining[].example` | a string | no | A word joined so. |
627
+ | `data.sounds.joins` | list of `{ meeting, rule, letters?, where? }` | no | What happens where two parts of a word meet, one entry per meeting. |
628
+ | `data.sounds.joins[].meeting` | one of C+C, V+C, V+V | yes | Which sounds meet: a consonant `C` or a vowel `V` closing the first part, then opening the second. |
629
+ | `data.sounds.joins[].rule` | one of merge, insert, drop, double | yes | What happens where they meet. |
630
+ | `data.sounds.joins[].letters` | a list of letters | no | The letters the rule takes: what `insert` sets between, or what `double` doubles. |
631
+ | `data.sounds.joins[].where` | a string, such as `between stems` | no | Where the rule holds; everywhere where absent. |
632
+ | `data.sounds.marks` | list of `{ mark, letters, kind, limit }` | no | The marks the language writes on its letters. |
633
+ | `data.sounds.marks[].mark` | a string, such as `acute` | yes | The mark's name. |
634
+ | `data.sounds.marks[].letters` | a list of letters | yes | The letters that carry it. |
635
+ | `data.sounds.marks[].kind` | one of stress, length, apart | yes | What the mark says of its letter. |
636
+ | `data.sounds.marks[].limit` | one of one, any | yes | How many a word may carry: `one` at most, or `any`. |
637
+ | `data.sounds.skeleton` | list of `{ second, between? }` | no | The vowel set between a root's second and third consonants. |
638
+ | `data.sounds.skeleton[].second` | a list of sounds, or `any` | yes | The second consonants of a root the row holds for; `any` for every other. |
639
+ | `data.sounds.skeleton[].third` | a list of sounds, or `any` | no | The third consonants of a root the row holds for; every third consonant where absent. |
640
+ | `data.sounds.skeleton[].between` | a vowel, such as `a` | no | The vowel set between the second and third consonants; nothing where absent. |
641
+ | `data.sounds.frames` | list of `{ frame, shape, class, makes, examples? }` | no | The patterns a root is set in. |
642
+ | `data.sounds.frames[].frame` | a string, such as `bare` | yes | The frame's name, which a word's `frame` names. |
643
+ | `data.sounds.frames[].shape` | a pattern, such as `K1aK2K3` | yes | The pattern, the root's consonants numbered `K1`, `K2`, `K3`. |
644
+ | `data.sounds.frames[].class` | a list of word class bases | yes | The classes of word the frame makes, each a base of the master word classes. |
645
+ | `data.sounds.frames[].makes` | a string | yes | What the frame makes of a root. |
646
+ | `data.sounds.frames[].examples` | a map of roots to forms | no | The form a root takes in the frame, keyed by the root. |
647
+ | `data.sounds.readPast` | list of `{ written, readAs?, what }` | no | Marks and spellings a word is read through before the sound rules hold it. |
648
+ | `data.sounds.readPast[].written` | a string | yes | A mark or spelling the pages write. |
649
+ | `data.sounds.readPast[].readAs` | a string | no | What a word is read with in its place; absent where it is read as nothing. |
650
+ | `data.sounds.readPast[].what` | a string | yes | What the mark or spelling is. |
651
+ | `data.sounds.mutations` | list of `{ mutation, sound, becomes, example? }` | no | The sounds a word changes where a named mutation holds, one entry per sound, such as a stop worn to a fricative or a consonant voiced inside a compound. |
652
+ | `data.sounds.mutations[].mutation` | a string, such as `wearing` | yes | The mutation's name; its rows share it, and `data.negation` names it. |
653
+ | `data.sounds.mutations[].sound` | a sound as written, such as `p` | yes | The sound as it stands where the mutation does not hold; once per mutation. |
654
+ | `data.sounds.mutations[].becomes` | a sound as written, such as `v` | yes | What the sound becomes where the mutation holds. |
655
+ | `data.sounds.mutations[].example` | a string | no | A word that shows it. |
656
+ | `data.soundChanges[].name` | a string, such as `From Helonic to Byzarian` | yes | The set's name, which no other set of the note shares. |
657
+ | `data.soundChanges[].from` | a language skill Address | no | The language whose words the steps start from. |
658
+ | `data.soundChanges[].to` | a language skill Address | no | The language whose words the steps make. |
659
+ | `data.soundChanges[].takes` | a case, such as `accusative` | no | The form of the older word the steps start from; its citation form where absent. |
660
+ | `data.soundChanges[].steps` | list of `{ step, change, where? }` | yes | The steps, in the order they apply; no step label stands twice in a set. |
661
+ | `data.soundChanges[].steps[].step` | a string, such as `A1` or `"1"` | yes | The step's label, in the order the changes apply. |
662
+ | `data.soundChanges[].steps[].change` | a change in arrow notation, such as `` `ph` > `f`; `kh` > `h` `` | yes | The change, in arrow notation: one or more `` `sources` > `targets` `` rules separated by `;`, or the operation a step names in words. |
663
+ | `data.soundChanges[].steps[].where` | a string, such as `word end` | no | Where the change holds; everywhere where absent. |
664
+ | `data.elements[].form` | the element as written, such as `arn-` | yes | The element a name is built from. |
665
+ | `data.elements[].variants` | a list of forms | no | The element's other forms, such as `aldr-` beside `ald-`. |
666
+ | `data.elements[].position` | one of opening, closing, either, link | no | Where in a name the element stands. |
667
+ | `data.elements[].kind` | one of byname, given, place | no | The kind of name the element builds, in a language that keeps one set of elements per kind; every kind where absent. |
668
+ | `data.elements[].sense` | a string | yes | What the element means. |
669
+ | `data.elements[].examples` | a list of names | no | The names the element is read from. |
670
+ | `data.elements[].word` | a form of the language's words | no | The word the element is the stem of, a form of `data.words` of the language or an ancestor. |
671
+ | `data.elements[].joining` | the element as written, such as `-borgar` | no | The element's joining form, as written when it qualifies another word. |
672
+ | `data.roots[].root` | a consonantal skeleton, such as `d-l-k` | yes | The root. |
673
+ | `data.roots[].sense` | a string | yes | What the root means. |
674
+ | `data.roots[].field` | a string, such as `stone` | no | The field the root belongs to. |
675
+ | `data.cognates[].forms` | a map of language Addresses to forms | yes | The form the set takes in each language, keyed by the language note's Address. |
676
+ | `data.cognates[].proto` | a form, bare | no | The reconstructed form the set descends from, in no attested language; printed with an asterisk. |
677
+ | `data.cognates[].gloss` | a string | yes | What the forms mean. |
678
+ | `data.callingNames.closings` | list of `{ form?, doubled?, usual }` | yes | What a calling name closes on. |
679
+ | `data.callingNames.closings[].form` | an ending, such as `-u` | no | The ending; a row states `form` or `doubled`, never both. |
680
+ | `data.callingNames.closings[].doubled` | `true` | no | The calling name doubles the first syllable rather than taking an ending. |
681
+ | `data.callingNames.closings[].usual` | one of man, woman, either | yes | Whose name it usually makes. |
682
+ | `data.callingNames.minSyllables` | a whole number | yes | The fewest syllables a given name has that the pages give a calling name. |
683
+ | `data.older[].form` | a form as the setting writes it | yes | A word or name whose shape the language's rules do not make. |
684
+ | `data.older[].gloss` | a string | no | What it means. |
685
+ | `data.older[].layer` | a string, such as `Primordial` | no | The historical layer it belongs to. |
686
+ | `data.negation.particle` | a form of the language's words | yes | The particle that stands before a verb to negate it, a form of `data.words` of the language or an ancestor. |
687
+ | `data.negation.mutation` | a mutation of `data.sounds.mutations` | no | The mutation the negated verb takes, named in `data.sounds.mutations`. |
688
+ | `data.naming.shapes` | list of `{ of, syllables?, perVowel? }` | no | How long each class of name runs. |
689
+ | `data.naming.shapes[].of` | one of name, given, clan, bound, compound | yes | The class of name the shape holds for; once per class. |
690
+ | `data.naming.shapes[].syllables` | a map — `{ min, max }` | no | How many syllables a name of the class runs to. |
691
+ | `data.naming.shapes[].syllables.min` | a whole number | yes | The fewest syllables a name of the class runs to. |
692
+ | `data.naming.shapes[].syllables.max` | a whole number | yes | The most syllables a name of the class runs to; never below `min`. |
693
+ | `data.naming.shapes[].perVowel` | a map — `{ min, max }` | no | How many consonants a name of the class carries to each vowel; a shape states this, `syllables`, or both. |
694
+ | `data.naming.shapes[].perVowel.min` | a number | yes | The fewest consonants a name of the class carries to each vowel. |
695
+ | `data.naming.shapes[].perVowel.max` | a number | yes | The most consonants a name of the class carries to each vowel; never below `min`. |
696
+ | `data.naming.edges` | list of `{ edge, sounds, vowel?, of? }` | no | The sounds a name may open and close on, where names keep edges ordinary words do not; an edge stands once for each class of name. |
697
+ | `data.naming.edges[].edge` | one of openConsonant, openCluster, closeConsonant, closeCluster, innerCluster, vowelPair, glide, syllabic | yes | Which edge of a name the sounds stand at. |
698
+ | `data.naming.edges[].sounds` | a list of sounds, or `any` | yes | The sounds, as written; `any` for every one, and an empty list for none. |
699
+ | `data.naming.edges[].vowel` | `true` or `false` | no | Whether a vowel may stand at the edge too; `false` where unstated. |
700
+ | `data.naming.edges[].of` | one of name, given, clan, bound, compound | no | The class of name the edge holds for; `name`, every name, where absent. |
701
+ | `data.naming.draws` | list of `{ kind, elements }` | no | The element kinds each kind of name is built from. |
702
+ | `data.naming.draws[].kind` | one of byname, given, place | yes | The kind of name; once per kind. |
703
+ | `data.naming.draws[].elements` | a list of element kinds | yes | The kinds of element, as `data.elements` states them, the name is built from. |
704
+ | `data.naming.heldFrom` | list of `{ source, takes, clip?, joining?, elements? }` | no | What a place name takes first, by what the place is held from. |
705
+ | `data.naming.heldFrom[].source` | a string, such as `a founder` | yes | What the place is held from. |
706
+ | `data.naming.heldFrom[].takes` | one of stem, godName, givenName, element | yes | What stands first: a name-stem in any grade, a god's name, a founder's given name, or one of `elements`. |
707
+ | `data.naming.heldFrom[].clip` | one of first | no | How the name is clipped: `first`, to its first element; whole where absent. |
708
+ | `data.naming.heldFrom[].joining` | a list of endings | no | The joining endings, one of which stands at the seam after the name. |
709
+ | `data.naming.heldFrom[].elements` | a list of elements | no | The elements that may stand first, for a row that takes an `element`. |
710
+ | `data.naming.nearName` | a map — `{ minSyllables, examples? }` | no | The near name a long given name carries. |
711
+ | `data.naming.nearName.minSyllables` | a whole number | yes | The fewest syllables a given name has that carries a near name. |
712
+ | `data.naming.nearName.examples` | list of `{ near, given }` | no | Worked near names, each beside its given name. |
713
+ | `data.naming.nearName.examples[].near` | a near name, such as `Anlâ` | yes | The near name. |
714
+ | `data.naming.nearName.examples[].given` | a given name | yes | The given name it is the near name of. |
715
+ | `data.script.fonts` | list of installed faces' slugs | yes | The faces the script is written in, by the slug `font=` names them by. A face belongs to one script. |
716
+ | `data.script.emphasis` | `rubric` or `overline` | yes | How the script marks a stressed word: `rubric` sets it in red, `overline` draws a line above it. It sets `.emph` and accepted English emphasis inside a run in one of its faces, unless the run's language states its own `emphasis`. |
717
+ | `data.script.direction` | `vertical-rl` | no | How the script is written: `vertical-rl` is columns, top to bottom, read from the right, which a `scroll` fence sets. A script stating none is written in lines. |
717
718
 
718
719
  **System mappings**
719
720