Viewing is open to everyone. Downloading and starring need a GitHub sign-in.
Sign in with GitHub
CKey-Printing.md
v0.1.0-build.85
Latest
Commit ede38f5
Sign in with GitHub to download. Each download is recorded with your GitHub username.
| 1 | # Printing CKey symbols (informative, draft 0.1) |
| 2 | |
| 3 | Small prints fail for three reasons, in this order: |
| 4 | |
| 5 | 1. **Marks thinner than the printer can draw.** |
| 6 | 2. **Grey anti-aliased edges** that the printer halftones into noise. |
| 7 | 3. **Ink spreading into the gaps.** |
| 8 | |
| 9 | The tools address all three. |
| 10 | |
| 11 | ## Rules |
| 12 | |
| 13 | - **Print dark marks on paper.** The default screen palette (cream marks on black) inks the background, so ink spread eats thin light marks. In simulation, dark-on-paper prints about 35% smaller on plain inkjet paper. |
| 14 | - **Use the print layout for small sizes: Profile 0.1** (`--layout print`, Format 0.28). Every mark and gap is at least about one module, so the same payload prints at roughly half Profile 0's width. |
| 15 | - **Print a device-grid bitmap at 100% / actual size.** `ckey encode-scalable … --png file.png --size-in 0.5 --dpi 600`, or the CKey Renderer's **Export Print PNG…**, writes black-or-white dots at the printer's resolution with no grey, and records the dpi so it prints at true size. Don't let the print dialog scale it ("fit to page"). |
| 16 | - **Paper matters as much as the printer.** Coated or photo paper keeps dots sharp. Plain paper spreads ink. |
| 17 | - **Leave the quiet margin.** The rendered canvas already includes it; don't crop it off. |
| 18 | |
| 19 | ## What to expect (simulation) |
| 20 | |
| 21 | Smallest width that decodes reliably with Profile 0.1 at level M. The camera is 23 px/mm, roughly a phone at about 12 cm in 4K. A weaker camera needs about 1.3–1.5× these sizes. |
| 22 | |
| 23 | | Payload | Old inkjet, plain paper | Inkjet, photo paper | 600 dpi laser* | |
| 24 | |---|---|---|---| |
| 25 | | 8 B | 0.19 in | ≤ 0.15 in | — | |
| 26 | | 30 B (short URL) | 0.24 in | ≤ 0.15 in | — | |
| 27 | | 120 B | 0.32 in | 0.21 in | — | |
| 28 | | 400 B | 0.56 in | 0.38 in | — | |
| 29 | | 1,200 B | 0.91 in | 0.56 in | — | |
| 30 | | 2,400 B | 1.34 in | 0.83 in | — | |
| 31 | |
| 32 | \*Laser figures were measured only for Profile 0 (0.31 in at 8 B to 2.16 in at about 4.6 KB). Laser behaves between plain inkjet and photo paper. |
| 33 | |
| 34 | **Hard limits.** No layout can beat the dots a printer can place, or the pixels a camera can resolve. Profile 0's densest version (232 modules across) at 1 inch needs 0.10 mm modules and 0.02 mm rays, finer than a 600 dpi printer dot. For data that dense at that size, use Profile 0.1 with a lower version, or print larger. |
| 35 | |
| 36 | ## Calibrating your printer |
| 37 | |
| 38 | ```sh |
| 39 | ./build/ckey print-sheet --out sheet.png # 8–400 B at 0.25–1.0 in |
| 40 | ./build/ckey print-sheet --set large --out big.png # 1,200 and 2,400 B at 1.0–2.0 in |
| 41 | ``` |
| 42 | |
| 43 | 1. **Print** each sheet at 100% / actual size on the paper you intend to use. |
| 44 | 2. **Scan each cell.** Every cell's payload names itself, for example `CKEY-CAL P0.1 120B 0.50in`. The 8-byte cells only hold `CKEY-CAL`; use their printed labels. |
| 45 | 3. **Read off your limit:** the smallest cell that scans in each row is the real limit for your printer, paper and camera. |