Current session
Sessions
Import
Restores a session exported from this tool. Merging appends the samples as extra versions of each prompt.
Storage on this device
Samples are saved to IndexedDB after every stroke — no server involved. Browsers may still clear site data (Safari after weeks without a visit, unless storage is persistent), and an iPad Home Screen web app keeps its own storage, separate from Safari tabs. Export a backup now and then; import moves it between devices.
Export format
Raw, lossless pen data: nothing is simplified until font export.
{ "format": "dxviie.handwriting-font", "version": 1,
"session": { "name", "capture": {…guide & prompt settings}, "font": {…}, "preview": {…} },
"fields": ["x","y","t","p","tiltX","tiltY","twist","altitude","azimuth"],
"samples": [ { "key": "a" | "th" | …, "slot": 0, "created": epoch-ms, "starred": false,
"guide": { "xh", "asc", "cap", "desc" (CSS px from the baseline), "slant" (deg) },
"origin": { "x", "y" } (cell origin on the page, CSS px), "cellW", "viewport": { "w", "h", "dpr" },
"strokes": [ { "type": "pen" | "touch" | "mouse", "t0": epoch-ms, "n": points,
"pts": [x, y, t, p, tiltX, tiltY, twist, altitude, azimuth, x, y, …] } ] } ] }
x → right, y → down, in CSS px relative to the cell origin on the baseline; t in ms since t0;
p = pressure 0–1; tilt in degrees; altitude/azimuth in radians (null where the browser has none).
Font units: X = x · (capUnits / guide.cap), Y = −y · (capUnits / guide.cap).