Daniel Xu44 downloadsA vector handwriting annotation view layered over rendered Markdown, with pen/touch separation, autosave, SVG preview, and basic block re-anchoring.
A vector handwriting annotation view layered over rendered Markdown, with pen/touch separation, autosave, SVG preview, and basic block re-anchoring — an Obsidian plugin.
Current version: 0.1.0-beta.1 — installable and testable, with core drawing and persistence working.
Independent handwriting file view that works alongside Obsidian's edit/reading views. Switch freely between them on the same note.
getCoalescedEvents() for smooth strokes, falls back to standard pointermove when unavailable2,5) to toggle pen/eraserpointerType / button / pressure for debugging device mappingshandwriting-id in frontmatterdocument.ink.json with auto-generated ink-preview.svg and metadata.jsonAuto re-anchors strokes to Markdown blocks when text changes (exact text match). Unmatched stroke IDs are tracked as orphanedStrokeIds.
Reads/writes only through Obsidian's Vault / FileManager API — works on desktop and mobile.
Attachments/Handwriting/<handwriting-id>/)src/main.tsnpm run buildnpm run checkpointerType / button / pressureDefault output:
Attachments/Handwriting/<handwriting-id>/
├── document.ink.json
├── ink-preview.svg
└── metadata.json
Configure the root directory in plugin settings.
handwriting-markdown-view folder to:<Vault>/.obsidian/plugins/handwriting-markdown-view/
main.js
manifest.json
styles.css
Handwriting Markdown View: Open handwriting view in current tab
Each stroke stores:
tool / color / baseWidth / opacitypoints[x, y, pressure, tiltX, tiltY, twist, time]modifiedAt / deviceIdCanvas logical width defaults to 960px; display scaling is device-independent.
MIT License — see LICENSE.