Inscription Editor (PML)
PML (Poetic Magick Language) styles a poem with a few marks. Plain text stays plain, and a mark PML doesn’t understand is shown as typed, so nothing here can break a poem. Each section ends with an example: ⤓ Try inserts it at the cursor, and ↶ takes it out again.
Wrap words to change their weight or line: **bold**, *italic*, _underline_, ~~strike~~. They combine and nest: a bold phrase can hold one italic word.
the **heart** of it, *softly*, ~~never~~ always
The page has two accent colors, set under Thoughtforms: the Opposition Hue and the Conjunction Hue. Square brackets use the Opposition Hue, braces the Conjunction Hue, and both together blend from one to the other across the words. A slash fades an accent into the ink, from the left (/lg) or the right (/rg). Emoji inside take the color too.
[one] {two}{[text]} [{text]}[text/lg] {text/rg}a [red] word, a {blue} word, and {[both at once]}
A mark at the start of a line changes the whole line.
##-#>#D#S## The Lantern
-# for M., in winter
#D Once there was a light that would not go out.
End a line with /l, /c or /r (or /left, /center, /right) to override the page’s alignment for that line. To split a line between alignments, put part of it in a segment (below) with its own.
this line leans right/r
left words <and right words/r>
End a line with ~A, ~B, ~C or ~D to mark its rhyme. Each shows as a small colored bar beside the line, not as text: A and B in the accent colors, C and D in the accents’ opposite hues. They combine with alignment: text~A/r.
the night was cold~A
the stars were old~A
and still the light~B
held on till bright~B
<…>Angle brackets mark part of a line to style on its own. After the words, add a slash and a directive; chain as many as you like. These also work bare, with a default amount: /scale, /track, /jitter, /basis, /fx1, /fx2, /effect.
/#:ff00ff/color:rosemidnightblue), the app’s own (rose, oxblood, moss, bone, parchment, graphite, teastain, clay, sage, ink, starlight, ember), or a hex code/f:4/font:Cinzel/scale:150/track:150/basis:50/jitter:150/grad:1#f00,2#00f/rainbow /trans /lesbian:rev to reverse one/fx1,#abc,3/fx2,#f0f,10,4,4/effect:halo,60,#fff/fx:outline(#fff,4)+glow(#fd0,40,70)/fx:none clears them)/under:wave,#c33,150/fx0<grow/scale:160/track:130> and <fall/basis:-40/jitter:200> and <glow/effect:halo,70>
Words can be made of glass, cut through the surface, pressed into the page, or set on a curve. Each of these works bare too.
/glass/glass:clear /glass:rose /glass:80/glass:rose,30)/cut/blend:multiply/op:60/arc:30/wave:25,2/rot:-8/gap:100<frosted/glass/scale:150> <and pressed/blend:multiply>
<over the hill/arc:40> <and away/wave:30,2>
<a turned word/rot:-6/op:70/gap:60>
Name a set of directives once, on its own line, then use it anywhere a directive goes with /@ and the name. The naming line isn’t drawn, and one style can use another. The editor underlines any directive it can’t read (a misspelling, a value it doesn’t take, a style or typeface no one has named) and explains why under the poem.
§style ember = /color:ember/glass/scale:120
the <coals/@ember> and the <sparks/@ember/rot:4>
A bracket or segment can span lines: open it on one line, close it on a later one, and every line between takes it. Directives right after a closing bracket make it a segment, so [words]/jitter:150 works without angle brackets. An alignment alone at the end of a block aligns all its lines. Marks nest: a segment inside a segment takes both sets of directives, its own last. Bold and italic span lines the same way. A bracket that never closes ends with its line, and <3 is always a heart.
[This is a stanza
that should be colored
and centered]/c
{[We are doing something strange
but bear with me, dear}]/jitter:200
<a <nested/scale:150> segment/track:130>
A line of three dashes draws a rule across the page, to divide stanzas. In a segment it takes a width, an alignment and a stitch: a motif sewn along it, pointing down (the default) or up.
--- [---] {---}<---/50%/c>l c r)<---/vine/up>/size:150 /weight:200 /#:ff00aaBorders take the same stitches (Materia → Border Stitch), and an inset box follows a stitched border’s inner edge.
<---/vine/60%/c>
Backticks show words exactly as typed, in a monospace face on a small backdrop: for a line of code, or anything marks would otherwise change. Variables (below) still resolve inside; glyphs don’t.
`**not bold**, [not an accent]`
A § and a name is replaced by a value before anything else is read: the surface’s name, tonight’s moon, the look’s spell. They let a page describe itself (the Grimoire’s Instrument Panel is made of them). A name the app doesn’t know stays as typed; \§ prints a plain §. On a computer’s keyboard, $ works the same before a variable’s name ($SurfName, $style); “$5” stays as typed.
§SurfName §SurfParamsA §SurfParamsB§MoonPhase!tonight !seed :0.5§Glyph!fire §Glyph!materia §UVIcon§SpellName §Spell §Font §TypeEffect§RenderMs §Profile §CacheMB §Canvas §Scale §Buildtonight's moon: §MoonPhase!tonight, on §SurfName
A backslash before any mark prints the mark itself instead of acting on it: \[text\] prints [text].
Standard
Landscape
No preset matches. Try a mood (rain, gold) or a surface (glass, paper).
Use + Save this look to keep the current look here, under a name you choose.
Up to three effects, drawn under the letters in order. A segment can set its own: <word/fx:glow(#fd0,40,70)>
The page as a short film: its camera turning, its light or its day going round, or one look easing into another. Holding Save image opens it too.
Spells keep looks: every setting, but not the poem's words.
Create saves the current look as a spell. Invoke puts it back on the page.
The Grimoire keeps poems: the words only. Choose one, then Invoke or Dissolve.
The Grimoire is empty. Record saves your poem's text here.
Keys work unless you are typing in a field.
The page as a short film, drawn frame by frame: the poem when it is shown, and the credit line.