typst 0.15 bundle rewrite
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@ bun.lock
|
||||
|
||||
# Generated output
|
||||
public_html
|
||||
.cache/
|
||||
|
||||
9
assets/scripts/fuse.min.js
vendored
9
assets/scripts/fuse.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,12 +0,0 @@
|
||||
window.onload = async () => {
|
||||
let pages_data = await fetch("/index.json")
|
||||
let pages = await pages_data.json()
|
||||
let q = document.getElementsByClassName("random_page")
|
||||
if (q.length > 0) {
|
||||
q.item(0).addEventListener("click", async (ev) => {
|
||||
let i = Math.floor(Math.random() * pages.length)
|
||||
console.log(i, pages[i])
|
||||
window.location.href = `/${pages[i].id}.html`
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
window.onload = async () => {
|
||||
let pages_data = await fetch("/index.json")
|
||||
let pages = await pages_data.json()
|
||||
pages.sort((a, b) => a.id.localeCompare(b.id, "en"))
|
||||
let l = document.getElementById("list")
|
||||
if (l) {
|
||||
l.innerHTML = ""
|
||||
for (let page of pages) {
|
||||
l.innerHTML += `<li><a href="/${page.id}.html">${page.id}: ${page.title}</a></li>`
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,47 +0,0 @@
|
||||
|
||||
window.addEventListener("load", async function (ev) {
|
||||
let data_req = await fetch("/index.json")
|
||||
let data = await data_req.json()
|
||||
let fuse = new Fuse(data, {keys: [
|
||||
"tags",
|
||||
"id",
|
||||
"title",
|
||||
"body"
|
||||
]
|
||||
})
|
||||
async function search(args) {
|
||||
try {
|
||||
let x = fuse.search(args)
|
||||
return x
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
document.getElementById('searchbox').addEventListener("input",
|
||||
async function(e) {
|
||||
let results = document.getElementById('results') // .innerHTML = idx.search(e.target.value))
|
||||
if (e.target.value == "") {
|
||||
results.innerHTML = ""
|
||||
} else {
|
||||
Promise.race([
|
||||
search(e.target.value),
|
||||
new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve(-1)
|
||||
}, 3000);
|
||||
})
|
||||
]).then((r) => {
|
||||
if (r == null) {
|
||||
results.innerHTML = "<ul class='sresult'><li class='sresult'><strong>Search results</strong></li><li class='sresult'>An error occured</li></ul>"
|
||||
} else if (r == -1) {
|
||||
results.innerHTML = "<ul class='sresult'><li class='sresult'><strong>Search results</strong></li><li class='sresult'>Query timed out</li></ul>"
|
||||
} else if (r.length == 0) {
|
||||
results.innerHTML = "<ul class='sresult'><li class='sresult'><strong>Search results</strong></li><li class='sresult'>No result</li></ul>"
|
||||
} else {
|
||||
results.innerHTML = "<ul class='sresult'>" + r.map((it) => "<li class='sresult'>" + "<a href=\"/" + it.item.id + ".html\">" + it.item.title + "</a></li>").reduce((a, b) => a + b) + "</ul>"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
167
build.ts
167
build.ts
@ -1,136 +1,45 @@
|
||||
#!/usr/bin/env -S bun run
|
||||
import { $ } from "bun";
|
||||
import { readdir } from "node:fs/promises"
|
||||
import { parseArgs } from "util";
|
||||
import { JSDOM } from "jsdom";
|
||||
import { Dirent } from "node:fs";
|
||||
import { mkdir, stat } from "node:fs/promises";
|
||||
|
||||
|
||||
enum LogLevel {
|
||||
DEBUG = 0,
|
||||
INFO = 1,
|
||||
WARN = 2,
|
||||
ERROR = 3,
|
||||
FATAL = 4
|
||||
}
|
||||
let {DEBUG, INFO, WARN, ERROR, FATAL} = LogLevel
|
||||
let minLogLevel : LogLevel = INFO
|
||||
function log(level: LogLevel, message: any) {
|
||||
const p = Bun.argv[1]?.split("/").slice(-1)[0] ?? "build script";
|
||||
switch (level) {
|
||||
case DEBUG: if (minLogLevel <= DEBUG) console.log(`\x1b[90m${p}: \x1b[1;45;97m [DEBUG] \x1b[0m ${message}`); break;
|
||||
case INFO: if (minLogLevel <= INFO) console.log(`\x1b[90m${p}: \x1b[1;44;97m [INFO] \x1b[0m ${message}`); break;
|
||||
case WARN: if (minLogLevel <= WARN) console.log(`\x1b[90m${p}: \x1b[1;48;5;208;97m [WARN] \x1b[0m ${message}`); break;
|
||||
case ERROR: if (minLogLevel <= ERROR) console.log(`\x1b[90m${p}: \x1b[1;41;97m [ERROR] \x1b[0m ${message}`); break;
|
||||
case FATAL: /*Cannot suppress fatal*/console.log(`\x1b[90m${p}: \x1b[1;41;97m [FATAL] ${message} \x1b[0m`); process.exit(); break;
|
||||
default: log(FATAL, `${level} isn't a valid log level`);
|
||||
import { readdir } from "node:fs/promises";
|
||||
function info(message: any) { console.log(`\x1b[1;44;97m INFO \x1b[0m ${message}`) }
|
||||
function err(message: any) { console.log(`\x1b[1;41;97m ERROR \x1b[0m ${message}`) }
|
||||
info("Annwan’s wiki build script v3");
|
||||
info("Collecting pages...");
|
||||
let page_files = await readdir("./pages", {withFileTypes: true, recursive: true});
|
||||
let page_list = [];
|
||||
for(let f of page_files) {
|
||||
if (f.isFile() && f.name.endsWith(".typ")) {
|
||||
page_list.push((f.parentPath + "/" + f.name).slice(6, -4));
|
||||
}
|
||||
}
|
||||
log(INFO, "Annwan’s wiki’s custom build script v2")
|
||||
|
||||
async function build_typst_file(file: Dirent) {
|
||||
let path = file.parentPath + "/" + file.name
|
||||
let dir = "public_html" + file.parentPath.slice(3)
|
||||
let slug = path.slice(4, -4)
|
||||
let outfile = `public_html/${slug}.html`
|
||||
log(INFO, `Compiling ${slug}`)
|
||||
await mkdir(dir, {recursive: true})
|
||||
await $`typst c --features html --format html --root . ${path} ${outfile}`
|
||||
log(DEBUG, `Checking if ${slug} needs post processing`)
|
||||
let html = await Bun.file(outfile).text();
|
||||
let heads = html.match(new RegExp("<head>.*?</head>", "sg"));
|
||||
if (heads != null && heads.length >= 2) {
|
||||
log(DEBUG, `Postprocessing ${slug}`)
|
||||
html = html.replace(heads[1], "");
|
||||
html = html.replace(heads[0], heads[1]);
|
||||
await Bun.write(outfile, html);
|
||||
}
|
||||
log(INFO, `${slug} done`)
|
||||
info(`Found ${page_list.length} pages.`)
|
||||
let pages = `pages=${JSON.stringify(page_list)}`
|
||||
info("Collecting assets...");
|
||||
let static_files = await readdir("static", {withFileTypes: true, recursive: true});
|
||||
let static_list = [];
|
||||
for(let f of static_files) {
|
||||
if (f.isFile()) { static_list.push((f.parentPath + "/" + f.name).slice(7)); }
|
||||
}
|
||||
|
||||
|
||||
async function build_all_typst() {
|
||||
let files = await readdir("src", {withFileTypes: true, recursive: true});
|
||||
let promises: Promise<void>[] = [];
|
||||
for (let f of files) {
|
||||
if (f.isFile() && f.name.endsWith(".typ"))
|
||||
promises.push(build_typst_file(f))
|
||||
}
|
||||
await Promise.all(promises)
|
||||
}
|
||||
|
||||
async function copy_assets() {
|
||||
log(INFO, "Updating assets")
|
||||
await $`rm -rf ${minLogLevel == DEBUG ? "-v" : ""} public_html/assets/`
|
||||
await $`cp -r ${minLogLevel == DEBUG ? "-v" : ""} assets/ public_html/`
|
||||
await $`cp ${minLogLevel == DEBUG ? "-v" : ""} public_html/assets/favicon.ico public_html/favicon.ico`
|
||||
}
|
||||
|
||||
type IndexEntry = { id: string; title: string; body: string; tags: string;}
|
||||
async function collect_data(f:string) : Promise<IndexEntry> {
|
||||
let id = f.slice(12, -5)
|
||||
log(INFO, `collecting metadata for ${id}`)
|
||||
let dom = await JSDOM.fromFile(f)
|
||||
log(DEBUG, `${id}: read`)
|
||||
let things = dom.window.document.getElementsByTagName("main")
|
||||
let body = ""
|
||||
for (let thing of things) body += thing.textContent;
|
||||
log(DEBUG, `${id}: body extracted`)
|
||||
let title = dom.window.document.getElementById("search-title")?.getAttribute("content") ?? ""
|
||||
log(DEBUG, `${id} title extracted: ${title}`)
|
||||
let tags = dom.window.document.getElementById("search-tags")?.getAttribute("content") ?? ""
|
||||
log(DEBUG, `${id}: tags extracted: ${tags}`)
|
||||
return {id, title, body, tags}
|
||||
}
|
||||
async function gen_index() {
|
||||
let files = await readdir("public_html", {withFileTypes: true, recursive: true})
|
||||
log(INFO, "Generating the search index");
|
||||
let promises : Promise<IndexEntry>[] = [];
|
||||
for (let f of files) {
|
||||
if (f.isFile() && f.name.endsWith(".html")) {
|
||||
promises.push(collect_data(f.parentPath + "/" + f.name));
|
||||
}
|
||||
}
|
||||
let data : IndexEntry[] = await Promise.all(promises)
|
||||
log(INFO, `Writing index`)
|
||||
await Bun.write("public_html/index.json", JSON.stringify(data), {mode: 0o644, createPath: true})
|
||||
}
|
||||
|
||||
|
||||
const args = parseArgs({
|
||||
args: Bun.argv,
|
||||
options: {
|
||||
"build": {type: "boolean", short: "b"},
|
||||
"assets": {type: "boolean", short: "a"},
|
||||
"index": {short: "i", type: "boolean" },
|
||||
"verbose": {short: "v", type: "string"},
|
||||
"help": {type: "boolean", short: "h"}
|
||||
},
|
||||
allowPositionals: true
|
||||
}).values
|
||||
|
||||
if (args.verbose) {
|
||||
try {
|
||||
minLogLevel = parseInt(args.verbose);
|
||||
} catch {
|
||||
log(FATAL, `'${args.verbose}' isn't a number`);
|
||||
info(`Found ${static_list.length} static assets.`)
|
||||
let assets = `static=${JSON.stringify(static_list)}`
|
||||
info("Collecting data files...")
|
||||
let data_files = await readdir("./data", {withFileTypes: true, recursive: true});
|
||||
let data_list = [];
|
||||
for (let f of data_files) {
|
||||
if (f.isFile() && f.name.endsWith(".toml")) {
|
||||
data_list.push(f.parentPath + "/" + f.name.slice(0, -5));
|
||||
}
|
||||
}
|
||||
|
||||
if (args.help) {
|
||||
log(INFO, `USAGE:`)
|
||||
log(INFO, `\t${Bun.argv[1]} [-b|--build] [-a|--assets] [-i|--index] [-v ⟨n⟩|--verbose ⟨n⟩]`)
|
||||
log(INFO, `\t${Bun.argv[1]} -h|--help`)
|
||||
} else {
|
||||
|
||||
if (!args.build && !args.assets && !args.index) {
|
||||
await build_all_typst()
|
||||
await copy_assets()
|
||||
await gen_index()
|
||||
}
|
||||
if (args.build) await build_all_typst();
|
||||
if (args.assets) await copy_assets();
|
||||
if (args.index) await gen_index();
|
||||
log(INFO, "DONE");
|
||||
}
|
||||
info(`Found ${data_list.length} data files.`);
|
||||
let data = `data=${JSON.stringify(data_list)}`;
|
||||
info("Generating watch script...");
|
||||
await $`mkdir -p .cache`;
|
||||
let cmd = `#!/bin/sh\ntypst --color always w --features html,bundle --format bundle --root . root.typ public_html --input '${pages}' --input '${assets}' --input '${data}' --port 8080`;
|
||||
await $`echo ${cmd} > .cache/watch.sh`;
|
||||
await $`chmod +x .cache/watch.sh`;
|
||||
info("Done.");
|
||||
info("Compiling typst bundle...");
|
||||
try {
|
||||
await $`typst --color always c --features html,bundle --format bundle --root . root.typ public_html --input ${pages} --input ${assets} --input ${data}`;
|
||||
} catch { err("something went wrong, see typst log above"); process.exit(); }
|
||||
info("Done.");
|
||||
|
||||
77
data/mosici_dict.toml
Normal file
77
data/mosici_dict.toml
Normal file
@ -0,0 +1,77 @@
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "ain"
|
||||
i = "ɛ̃"
|
||||
p = "p"
|
||||
label = "ain-p"
|
||||
d = "3rd person singular inanimate agent pronoun"
|
||||
[[words.e]]
|
||||
lang = "cln"
|
||||
word = ""
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "ain"
|
||||
i = "ɛ̃"
|
||||
p = "n"
|
||||
label = "ain-n"
|
||||
d = "Thing, object"
|
||||
[[words.e]]
|
||||
lang = "cln"
|
||||
word = ""
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "ainilapil"
|
||||
i = "ɛ̃neʎapeɥ"
|
||||
p = "n"
|
||||
d = "#low[(Grammar)] noun, substantive"
|
||||
[[words.e]]
|
||||
lang = "msc"
|
||||
label = "ain-n"
|
||||
[[words.e]]
|
||||
lang = "msc"
|
||||
word = ""
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "ainilapiltee"
|
||||
i = "ɛ̃neʎapeɥdi"
|
||||
p = "n"
|
||||
d = "Agent plural form of #low[ainilapil]"
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "ala"
|
||||
i = "aʟa"
|
||||
p = "v"
|
||||
d = "#low[(Archaic)] To do, perorm an action"
|
||||
[[words.e]]
|
||||
lang = "cln"
|
||||
word = ""
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "cirtss"
|
||||
i = "ceɐ̯ts"
|
||||
p = "n"
|
||||
d = """+ Writ, text
|
||||
+ Document, book"""
|
||||
[[words.e]]
|
||||
lang="cln"
|
||||
word = ""
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "contsse"
|
||||
i = "qõtsɛ"
|
||||
p = "n"
|
||||
d = "Novelty, innovation"
|
||||
[[words.e]]
|
||||
lang="cln"
|
||||
word=""
|
||||
[[words]]
|
||||
l = ""
|
||||
t = "ila"
|
||||
i = "eʎa"
|
||||
p = "n"
|
||||
d = "Language, speech"
|
||||
[[words.e]]
|
||||
lang = "cln"
|
||||
word = ""
|
||||
|
||||
|
||||
14
package.json
14
package.json
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": "wiki-build-tools",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/jsdom": "^27.0.0",
|
||||
"jsdom": "^27.4.0",
|
||||
"@types/bun": "latest"
|
||||
}
|
||||
}
|
||||
77
pages/index.typ
Normal file
77
pages/index.typ
Normal file
@ -0,0 +1,77 @@
|
||||
#import "/templates/article.typ": high
|
||||
#let opts = (
|
||||
title: "Index",
|
||||
has-page-js: false,
|
||||
has-page-css: false,
|
||||
no-toc: true,
|
||||
make-pdf: true,
|
||||
)
|
||||
#let doc(_) = [
|
||||
|
||||
Hi, welcome to my wiki-website-blog-thing.
|
||||
|
||||
Feel Free to look around.
|
||||
|
||||
= Other cool people and sites
|
||||
#context if target() == "html" {
|
||||
import html: *
|
||||
div(class: "buttonbox", {
|
||||
a(href: "https://dipndops.neocities.org/", target: "_blank", img(
|
||||
src: "https://dipndops.neocities.org/dipdop_button.gif",
|
||||
title: "dipdop hideout",
|
||||
alt: "dipndops",
|
||||
))
|
||||
a(href: "https://khimatales.neocities.org/", target: "_blank", img(
|
||||
src: "https://khimatales.neocities.org/FloralsCoolAwesomeNeoCitiesAffilateLink.gif",
|
||||
title: "Khima Tales",
|
||||
alt: "Khima Tales",
|
||||
))
|
||||
a(href: "https://yokokasquest.com/", target: "_blank", img(
|
||||
src: "https://yokokasquest.com/wp-content/uploads/2026/01/yq-button.png",
|
||||
title: "Yokoka's Quest - An Adventure Webcomic That Updates M/W/F!",
|
||||
alt: "Yokoka's Quest",
|
||||
))
|
||||
a(href: "https://r534.cisumchronicles.com", target:"_blank", img(
|
||||
src:"https://room534.cisumchronicles.com/images/layout/r534button.png",
|
||||
title:"Room 534 - An Original Characters Archive",
|
||||
alt:"Room 534"
|
||||
))
|
||||
a(href: "https://toyhou.se/katesleepybun", target: "_blank", img(
|
||||
src: "https://f2.toyhou.se/file/f2-toyhou-se/characters/37336946?1769119669.png",
|
||||
title: "katethesleepybun on ToyHouse",
|
||||
alt: "katethesleepybun on ToyHouse",
|
||||
))
|
||||
a(href: "https://forums.cisumchronicles.com/viewtopic.php?t=19", target: "_blank", img(
|
||||
src: "https://khimatales.neocities.org/CanYou.gif",
|
||||
title: "The Execution of Talo [CYOA]",
|
||||
alt: "The Execution of Talo [CYOA]",
|
||||
))
|
||||
a(href: "https://toyhou.se/DreamyPumpkins", target: "_blank", img(
|
||||
src: "https://f2.toyhou.se/file/f2-toyhou-se/images/113846742_IaqYsOqwcaKAQz6.png",
|
||||
title: "DreamyPumpkins on ToyHouse",
|
||||
alt: "DreamyPumpkins on ToyHouse",
|
||||
))
|
||||
a(href: "https://end-mythos.neocities.org", target: "_blank", img(
|
||||
src: "https://64.media.tumblr.com/284abf48960684f29c6d30334c93474c/212108410f12363b-41/s100x200/dc496daea04014c1226c16807dd33aa8ecb85b17.png",
|
||||
title: "Mythos of Wind and Thunder",
|
||||
alt: "Mythos of Wind and Thunder",
|
||||
))
|
||||
a(href: "https://khimatales.neocities.org/NolaFanclub", target: "_blank", img(
|
||||
src: "https://khimatales.neocities.org/NolaFanclubButton.gif",
|
||||
title: "Nola Fanclub",
|
||||
alt: "Nola Fanclub",
|
||||
))
|
||||
heading(level: 3)[You want a button to here?]
|
||||
|
||||
a(href: "https://wiki.annwan.me/", target: "_blank", img(
|
||||
src: "https://wiki.annwan.me/assets/webring-button.png",
|
||||
title: "Annwan's Wiki",
|
||||
alt: "Annwan's Wiki",
|
||||
))
|
||||
textarea(
|
||||
readonly: true,
|
||||
"<a href=\"https://wiki.annwan.me/\" target=\"_blank\"><img src=\"https://wiki.annwan.me/assets/webring-button.png\" title=\"Annwan's Wiki\" alt=\"Annwan's Wiki\" /></a>",
|
||||
)
|
||||
})
|
||||
} else {high[This section only makes sense in a web format and was ommited from the PDF generation, it contains several links to friend’s websites]}
|
||||
]
|
||||
338
pages/worldbuilding/astahon/mosici.typ
Normal file
338
pages/worldbuilding/astahon/mosici.typ
Normal file
@ -0,0 +1,338 @@
|
||||
#import "/templates/article.typ": setup, gloss, low, high, dictionary, figure, ref
|
||||
|
||||
#let opts = (
|
||||
title: "Mosici",
|
||||
tags: "language",
|
||||
make-pdf: true
|
||||
)
|
||||
#let doc(p) = [
|
||||
#set heading(numbering: "1.")
|
||||
#show: setup
|
||||
|
||||
*Mosici* ( [ãmoziciç eʎa]) is a Nielf languages spoken in the confederation of the eastern isles.
|
||||
|
||||
This page mostly treats of the Cairneshalese (of / Cairneshal), the standard variety
|
||||
|
||||
= History
|
||||
|
||||
#low[[WIP]]
|
||||
|
||||
= Sound ⁊ Letters
|
||||
== Basis of Phonology and Phonetics
|
||||
Mosici has the phonemes described in #ref(p+"consonants") and #ref(p+"vowels").
|
||||
#figure(
|
||||
caption: [Mosici consonants],
|
||||
table(columns: 5,
|
||||
table.header[][Labial][Coronal][Palatal][Dorsal],
|
||||
strong[Nasal], [m], [n], [], [],
|
||||
strong[Plosive], [p], [t], [], [k],
|
||||
strong[Fricative], [f v], [s z], [ʃ ʒ], [ʀ],
|
||||
strong[Approximant], [w], [], [j], [ʟ],
|
||||
),
|
||||
label: p+"consonants",
|
||||
)
|
||||
#figure(
|
||||
caption: [Mosici vowels],
|
||||
table(columns: 4,
|
||||
table.header(
|
||||
table.cell(rowspan: 2)[],
|
||||
table.cell(colspan: 2)[Front],
|
||||
table.cell(rowspan: 2)[Back],
|
||||
[Unrounded], [Rounded]
|
||||
),
|
||||
strong[Close], [i], [u], [y],
|
||||
strong[Close-Mid], [e], [ø], [o],
|
||||
strong[Open-Mid], [ɛ], [], [ɔ],
|
||||
strong[Open], [a], [], []
|
||||
),
|
||||
label: p + "vowels"
|
||||
)
|
||||
The following pronounciation rules apply:
|
||||
+ The dorsal approximant is delateralied and fronted (compared to what would imply rules 7-11) in coda position;
|
||||
+ The dorsal trill is realised as the semivowel [ɐ̯] in coda position;
|
||||
+ The dorsal trill is realised as the fricative [ʁ] in consonant clusters;
|
||||
+ Nasal consonats nasalise immediately preceeding vowels;
|
||||
+ Nasal consonants aren't pronounced in coda positions --- but nasalisation still happens;
|
||||
+ Close nasalised vowels \*[ĩ ỹ ũ] are realised as near-close [ɪ̃ ʏ̃ ʊ̃];
|
||||
+ The dorsal plosive and approximant are realised as palatal before /i y e j/;
|
||||
+ The drosal plosive and approximant are realised as uvular before /o u w/;
|
||||
+ The dorsal plosive and approximant are realised as palatal after /e i j/;
|
||||
+ The dorsal plosive and approximant are realised as palatal in the codas of syllables with /e/ or /i/ as nuclei;
|
||||
+ Otherwise the dorsal plosive and approximant are realised as velar;
|
||||
+ Plosives are voiced when adjacent to phonemicaically voiced consoants
|
||||
+ Plosives are realised as non-sibilant fricatives of same place of articulation world finaly, at the exception of /p/ which is realised as [h\~ɦ] in those same environments;
|
||||
+ A word-initial nasal-plosive or nasal-fricative cluster is realised as the prenasalised version of the plosive or fricative.
|
||||
|
||||
== Coalescence
|
||||
|
||||
Vowel coalescence is an historical sound change of mosici, the understanding of which is required to read the written standard of the language.
|
||||
|
||||
It affects vowels in hiatus, reducing them to single monophongs, sometimes separated by approximants.
|
||||
|
||||
Given that Late Classical Nielf --- in particular the insular varieties that give rise to Mosici --- had many such instances of hiatus, mosici spelling, can be at first glance irregular and unpredictable.
|
||||
|
||||
This sound change occured in Late Old Mosici, that is after the transition from distinctions in vowel length to distinctions in vowel quality (/a aː e eː i iː o oː/ #sym.arrow /a ɔ ɛ i e i o u/), and after the deletion of the central vowel /ə/ and the unvoiced dorsal fricative /x/ #sym.arrow /h/, but before the nasalisation of vowels before nasal consonants.
|
||||
|
||||
At this point in Mosici's evolution, the primary stress was located on the penultimate vowel of the word, with secondary stress on every other vowel from there.
|
||||
|
||||
The sound change proceeds in 4 steps:
|
||||
+ For each vowel pair in hiatus /ˈV#sub[1];.V#sub[2]/, merge them as per #ref(p+"coal")
|
||||
+ Recompute the positions of the stress according to the same pattern as above
|
||||
+ Repeat from (1) 2 more times;
|
||||
+ Merge any remaining /V#sub[1];.V#sub[2]/ pairs as per #ref(p+"coal").
|
||||
|
||||
#figure(caption: [Mosici vowel coalescence (values in IPA)],
|
||||
table(
|
||||
columns: 10,
|
||||
table.header[V#sub[2]#sym.arrow\ V#sub[1]#sym.arrow.b][a][ɛ][ɔ][e][ø][o][i][y][u],
|
||||
strong[a], [ɔ], [a], [ɔ], [ɛ], [ɛ], [ɔ], [e], [ø], [o],
|
||||
strong[ɛ], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø],
|
||||
strong[ɔ], [ɔ], [ø], [ɔ], [ø], [ø], [o], [ø], [ø], [o],
|
||||
strong[e], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø],
|
||||
strong[ø], [ø], [e], [ø], [e], [y], [o], [y], [y], [y],
|
||||
strong[o], [ɔ], [ø], [o], [ø], [ø], [u], [ø], [ø], [u],
|
||||
strong[i], [ja], [jɛ], [jɔ], [je], [jø], [jo], [i], [jy], [ju],
|
||||
strong[a], [ø], [ø], [ø], [ø], [y], [ø], [i], [i], [y],
|
||||
strong[u], [wa], [wɛ], [wɔ], [we], [wø], [wo], [wi], [y], [u],
|
||||
),
|
||||
label: p+"coal"
|
||||
)
|
||||
|
||||
== The Naran Alphabet
|
||||
Mosici is written in the naran alphabet (sometimes also called "poliah alphabet", from the frist few letters), which, in Mosici, is considered to have the letters defined in #ref(p+"letters")
|
||||
#figure(
|
||||
caption: [Naran alphabet for Mosici],
|
||||
table(
|
||||
columns: 5,
|
||||
table.header[Letter][Transcription][Value (IPA)][Letter name][Numeric value],
|
||||
[], [p], [/p/], [ · paí · [pe]], [1],
|
||||
[], [o], [/o/], [ · óss · [us]], [2],
|
||||
[], [l], [/ʟ/], [ · lán · [ʟɔ̃]], [3],
|
||||
[], [i], [/e/, /j/], [ · írne · [iɐ̯nɛ]], [4],
|
||||
[], [a], [/a/], [ · ánp · [ɔ̃h]], [5],
|
||||
[], [h], [-], [ · hapffe · [apfɛ]], [6 (0 with the diacritic)],
|
||||
[], [r], [/ʀ/], [ \ fastesiec hapffe\ [vazdeʒɛx apfɛ]], [used in fraction notation],
|
||||
[], [c], [/k/], [ · cal · [kaẅ]], [36 = 6#super[2]],
|
||||
[], [n], [/n/], [ · naol · [noẅ]], [216 = 6#super[3]],
|
||||
[], [e], [/ɛ/], [ · ésstal · [istaẅ]], [1~296 = 6#super[4]],
|
||||
[], [s], [/z/], [ · ssipal · [ʃpaẅ]], [7~776 = 6#super[5]],
|
||||
[], [f], [/v/], [ · fasoh · [vazo]], [46~656 = 6#super[6]],
|
||||
[], [m], [/m/], [ · milá · [meʎo]], [279~936 = 6#super[7]],
|
||||
[], [t], [/t/], [ · tecio · [teɟjo]], [1~679~616 = 6#super[8]],
|
||||
),
|
||||
label: p+"letters"
|
||||
)
|
||||
|
||||
Hapffe ⟨⟩ is completely silent, and is transparent to vowel coalescence and nasalisation, but acts as a consonant for all other aspects targetting adjacent vowels.
|
||||
|
||||
Fastesiec hapffe ⟨⟩ is an Early Middle Mosici innovation to indicate velar fricative that had voiced in old Mosici and thus were still pronounced (then ɣ, now ʀ in Standard Modern Mosici) and distingush them from the now-silent hapffe. A similar reform was proposed for ssipal and fasoh, with the letters fastesiec ssipal ⟨⟩ and fastesiec fasoh ⟨⟩, but didn't encounter as wide a success and didn't persist to the modern language. In the modern language, unvoiced s and f are written with a doubling of ssipal and fasoh respectively.
|
||||
|
||||
The Naran alphabet as it is used in Mosici also has a singular diacritic, the sitrapaóha ( [ʒdʀapawa]), that changes the quality of vowels. Historically it used to indicate the long vowels of Classical Nielf. It is commonly transcribed with an accute in latin: ó /u/, í /i/, á /ɔ/ et é /i/.
|
||||
|
||||
There are also multigraph to write the palatal fricatives: ssi /ʃ/, si /ʒ/.
|
||||
|
||||
Finally Mosici uses a small set of punctuation mark: the short pause ⟨⟩ the sentence break ⟨⟩, the joiner ⟨⟩ and the brevity mark ⟨⟩. They are usually transliterated with a comma, a period, an interpunct or an hyphen, and an apostrophe respectively.
|
||||
|
||||
= Morphology
|
||||
== Nouns
|
||||
=== Number
|
||||
The plural was, in Old Mosici, marked by the reduplication of the last vowel of the noun, without length contrasyt. Orthographically, that is still the case, where the plural is marked by reduplicating the last orthographic vowel of the noun. However, it is generally not possible to derive the pronounciation of the plural of a noun, solely from it’s singular form, nor is the reverse
|
||||
|
||||
#figure(
|
||||
caption: [Plural patterns],
|
||||
table(
|
||||
columns: 9,
|
||||
strong[Singlular], [], [], [], [], [], [], [], [],
|
||||
strong[Plural], [], [], [], [], [], [], [], [],
|
||||
)
|
||||
)
|
||||
|
||||
=== Cases
|
||||
|
||||
Nouns are declined according to 7 gramatical cases: 5 simple cases --- agent, patient, genitive, dative, ablative --- and 2 compound cases --- spatial and temporal locatives. There are 7 declension patterns based on the coda of the agent form: a concatentaive pattern (∅) and 6 subsitutive patterns, (, , , , , and ).
|
||||
|
||||
Mosici inflects according to a split-active morpho-syntactic system: Transitive agents are inflected like agent-like intransitive subjects, and transitive patients are inflected like patient-like intransitive subjects. Whether an intransitive clause takes an agent form or a patient form depends on the verb, divided along somewhat semantic lines
|
||||
|
||||
#figure(caption: [Mosici eclension patterns],
|
||||
table(columns: 8,
|
||||
table.header[][∅][][][][][][],
|
||||
[Agent], [],[],[],[],[],[],[],
|
||||
[Patient], table.cell(colspan: 7)[],
|
||||
[Genitive], table.cell(colspan: 7)[],
|
||||
[Agent], [],[],[],[],[],[],[],
|
||||
[Dative],
|
||||
table.cell(colspan: 3)[],
|
||||
table.cell(colspan: 2)[],
|
||||
table.cell(colspan: 2)[]
|
||||
)
|
||||
)
|
||||
|
||||
==== Agent
|
||||
|
||||
The agent case #low[AGE] indicates the agent of a transitive clause, or the agent-like subject of an intransitive clause.
|
||||
|
||||
#gloss(
|
||||
[Agent case in a transitive clause],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[loarne] mpat ilaalih],
|
||||
split: (high[loarne], high[-∅], [mpa], [-t], [ilaal], [-ih]),
|
||||
phono: (high[\[ʟɔɐ̯nɛ], high[-], [ⁿba], [θ], [eʎɔʎ], [e\]]),
|
||||
morphemes: (high[Loarne], high[-AGE], [DEM], [-PAT], [say], [-PST.3SG.AN]),
|
||||
translation: [#high[Loarne] said it.]
|
||||
)
|
||||
|
||||
#gloss(
|
||||
[Agent calse in an intransitive clause],
|
||||
txt: [#high[] #high[] ],
|
||||
translit: [#high[loarne] i #high[masealan] fionreór],
|
||||
split: (high[loarne], high[-∅], [i], high[masealan], high[-∅], [fionre], [-ór]),
|
||||
phono: (high[\[ʟɔɐ̯nɛ], high[-], [e], high[mazɛʟã], high[-], [vjõʀ], [\\øɐ̯\]]),
|
||||
morphemes: (high[loarne], high[-AGE], [and], high[masealan], high[-AGE], [eat], [-FUT.3PL.AN],),
|
||||
translation: [#high[Loarne] and #high[Masealan] will eat.]
|
||||
)
|
||||
|
||||
==== Patient
|
||||
|
||||
The patient case #low[PAT] indicates the patient of a transitive clause, or the patient-like subject of an intransitive clause.
|
||||
|
||||
#gloss(
|
||||
[Patient case in a transitive clause],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[nriiht] fionreeff.],
|
||||
split: (high[nriihs], high[\\t], [fionre], [-eff]),
|
||||
phono: (high[\[ⁿʀi], high[\\θ], [vjõʀ], [\\if\]]),
|
||||
morphemes: (high[seed.PL], high[\\PAT], [eat], [-PRES.1SG]),
|
||||
translation: [I eat #high[seeds]\ #low[Despite the pronoun beeing omitted, this sentence is indeed transitive.]]
|
||||
)
|
||||
|
||||
#gloss(
|
||||
[Patient case in an intransitive clause],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[rent] oítass.],
|
||||
split: (high[ren], high[-t], [oít], [-ass]),
|
||||
phono: (high[\[ʀẽ], high[ð], [yt], [-as\]]),
|
||||
morphemes: (high[house], high[-PAT], [be_tall], [-GNO.3SG]),
|
||||
translation: [The #high[house] is tall.],
|
||||
)
|
||||
|
||||
==== Genitive
|
||||
|
||||
The genitive case indicates that the marked noun qualifies, or is inalienably the possesor of, an other noun. Note that in a qualifying, use, the creation of a compound noun is also possible. The two parts of a compound noun are usually not subject to vowel coalescence.
|
||||
|
||||
#gloss(
|
||||
[Qualifying genitive case],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[áhioc] issofe.],
|
||||
split: (high[áhio], high[-c], [issofe], [-∅]),
|
||||
phono: (high[\[ø], [x], [esovɛ], [∅]),
|
||||
morphemes: (high[falseness], high[-GEN], [job], [AGE]),
|
||||
translation: [A #high[fake] job]
|
||||
)
|
||||
|
||||
#gloss(
|
||||
[Compound noun],
|
||||
txt: [],
|
||||
translit: [áhioissofe],
|
||||
split: ([áhio-], [issofe]),
|
||||
phono: ([\[ø], [esovɛ\]]),
|
||||
morphemes: ([falseness], [job]),
|
||||
translation: [A fake job]
|
||||
)
|
||||
|
||||
#gloss(
|
||||
[Inalienable possessive genitive case],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[loarnec] ntinal],
|
||||
split: (high[loarne], high[-c], [ntinal], [-∅]),
|
||||
phono: (high[\[ʟɔɐ̯nɛ], high[x], [ⁿdẽnaẅ], [\]]),
|
||||
morphemes: (high[Loarne], high[-GEN], [hand], [-AGE]),
|
||||
translation: [#high[Loarne’s] hand]
|
||||
)
|
||||
|
||||
==== Dative
|
||||
|
||||
The dative #low[DAT] indicates the beneficiary of a ditransitive verb, as well as the direction of an action. Note however that it is not used as the destination of the verbs of movements towards somewhere, which use the patient case for that role. For said verbs, the dative indicates the means of the movement.
|
||||
|
||||
#gloss(
|
||||
[Dative in a ditransitive clause],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[elssi] rent ssiehíheff.],
|
||||
split: (high[el], high[-ssi], [ren], [-t], [ssiehíh], [-eff]),
|
||||
phono: (high[\[ɛẅ], high[ʃ], [ʀɛ̃], [-ð], [ʃɛj], [-ɛf]),
|
||||
morphemes: (high[2SG], high[-DAT], [house], [-PAT], [give], [-PRES.1SG]),
|
||||
translation: [I gave #high[you] a house.]
|
||||
)
|
||||
|
||||
#gloss([Dative as means of movement of a verb of motion towards something],
|
||||
txt: [ #high[] ],
|
||||
translit: [an·ssialmosécet #high[ffoítstsselassi] oissailin.],
|
||||
split: ([an·], [ssialmoséce], [-t], high[ffoítstssela], high[-ssi], [oissail], [-in]),
|
||||
phono: ([\[ã], [ʃaẅmozicɛ],[-θ],high[fydztsɛʟa],high[-ʃ], [øsɛʎ], [-ẽ\]]),
|
||||
morphemes: ([PPN·],[Chalmosique],[PAT],high[train],high[-DAT],[go],[-PAST.2SG]),
|
||||
translation: [You went to Chalmosique #high[by train].],
|
||||
)
|
||||
|
||||
==== Ablative
|
||||
|
||||
The ablative #low[ABL] indicates a source or a provenence. It is also used as an instrumental, indicating the means by which the action is realised. For verbs of movement from somewhere it only ever has that instrumental meaning, as the source is expressed in the patient case.
|
||||
|
||||
#gloss([Ablative as a source],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[an·ssialmosécefia] nriiht fionreeff],
|
||||
split: (high[an·],high[ssialmoséce],high[-fia],[nriihs],[\\t],[fionre],[-eff]),
|
||||
phono: (high[\[ã],high[ʃaẅmozicɛ],high[-vja],[ⁿʀi],[\\θ],[vjonʀ],[\\if\]]),
|
||||
morphemes: (high[PPN·],high[Chalmosique],high[-ABL],[seed.PL],[\\PAT],[eat],[-PRES.1SG]),
|
||||
translation: [I eat seeds #high[from Chalmosique]]
|
||||
)
|
||||
|
||||
#gloss([Ablative as instrumental],
|
||||
txt: [#high[] ],
|
||||
translit: [#high[hoéfeenfia] cirtalíf.],
|
||||
split: (high[hoéfeen], high[-fia], [cirtal], [-íf]),
|
||||
phono: (high[\[yvɪ̃], high[-vja], [ceɐ̯daʎ], [-iv]),
|
||||
morphemes: (high[pen.PL], high[-ABL], [write], [-PAST.1PL.EXCL]),
|
||||
translation: [We#sub(low[EXCL]) wrote #high[with pens].]
|
||||
)
|
||||
|
||||
==== Spatial Locative
|
||||
|
||||
The spatial locative #low[SPLOC] is used to indicate a position in space. It is marked by expressing the noun in the genitive, followed by the particle ⟨la⟩. It is however pronounced as if the particle was part of the word itself: it blocks the lenition of, and voices, the final of the genitive marking.
|
||||
|
||||
#gloss(
|
||||
[Spatial locative],
|
||||
txt: [ #high[ ]],
|
||||
translit: [il #high[an·cairniassialc la]],
|
||||
split: ([il],high[an·], high[cairniassial], high[-c la]),
|
||||
phono: ([\[eɥ], high[ã], high[kɛɐ̯nɛʃaẅ], high[-gʟa\]]),
|
||||
morphemes: ([1SG.AGE], high[PPN·], high[Cairneshal], high[-SPLOC]),
|
||||
translation: [I am #high[in Cairneshal]\ #low[and not \*\[eɥ ãkɛɐ̯nɛʃaẅɣ ʟa\]]],
|
||||
)
|
||||
|
||||
|
||||
==== Temporal Locative
|
||||
=== Proper noun enclitic
|
||||
== Pronouns
|
||||
== Verbs
|
||||
=== Aspect, mood ⁊ related nonsense
|
||||
==== Conditional
|
||||
==== Imperfective, durative, iterative, Inchoative
|
||||
==== Perfective, terminative
|
||||
==== Desiderative, Necessitatives, Optative, Hortative
|
||||
==== Imperative
|
||||
==== Causatives
|
||||
==== Passive
|
||||
==== Negation
|
||||
==== Also on other parts of speech
|
||||
== Numerals
|
||||
= Syntax
|
||||
#dictionary(p, "/data/mosici_dict.toml", sortby: (a, b) => {
|
||||
let alphabet = (
|
||||
p: "a", o: "b", ó: "b", l: "c", i: "d", í: "d", a: "e", á: "e", h: "f",
|
||||
r: "g", c: "h", n: "i", e: "j", é: "j", s: "k", f: "l", m: "m", t: "n"
|
||||
)
|
||||
let aa = a.t.clusters().map(it => alphabet.at(it, default: "")).join()
|
||||
let bb = b.t.clusters().map(it => alphabet.at(it, default: "")).join()
|
||||
aa <= bb
|
||||
},
|
||||
htmlinputclasses: ("scr-nahan",))
|
||||
]
|
||||
134
root.typ
Normal file
134
root.typ
Normal file
@ -0,0 +1,134 @@
|
||||
#let pages = json(bytes(sys.inputs.at("pages", default: bytes("[]"))))
|
||||
#let static = json(bytes(sys.inputs.at("static", default: bytes("[]"))))
|
||||
#let data = json(bytes(sys.inputs.at("data", default: bytes("[]"))))
|
||||
#let site-name = "Annwan’s Wiki"
|
||||
#let site-root = "https://wiki.annwan.me/"
|
||||
|
||||
#for page in pages [
|
||||
#let page-slug = page.replace("/", "-")
|
||||
#import "pages/" + page + ".typ": opts, doc
|
||||
#metadata((path: page, tags: opts.at("tags", default: ""), title: opts.title)) <page>
|
||||
#document(page + ".html", title: site-name + "—" + opts.title)[
|
||||
#show raw.where(block: true): it => {
|
||||
html.pre(html.code(class:"language-" + it.lang, it.text))
|
||||
}
|
||||
#show raw.where(block: false): it => {
|
||||
html.code(class:"language-" + it.lang, it.text)
|
||||
}
|
||||
#context {
|
||||
import html: *
|
||||
html(
|
||||
head({
|
||||
meta(charset: "utf-8")
|
||||
meta(name: "viewport", content: "width=device-width, initial-scale=1")
|
||||
meta(name: "authors", content: opts.at("authors", default: ("Annwan",)).join(", "))
|
||||
link(rel: "stylesheet", href: "/assets/style/style.css")
|
||||
link(rel: "stylesheet", href: "/assets/style/highlight.css")
|
||||
script(src: "/assets/scripts/highlight.js")
|
||||
script(`hljs.highlightAll();`.text)
|
||||
script(src: "/assets/scripts/common.js")
|
||||
if opts.at("has-page-js", default: false) {
|
||||
script(src: "/static/scripts/"+page+".js")
|
||||
}
|
||||
title(site-name + "—" + opts.title)
|
||||
})
|
||||
+ body({
|
||||
header({
|
||||
h1(a(href: "/", site-name))
|
||||
nav({
|
||||
input(id: "searchbox", type: "text", placeholder: "Search...")
|
||||
})
|
||||
})
|
||||
div(id: "results")[]
|
||||
div(id: "main-body", {
|
||||
[#metadata(none) #std.label(page-slug + "--start")]
|
||||
counter(heading).update((0,))
|
||||
counter(std.figure.where(kind: table)).update((0,))
|
||||
counter(std.figure.where(kind: image)).update((0,))
|
||||
counter(std.figure.where(kind: raw)).update((0,))
|
||||
counter(std.figure.where(kind: "gloss")).update((0,))
|
||||
main({
|
||||
h1(opts.title);
|
||||
doc(page-slug + "--")
|
||||
})
|
||||
[#metadata(none) #std.label(page-slug + "--end")]
|
||||
if not opts.at("no-toc", default: false) {
|
||||
aside(outline(
|
||||
target: heading.where(level: 1)
|
||||
.or(heading.where(level: 2))
|
||||
.or(heading.where(level: 3))
|
||||
.or(heading.where(level: 4))
|
||||
.or(heading.where(level: 5))
|
||||
.after(std.label(page-slug + "--start"))
|
||||
.before(std.label(page-slug + "--end"))
|
||||
))}
|
||||
})
|
||||
if not opts.at("no-foot", default: false) {
|
||||
footer[
|
||||
#import sym: *
|
||||
#if opts.at("make-pdf", default: false) {
|
||||
std.link(std.label("pdf-" + page-slug))[Download this page as PDF]
|
||||
}
|
||||
|
||||
#opts.title on #site-name #copyright Annwan. This work is
|
||||
licensed under the terms of the #std.link(
|
||||
"https://creativecommons.org/licenses/by-sa/4.0/",
|
||||
)[CC BY-SA 4.0 #cc #cc.by #cc.sa] license.
|
||||
|
||||
Source code available on #std.link(
|
||||
"https://git.annwan.me/worldbuilding/wiki"
|
||||
)[my gitea instance].
|
||||
]
|
||||
}
|
||||
})
|
||||
)}
|
||||
] #label(page)
|
||||
|
||||
|
||||
#if opts.at("make-pdf", default: false) [
|
||||
#document("pdf/" + page + ".pdf", title: opts.title)[
|
||||
#set text(font: "Iosevka Aile", features: (cv47: 10), hyphenate: false);
|
||||
#set par(justify: true)
|
||||
#show table: set par(justify: false)
|
||||
#show raw: set text(font: "Iosevka Slab", size: 1em / 0.8)
|
||||
This document is the PDF version of
|
||||
#link(site-root + page + ".html", raw(page)) on #site-name as of
|
||||
#datetime.today().display("[year]-[month]-[day]").
|
||||
#show figure.where(kind: table): set figure(placement: bottom )
|
||||
#line(length: 100%, stroke: gray)
|
||||
|
||||
#title()
|
||||
#metadata(none) #label(page-slug + "--startpdf")
|
||||
#counter(figure.where(kind: table)).update((0,))
|
||||
#counter(figure.where(kind: image)).update((0,))
|
||||
#counter(figure.where(kind: raw)).update((0,))
|
||||
#counter(figure.where(kind: "gloss")).update((0,))
|
||||
#counter(heading).update((0,))
|
||||
#doc(page-slug)
|
||||
#metadata(none) #label(page + "--endpdf")
|
||||
#if not opts.at("no-toc", default: false) {
|
||||
outline(
|
||||
target: heading.where(level: 1)
|
||||
.or(heading.where(level: 2))
|
||||
.or(heading.where(level: 3))
|
||||
.or(heading.where(level: 4))
|
||||
.or(heading.where(level: 5))
|
||||
.after(label(page-slug + "--startpdf"))
|
||||
.before(label(page-slug + "--endpdf"))
|
||||
)}
|
||||
] #label("pdf-" + page-slug)
|
||||
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
#for file in data {
|
||||
asset(file + ".json",
|
||||
bytes(json.encode(pretty: false, toml(file + ".toml"))))
|
||||
}
|
||||
|
||||
#context asset("index.json", bytes(json.encode(query(<page>).map(it => it.value), pretty: false)))
|
||||
#asset("favicon.ico", read("/static/favicon.ico", encoding: none)) <favicon.ico>
|
||||
#for file in static [
|
||||
#asset("assets/" + file, read("static/" + file, encoding: none)) #label(file)
|
||||
]
|
||||
@ -1,14 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "-ala")
|
||||
%dict %word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/ala", mos-cit(""),"cln")
|
||||
=== Pronunciation <mos-1-pro>
|
||||
#mos-pro[\*aʟa]
|
||||
=== Affix <mos-1-affix>
|
||||
%mos/affix
|
||||
#mos-cit("")
|
||||
1. Noun #low[x] arrow Verb "causing the existence of #low[x]"
|
||||
@ -1,15 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "Entec R. Tsiets")
|
||||
%dict %word
|
||||
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[ɛ̃dɛx aɐ̯ dʑɛdz]
|
||||
=== Proper Noun <mos-1-proper>
|
||||
%mos/proper
|
||||
#mos-cit(" ")
|
||||
1. Enderjed, the man, the myth, the legend
|
||||
#mos-n(" ", pl: false)
|
||||
@ -1,20 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ain")
|
||||
%dict %word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/ainy", [#sn[]], "cln") #low[ainy]
|
||||
=== Pronunciation <mos-1-pro>
|
||||
#mos-pro[ɛ̃]
|
||||
=== Pronoun <mos-1-pronoun>
|
||||
%mos/pronoun
|
||||
#mos-cit("")
|
||||
1. Third person inannimate pronoun
|
||||
#mos-pron("")
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. Thing, object
|
||||
#mos-n("")
|
||||
@ -1,15 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ainilapil")
|
||||
%dict %word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From #wl("/dict/ain", mos-cit(""), "mos-1-noun") + #wl("/dict/ilapil", mos-cit(""), "mos")
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[ɛ̃neʎapeẅ]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("") (plural #wl("/dict/ainilapiltee", mos-cit(""), "mos"))
|
||||
1. Noun, substantive
|
||||
#mos-n("", pl: "")
|
||||
@ -1,13 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ainilapiltee")
|
||||
%dict
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[ɛ̃neʎapeẅdi]
|
||||
=== Moun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. plural form of #wl("/dict/ainilapil", mos-cit(""), "mos"))
|
||||
@ -1,13 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ainy")
|
||||
%dict %word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
=== Pronounciation <cln-1-p>
|
||||
- /a.inə/
|
||||
=== Noun <cln-1-noun>
|
||||
%cln/noun
|
||||
#sn[] #low[ainy]
|
||||
1. Thing, object
|
||||
@ -1,8 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ala")
|
||||
%dict %word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[ala] [aɫa]
|
||||
@ -1,13 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "an·oreaiác ila")
|
||||
%word %dict
|
||||
= Mosici <mos>
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/oheaiā", sn[], "cln") #low[oheaiā] and the regular formation for language names
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[ãdoʀeç eʎa]
|
||||
=== Proper noun <mos-1-proper>
|
||||
#mos-cit(" ")
|
||||
1. #reg[Out of Universe] #link("https://www.laghariportals.com/78h")[O’eaiā]
|
||||
#mos-n(" ", pl: false)
|
||||
@ -1,8 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "cihyty")
|
||||
%dict %word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[cihyty] [kixətə]
|
||||
@ -1,16 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "cirtss")
|
||||
%word %dict
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/cihyty", sn[], "cln") #low[cihyty]
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[ceɐ̯ts]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. Writing, text
|
||||
2. Document, book
|
||||
#mos-n("")
|
||||
@ -1,16 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "contsse")
|
||||
%word %dict
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/contysse", sn[], "cln") #low[contysse]
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[qõtsɛ]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. Novelty, innovation
|
||||
#mos-n("")
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "contsseila")
|
||||
%word %dict
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From #wl("/dict/contsse", sn[], "mos-1-noun") #low[contse] + #wl("/dict/ila", sn[], "mos-1-verb") #low[ila]
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[qõtsiʎa]
|
||||
=== Verb <mos-1-verb>
|
||||
%mos/verb
|
||||
#mos-cit("")
|
||||
1. To present, to announce
|
||||
#mos-v("")
|
||||
@ -1,8 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "contysse")
|
||||
%word %dict
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[contysse] [kontəsːə]
|
||||
@ -1,8 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "effyha")
|
||||
%word %dict
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[effyha] [efːəxa]
|
||||
@ -1,21 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "i")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/i", sn[], "cln") #low[i]
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[e]
|
||||
=== Particle <mos-1-part>
|
||||
%mos/particle
|
||||
#mos-cit("")
|
||||
1. and
|
||||
2. also
|
||||
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#mos-cit("") [i]
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ila")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/ila", mos-cit(""), "cln")
|
||||
=== Prononciation <mos-1-pro>
|
||||
#mos-pro[eʎa]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. Language, especially spoken
|
||||
2. Speech, announcement
|
||||
3. #poet word
|
||||
#mos-n("")
|
||||
=== Verb <mos-1-verb>
|
||||
%mos/verb
|
||||
#mos-cit("")
|
||||
1. #arch to speak, to tell
|
||||
#mos-v("")
|
||||
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#mos-cit("") [iɫa]
|
||||
@ -1,17 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ilaala")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From #wl("/dict/ila", sn[], "mos") #low[ila] + #wl("/dict/-ala", sn[], "mos") #low[-ala]
|
||||
=== Pronunciation <mos-1-pro>
|
||||
#mos-pro[eʎɔʟa]
|
||||
=== Verb <mos-1-verb>
|
||||
%mos/verb
|
||||
#mos-cit("")
|
||||
1. To speak
|
||||
#mos-v("")
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ilamócirtss")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From #wl("/dict/ilamóss", sn[], "mos") #low[ilamóss] + #wl("/dict/cirtss", sn[], "mos") #low[cirtss]
|
||||
=== Pronunciation <mos-1-pro>
|
||||
#mos-pro[eʎamuceɐ̯ts]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. Grammar (book)
|
||||
#mos-n("")
|
||||
@ -1,16 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ilamóss")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From #wl("/dict/ila", sn[], "mos") #low[ila] + [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/mōssy", sn[], "cln") #low[mōssy] (see also #wl("/dict/móssnier", sn[], "mos") #low[móssnier])
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[eʎamus]
|
||||
=== Noun
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. Grammar, language rules
|
||||
#mos-n("")
|
||||
@ -1,16 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ilapil")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/ila", sn[], "cln") #low[ila] #wl("/dict/pilyteny", sn[], "cln") #low[pily(teny)]
|
||||
=== Pronunciation <mos-1-pro>
|
||||
#mos-pro[eʎapeẅ]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("") (plural #wl("/dict/ilapiltee", sn[], "mos") #low[ilapiltee])
|
||||
1. Word
|
||||
#mos-n("", pl: "")
|
||||
@ -1,13 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ilapiltee")
|
||||
%dict
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[eʎapeẅdi]
|
||||
=== Moun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("")
|
||||
1. plural form of #wl("/dict/ilapil", mos-cit(""), "mos"))
|
||||
@ -1,18 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ipianlei")
|
||||
%dict
|
||||
|
||||
= Mosici <mos>
|
||||
%word %mos
|
||||
|
||||
From the [[/worlds/Asteron/Classical Nyelaf]] phrase #sn[]#wl("/dict/i", sn[], "cln") #low[i] #wl("/dict/piany", sn[], "cln") #low[piany] #wl("/dict/lei", sn[], "cln") #low[lei] #sn[] (and afterwards, two)
|
||||
=== Pronunciation <mos-1-pro>
|
||||
#mos-pro[epjãʎi]
|
||||
=== Noun <mos-1-noun>
|
||||
%mos/noun
|
||||
#mos-cit("") (plural #wl("/dict/ipianalei", mos-cit(""), "mos"))
|
||||
1. Sequence, ordering
|
||||
|
||||
#mos-n("", pl: "")
|
||||
@ -1,18 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "lei")
|
||||
%dict
|
||||
%word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/lei", sn[], "cln") #low[lei]
|
||||
=== Pronunciation
|
||||
#mos-pro[ʎi]
|
||||
=== Numeral <mos-1-numeral>
|
||||
%mos/numeral
|
||||
#mos-cit("")
|
||||
1. two
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#mos-cit("") [ɫe.i]
|
||||
@ -1,15 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "móssnier")
|
||||
%dict %word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/mōssy", sn[], "cln") #low[mōssy] + #wl("/dict/niehy", sn[], "cln") #low[niehy]
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[musɲiɐ̯]
|
||||
=== Noun <mos-1-noun>
|
||||
#mos-cit("")
|
||||
1. Convention, custom
|
||||
2. Rule (of a game)
|
||||
#mos-n("")
|
||||
@ -1,9 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "mōssy")
|
||||
%dict
|
||||
%word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[mōssy] [moːsːə]
|
||||
@ -1,9 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "niehy")
|
||||
%dict
|
||||
%word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[niehy] [ni.exə]
|
||||
@ -1,15 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "o")
|
||||
%dict %word
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From onomatopeic origin
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[o]
|
||||
=== Particle <mos-1-particle>
|
||||
#mos-cit("")
|
||||
1. #reg[After nouns] Vocative marker
|
||||
2. #reg[After verbs] Imperative marker
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ohaioa")
|
||||
%word %dict
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[ohaioa] [oxajo.a]
|
||||
@ -1,9 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "oheaiā")
|
||||
%word %dict
|
||||
= Classical Neyelaf
|
||||
%cln
|
||||
#sn[] #low[oheaiā] [oxe.a.i.aː]
|
||||
1. #reg[Out of Universe] #link("https://www.laghariportals.com/78h")[O’eaiā]
|
||||
@ -1,9 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "oiaō")
|
||||
%word %dict
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[oiaō] [o.i.a.oː]
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "óassonela")
|
||||
%word %dict
|
||||
= Mosici <mos>
|
||||
%mos
|
||||
From [[/worlds/Asteron/Classical Nyelaf]] #wl("/dict/ōas", sn[], "cln") #low[ōas] + #wl("/dict/sonela", sn[], "cln") #low[sonela]
|
||||
=== Pronunciation <mos-1-p>
|
||||
#mos-pro[wasõnɛʟa]
|
||||
=== Verb <mos-1-verb>
|
||||
%mos/verb
|
||||
#mos-cit("")
|
||||
1. To discover
|
||||
#mos-v("")
|
||||
@ -1,9 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "īly")
|
||||
%dict
|
||||
%word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[īly] [iːɫə]
|
||||
@ -1,9 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "īny")
|
||||
%dict
|
||||
%word
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[īny] [iːnə]
|
||||
@ -1,8 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/dict.typ": *
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#show: conf.with(page-title: "ōas")
|
||||
%word %dict
|
||||
= Classical Nyelaf <cln>
|
||||
%cln
|
||||
#sn[] #low[ōas] [oːas]
|
||||
@ -1,71 +0,0 @@
|
||||
#import "../templates/base.typ": *
|
||||
#show: conf.with(
|
||||
page-title: sitename,
|
||||
title-override: "Index",
|
||||
notoc: true,
|
||||
page-script: "index",
|
||||
)
|
||||
|
||||
Hi, welcome to my wiki website blog thing
|
||||
|
||||
Search a page in the search bar above (#sym.arrow.t), see a list of all the pages on the #link("/pagelist.html")[Page
|
||||
List] or #html.a(href: "#random", class: "random_page")[visit a random page]
|
||||
|
||||
=== Other cool people and sites
|
||||
|
||||
#{
|
||||
import html: *
|
||||
div(class: "buttonbox", {
|
||||
a(href: "https://dipndops.neocities.org/", target: "_blank", img(
|
||||
src: "https://dipndops.neocities.org/dipdop_button.gif",
|
||||
title: "dipdop hideout",
|
||||
alt: "dipndops",
|
||||
))
|
||||
a(href: "https://khimatales.neocities.org/", target: "_blank", img(
|
||||
src: "https://khimatales.neocities.org/FloralsCoolAwesomeNeoCitiesAffilateLink.gif",
|
||||
title: "Khima Tales",
|
||||
alt: "Khima Tales",
|
||||
))
|
||||
a(href: "https://yokokasquest.com/", target: "_blank", img(
|
||||
src: "https://yokokasquest.com/wp-content/uploads/2026/01/yq-button.png",
|
||||
title: "Yokoka's Quest - An Adventure Webcomic That Updates M/W/F!",
|
||||
alt: "Yokoka's Quest",
|
||||
))
|
||||
a(href: "https://toyhou.se/katesleepybun", target: "_blank", img(
|
||||
src: "https://f2.toyhou.se/file/f2-toyhou-se/characters/37336946?1769119669.png",
|
||||
title: "katethesleepybun on ToyHouse",
|
||||
alt: "katethesleepybun on ToyHouse",
|
||||
))
|
||||
a(href: "https://forums.cisumchronicles.com/viewtopic.php?t=19", target: "_blank", img(
|
||||
src: "https://khimatales.neocities.org/CanYou.gif",
|
||||
title: "The Execution of Talo [CYOA]",
|
||||
alt: "The Execution of Talo [CYOA]",
|
||||
))
|
||||
a(href: "https://toyhou.se/DreamyPumpkins", target: "_blank", img(
|
||||
src: "https://f2.toyhou.se/file/f2-toyhou-se/images/113846742_IaqYsOqwcaKAQz6.png",
|
||||
title: "DreamyPumpkins on ToyHouse",
|
||||
alt: "DreamyPumpkins on ToyHouse",
|
||||
))
|
||||
a(href: "https://end-mythos.neocities.org", target: "_blank", img(
|
||||
src: "https://64.media.tumblr.com/284abf48960684f29c6d30334c93474c/212108410f12363b-41/s100x200/dc496daea04014c1226c16807dd33aa8ecb85b17.png",
|
||||
title: "Mythos of Wind and Thunder",
|
||||
alt: "Mythos of Wind and Thunder",
|
||||
))
|
||||
a(href: "https://khimatales.neocities.org/NolaFanclub", target: "_blank", img(
|
||||
src: "https://khimatales.neocities.org/NolaFanclubButton.gif",
|
||||
title: "Nola Fanclub",
|
||||
alt: "Nola Fanclub",
|
||||
))
|
||||
})
|
||||
}
|
||||
==== You want a button to here?
|
||||
|
||||
#html.a(href: "https://wiki.annwan.me/", target: "_blank", html.img(
|
||||
src: "https://wiki.annwan.me/assets/webring-button.png",
|
||||
title: "Annwan's Wiki",
|
||||
alt: "Annwan's Wiki",
|
||||
))
|
||||
#html.textarea(
|
||||
readonly: true,
|
||||
"<a href=\"https://wiki.annwan.me/\" target=\"_blank\"><img src=\"https://wiki.annwan.me/assets/webring-button.png\" title=\"Annwan's Wiki\" alt=\"Annwan's Wiki\" /></a>",
|
||||
)
|
||||
@ -1,6 +0,0 @@
|
||||
#import "../templates/base.typ": *
|
||||
#show: conf.with(page-title: "Page List", notoc: true, page-script: "pagelist", nofoot: true)
|
||||
|
||||
This is a list of all the pages on the site:
|
||||
|
||||
#html.ul(id: "list")
|
||||
@ -1,4 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#show: conf.with(page-title: "Classical Nyelaf")
|
||||
#tag("lang") #tag("cln")
|
||||
#set heading(numbering: "1.")
|
||||
@ -1,660 +0,0 @@
|
||||
#import "/templates/base.typ": *
|
||||
#import "/templates/utils/gloss.typ": example, gloss
|
||||
#import "/templates/utils/lang-mos.typ": *
|
||||
#let high = html.span.with(class: "high")
|
||||
#show: conf.with(page-title: "Mosici")
|
||||
%lang %mos %language-documentation
|
||||
#set heading(numbering: "I.A.1.a.")
|
||||
#let low = html.span.with(class: "low")
|
||||
#let gloss-opts = (
|
||||
txt-style: sn,
|
||||
translation-style: low,
|
||||
)
|
||||
#let g = gloss.with(..gloss-opts)
|
||||
#let ex = example.with(..gloss-opts)
|
||||
#let bl = "["
|
||||
#let br = "]"
|
||||
#let ann = it => sub(sc(it))
|
||||
#let abb = it => low(sc(it))
|
||||
|
||||
This page describes Cairniasial standard Mosici, with brief mentions about other
|
||||
close varieties such as Sialmoséce standard Mosici
|
||||
|
||||
= Sound ⁊ Letters <sec-sound-letters>
|
||||
== Phonology <sec-phonology>
|
||||
Mosici has the following phonemes
|
||||
#table(
|
||||
columns: 5,
|
||||
[], [*Labial*], [*Coronal*], [*Palatal*], [*Dorsal*],
|
||||
[*Nasal*], [m], [n], [], [],
|
||||
[*Stop*], [p], [t], [], [k],
|
||||
[*Fricative*], [f v], [s z], [ɕ ʑ], [ʀ],
|
||||
[*Approximants*], [w], [], [j], [ʟ],
|
||||
)
|
||||
#table(
|
||||
columns: 3,
|
||||
[], [*Front*], [*Back*],
|
||||
[*Close*], [i y], [u],
|
||||
[*Close-Mid*], [e ø], [o],
|
||||
[*Open-Mid*], [ɛ], [ɔ],
|
||||
[*Open*], table.cell(colspan: 2)[a],
|
||||
)
|
||||
|
||||
All vowels can also all be long,
|
||||
|
||||
There is also the following allophony rules:
|
||||
|
||||
- The dorsal approximant is realised as a [ẅ] off-glide in coda positions.
|
||||
- The dorsal fricative is realised as a [ɐ̯] off-glide in coda positions.
|
||||
- The dorsal fricative is realised as a true fricative [ʁ] in consonant
|
||||
clusters.
|
||||
- /n/ nasalises a preceding vowel.
|
||||
- /n/ itself is not pronounced in coda positions.#footnote[still applies
|
||||
nasalisation] <fn-nasal-even-coda>
|
||||
- Nasalised close vowels are realised as mid-centralised: /ĩ ĩː ỹ ỹː ũ ũː/ [ɪ̃ ɪ̃ː
|
||||
ʏ̃ ʏ̃ː ʊ̃ ʊ̃ː]
|
||||
- The dorsal plosive ⁊ approximant are realised as palatal before /i y e j/
|
||||
#footnote[or their or their long and/or nasalised
|
||||
variants] <fn-dorsal-assimilation>,
|
||||
- The dorsal plosive ⁊ approximant are realised as uvular before /u o
|
||||
w/@fn-dorsal-assimilation
|
||||
- The dorsal plosive ⁊ approximant are realised as palatal after /e i
|
||||
j/@fn-dorsal-assimilation or in the coda of a syllable with /e
|
||||
i/@fn-dorsal-assimilation as the nucleus.
|
||||
- The dorsal plosive ⁊ approximant are realised as velar otherwise
|
||||
- Plosives are realised as voiced next to other phonemically voiced consonants.
|
||||
- Plosives are realised as non-sibilant fricatives of the same place of
|
||||
articulation word finally.
|
||||
|
||||
== Coalescence <sec-coalescence>
|
||||
|
||||
Mosici doesn't allow consecutive vowels inside of words. To resolve would-be
|
||||
hiatuses, a coalescence process is used. This process is historic for all native
|
||||
words, but it still current to resolve diphthongs in loan words and is necessary
|
||||
to understand to read the written language, as the spelling was fixed before
|
||||
that sound change occurred.
|
||||
|
||||
The process goes thusly (before applying the allophony):
|
||||
|
||||
1. Group <enumitem-coalesce-start> all consecutive vowels by pairs, starting at
|
||||
near the start of the word
|
||||
2. Combine all pairs of vowels according to the table below (the first vowel
|
||||
indexes the row, and the second vowel indexes the column)
|
||||
3. If any vowel is long, the resulting vowel is long;
|
||||
4. Repeat from #context link(query(<enumitem-coalesce-start>).first().location())[step 1] until all hiatus has been resolved.
|
||||
#table(
|
||||
columns: 10,
|
||||
[ ], [*a*], [*ɛ*], [*ɔ*], [*e*], [*ø*], [*o*], [*i*], [*y*], [*u*],
|
||||
[*a*], [ɔ], [a], [ɔ], [ɛ], [ɛ], [ɔ], [e], [ø], [o],
|
||||
[*ɛ*], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø],
|
||||
[*ɔ*], [ɔ], [ø], [ɔ], [ø], [ø], [o], [ø], [ø], [o],
|
||||
[*e*], [ɛ], [i], [ø], [i], [e], [ø], [i], [ø], [ø],
|
||||
[*ø*], [ø], [e], [ø], [e], [y], [ø], [y], [y], [y],
|
||||
[*o*], [ɔ], [ø], [o], [ø], [ø], [u], [ø], [ø], [u],
|
||||
[*i*], [ja], [jɛ], [jɔ], [je], [jø], [jo], [i], [jy], [ju],
|
||||
[*y*], [ø], [ø], [ø], [ø], [y], [ø], [i], [i], [y],
|
||||
[*u*], [wa], [wɛ], [wɔ], [we], [wø], [wo], [wi], [y], [u],
|
||||
)
|
||||
|
||||
== The Nahan Script <sec-nahan-script>
|
||||
Mosici is written in the [[/worlds/Asteron/Nahan Script]] (also named the
|
||||
Polia(h)r alphabet), which is am alphabet which in Mosici is considered to have
|
||||
the following letters, digraphs and diacritic’d letters. The sole diacritic is
|
||||
called the #sn[] 〈sitrapaóha〉.
|
||||
|
||||
#figure(caption: [Poliahr for Mosici], table(
|
||||
columns: 5,
|
||||
[*Letter*], [*Transliteration*], [*Value (IPA)*], [*Name*], [*Name (IPA)*],
|
||||
sn[], [p], [/p/], sn[], [[pe]],
|
||||
sn[], [o], [/o/], sn[], [[us]],
|
||||
sn[], [l], [/ʟ/], sn[], [[ʟɔ̃]],
|
||||
sn[], [i], [/e/], sn[], [[iɐ̯nɛ]],
|
||||
sn[], [a], [/a/], sn[], [[ɔ̃ɸ]],
|
||||
sn[], [h], [/∅/#footnote[Lengthens a preceding vowel] <fn-script-h>], sn[], [[apfɛ]],
|
||||
|
||||
sn[], [r], [/ʀ/], sn[ #footnote[Literally "sounded hapfe"] <fn-script-sounded>], [[fasteɕɛx apfɛ]],
|
||||
|
||||
sn[], [c], [/k/], sn[], [[kaẅ]],
|
||||
sn[], [n], [/n/], sn[], [[nɔẅ]],
|
||||
sn[], [e], [/ɛ/], sn[], [[istaẅ]],
|
||||
sn[], [s], [/z/], sn[], [[ɕpaẅ]],
|
||||
sn[], [f], [/v/], sn[], [[fasoː]],
|
||||
sn[], [m], [/m/], sn[], [[miʎɔ]],
|
||||
sn[], [t], [/t/], sn[], [[tɛɟjo]],
|
||||
))
|
||||
#figure(caption: [Digraphs], table(
|
||||
columns: 3,
|
||||
[*Letter(s)*], [*Transliteration*], [*Value IPA*],
|
||||
sn[], [ó], [/u/],
|
||||
sn[], [í], [/i/],
|
||||
sn[], [á], [/ɔ/],
|
||||
sn[], [é], [/i/],
|
||||
sn[], [ssi], [/ɕ/],
|
||||
sn[], [si], [/ʑ/],
|
||||
sn[], [ff], [/f/],
|
||||
sn[], [ss], [/s/],
|
||||
))
|
||||
#figure(caption: [Punctuation], table(
|
||||
columns: 3,
|
||||
[*Punctuation*], [*Transliteration*], [*Use*],
|
||||
sn[], [,], [Comma, short break],
|
||||
sn[], [.], [Period, long break, sentence end],
|
||||
sn[], [· or -], [word-internal separator, hyphen],
|
||||
sn[],
|
||||
[’ or : or .],
|
||||
[Abbreviation mark, list initiator and hyphenation marker (on both sides of
|
||||
the cut).\ Transliteration depends on use],
|
||||
|
||||
sn[ ], [( )], [Quotes or parrenthesis],
|
||||
))
|
||||
|
||||
=== Numbering with the Poliahr order
|
||||
|
||||
The letters can be used to number things in the manner most alphabets are used
|
||||
elsewhere. for those purpose the order is as used above but #sn[] isn't used.
|
||||
|
||||
=== Note for Mosici as used on Nguhcraft
|
||||
|
||||
Mosici can also be found on the #link("https://mc.nguh.org/")[Nguhcraft world].
|
||||
That "Sialmoséce standard" version of the language is nearly identical to the
|
||||
Cairniasial standard described in this document, but has experienced a minor
|
||||
spelling reform affecting the spelling of voiced fricatives. it introduces two
|
||||
new modified letters, inserted after their plain versions in the order. They
|
||||
aren't used in Poliahr order numbering either.
|
||||
|
||||
#figure(caption: [New letters in Sialmoséce standard Mosici], table(
|
||||
columns: 5,
|
||||
[*Letter*], [*Transliteration*], [*Value (IPA)*], [*Name*], [*Name (IPA)*],
|
||||
sn[], [z], [/z/], sn[ ], [[fasteɕɛx ɕpaẅ]],
|
||||
sn[], [v], [/v/], sn[ ], [[fasteɕex fasoː]],
|
||||
))
|
||||
the following sequences are thus respelled
|
||||
#figure(
|
||||
caption: [Repellings in Sialmoséce standard Mosici],
|
||||
table(
|
||||
columns: 2,
|
||||
[*Cairniasial Standard*], [*Sialmoséce Standard*],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
),
|
||||
)
|
||||
|
||||
== Examples <ex-ortho>
|
||||
|
||||
#sn[] ⟨tráihéinss⟩ "fox"
|
||||
- \*/tʀɔiːɛins/
|
||||
- → \*/tʀ#high[øːi]ns/ #low[Coalescence 1]
|
||||
- → /tʀ#high[yː]ns/ #low[Coalescence 2]
|
||||
- → [d#high[ʁʏ̃ː]s] #low[Allophony]
|
||||
|
||||
#sn[] ⟨mosséceec⟩ "of islands"
|
||||
- \*/mosikɛɛk/
|
||||
- → /mosik#high[i]k/ #low[Coalescence]
|
||||
- → [mosi#high[c]i#high[ç]/ #low[Allophony]
|
||||
|
||||
#sn[] ⟨an·nielfc⟩ "of Nyelaf"
|
||||
- \*/annjɛʟvk/
|
||||
- → /a#high[n]jɛʟvk/ #low[Particle shenanigans]
|
||||
- → [#high[ã]njɛ#high[ẅ]v#high[ɣ]] #low[Allophony]
|
||||
|
||||
= Words <morph>
|
||||
== Nouns <morph-nouns>
|
||||
=== Number <morph-nouns-number>
|
||||
|
||||
Number is marked by reduplicating the last orthographic vowel of the root
|
||||
without the sitrapaóha #low[(see following table)]. In most cases the
|
||||
pronunciation of the plural isn't directly derivable from the pronunciation of
|
||||
the singular.
|
||||
|
||||
#table(
|
||||
columns: 2,
|
||||
[*Singular*], [*Plural*],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
sn[], sn[],
|
||||
)
|
||||
|
||||
=== Cases <morph-nouns-cases>
|
||||
|
||||
Nouns are also marked for case. There are 5 simple cases --- agent, patient,
|
||||
genitive, dative and ablative --- and 2 compound cases --- spatial and temporal
|
||||
locative.
|
||||
|
||||
They are 7 patterns for the simple cases based on the the coda consonant(s) of
|
||||
the agent form: the concatenative pattern, and the 6 substitutive patterns
|
||||
(#sn[], #sn[], #sn[], #sn[], #sn[], #sn[])
|
||||
|
||||
#table(
|
||||
columns: 8,
|
||||
align: center,
|
||||
[],
|
||||
[*C*],
|
||||
[*Sub* #sn[]],
|
||||
[*Sub* #sn[]],
|
||||
[*Sub* #sn[]],
|
||||
[*Sub* #sn[]],
|
||||
[*Sub* #sn[]],
|
||||
[*Sub* #sn[]],
|
||||
[*Agent*], [∅], sn[], sn[], sn[], sn[], sn[], sn[],
|
||||
[*Patient*], table.cell(colspan: 7, sn[]),
|
||||
[*Genitive*], table.cell(colspan: 7, sn[]),
|
||||
[*Dative*], sn[], sn[], sn[], sn[], sn[],
|
||||
sn[], sn[],
|
||||
[*Ablative*],
|
||||
table.cell(colspan: 3, sn[]),
|
||||
table.cell(colspan: 2, sn[]),
|
||||
table.cell(colspan: 2, sn[]),
|
||||
)
|
||||
|
||||
==== Agent <case-agent>
|
||||
|
||||
The Agent case #abb[age] indicates the agent of a transitive clause, or the
|
||||
subject of an active intransitive clause.
|
||||
|
||||
#ex(
|
||||
caption: [Agent case in an transitive clause],
|
||||
txt: [#high[] ],
|
||||
translit: (high[loarne], [aint], [ilaalih.]),
|
||||
phono: (bl + high[ʟɔɐ̯nɛ], [ɛ̃ð], [eʎɔʎeː] + br),
|
||||
morphemes: (high[Loarne.#sc[age]], sc[dem.pat], [say.#sc[pst.3sa]]),
|
||||
translation: [#high[Loarne] said that],
|
||||
lbl: "ex-case-age-trans",
|
||||
)
|
||||
#ex(
|
||||
caption: [Agent case in an active intransitive clause],
|
||||
txt: [#high[] #high[] ],
|
||||
translit: ([#high[loarne]], [i], high[masealn], [fionreor.]),
|
||||
phono: (bl + high[ʟɔɐ̯nɛ], [e], high[mazɛ̃ẅ], [vjõʀøɐ̯] + br),
|
||||
morphemes: (
|
||||
high[Loarne.#sc[age]],
|
||||
[and],
|
||||
high[Mazealn.#sc[age]],
|
||||
[eat.#sc[fut.3pa]],
|
||||
),
|
||||
translation: [#high[Loarne] and #high[Mazealn] will eat],
|
||||
lbl: "ex-case-age-intrans",
|
||||
)
|
||||
|
||||
==== Patient <case-patient>
|
||||
|
||||
The Patient case #abb[pat] indicates the patient of a transitive clause, or the
|
||||
subject of a stative intransitive clause.
|
||||
|
||||
#ex(
|
||||
caption: [Patient case in a transitive clause#footnote[Note that while the
|
||||
pronoun is dropped thanks to the verb conjugation, but the clause is
|
||||
still transitive]<fn-pat-trans>],
|
||||
txt: [#high[] ],
|
||||
translit: (high[nriiht], [fionreeff.]),
|
||||
phono: (bl + high[nʁiːθ], [vjõʀif] + br),
|
||||
morphemes: (high[grain#sc[.pl.pat]], [eat#sc[.prs.1s]]),
|
||||
translation: [I eat #high[grains]],
|
||||
lbl: "ex-case-pat-trans",
|
||||
)
|
||||
|
||||
#ex(
|
||||
caption: [Patient case in an intransitive clause],
|
||||
txt: [#high[] ],
|
||||
translit: (high[rent], [oítass.]),
|
||||
phono: (bl + high[ʀɛ̃ð], [ytas] + br),
|
||||
morphemes: (high[house#sc[.pat]], [be\_tall#sc[gno.3si]]),
|
||||
translation: [#high[The house] is tall],
|
||||
lbl: "ex-case-pat-intrans",
|
||||
)
|
||||
|
||||
==== Genitive <case-genitive>
|
||||
|
||||
The genitive case #abb[gen] indicates possession or qualification. Note that in
|
||||
the case of qualification, the formation of a compound is also possible. Note:
|
||||
Compounding is not subject to coalescence.
|
||||
|
||||
#ex(
|
||||
caption: [Possessive genitive case],
|
||||
txt: [#high[] ],
|
||||
translit: (high[ilc], [ren]),
|
||||
phono: (bl + high[eẅɣ], [ʀɛ̃] + br),
|
||||
morphemes: (high(sc[1s.gen]), [house#sc[.age]]),
|
||||
translation: [#high[my] house],
|
||||
lbl: "ex-case-gen-poss",
|
||||
)
|
||||
#ex(
|
||||
caption: [Qualificative genitive case],
|
||||
txt: [#high[] ],
|
||||
translit: (high[áhioc], [issofe]),
|
||||
phono: (bl + high[øːx], [esovɛ] + br),
|
||||
morphemes: (high[fiction.#sc[gen]], [job#sc[.age]]),
|
||||
translation: [a #high[fictional] job],
|
||||
lbl: "ex-case-gen-qual",
|
||||
)
|
||||
|
||||
#ex(
|
||||
caption: [Compounding],
|
||||
txt: [],
|
||||
translit: ([#sn[]\ áhio-], [#sn[]\ issofe]),
|
||||
phono: (bl + [øː-], [esovɛ] + br),
|
||||
morphemes: ([fiction-], [job#sc[.age]]),
|
||||
translation: [a fictional job],
|
||||
lbl: "ex-case-gen-compound",
|
||||
)
|
||||
|
||||
==== Dative <case-dative>
|
||||
|
||||
The dative case #abb[dat] indicates the beneficiary of a ditransitive verbs, as
|
||||
well as indicating a direction faced. Note hover that it isn't used with verbs
|
||||
of movement towards something, for those use the patient case (see
|
||||
@case-patient) instead, the dative instead indicates the means of displacement.
|
||||
#ex(
|
||||
caption: [Dative in ditransitive clauses],
|
||||
txt: [#high[] ],
|
||||
translit: (high[elssi], [rent], [ssiehíeff]),
|
||||
phono: (bl + high[ɛẅɕ], [ʀɛ̃ð], [ɕjɛːf] + br),
|
||||
morphemes: (high(sc[2s.dat]), [house#sc[.pat]], [give.#sc[pres.1s]]),
|
||||
translation: [I give #high[you] a house],
|
||||
lbl: "ex-case-dat-ditrans",
|
||||
)
|
||||
#ex(
|
||||
caption: [Dative as means of displacement for verbs of movement towards],
|
||||
txt: [ #high[] ],
|
||||
translit: ([an·ssialmossécet], high[ffoítstsselassi], [oissailin.]),
|
||||
phono: (bl + [ãɕaẅmosicɛθ], high[fydztsɛʟaɕ], [øsɛʎẽ] + br),
|
||||
morphemes: (
|
||||
[#sc[ppn-]Sialmoséce#sc[.dat]],
|
||||
high[train.#sc[dat]],
|
||||
[go#sc[.pst.2s]],
|
||||
),
|
||||
translation: [You#ann[sg] went to Sialmoséce #high[by train]],
|
||||
lbl: "ex-case-dat-mot",
|
||||
)
|
||||
#ex(
|
||||
caption: [Dative as an allative substitute for other verbs],
|
||||
txt: [#high[] ],
|
||||
translit: (
|
||||
high[an·cairniassialssi],
|
||||
[an·ssialmosécet],
|
||||
[ffoítstsselafia],
|
||||
[filineff.],
|
||||
),
|
||||
phono: (
|
||||
bl + high[ãkɛɐ̯nɛɕaẅɕ],
|
||||
[ãɕaẅmosicɛθ],
|
||||
[fydztsɛʟavja],
|
||||
[veʎẽnɛf] + br,
|
||||
),
|
||||
morphemes: (
|
||||
high[#sc[ppn-]Cairniasial#sc[.dat]],
|
||||
[#sc[ppn-]Sialmoséce#sc[.pat]],
|
||||
[train.#sc[abl]],
|
||||
[leave.#sc[prs.1s]],
|
||||
),
|
||||
translation: [I leave Sialmoséce by train #high[to Cairniasial].],
|
||||
lbl: "ex-case-dat-all",
|
||||
)
|
||||
|
||||
==== Ablative <case-abl>
|
||||
|
||||
The ablative case #abb[abl] indicates the provenance of the action. It is also
|
||||
used as an instrumental, indicating the means by which the action is done. For
|
||||
verbs of movement away from something, it only has it's instrumental meaning,
|
||||
the source is indicated by the patient case (see @case-patient). For verbs of
|
||||
movement towards something, the ablative doesn't have the instrumental meaning,
|
||||
for that role use the dative instead.
|
||||
|
||||
#ex(
|
||||
caption: [Ablative case in an ablative meaning],
|
||||
txt: [#high[] ],
|
||||
translit: (high[an·ssialmossécefia], [nriiht], [fionreeff.]),
|
||||
phono: (bl + [ãɕaẅmosicɛvja], [nʁiːθ], [vjõʀiɸ] + br),
|
||||
morphemes: (
|
||||
high[#sc[ppn]-Sialmoséce.#sc[abl]],
|
||||
[grain#sc[.pl.pat]],
|
||||
[eat#sc[.prs.1s]],
|
||||
),
|
||||
translation: [I eat grains #high[from Sialmoséce]],
|
||||
lbl: "ex-case-abl-abl",
|
||||
)
|
||||
#ex(
|
||||
caption: [Ablative case as instrumental],
|
||||
txt: [#high[] ],
|
||||
translit: (high[hoéfenfia], [cirtíf.]),
|
||||
phono: (bl + high[yvɛ̃vja], [ceɐ̯div] + br),
|
||||
morphemes: (high[pen#sc[.abl]], [write#sc[.past.1pe]]),
|
||||
translation: [We#ann[excl] wrote #high[with a pen].],
|
||||
lbl: "ex-case-abl-inst",
|
||||
)
|
||||
|
||||
==== Spatial Locative <case-spaloc>
|
||||
|
||||
The spatial locative cases #abb[sploc] is used to indicate a spacial location.
|
||||
it is marked by expressing the noun in the genitive case, followed by the
|
||||
#sn[] ⟨la⟩ particle. It is however pronounced as there was no word boundary
|
||||
between the word and the particle.
|
||||
|
||||
#ex(
|
||||
caption: [Spatial Locative],
|
||||
txt: [ #high[ ]],
|
||||
translit: ([il], high[an·fanssterilc‿la] + [.]),
|
||||
phono: (bl + [eẅ], [ãvãstɛʀeẅʝ ʟa] + br),
|
||||
morphemes: (sc[1s.age], [#sc[ppn-]Vansteril#sc[.gen‿sploc]]),
|
||||
translation: [I am #high[in Vansteril]],
|
||||
lbl: "ex-case-sploc",
|
||||
)
|
||||
|
||||
==== Temporal Locative <case-temploc>
|
||||
|
||||
There are four temporal locatives: past, present, future and gnomic
|
||||
#low[#sc[tmploc.pst, tmploc.prs, tmploc.fut] and #sc[tmploc.gno]]. The past case
|
||||
(resp. present and future) is used, as its name indicates, to locate events that
|
||||
happened in the past (resp. present and future). The gnomic case locates events
|
||||
that are either generally happening, happening at an unknown point in time, or
|
||||
happening repeatedly. The past case (resp. present, future, gnomic) are
|
||||
indicated by expressing the noun in the oblique followed by the particle
|
||||
#sn[] ⟨anip⟩ (resp #sn[] ⟨anep⟩, #sn[] ⟨anop⟩ and #sn[]
|
||||
⟨anap⟩) However the present case is rarely used outside of set phrases like
|
||||
#sn[ ] “today” or #sn[ ] “now”.
|
||||
|
||||
Note that those are pronounced as there was no word boundary between the word
|
||||
and the particle.
|
||||
|
||||
#ex(
|
||||
caption: [Present temporal locative],
|
||||
txt: [#high[ ] ],
|
||||
translit: (high[fint‿anep], [marefess.]),
|
||||
phono: (bl + high[vẽð ãneɸ], [maʀɛvɛs] + br),
|
||||
morphemes: (high[day.#sc[pat‿tmploc.prs]], [be_cold.#sc[prs.3si]]),
|
||||
translation: [It’s cold #high[today]],
|
||||
lbl: "ex-case-tmploc-prs",
|
||||
)
|
||||
|
||||
#ex(
|
||||
caption: [Past temporal locative],
|
||||
txt: [ #high[ ] ],
|
||||
translit: ([il], high[fionreipt‿anip], [,], [cirtin.]),
|
||||
phono: (bl + [eẅ], high[vjõʀipθ ãneɸ], [|], [ceɐ̯dẽ] + br),
|
||||
morphemes: (
|
||||
sc[1s.act],
|
||||
high[eat#sc[.pst.pcp.pat‿tmploc.pst]],
|
||||
[|],
|
||||
[write] + sc[.pst.2s],
|
||||
),
|
||||
translation: [#high[When] I #high[ate], you#ann[sg] wrote],
|
||||
lbl: "ex-case-tmploc-pst",
|
||||
)
|
||||
#ex(
|
||||
caption: [Future temporal locative],
|
||||
txt: [ #high[ ] ],
|
||||
translit: ([il], high[fionreapt‿anop], [,], [cirton.]),
|
||||
phono: (bl + [eẅ], high[vjõʀøpθ ãnoɸ], [|], [ceɐ̯dõ] + br),
|
||||
morphemes: (
|
||||
sc[1s.act],
|
||||
high[eat#sc[.fut.pcp.pat‿tmploc.fut]],
|
||||
[|],
|
||||
[write] + sc[.fut.2s],
|
||||
),
|
||||
translation: [#high[When] I#high[’ll eat], you#ann[sg]’ll write],
|
||||
lbl: "ex-case-tmploc-fut",
|
||||
)
|
||||
#ex(
|
||||
caption: [Gnomic temporal locative],
|
||||
txt: [ #high[ ] ],
|
||||
translit: ([il], high[fionreapt‿anap], [,], [cirtan.]),
|
||||
phono: (bl + [eẅ], high[vjõʀɛpθ ãnaɸ], [|], [ceɐ̯dã] + br),
|
||||
morphemes: (
|
||||
sc[1s.act],
|
||||
high[eat#sc[.gno.pcp.pat‿tmploc.gno]],
|
||||
[|],
|
||||
[write] + sc[.gno.2s],
|
||||
),
|
||||
translation: [#high[Whenever] I #high[eat], you#ann[sg] write],
|
||||
lbl: "ex-case-tmploc-gno",
|
||||
)
|
||||
|
||||
=== Proper noun enclitic #sn[] <morph-ppn>
|
||||
|
||||
Proper nouns that aren't personal names always take the proper noun enclitic
|
||||
#abb[ppn] #sn[] ⟨an·⟩
|
||||
|
||||
The affix #sn[] ⟨ni-⟩ --- which on proper nouns forms demonyms --- attaches
|
||||
to the front of the proper noun enclitic: #sn[] gives
|
||||
#sn[] and not \*#sn[] or \*#sn[]. Demonyms
|
||||
formed this way also mark plural on the proper noun enclitic: #sn[]
|
||||
pluralises to #sn[] and not \*#sn[].
|
||||
|
||||
== Pronouns <morph-pronouns>
|
||||
|
||||
Mosici has a full set of personal, demonstrative and interrogative pronouns (see
|
||||
table at the end of this section). However, the use of personal pronouns is
|
||||
limited to situations where they are necessary.
|
||||
|
||||
The Agent and patient forms especially are often dropped in non-participial
|
||||
clauses. Indeed, a speaker would more often use the passive marking and avoid a
|
||||
pronoun altogether than use an patient form: Use #sn[ ]
|
||||
#low[(Loarne.#sc[age] #sc[pass.]eat#sc[.prs.3si])] rather than ?#sn[
|
||||
] #low[?(Loarne#sc[.age] #sc[3si.pat] eat#sc[.prs.3sa])] for
|
||||
"Loarne eats it."
|
||||
|
||||
#mos-pron(none, open: true)
|
||||
|
||||
== Verbs <morph-verbs>
|
||||
|
||||
Verbs are mainly conjugated according to their tense and the grammatical person
|
||||
of the agent.
|
||||
|
||||
Orthographically the pattern is completely regular, however the vowel
|
||||
coalescence (see @sec-coalescence) causes the pronunciation to be quite chaotic.
|
||||
The plural forms of past and present tense are always identical when spoken but
|
||||
distinguished in writing.
|
||||
|
||||
Verbs are typically listed in their gnomic infinitive form. to derive the stem,
|
||||
remove the final #sn[]. Here is a conjugation table for an hypothetical
|
||||
null-stemmed verb as a way to list the affixes#footnote[You may find those forms
|
||||
verbatim in some older texts as a now defunct copula.] <fn-old-copula>
|
||||
|
||||
#mos-v("", open: true)
|
||||
|
||||
=== Aspect, mood ⁊ related nonsense <morph-verbs-extra-tam>
|
||||
|
||||
If you need other moods or aspects than an unaspected indicative, there is a
|
||||
plethora of affixes you can stack on verbs to specify them further, they all are
|
||||
interpreted as nested, coming away from the verb, and can be combined and
|
||||
stacked for more specific meanings, or occasionaly derive new core meanings. In
|
||||
the latter case those are typically indicated in dictionaries.
|
||||
|
||||
Here is a (eventually but not yet) exhaustive list of such affixes: #low[(all of
|
||||
them are prefixes)]
|
||||
|
||||
==== Conditional <morph-verbs-cond>
|
||||
|
||||
The conditional #sn[] ⟨ffói-⟩ #abb[cond] indicates that the action of a
|
||||
verb is an hypothetical, or unreal situation.
|
||||
|
||||
==== Imperfective, durative, iterative, Inchoative <morph-verb-npfv>
|
||||
#low[*TODO*: Imperfective, durative]
|
||||
|
||||
The iterative #sn[] ⟨atéo-⟩ #abb[iter] indicates that the action of the
|
||||
verb is appening again, or repeatedly.
|
||||
|
||||
The inchoative #sn[] ⟨marai-⟩ #abb[inch] is used to indicate that the
|
||||
start with an action.
|
||||
|
||||
==== Perfective, terminative <morph-verb-pfv>
|
||||
|
||||
The perfective #sn[] ⟨ntof-⟩ #abb[pfv] is used to indicate that an action
|
||||
was ponctual instead of lasting. When combined with the inchoative it has a
|
||||
translative meaning: it indicates a transition into the state resulting of the
|
||||
active verb or described by the stative verb.
|
||||
|
||||
The terminative #sn[] ⟨offa-⟩ #abb[term] is used to indicate that an
|
||||
action was entirely completed, or that a state is no longer current.
|
||||
|
||||
==== Desiderative, Necessitatives, Optative, Hortative <morpho-verb-opt>
|
||||
|
||||
The desiderative #sn[] ⟨ffats-⟩ #abb[des] indicates that the results of
|
||||
the verb are desired by the subject.
|
||||
|
||||
The moral necessitative #sn[] ⟨réan-⟩ #abb[mness] indicates that the
|
||||
agent is morally obligated to perform the action.
|
||||
|
||||
The hortative #sn[] ⟨cofa-⟩ #abb[hort] indicates a strong injunction to
|
||||
perform the action.
|
||||
|
||||
#low[*TODO*: Optative, Physical necessitative]
|
||||
|
||||
==== Imperative <morph-verb-imp>
|
||||
The imperative, contrary to all the other moods, is expressed with a particle
|
||||
#sn[] ⟨o⟩ after the verb complex. If you need an affix form for
|
||||
@morph-verb-other reasons, you should use the hortative (see @morpho-verb-opt)
|
||||
instead.
|
||||
|
||||
==== Causatives <morph-verb-cau>
|
||||
Mosici has two causatives: the purposeful and the accendental.
|
||||
|
||||
The purposeful causative #sn[] ⟨siehí-⟩ #abb[vcaus] indicates that the described
|
||||
state is caused by the agent intentionally.
|
||||
|
||||
The accidental causative #sn[] ⟨ssní-⟩ #abb[icaus] indicates that the described state
|
||||
is cased by the agent in unintentionally or accidentally.
|
||||
|
||||
Both change the valency of the verb. the cause is expressed as the agent, what
|
||||
would the agent of the root verb is expressed as the patient, and what would
|
||||
have been the patient of the root verb is expressed in the dative, the verb
|
||||
agrees with it's new agent (unless further modified).
|
||||
|
||||
==== Passive <morph-verb-pas>
|
||||
The passive affix #sn[] ⟨na-⟩ #abb[pass] makes a transitive verb agree with its
|
||||
patient instead of its agent.
|
||||
|
||||
==== Negation <morph-verb-neg>
|
||||
The negation prefix is #sn[] ⟨ta-⟩ #abb[neg]. It negates whatever component of the
|
||||
verb is immediately following it.
|
||||
|
||||
==== Also on other parts of speech <morph-verb-other>
|
||||
While frowned upon in more formal texts, all of the above mood and aspect
|
||||
affixes can be added to nouns to great effect in less formal or more poetic
|
||||
registers. Exception is of the negation affix which is considered perfectly
|
||||
acceptable in all registers.
|
||||
|
||||
== Numerals
|
||||
|
||||
#low[*TODO*]
|
||||
|
||||
= Syntax
|
||||
|
||||
At the sentence level Mosici has a mostly constituant order due to heavy role
|
||||
marking. That said, it tends to default to topic fronting on an underlying SOV
|
||||
order.
|
||||
|
||||
Inside constituants, it depends on the type of adjuncts: genitives and ordinals
|
||||
come before the noun they qualify, but verbal participles and demonstrative come
|
||||
after the noun they qualify.
|
||||
|
||||
Relative clauses are formed by expressing the verb in the participle, declined
|
||||
in case with its role in the main clause.
|
||||
|
Before Width: | Height: | Size: 894 B After Width: | Height: | Size: 894 B |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user