/** * Macht Text fuer den Bondrucker druckbar — Zwilling von `_printable` und * `_isEmojiOrZeroWidth` in `kasseneck_api/lib/models/print_paper.dart` * (Zeilen 53-88). * * Warum getrennt vom Erzeuger: Die Ersetzung **aendert die Laenge** ("€" wird * zu "EUR", ein Emoji verschwindet). Wer Spalten rechnet, muss den fertigen * Text sehen, nicht den rohen — deshalb entscheidet der Aufrufer, wann er * ersetzt, und der Erzeuger bekommt bereits druckbaren Text. Der Erzeuger * selbst wirft weiterhin bei Zeichen ausserhalb Latin-1; das ist die Schicht, * auf der ein Fehler noch etwas bedeutet. * * Regel: bekannte Sonderzeichen auf ein ASCII-Aequivalent, Latin-1 (inklusive * aller deutschen Umlaute) unveraendert, Emoji und Nullbreiten-Zeichen * ersatzlos weg, alles Uebrige auf `?`. Ein Artikelname aus einer * ERP-Uebernahme mit Gedankenstrich soll den Beleg nicht verhindern. */ import type { PosCodeTable } from './escpos.js'; /** * Ersetzt alles, was der Bondrucker nicht darstellen kann, durch eine * druckbare Entsprechung. Reine Funktion, ohne Zustand und ohne Drucker. * * Vor `escPosText`/`escPosRow` anwenden, wenn der Text aus fremder Hand kommt * (Artikelstamm, ERP-Uebernahme, Kundenname). `•` wird hier zu `*`, und der * Erzeuger sagt dasselbe — auch wer diese Funktion weglaesst, bekommt also * dasselbe Zeichen (siehe ZEICHEN_ERSATZ in code-tables.ts). * * Mit `codeTable` wird der Text fuer genau diese Tabelle fertig gemacht: * - eine Tabelle des Katalogs (`CodeTableId`): `€` bleibt stehen, wenn die * Tabelle es hat (der Drucker bekommt das echte Byte), sonst `EUR`; jedes * der zehn Zeichen, das der Tabelle fehlt (`§` auf pc437, alle Umlaute auf * `replacement` ...), wird schon hier zu seinen Ersatzbuchstaben. Danach * ist jedes Zeichen genau ein Byte, und Spalten, die am Text gerechnet * werden, stimmen auch am Papier. * - `CP437` (alter Name): wie `pc437`, also `§` -> `Par.`. * - ohne Angabe, `null` oder `CP1252`: genau wie bisher (Bons ohne gewaehlte * Tabelle bleiben byte-gleich). */ export declare function escPosPrintableText(text: string, codeTable?: PosCodeTable | null): string;