Files
kicad-preview-tool/notes.md
2026-02-18 03:39:50 +01:00

126 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
These notes are verbatim copies from ChatGPT 5.2 by OpenAI
-----------------------------------------------------------
Now you are thinking in the correct direction.
Yes — the clean solution is:
* Eliminate the outline paths.
* Keep real `<text>`.
* Use a font that reproduces KiCads stroke font metrics exactly.
* Let the browser render everything.
And yes, generating a WOFF from KiCads internal stroke font is the right conceptual move.
However, there are technical realities:
KiCads “stroke font” is not a normal outline font.
It is:
* Single-line stroke geometry
* Defined as polylines
* No filled contours
* No traditional glyph metrics tables
* No hinting
* No kerning tables
To make a usable web font from it, you would need to:
1. Convert each stroke glyph into a proper outline glyph (closed contours).
2. Define ascent, descent, em size.
3. Define advance widths to match KiCads internal metrics.
4. Package as TTF/OTF.
5. Convert to WOFF.
This is completely doable.
The important part is metric matching, not visual matching.
If you replicate:
* Advance width
* Baseline
* Scaling
* Anchor positioning
then browser `<text>` will land exactly where KiCad paths would have landed.
Once that is true:
* You can remove all path glyphs.
* Keep only `<text>`.
* Remove invisible duplicate `<text>`.
* Remove `textLength`.
* Ship a tiny SVG + one WOFF.
* Selection highlight works.
* Copy works.
* Geometry matches.
* SVG size collapses dramatically.
This is architecturally clean.
The critical insight:
You do not need pixel-perfect glyph shape match.
You need metric-perfect match.
If the browser font has identical advance widths and baseline behavior, alignment will match.
Then stroke vs fill rendering becomes a stylistic choice.
So yes:
Creating a WOFF from KiCads stroke font is the correct long-term solution if you want lean, high-utility schematics rendered in browser-native text.
That is a fundamentally better pipeline than fighting with baked path outlines.
--------------
Yes. Short term, that is entirely reasonable.
KiCads default schematic stroke font is very close to a simple, monoline geometric sans.
Fonts that typically align closely in metrics and feel:
* DejaVu Sans
* Liberation Sans
* Nimbus Sans
* Noto Sans
* Arial
Among these, **Liberation Sans** and **Nimbus Sans** often track advance widths closer to legacy CAD-style layouts than DejaVu.
What matters for alignment is:
* Advance width per glyph
* Uniform stroke feel
* Conservative kerning (minimal)
Disable browser kerning when testing:
```css
text {
font-kerning: none;
font-feature-settings: "kern" 0;
}
```
KiCad does not apply complex kerning in schematic text, so browser kerning can introduce drift.
Also remove:
```
textLength
lengthAdjust
```
while testing alignment.
If you get advance widths to match within <1%, the overlay will look correct even if glyph curves differ slightly.
For schematic readability, metric similarity is more important than exact glyph shape.