snotes style message generator
  • JavaScript 64.2%
  • CSS 15.5%
  • HTML 13.4%
  • OpenSCAD 4.5%
  • Shell 2.4%
Find a file
2026-05-27 16:14:03 -05:00
fonts Add scad stl generator 2026-05-27 16:14:03 -05:00
src Add scad stl generator 2026-05-27 16:14:03 -05:00
vendor Initial commit 2026-05-27 15:16:35 -05:00
.gitignore Add scad stl generator 2026-05-27 16:14:03 -05:00
anamorphic-disc.scad Add scad stl generator 2026-05-27 16:14:03 -05:00
index.html Add scad stl generator 2026-05-27 16:14:03 -05:00
jsconfig.json Initial commit 2026-05-27 15:16:35 -05:00
README.md Add scad stl generator 2026-05-27 16:14:03 -05:00
render.sh Add scad stl generator 2026-05-27 16:14:03 -05:00
style.css Initial commit 2026-05-27 15:16:35 -05:00

Circular Anamorphic Text Generator

A no-build, no-framework web app that turns text into circular anamorphic SVG discs.

The generator uses vendored opentype.js to read the bundled Google Fonts TTF files, converts glyphs to flattened outline paths, warps the outlines, and exports a standalone SVG made of paths.

Run

Use any static file server from this directory:

python3 -m http.server 8765

Then open:

http://127.0.0.1:8765/

Opening index.html directly from the filesystem may fail because browsers often block font fetch() calls from file:// pages.

OpenSCAD

The app has two SVG downloads:

  • Download SVG exports the full preview disc with background and border.
  • Download Text SVG exports only the warped text paths for CAD import.

To make a printable extruded disc:

  1. Export Download Text SVG from the app.
  2. Save it next to anamorphic-disc.scad with the filename set in svg_file, or update svg_file in the SCAD file.
  3. Set svg_radius_units in anamorphic-disc.scad to the same Disc radius value used in the app.
  4. Adjust disc_radius_mm, base_height_mm, and text_height_mm for the physical model.
  5. Render in OpenSCAD and export STL.

The SCAD template imports only the text SVG. The circular base is modeled separately with cylinder(), so the SVG should not contain the background circle or border.

For slicer coloring, export the base and text as separate STLs using render_part:

openscad -o dote-base.stl -D 'render_part="base"' anamorphic-disc.scad
openscad -o dote-text.stl -D 'render_part="text"' anamorphic-disc.scad

Load both STLs into the slicer as parts of the same object. They share the same origin and offsets, so they should align when imported together.

Assets

  • vendor/opentype.min.js is vendored from opentype.js.
  • fonts/Arvo-Regular.ttf and fonts/Arvo-Bold.ttf are from Google Fonts.
  • fonts/IMFeFCsc28P.ttf is IM Fell French Canon SC from Google Fonts.
  • Arvo is distributed under the SIL Open Font License. See fonts/OFL.txt.
  • IM Fell French Canon SC is distributed under the SIL Open Font License. See fonts/OFL-IM-Fell-French-Canon-SC.txt.