From 62d9f02a82670b93e164f3984c2f54a8da50d511 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Tue, 14 Jul 2026 23:51:55 +0200 Subject: [PATCH] Add font selector; load all fonts from fonts/ directory; bump to 0.85 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. --- Dockerfile | 2 +- README.md | 7 +- fonts/GOST_2.30481_type_A.ttf | Bin 0 -> 66140 bytes fonts/GOST_2.30481_type_A_Bold.ttf | Bin 0 -> 65616 bytes fonts/Gost2.30481TypeB.ttf | Bin 0 -> 38892 bytes fonts/{ГОСТ_тип_А.ttf => ISOCPEUR.ttf} | Bin 143716 -> 149932 bytes fonts/SIEMENS_GOST_Type_A.ttf | Bin 0 -> 86064 bytes fonts/TGL_31034-1.ttf | Bin 0 -> 87264 bytes k8s/deployment.yaml | 2 +- web/app.py | 297 +++++++++++-------------- web/templates/index.html | 12 + 11 files changed, 152 insertions(+), 168 deletions(-) create mode 100644 fonts/GOST_2.30481_type_A.ttf create mode 100644 fonts/GOST_2.30481_type_A_Bold.ttf create mode 100644 fonts/Gost2.30481TypeB.ttf rename fonts/{ГОСТ_тип_А.ttf => ISOCPEUR.ttf} (82%) create mode 100644 fonts/SIEMENS_GOST_Type_A.ttf create mode 100644 fonts/TGL_31034-1.ttf diff --git a/Dockerfile b/Dockerfile index ac2be13..1c7a416 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ WORKDIR /app COPY web/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt gunicorn -COPY fonts/ГОСТ_тип_А.ttf /usr/local/share/fonts/г/ГОСТ_тип_А.ttf +COPY fonts/ /app/fonts/ COPY web/ . diff --git a/README.md b/README.md index ce020b5..54dc0fe 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ source .venv/bin/activate cd web && python app.py # http://localhost:5000 ``` -The font must be installed at `/usr/local/share/fonts/г/ГОСТ_тип_А.ttf`. +Fonts are loaded at startup from the `fonts/` directory in the repo root. ### Form parameters @@ -84,13 +84,12 @@ Constructs nest: `{m/s^2}` is a fraction with a superscript in the denominator, ## Container ```bash -# Copy the font first (not redistributed via the registry) -cp /usr/local/share/fonts/г/ГОСТ_тип_А.ttf fonts/ - docker build -t m1730-scale:latest . docker run -p 5000:5000 m1730-scale:latest ``` +Fonts are loaded from `fonts/` in the repo root; they are bundled into the image at build time. + The production image is at `git.baumann.gr/adebaumann/m1730-generator`. ## Kubernetes diff --git a/fonts/GOST_2.30481_type_A.ttf b/fonts/GOST_2.30481_type_A.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e554e9cfa7da908e4b0c844dabf1ca899c47d494 GIT binary patch literal 66140 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 delta 2696 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' -) +_FontData = namedtuple('_FontData', ['key', 'label', 'b64', 'glyph_set', 'cmap', 'hmtx', 'upm', 'glyf']) -_FONT_OBJ = TTFont(str(_FONT_PATH)) -_GLYPH_SET = _FONT_OBJ.getGlyphSet() -_CMAP = _FONT_OBJ.getBestCmap() -_HMTX = _FONT_OBJ['hmtx'].metrics -_UPM = _FONT_OBJ['head'].unitsPerEm -_GLYF = _FONT_OBJ['glyf'] +_FONT_LABELS = { + 'GOST_2.30481_type_A': 'GOST Type A', + 'GOST_2.30481_type_A_Bold': 'GOST Type A Bold', + 'Gost2.30481TypeB': 'GOST Type B', + 'ISOCPEUR': 'ISOCPEUR', + 'SIEMENS_GOST_Type_A': 'Siemens GOST Type A', + 'TGL_31034-1': 'TGL 31 034', +} + + +def _load_fonts(): + font_dir = pathlib.Path(__file__).parent / 'fonts' + if not font_dir.exists(): + font_dir = pathlib.Path(__file__).parent.parent / 'fonts' + fonts = {} + for path in sorted(font_dir.glob('*.ttf')): + key = path.stem + obj = TTFont(str(path)) + fonts[key] = _FontData( + key=key, + label=_FONT_LABELS.get(key, key.replace('_', ' ')), + b64=base64.b64encode(path.read_bytes()).decode(), + glyph_set=obj.getGlyphSet(), + cmap=obj.getBestCmap(), + hmtx=obj['hmtx'].metrics, + upm=obj['head'].unitsPerEm, + glyf=obj['glyf'], + ) + return fonts + + +_FONTS = _load_fonts() +_DEFAULT_FONT = 'GOST_2.30481_type_A' # SVG absolute coordinate constants (1 user unit = 1 mm) ZERO_X = 60.844130 @@ -45,35 +64,26 @@ _UNIT_SCALE_X = 0.96486402 _UNIT_MAX_FS = 18.7981 # --- Inline markup for the unit label ------------------------------------- -# Lighter-shorthand notation, rendered with the ГОСТ font (no LaTeX engine): -# ^x / ^{...} superscript _x / _{...} subscript -# {a/b} stacked fraction (vinculum); a bare '/' stays inline -# The `{...}` argument after ^/_ and the two sides of a fraction are parsed -# recursively, so constructs nest (e.g. {m/s^2}, x^{1/2}). -_SUP_SCALE = 0.62 # size of a super/subscript relative to its base -_SUP_RISE = 0.36 # superscript baseline lift, in base ems -_SUB_DROP = 0.14 # subscript baseline drop, in base ems -_FRAC_SCALE = 0.62 # size of numerator/denominator relative to fraction -_FRAC_AXIS = 0.32 # vinculum height above the base baseline, in base ems -_FRAC_GAP = 0.14 # gap between numerator/denominator ink and the vinculum -_FRAC_SIDE = 0.12 # vinculum overhang past the wider side, in sub ems +_SUP_SCALE = 0.62 +_SUP_RISE = 0.36 +_SUB_DROP = 0.14 +_FRAC_SCALE = 0.62 +_FRAC_AXIS = 0.32 +_FRAC_GAP = 0.14 +_FRAC_SIDE = 0.12 -# Target box for the unit label (absolute panel coords). A marked-up unit is -# scaled to fit and centered inside this box, leaving white space around it. -# The panel spans y 90.55..117.05; the scale bar starts at x 58.44. _UNIT_BOX_X0, _UNIT_BOX_X1 = 39.6, 57.4 _UNIT_BOX_Y0, _UNIT_BOX_Y1 = 92.8, 114.8 -def _glyph_svg(ch: str, x: float, y: float, fs: float, fill: str): - """Return (svg_path_or_None, advance_width) for one glyph at size `fs`.""" - gn = _CMAP.get(ord(ch)) +def _glyph_svg(ch: str, x: float, y: float, fs: float, fill: str, fd: _FontData): + gn = fd.cmap.get(ord(ch)) if gn is None: return None, 0.0 - s = fs / _UPM - adv = _HMTX.get(gn, (0, 0))[0] * s - pen = SVGPathPen(_GLYPH_SET) - _GLYPH_SET[gn].draw(pen) + s = fs / fd.upm + adv = fd.hmtx.get(gn, (0, 0))[0] * s + pen = SVGPathPen(fd.glyph_set) + fd.glyph_set[gn].draw(pen) d = pen.getCommands() if not d: return None, adv @@ -81,20 +91,18 @@ def _glyph_svg(ch: str, x: float, y: float, fs: float, fill: str): return f'', adv -def _glyph_ybounds(ch: str): - """(yMin, yMax) of a glyph's ink in em units, y-up. (0, 0) if it has none.""" - gn = _CMAP.get(ord(ch)) +def _glyph_ybounds(ch: str, fd: _FontData): + gn = fd.cmap.get(ord(ch)) if gn is None: return 0.0, 0.0 - g = _GLYF[gn] - if g.numberOfContours == 0: # space and other empty glyphs + g = fd.glyf[gn] + if g.numberOfContours == 0: return 0.0, 0.0 - g.recalcBounds(_GLYF) - return g.yMin / _UPM, g.yMax / _UPM + g.recalcBounds(fd.glyf) + return g.yMin / fd.upm, g.yMax / fd.upm def _extract_braced(s: str, i: int): - """s[i] == '{'; return (inner_text, index_just_after_matching_'}').""" depth, j = 1, i + 1 while j < len(s) and depth: if s[j] == '{': @@ -108,7 +116,6 @@ def _extract_braced(s: str, i: int): def _parse_braced(inner: str): - """A '{...}' group: a top-level '/' makes it a fraction, else a plain run.""" depth = 0 for k, ch in enumerate(inner): if ch == '{': @@ -121,7 +128,6 @@ def _parse_braced(inner: str): def _parse_atom(s: str, i: int): - """Argument of ^ or _: a braced group or a single character.""" if i >= len(s): return [], i if s[i] == '{': @@ -131,7 +137,6 @@ def _parse_atom(s: str, i: int): def _parse_markup(s: str): - """Parse a markup string into a flat list of nodes.""" nodes, i = [], 0 while i < len(s): c = s[i] @@ -148,58 +153,51 @@ def _parse_markup(s: str): return nodes -def _measure(nodes, fs: float) -> float: +def _measure(nodes, fs: float, fd: _FontData) -> float: w = 0.0 for n in nodes: if n[0] == 'lit': - gn = _CMAP.get(ord(n[1])) + gn = fd.cmap.get(ord(n[1])) if gn: - w += _HMTX.get(gn, (0, 0))[0] / _UPM * fs + w += fd.hmtx.get(gn, (0, 0))[0] / fd.upm * fs elif n[0] == 'group': - w += _measure(n[1], fs) + w += _measure(n[1], fs, fd) elif n[0] in ('sup', 'sub'): - w += _measure(n[1], fs * _SUP_SCALE) + w += _measure(n[1], fs * _SUP_SCALE, fd) elif n[0] == 'frac': fs2 = fs * _FRAC_SCALE - w += max(_measure(n[1], fs2), _measure(n[2], fs2)) + 2 * _FRAC_SIDE * fs2 + w += max(_measure(n[1], fs2, fd), _measure(n[2], fs2, fd)) + 2 * _FRAC_SIDE * fs2 return w -def _frac_layout(n, fs: float): - """Fraction geometry (offsets relative to the base baseline, y-down). - - Numerator and denominator are placed so their ink clears the vinculum by - `_FRAC_GAP` on each side — using the parts' real ink extents, so the gaps - hold whatever glyphs (or nested fractions) they contain. - """ +def _frac_layout(n, fs: float, fd: _FontData): fs2 = fs * _FRAC_SCALE axis = -_FRAC_AXIS * fs - _, num_bot = _vbounds(n[1], fs2) # numerator ink bottom, baseline-relative + _, num_bot = _vbounds(n[1], fs2, fd) num_base = axis - _FRAC_GAP * fs2 - num_bot - den_top, _ = _vbounds(n[2], fs2) # denominator ink top, baseline-relative + den_top, _ = _vbounds(n[2], fs2, fd) den_base = axis + _FRAC_GAP * fs2 - den_top return fs2, axis, num_base, den_base -def _vbounds(nodes, fs: float): - """(top, bottom) of the composite ink, baseline-relative, y-down (top < bottom).""" +def _vbounds(nodes, fs: float, fd: _FontData): lo, hi = math.inf, -math.inf for n in nodes: if n[0] == 'lit': - ymin, ymax = _glyph_ybounds(n[1]) + ymin, ymax = _glyph_ybounds(n[1], fd) a, b = -ymax * fs, -ymin * fs elif n[0] == 'group': - a, b = _vbounds(n[1], fs) + a, b = _vbounds(n[1], fs, fd) elif n[0] == 'sup': - a, b = _vbounds(n[1], fs * _SUP_SCALE) + a, b = _vbounds(n[1], fs * _SUP_SCALE, fd) a, b = a - _SUP_RISE * fs, b - _SUP_RISE * fs elif n[0] == 'sub': - a, b = _vbounds(n[1], fs * _SUP_SCALE) + a, b = _vbounds(n[1], fs * _SUP_SCALE, fd) a, b = a + _SUB_DROP * fs, b + _SUB_DROP * fs elif n[0] == 'frac': - fs2, axis, num_base, den_base = _frac_layout(n, fs) - nt, nb = _vbounds(n[1], fs2) - dt, db = _vbounds(n[2], fs2) + fs2, axis, num_base, den_base = _frac_layout(n, fs, fd) + nt, nb = _vbounds(n[1], fs2, fd) + dt, db = _vbounds(n[2], fs2, fd) a = min(nt + num_base, axis) b = max(db + den_base, axis) else: @@ -208,31 +206,30 @@ def _vbounds(nodes, fs: float): return (0.0, 0.0) if lo > hi else (lo, hi) -def _draw_nodes(nodes, x: float, y: float, fs: float, fill: str): - """Return (list_of_svg_parts, total_advance_width). y is the base baseline.""" +def _draw_nodes(nodes, x: float, y: float, fs: float, fill: str, fd: _FontData): parts, cx = [], x for n in nodes: if n[0] == 'lit': - p, adv = _glyph_svg(n[1], cx, y, fs, fill) + p, adv = _glyph_svg(n[1], cx, y, fs, fill, fd) if p: parts.append(p) cx += adv elif n[0] == 'group': - p, adv = _draw_nodes(n[1], cx, y, fs, fill) + p, adv = _draw_nodes(n[1], cx, y, fs, fill, fd) parts += p cx += adv elif n[0] in ('sup', 'sub'): fs2 = fs * _SUP_SCALE y2 = y - _SUP_RISE * fs if n[0] == 'sup' else y + _SUB_DROP * fs - p, adv = _draw_nodes(n[1], cx, y2, fs2, fill) + p, adv = _draw_nodes(n[1], cx, y2, fs2, fill, fd) parts += p cx += adv elif n[0] == 'frac': - fs2, axis, num_base, den_base = _frac_layout(n, fs) - wn, wd = _measure(n[1], fs2), _measure(n[2], fs2) + fs2, axis, num_base, den_base = _frac_layout(n, fs, fd) + wn, wd = _measure(n[1], fs2, fd), _measure(n[2], fs2, fd) bar_w = max(wn, wd) + 2 * _FRAC_SIDE * fs2 - pn, _ = _draw_nodes(n[1], cx + (bar_w - wn) / 2, y + num_base, fs2, fill) - pd, _ = _draw_nodes(n[2], cx + (bar_w - wd) / 2, y + den_base, fs2, fill) + pn, _ = _draw_nodes(n[1], cx + (bar_w - wn) / 2, y + num_base, fs2, fill, fd) + pd, _ = _draw_nodes(n[2], cx + (bar_w - wd) / 2, y + den_base, fs2, fill, fd) parts += pn + pd ay = y + axis parts.append( @@ -247,87 +244,57 @@ def _has_markup(s: str) -> bool: return any(c in s for c in '^_') or ('{' in s and '}' in s) -def _markup_unit_svg(unit: str, fill='#1a1a1a') -> str: - """Render a marked-up unit, scaled to fit and centered in the unit box.""" +def _markup_unit_svg(unit: str, fd: _FontData, fill='#1a1a1a') -> str: nodes = _parse_markup(unit) x0, x1, y0, y1 = _UNIT_BOX_X0, _UNIT_BOX_X1, _UNIT_BOX_Y0, _UNIT_BOX_Y1 xc, yc = (x0 + x1) / 2, (y0 + y1) / 2 - # Fit to the box in both axes (width is horizontally condensed by SCALE_X). - w1 = _measure(nodes, 1.0) - top1, bot1 = _vbounds(nodes, 1.0) + w1 = _measure(nodes, 1.0, fd) + top1, bot1 = _vbounds(nodes, 1.0, fd) fs = _UNIT_MAX_FS if w1 > 0: fs = min(fs, (x1 - x0) / (w1 * _UNIT_SCALE_X)) if bot1 - top1 > 0: fs = min(fs, (y1 - y0) / (bot1 - top1)) - # Center: baseline placed so the ink box's mid-height lands on yc; glyphs - # drawn from a natural left edge, then condensed horizontally about xc. - w = _measure(nodes, fs) - top, bot = _vbounds(nodes, fs) + w = _measure(nodes, fs, fd) + top, bot = _vbounds(nodes, fs, fd) y_base = yc - (top + bot) / 2 - parts, _ = _draw_nodes(nodes, xc - w / 2, y_base, fs, fill) + parts, _ = _draw_nodes(nodes, xc - w / 2, y_base, fs, fill, fd) cond = f'translate({xc:.5f},0) scale({_UNIT_SCALE_X},1) translate({-xc:.5f},0)' return f'\n{chr(10).join(parts)}\n' -def _text_em_width(text: str) -> float: - """Advance width of `text` in em units, from the font's own metrics.""" - return sum( - _HMTX.get(_CMAP.get(ord(ch)), (0, 0))[0] - for ch in text if _CMAP.get(ord(ch)) - ) / _UPM - - -def _unit_font_size(unit: str) -> float: - # Fit the unit's true rendered width (measuring the parsed markup, so - # super/subscripts and fractions are accounted for) into the available - # area. Rendered width at a given size is em_width * font_size * scale_x. - em_w = _measure(_parse_markup(unit), 1.0) +def _unit_font_size(unit: str, fd: _FontData) -> float: + em_w = _measure(_parse_markup(unit), 1.0, fd) if em_w <= 0: return _UNIT_MAX_FS return min(_UNIT_MAX_FS, _UNIT_AREA_WIDTH / (em_w * _UNIT_SCALE_X)) -def _fmt(v: float) -> str: - if math.isinf(v): - return '∞' - # Snap near-integers — log-scale geometric values accumulate FP error - # (e.g. 9999.9999), which would otherwise miss the integer case. - r = round(v) - if abs(v - r) < 1e-9 * max(1.0, abs(v)): - return str(int(r)) - # 4 significant figures in fixed-point notation (never scientific). - exp = math.floor(math.log10(abs(v))) - decimals = max(0, 4 - 1 - exp) - s = f"{v:.{decimals}f}" - return s.rstrip('0').rstrip('.') if '.' in s else s - - -def _text_to_paths(text, x, y, font_size, anchor='start', fill='#1a1a1a', wrap_transform=None): - s = font_size / _UPM +def _text_to_paths(text, x, y, font_size, fd: _FontData, anchor='start', fill='#1a1a1a', wrap_transform=None): + s = font_size / fd.upm if anchor == 'middle': total_w = sum( - _HMTX.get(_CMAP.get(ord(ch)), (0, 0))[0] * s - for ch in text if _CMAP.get(ord(ch)) + fd.hmtx.get(fd.cmap.get(ord(ch)), (0, 0))[0] * s + for ch in text if fd.cmap.get(ord(ch)) ) x -= total_w / 2 parts = [] cx = x for ch in text: - gn = _CMAP.get(ord(ch)) + gn = fd.cmap.get(ord(ch)) if gn is None: continue - pen = SVGPathPen(_GLYPH_SET) - _GLYPH_SET[gn].draw(pen) + pen = SVGPathPen(fd.glyph_set) + fd.glyph_set[gn].draw(pen) d = pen.getCommands() if d: t = f'translate({cx:.5f},{y:.5f}) scale({s:.8f},{-s:.8f})' parts.append(f'') - cx += _HMTX.get(gn, (0, 0))[0] * s + cx += fd.hmtx.get(gn, (0, 0))[0] * s inner = '\n'.join(parts) if wrap_transform: @@ -335,8 +302,23 @@ def _text_to_paths(text, x, y, font_size, anchor='start', fill='#1a1a1a', wrap_t return inner +def _fmt(v: float) -> str: + if math.isinf(v): + return '∞' + r = round(v) + if abs(v - r) < 1e-9 * max(1.0, abs(v)): + return str(int(r)) + exp = math.floor(math.log10(abs(v))) + decimals = max(0, 4 - 1 - exp) + s = f"{v:.{decimals}f}" + return s.rstrip('0').rstrip('.') if '.' in s else s + + def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, label_count, - use_paths=True, scale_type='linear', custom_labels=None, label_size=9): + use_paths=True, scale_type='linear', custom_labels=None, label_size=9, + font_key=None): + fd = _FONTS.get(font_key) or _FONTS.get(_DEFAULT_FONT) or next(iter(_FONTS.values())) + if scale_type == 'log': if min_val <= 0 or max_val <= 0: raise ValueError("Logarithmic scale requires min and max values greater than 0.") @@ -370,7 +352,6 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la if not math.isinf(max_val) and max_val <= min_val: raise ValueError("Reciprocal scale requires max value greater than min.") if math.isinf(max_val): - # Simplified form when max = ∞: x = ZERO_X + SCALE_LEN * min_val / v def value_to_x(v): if math.isinf(v): return ZERO_X @@ -383,7 +364,7 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la else: if max_val <= 0: raise ValueError("Reciprocal scale requires min and max values greater than 0.") - k = 1.0 / min_val - 1.0 / max_val # always positive + k = 1.0 / min_val - 1.0 / max_val def value_to_x(v): return ZERO_X + SCALE_LEN * (1.0 / v - 1.0 / max_val) / k @@ -403,11 +384,9 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la return min_val + span * i / big_ticks big_interval = SCALE_LEN / big_ticks - # Major ticks are always physically evenly spaced; only their values differ. big_xs = [ZERO_X + i * big_interval for i in range(big_ticks + 1)] big_vals = [major_value(i) for i in range(big_ticks + 1)] - # Custom labels, when supplied, override the calculated numbers and set the count. if custom_labels: label_count = max(1, min(len(custom_labels), big_ticks + 1)) custom_labels = custom_labels[:label_count] @@ -419,6 +398,13 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la else: label_indices = [round(k * big_ticks / (label_count - 1)) for k in range(label_count)] + font_face = ( + '' + ) + parts = [ '', '') else: - parts += [_FONT_FACE, ' '] + parts += [font_face, ' '] parts.append( ' ' ) - # A unit with markup (super/subscripts, fractions) is a composite of glyph - # paths + a rule, so it can't be a single node — render it as paths, - # scaled to fit and centered in the unit box, in both modes. A plain unit - # keeps the original baseline-anchored text/paths behaviour. if _has_markup(unit): - unit_svg = ' ' + _markup_unit_svg(unit) + unit_svg = ' ' + _markup_unit_svg(unit, fd) elif use_paths: unit_svg = ' ' + _text_to_paths( - unit, 41.455711, 109.03796, _unit_font_size(unit), + unit, 41.455711, 109.03796, _unit_font_size(unit, fd), fd, wrap_transform=f'scale({_UNIT_SCALE_X},1.0364155)' ) else: - fs = _unit_font_size(unit) + fs = _unit_font_size(unit, fd) unit_svg = ( - f' {escape(unit)}' ) if use_paths: - parts += [unit_svg, ' ' + _text_to_paths(range_label, 184.79707, 113.6755, 3.60539)] + parts += [unit_svg, ' ' + _text_to_paths(range_label, 184.79707, 113.6755, 3.60539, fd)] else: parts += [ unit_svg, - f' {escape(range_label)}', ] - # Major ticks for x in big_xs: parts.append( f' ' ) - # Minor ticks — placement depends on scale type: - # linear: uniform physical spacing (= uniform value spacing) - # log: linear value interpolation between geometric major values - # (crowds toward high end of each interval) - # sqrt: sqrt of fractional position within each interval, giving - # consistent high-end crowding across all intervals; using - # value interpolation instead would concentrate the crowding - # only near zero (where sqrt is steepest) and look linear elsewhere. if small_ticks > 0: sub = small_ticks + 1 for i in range(big_ticks): @@ -488,9 +461,6 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la if scale_type == 'sqrt': x = big_xs[i] + (j / sub) ** 2 * (big_xs[i + 1] - big_xs[i]) elif scale_type == 'reciprocal' or math.isinf(big_vals[i]): - # Reciprocal: interpolate in position space (= linear in 1/v). - # Linear value interpolation would map huge early value ranges - # through 1/v and pile all ticks against the left wall. x = big_xs[i] + (j / sub) * (big_xs[i + 1] - big_xs[i]) else: v = big_vals[i] + j * (big_vals[i + 1] - big_vals[i]) / sub @@ -500,15 +470,14 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la f' style="stroke:#1a1a1a;stroke-width:0.302;stroke-linecap:butt" />' ) - # Numeric labels for k, idx in enumerate(label_indices): x = big_xs[idx] label = custom_labels[k] if custom_labels else _fmt(big_vals[idx]) if use_paths: - parts.append(' ' + _text_to_paths(label, x, 101.49598, label_size, anchor='middle')) + parts.append(' ' + _text_to_paths(label, x, 101.49598, label_size, fd, anchor='middle')) else: parts.append( - f' {escape(label)}' ) @@ -518,7 +487,9 @@ def generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, la @app.route('/') def index(): - return render_template('index.html', logo_b64=_LOGO_B64, version=VERSION) + fonts = list(_FONTS.values()) + return render_template('index.html', logo_b64=_LOGO_B64, version=VERSION, + fonts=fonts, default_font=_DEFAULT_FONT) @app.route('/generate', methods=['POST']) @@ -532,6 +503,7 @@ def generate(): label_count = max(2, int(request.form.get('label_count', 6))) use_paths = request.form.get('output_mode', 'paths') == 'paths' scale_type = request.form.get('scale_type', 'linear') + font_key = request.form.get('font', _DEFAULT_FONT) if request.form.get('max_is_inf') == '1': max_val = math.inf @@ -540,7 +512,8 @@ def generate(): try: svg = generate_svg(unit, min_val, max_val, range_label, big_ticks, small_ticks, - label_count, use_paths, scale_type, custom_labels, label_size) + label_count, use_paths, scale_type, custom_labels, label_size, + font_key) except ValueError as err: return Response(str(err), status=400, mimetype='text/plain') return Response(svg, mimetype='image/svg+xml') diff --git a/web/templates/index.html b/web/templates/index.html index 323b000..98e6e4b 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -368,6 +368,16 @@
+
+ + +
+
@@ -499,6 +509,8 @@ URL.revokeObjectURL(a.href); }); + document.getElementById('font-select').addEventListener('change', doGenerate); + doGenerate();