/** * Printing Constants * Standard values and conversions for thermal printing */ /** * Paper width constants in millimeters */ export const PAPER_WIDTH_MM = { LABEL_32: 32, // Label printer RECEIPT_58: 58, // Standard receipt RECEIPT_80: 80, // Wide receipt } as const /** * Image width in pixels based on paper width * Standard DPI for thermal printers: ~203 DPI (8 dots/mm) */ export const IMAGE_WIDTH_PIXELS = { MM_32: 256, // 32mm × 8 dots/mm = 256px MM_58: 384, // 58mm × 8 dots/mm ≈ 384px (standard) MM_80: 576, // 80mm × 8 dots/mm ≈ 576px } as const /** * Text width in characters based on paper width and font type * * Font A (default): 12×24 dots character matrix * Font B (compact): 9×17 dots character matrix (~33% more chars per line) * * Note: Font A and B may have different typeface designs depending on printer. * Some printers use the same typeface (only size differs), while others use * different designs (e.g., Font A = regular, Font B = condensed/narrow). * Font B always allows more text to fit on each line. */ export const TEXT_WIDTH_CHARS = { FONT_A: { MM_32: 16, // 32mm ÷ 2mm/char ≈ 16 chars MM_58: 32, // 58mm ÷ 1.8mm/char ≈ 32 chars MM_80: 48, // 80mm ÷ 1.7mm/char ≈ 48 chars }, FONT_B: { MM_32: 21, // 32mm ÷ 1.5mm/char ≈ 21 chars (~31% more) MM_58: 42, // 58mm ÷ 1.4mm/char ≈ 42 chars (~31% more) MM_80: 64, // 80mm ÷ 1.25mm/char ≈ 64 chars (~33% more) }, } as const /** * Default values */ export const DEFAULTS = { PAPER_WIDTH_MM: PAPER_WIDTH_MM.RECEIPT_58, IMAGE_WIDTH_PX: IMAGE_WIDTH_PIXELS.MM_58, TEXT_WIDTH_CHARS: TEXT_WIDTH_CHARS.FONT_A.MM_58, // Default: Font A on 58mm } as const