
793 verwechselbare Paare, die in Unicode TR39 fehlen, weltweit erster skriptübergreifender Datensatz, schriftartenbewusste SSIM-Bewertung über 230 Schriftarten und 22.000+ Zeichen
Empirische Glyphen-Ähnlichkeitsbewertung mittels Vektorkontur-Strahlenabtastung. Rendert Unicode-verwechselbare Zeichenpaare über 245 Systemschriftarten hinweg, misst strukturelle Ähnlichkeit direkt aus den Schriftkonturen (keine Rasterung) und erzeugt bewertete JSON-Artefakte mit schriftartspezifischen kontinuierlichen Distanzwerten.
Wichtige Ergebnisse aus 52,6 Millionen Einzelzeichen- und 190 Millionen Multizeichen-Vergleichen über 22.581 Zeichen und 12 Schriftsysteme:
Die Ausgabe speist direkt in namespace-guard für die Laufzeiterkennung von Verwechselbarkeiten in Paketnamen, Domainnamen und Identifikatoren.
RaySpace wirft parallele Strahlen durch Schriftkonturen in 36 Winkeln und erfasst fünf Informationsebenen pro Glyphe: Kreuzungsanzahlen, Kreuzungspositionen, Kreuzungswinkel, Ping-Distanzen (Strichbreite an jeder Kreuzung) und Ping-Max (Gegenbreite zwischen Kreuzungen). Dies erzeugt eine kompakte Signatur pro Zeichen pro Schriftart. Zwei Signaturen werden mit einer gewichteten L1-Distanz über alle fünf Ebenen verglichen.
Eine dreistufige Filterkaskade macht den erschöpfenden Vergleich handhabbar:
Die Signaturdatenbank (294.646+ Einträge über 245 Schriftarten; mehr mit --include-uppercase) wird einmal vorberechnet. Die Entdeckung läuft dann als single-threaded Arithmetik auf der Datenbank und führt 52,6 Millionen Paarvergleiche in 31 Minuten ohne Worker-Threads oder GPU durch.
npm install
# 1. Erstelle die Strahlsignaturdatenbank (Voraussetzung, ~24 Min.)
npx tsx scripts/build-signature-bank.ts
# 1b. Großbuchstaben Latein A-Z einbeziehen (optional)
# Standardmäßig enthält die Datenbank nur IDNA-PVALID-Codepunkte (Kleinbuchstaben,
# Ziffern, Symbole). Verwende --include-uppercase, um Großbuchstaben A-Z hinzuzufügen, nützlich
# für Schriftidentifikation und visuellen Markenvergleich, wo Großbuchstaben
# Glyphenformen eine Rolle spielen. Der Builder ist fortsetzbar, daher berechnet dies nur
# die zusätzlichen Codepunkte.
npx tsx scripts/build-signature-bank.ts --include-uppercase
# 1c. Beliebige Codepunktbereiche einbeziehen (optional)
npx tsx scripts/build-signature-bank.ts --extra-range=0041-005A
# 2. Einzelzeichen-Entdeckung (22.581 Zeichen, 12 Schriften, ~36 Min.)
npx tsx scripts/discover-singlechar-sdf.ts --scorer=ray
# 3. Multizeichen- (Bigramm-) Entdeckung (676 Bigramme, ~63 Min.)
npx tsx scripts/discover-multichar-sdf.ts --scorer=ray
# 4. Bewerte bekannte TR39-Multizeichen-Verwechslungen (~5 Min.)
npx tsx scripts/score-multichar-sdf.ts --scorer=ray
Die ursprüngliche SSIM-basierte Pipeline bewertete 26,5 Millionen Vergleiche über 230 Schriftarten. Sie bleibt funktionsfähig, wird aber für alle Entdeckungs- und Bewertungsaufgaben durch RaySpace ersetzt.
# TR39-Bewertung verwechselbarer Paare
npx tsx scripts/build-index.ts # Render-Index (~160s, 11.370 PNGs)
npx tsx scripts/score-all-pairs.ts # Bewerte alle Paare (~65s, 235K Vergleiche)
# Entdeckung neuartiger Verwechslungen
npx tsx scripts/build-candidates.ts # Kandidatensatz (~23K Zeichen)
npx tsx scripts/build-index.ts --candidates # Kandidaten rendern (~40min, 89K PNGs)
npx tsx scripts/score-candidates.ts # Bewertung gegen lateinische Ziele (~15min, 2,9M Vergleiche)
# Extrahiere hochbewertete Funde aus beiden Pipelines
npx tsx scripts/extract-discoveries.ts
| Quelle | Ziel | Schriften | Mittel | Fonts | Nullen |
|---|---|---|---|---|---|
| w U+0077 | ԝ U+051D | Latein-Kyrillisch | 0.000 | 19 | 19 |
| j U+006A | ϳ U+03F3 | Latein-Griechisch | 0.013 | 21 | 18 |
| i U+0069 | і U+0456 | Latein-Kyrillisch | 0.018 | 62 | 50 |
| s U+0073 | ѕ U+0455 | Latein-Kyrillisch | 0.018 | 62 | 46 |
| c U+0063 | с U+0441 | Latein-Kyrillisch | 0.019 | 61 | 45 |
| o U+006F | о U+043E | Latein-Kyrillisch | 0.020 | 61 | 44 |
| j U+006A | ј U+0458 | Latein-Kyrillisch | 0.021 | 60 | 48 |
| x U+0078 | х U+0445 | Latein-Kyrillisch | 0.023 | 59 | 50 |
| p U+0070 | р U+0440 | Latein-Kyrillisch | 0.024 | 61 | 46 |
| e U+0065 | е U+0435 | Latein-Kyrillisch | 0.032 | 61 | 44 |
| a U+0061 | а U+0430 | Latein-Kyrillisch | 0.042 | 61 | 45 |
"Nullen" = Schriftarten, bei denen die Konturen bitidentische Strahlsignaturen erzeugen (Distanz 0,000). Latein w/Kyrillisch ԝ ist in allen 19 Schriftarten, die beide Glyphen enthalten, identisch.
| Quelle | Ziel | Schriften | Mittel | Fonts |
|---|---|---|---|---|
| ο U+03BF | ჿ U+10FF | Griechisch-Georgisch | 0.057 | 2 |
| ヘ U+30D8 | へ U+3078 | Katakana-Hiragana | 0.122 | 11 |
| 丶 U+4E36 | ヽ U+30FD | Han-Katakana | 0.125 | 9 |
| 二 U+4E8C | ニ U+30CB | Han-Katakana | 0.249 | 11 |
| 口 U+53E3 | ロ U+30ED | Han-Katakana | 0.268 | 11 |
Georgische Coda (U+10FF) bildet einen vierfach verwechselbaren Ring mit lateinischem o, kyrillischem o und griechischem Omikron, alle unter Distanz 0,08.
| Bigramm | Ziel | Mittel | Fonts | Anmerkungen |
|---|---|---|---|---|
| ll | ॥ U+0965 (Devanagari Doppel-Danda) | 0.176 | 8 | Schriftübergreifend |
| oy | ѹ U+0479 (kyrillisch uk) | 0.322 | 16 | Neuartiges schriftübergreifendes Bigramm-Verwechselbarkeitspaar |
| rn | m U+006D | 0.531 | 95 | 33 Schriftarten unter 0,40 |
| bl | ы U+044B (kyrillisch yeru) | 0.797 | 49 | Schriftübergreifend |
Die Entdeckung von oy/kyrillisch uk ist der herausragende neue Fund: Das lateinische Bigramm "oy" ist visuell identisch mit dem kyrillischen Digraphenbuchstaben uk (ѹ) bei Distanz 0,000 in Helvetica und 0,0005 in Arial Unicode MS.
| Mittlerer Schwellwert | Einzelzeichen-einzigartige Paare | Multizeichen-einzigartige Paare |
|---|---|---|
| < 0,50 | 138 | 13 |
| < 1,00 | 4.174 | 1.631 |
| < 1,50 | 59.700 | (Rauschen) |
| < 2,00 | 249.976 | 2.524.275 |
Drei empfohlene Betriebsstufen: