The Markers
Every marker you can place in a Rising Tide template - text slots, the content region, stacked lines, and the layers the protocol injects.
Four kinds of marker. You will use the first two on every template and may never need the other two.
Text slots
Tag any <text> element with data-slot and the protocol replaces its contents.
<text data-slot="title"
x="350" y="170"
font-family="Georgia, serif" font-size="36" font-weight="600"
text-anchor="middle" fill="#28251e">Title goes here</text>Everything about how it looks is read off the element you drew. Position, size, family, weight, alignment, colour - the protocol takes all of it from your markup. There is no separate place to configure typography, and nothing overrides your choices.
The placeholder text you type inside the element is for your eye only. It is replaced at render time and never appears anywhere.
| Slot | What lands there |
|---|---|
title | the piece's title |
author | who made it |
editionNumber | the numbered copy - #0042 |
line1, line2, line3, ... | the lines of a short-form piece, one per slot |
A haiku uses line1 through line3. A tanka uses five. Short forms use numbered line slots
because each line is placed exactly where you drew it; long-form pieces use the content region
below instead.
The content region
For anything long enough to need wrapping - an open letter, an open-format page - draw one box and let the protocol flow the text into it.
<foreignObject data-slot="content" x="100" y="280" width="500" height="820">
<div xmlns="http://www.w3.org/1999/xhtml"
style="font-family: Georgia, serif; font-size: 18px; line-height: 30px; color: #28251e;">
Placeholder for your own eye.
</div>
</foreignObject>The box comes from the four attributes. The type comes from the div style inside it.
Write the line height in pixels. line-height: 30px, never line-height: 1.65. A bare ratio
is rejected outright rather than guessed at, and that refusal is deliberate - a ratio that quietly
resolved to a default is how a file can look correct in your editor and set wrong in every
render.
Only one content region per file. If you draw two, only one of them is used.
Stacked lines
When several numbered line slots belong together as a block - the lines of a poem - tag them with
the same data-flow-group and they lay out in the order they appear in your file.
<text data-slot="line1" data-flow-group="poem" ...>first line</text>
<text data-slot="line2" data-flow-group="poem" ...>second line</text>
<text data-slot="line3" data-flow-group="poem" ...>third line</text>Without the group, each line sits exactly at the y you gave it - which is what you want when
the design places them deliberately. With the group, they stack, which is what you want when the
number of lines can vary.
Injected layers
Three markers tag a place rather than a piece of text. You draw the space; the protocol puts something into it.
| Marker | What arrives |
|---|---|
data-slot="stickerLayer" | a sticker, if the creator applied one |
data-slot="qrCodeSvg" | a QR code, on ticket templates |
data-slot="bracketGrid" | the tournament grid, on bracket templates |
These carry no text and no typography. Put the marker on a group or a rectangle at the position and size you want the layer to occupy.
What is not a marker
data-slot is the whole vocabulary. There is no way to declare a variable, run a condition, or
loop over anything - a template is a drawing with named holes in it, not a program. If your
design needs something the markers above cannot express,
tell us rather than working around it.
Drawing a Template
How to draw a Rising Tide template that works - what the file is, what the protocol fills in, and a starter file you can open and change.
Canvas and Readability
How canvas slots work, why your file declares its own size, and the column width the protocol reads as comfortable to read.