Changed from top half (y0=92.8, y1=103.8) to bottom half (y0=103.8,
y1=114.8). The label baseline sits at y≈101.5mm, so the lower half
starts 2.3mm below it — clean visual separation without the unit
appearing high up on the panel.
Paths-mode unit rendering now always goes through _markup_unit_svg,
which fits the font's actual ink bounds (width AND height) to the
unit box — correct for all fonts, not just ГОСТ тип А.
Added half-height unit toggle: restricts the unit label to the upper
half of the panel box (y1 = midpoint at 103.8 mm), keeping it clear
of the numeric labels when they visually crowd the unit area.
All .ttf files in fonts/ are loaded at startup. The web form now has a
font selector dropdown. Glyph-rendering helpers that previously used
module-level font globals now accept a _FontData parameter threaded
through from generate_svg().
Dockerfile updated to copy all of fonts/ into the image rather than a
single hardcoded .ttf path.
Minor ticks on 1/x scales were using linear value interpolation between
harmonically-spaced major ticks. Because 1/v is highly convex, equal value
steps near a large major-value (left side of the first interval) map to tiny
physical steps, piling all ticks against the left wall. At a 1:1000 ratio the
first four minor ticks land at 0%/0%/1%/2% of the interval.
Fix: interpolate in position space (uniform physical spacing) for all
reciprocal intervals, matching how major ticks are laid out (also equal
physical steps) and matching the already-correct ∞-first-interval handling.
Also documents 1/x scale and ∞ max in README.
Lighter shorthand (^x, _x, {a/b}) rendered as glyph paths in the ГОСТ
font — no LaTeX engine, so typography and self-contained output are
preserved. Constructs nest (e.g. {m/s^2}, x^{1/2}). A marked-up unit is
sized to its true ink bounding box and centered in the unit box with
white space, fitting in both axes so tall fractions don't overflow.
Also fit plain units by measured glyph width rather than a per-character
estimate. Bump to 0.77.
- New "Label size (mm)" field controlling the numeric-label font size,
defaulting to a clean 9 mm (was the inherited Inkscape value 8.89194)
- Pin k8s deployment to image tag 0.76
- New Linear/Log mapping toggle; log mode uses geometric major-tick
values with log-positioned minor ticks (validates min/max > 0)
- Optional comma-separated custom labels that override the calculated
numbers and set the label count
- Format numbers in fixed-point at 4 significant figures (no more
scientific notation like "1e+04"), snapping log-scale FP drift to ints
- Bump version to 0.75
- Flask app (web/) generates M1730 scale SVGs from a form; embeds
GOST typ A font as base64 so output is self-contained
- Dockerfile builds the app into git.baumann.gr/adebaumann/m1730-generator
- k8s/ deploys as a ClusterIP service for NPM to proxy at
works.adebaumann.com/M1730-generator/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>