Skip to content

Spots: Rufzeichen ganz im Bild, und ein Tipp darauf meint das Rufzeichen - #201

Merged
oe5sos merged 1 commit into
mainfrom
fix/spotbeschriftung-abgeschnitten
Oct 5, 2026
Merged

oe5sos merged 1 commit into
mainfrom
fix/spotbeschriftung-abgeschnitten

Conversation

@oe5sos

@oe5sos oe5sos commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Betreiber am 2026-10-05, am echten Telefon: „die spots stehen aber sehr weit
oben, so kann man diese nicht komplett sehen"
— und zwei Wünsche dazu: einmal
tippen soll QRZ öffnen, zweimal ins Logblatt übernehmen.

Der Fehler

Ich hatte die Schriftgrundlinie als Oberkante behandelt. fillText zeichnet
nach oben von der Grundlinie weg; mit Grundlinie 4 stand die obere Hälfte
jedes Rufzeichens außerhalb des Canvas. Im Werkzeugbrowser fiel das nicht auf,
weil dort mehr Platz über dem Panadapter ist — am Telefon ist er 96 Punkte
hoch.

Jetzt wird die Höhe über der Grundlinie gemessen
(measureText(...).actualBoundingBoxAscent) statt geschätzt. Nachgemessen in
den Rohbytes des Canvas: die Schrift belegt die Zeilen 2 bis 8 von 96 —
vollständig im Bild, mit Luft zum Rand.

Auf der Schrift steht das Rufzeichen

Auf dem Strich steht die Frequenz, auf der Schrift das Rufzeichen. Wer beides
auf denselben Tipp legt, muss sich für eines entscheiden und nimmt dem Bediener
das andere weg. Darum zwei getrennte Trefferprüfungen:

Wohin Was passiert
Schrift, ein Tipp QRZ im neuen Reiter (mit noopener — sonst bekäme die fremde Seite über window.opener einen Griff auf diese hier)
Schrift, zwei Tipps QSO-Blatt mit eingetragenem Rufzeichen
Strich / Spektrum abstimmen, wie bisher

Der einzelne Tipp wartet 280 ms, ob ein zweiter kommt; anders ist beides auf
einem Telefon nicht zu unterscheiden.

Geprüft wird gegen den Kasten, den das Zeichnen gesetzt hat (m.kasten),
nicht gegen eine zweite Rechnung — zwei Rechnungen laufen auseinander, und dann
trifft der Finger etwas anderes als das Auge sieht.

Das eingetragene Rufzeichen löst die Dupe-Abfrage ausdrücklich aus: sie
hängt am input-Ereignis, und von Hand gesetzte Werte lösen das nicht aus.
Ohne diese Zeile stünde das Rufzeichen da und niemand hätte nachgesehen, ob es
schon im Logbuch steht.

Live belegt

ein Tipp        -> https://www.qrz.com/db/OE3AAA, Blatt bleibt zu
zwei Tipps      -> Blatt auf, "OE3AAA" im Feld, Dupe-Zeile
                   "NEU — noch nie gearbeitet", QRZ NICHT aufgerufen
unten am Strich -> 14.074.000 wird zu 14.056.000 (der Spot liegt
                   18 kHz tiefer), Blatt bleibt zu

43 Prüfpunkte in pruefe-spots.mjs (10 neue), darunter die Trennung selbst:
tief unten am Strich meldet der Schriftreffer nichts, der Strichtreffer sehr
wohl.

🤖 Generated with Claude Code

Betreiber am 2026-10-05, am echten Telefon: "die spots stehen aber sehr
weit oben, so kann man diese nicht komplett sehen" -- und zwei Wuensche
dazu: einmal tippen soll QRZ oeffnen, zweimal ins Logblatt uebernehmen.

── DER FEHLER ─────────────────────────────────────────────────────────

Ich hatte die SCHRIFTGRUNDLINIE als Oberkante behandelt. `fillText`
zeichnet nach OBEN von der Grundlinie weg; mit Grundlinie 4 stand die
obere Haelfte jedes Rufzeichens ausserhalb des Canvas. Im
Werkzeugbrowser fiel das nicht auf, weil dort mehr Platz ueber dem
Panadapter ist -- am Telefon ist er 96 Punkte hoch.

Jetzt wird die Hoehe ueber der Grundlinie GEMESSEN
(`measureText(...).actualBoundingBoxAscent`) statt geschaetzt, und die
erste Zeile sitzt zwei Punkte darunter. Der dunkle Grund hinter der
Schrift folgt derselben Messung statt einer festen 8.

Nachgemessen in den Rohbytes des Canvas: die Schrift belegt jetzt die
Zeilen 2 bis 8 von 96 -- vollstaendig im Bild, mit Luft zum Rand.

── AUF DER SCHRIFT STEHT DAS RUFZEICHEN ───────────────────────────────

Auf dem Strich steht die Frequenz, auf der Schrift das Rufzeichen. Wer
beides auf denselben Tipp legt, muss sich fuer eines entscheiden und
nimmt dem Bediener das andere weg. Darum zwei getrennte Treffpruefungen:

  * Schrift, ein Tipp   -> QRZ (neuer Reiter, mit noopener -- sonst
                           bekaeme die fremde Seite ueber `window.opener`
                           einen Griff auf diese hier)
  * Schrift, zwei Tipps -> QSO-Blatt mit eingetragenem Rufzeichen
  * Strich/Spektrum     -> abstimmen, wie bisher

Der einzelne Tipp wartet 280 ms, ob ein zweiter kommt; anders ist
beides auf einem Telefon nicht zu unterscheiden.

Geprueft wird gegen den Kasten, den das ZEICHNEN gesetzt hat
(`m.kasten`), nicht gegen eine zweite Rechnung -- zwei Rechnungen
laufen auseinander, und dann trifft der Finger etwas anderes als das
Auge sieht. Dieselbe Regel wie bei der Stelle der Marke selbst.

Das eingetragene Rufzeichen loest die Dupe-Abfrage ausdruecklich aus:
sie haengt am `input`-Ereignis, und von Hand gesetzte Werte loesen das
nicht aus. Ohne diese Zeile stuende das Rufzeichen da und niemand
haette nachgesehen, ob es schon im Logbuch steht.

── LIVE BELEGT ────────────────────────────────────────────────────────

  ein Tipp    -> https://www.qrz.com/db/OE3AAA, Blatt bleibt zu
  zwei Tipps  -> Blatt auf, "OE3AAA" im Feld, Dupe-Zeile "NEU — noch
                 nie gearbeitet", QRZ NICHT aufgerufen
  unten am Strich -> 14.074.000 wird zu 14.056.000 (der Spot liegt
                 18 kHz tiefer), Blatt bleibt zu

43 Pruefpunkte in pruefe-spots.mjs (10 neue fuer die Schrifttreffer),
darunter die Trennung selbst: tief unten am Strich meldet der
Schrifttreffer nichts, der Strichtreffer sehr wohl.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@oe5sos
oe5sos merged commit 80558db into main Oct 5, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant