@sutton-signwriting/signmaker is a web app for creating and editing signs using Formal SignWriting in ASCII (FSW) and SignWriting in Unicode (SWU). It can be used directly in the browser, embedded in an iframe, and controlled through URL hash parameters or iframe messages.
- Public Editor: https://www.sutton-signwriting.io/signmaker/
- Public Demo: https://www.sutton-signwriting.io/signmaker/demo.html
- Source: https://github.com/sutton-signwriting/signmaker
- Issue Tracker: https://github.com/sutton-signwriting/signmaker/issues
- Online Discussion: https://gitter.im/sutton-signwriting/community
SignMaker provides a visual signbox for arranging SignWriting symbols in two-dimensional space. It supports symbol palette browsing, sequence editing, keyboard shortcuts, multi-symbol selection, undo/redo, styling, and export to PNG or SVG.
Signs can be loaded, edited, shared, and saved as Formal SignWriting in ASCII (FSW) or SignWriting in Unicode (SWU). Editing and export run in the browser. Optional language tooling such as fingerspelling, mouthing, and translation uses remote SignWriting services.
Project steward: Steve Slevinski
Channel: https://www.youtube.com/channel/UCXu4AXlG0rXFtk_5SzumDow
Support: https://www.patreon.com/signwriting
- Formal SignWriting: https://steveslevinski.me/#series/formal-signwriting
- Formal SignWriting DOI: https://doi.org/10.5281/zenodo.20074767
- Sutton SignWriting Platform: https://steveslevinski.me/#section/publications
- Platform DOI: https://doi.org/10.5281/zenodo.20041043
SignMaker supports eight keys for URL hash parameters.
| key | meaning |
|---|---|
ui |
language code for the user interface |
alphabet |
sign-language code for the palette symbol set |
fsw |
sign value in Formal SignWriting in ASCII |
swu |
sign value in SignWriting in Unicode |
styling |
style string for image creation |
grid |
grid detail: 0, 1, or 2 |
skin |
alternate display such as inverse or colorful |
tab |
active tab |
Example:
https://www.sutton-signwriting.io/signmaker/#?ui=ase&fsw=AS10011S10019S2e704S2e748M525x535S2e748483x510S10011501x466S2e704510x500S10019476x475&skin=colorful
Embed SignMaker in an iframe, send messages with postMessage, and receive save
messages from the iframe.
Load a sign by posting { fsw }, { swu }, or { signmaker: 'load', swu }. The
same keys as URL parameters are accepted.
Save posts this message back to the parent window:
{ signmaker: 'save', fsw, swu }See the public demo for a working harness.
npm install
npm run devThe app runs at http://localhost:5173/, with the iframe demo at
http://localhost:5173/demo.html.
npm run build:pages # GitHub Pages build with /signmaker/ base path
npm run build:package # static package/offline build with relative asset pathsbuild:pages is used by GitHub Actions for the public website. build:package
is reserved for a future static package or downloadable app archive.
npm test
npm run typecheck- Vite + React 19 + TypeScript
- Tailwind CSS v4
- Zustand for state
@sutton-signwriting/coreand@sutton-signwriting/font-ttffor FSW/SWU parsing, transforms, fonts, SVG, and PNG rendering- Playwright for end-to-end tests
src/ # React app, stores, components, i18n, and SignWriting helpers
public/ # static assets, favicon, and palette alphabet data
tests/ # Playwright end-to-end suite
index.html # editor entry
demo.html # iframe demo harness
SignMaker was created by Steve Slevinski for Sutton SignWriting.
The SignMaker 2 web app implementation was created by Amit Moryossef.
MIT. Copyright (c) 2007-2026 Steve Slevinski and SignMaker contributors.
- SignWriting Website: https://signwriting.org/
- Wikipedia page: https://en.wikipedia.org/wiki/SignWriting
- Email Discussion: https://www.signwriting.org/forums/swlist/
- Facebook Group: https://www.facebook.com/groups/SuttonSignWriting/
