PDF/Print: Haarlinien unter der Stift-Leiter exakt drucken
quantizePen hob bisher jede Breite <= 0.13 mm auf die unterste Stift-Stufe (0.13 mm) an. Dadurch druckte die 0.02-mm-Schraffur/Schichtfuge im PDF und im SVG-Print-Modus als 0.13 mm - im Viewport duenn, im Export dick. Breiten unter MIN_PEN_MM gelten jetzt als bewusste Haarlinien und werden exakt (unquantelt) durchgereicht; ab 0.13 mm rundet die Leiter wie gehabt.
This commit is contained in:
@@ -43,13 +43,20 @@ const SVG_NS = "http://www.w3.org/2000/svg";
|
||||
*/
|
||||
const PEN_STEPS = [0.13, 0.18, 0.25, 0.35, 0.5, 0.7, 1.0] as const;
|
||||
|
||||
/** Untergrenze einer sichtbaren Druck-Strichstaerke (mm). */
|
||||
/** Untere Stift-Stufe (mm) — ab hier greift die Quantelung auf die Leiter. */
|
||||
const MIN_PEN_MM = 0.13;
|
||||
|
||||
/** Quantelt eine mm-Strichstaerke auf die naechste Stift-Stufe (>= MIN_PEN_MM). */
|
||||
/**
|
||||
* Quantelt eine mm-Strichstaerke auf die naechste Stift-Stufe. Breiten UNTER
|
||||
* `MIN_PEN_MM` gelten als bewusste HAARLINIEN (Schraffur/Schichtfugen, 0.02 mm)
|
||||
* und werden EXAKT durchgereicht — sonst hoebe die Leiter sie im Druck auf
|
||||
* 0.13 mm, und die Haarlinie waere im PDF sichtbar zu dick (== im Viewport
|
||||
* duenn, im Export dick). Ab `MIN_PEN_MM` rundet die ISO-nahe Leiter wie gehabt
|
||||
* auf die naechsthoehere Stufe.
|
||||
*/
|
||||
export function quantizePen(mm: number): number {
|
||||
const w = Math.max(MIN_PEN_MM, mm);
|
||||
for (const step of PEN_STEPS) if (w <= step + 1e-6) return step;
|
||||
if (mm > 0 && mm < MIN_PEN_MM) return mm; // echte Haarlinie: unquantelt exakt drucken
|
||||
for (const step of PEN_STEPS) if (mm <= step + 1e-6) return step;
|
||||
return PEN_STEPS[PEN_STEPS.length - 1];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user