diff --git a/docs/PARTS_LABELS.md b/docs/PARTS_LABELS.md index 21f651d..cc80839 100644 --- a/docs/PARTS_LABELS.md +++ b/docs/PARTS_LABELS.md @@ -34,6 +34,16 @@ Optional extras: |------|-----|-----| | Rebrickable API key | Part photos when importing a label | `REBRICKABLE_API_KEY=...` in `.env`, or paste it into *Labels → Settings* | | ReportLab | PDF export button for sheets | `pip install reportlab` | +| **A font** | **Readable labels** | **`apt install fonts-dejavu-core`, or `LABEL_FONT=/path/to.ttf`** | + +**The font is not optional, and it is the one that bites.** Pillow draws with a +built-in 10-pixel bitmap font when it can't find a real one, and that font +ignores the size asked for: labels come out with letters under a millimetre +tall — fine on screen, unreadable on the sticker. `python:3.12-slim`, which +the Dockerfile is built on, ships no fonts at all, so the image now installs +`fonts-dejavu-core`. **Rebuild the image** after pulling. If you run LIM +outside Docker, install any sans font or point `LABEL_FONT` at a `.ttf`. +*Labels → Settings → Label font* says which one is actually in use. Neither is required. Without them you type labels in by hand, upload your own images, and print from the browser. The part catalogue works without a key. @@ -223,6 +233,8 @@ Untick *Part image* to give the text the whole width from the start. | Blank or faint | Cleaning cassette (CK-1000), or the tape is in backwards | | *Printer stayed busy after 6 attempts* | Something else is printing to it, or a job is stuck. Power-cycle the printer | | Text smaller than you asked for | A long name fits at that size and no larger. Untick *Part image*, or shorten the name | +| **Text tiny and unreadable on every label** | **No font on the server. Install `fonts-dejavu-core` and restart; check *Settings → Label font*** | +| Printed labels look furry or broken up | Dymo *Ink* set to Dithered; use Crisp for text | --- @@ -258,9 +270,17 @@ printing here because the LabelWriter 4XL is a USB printer; the PDF goes through whatever driver the machine already has. **It is a thermal printer**, so there is no colour and no greys of its own: -black dots or nothing. The preview converts to monochrome to show you what -will actually come out — untick *Monochrome* if you would rather judge the -colour version. Category colour stripes still print, as black bars. +each dot is burnt or it isn't. LIM reduces the page itself rather than leaving +it to the driver, whose halftoning turns 2mm letters to mush. *Ink*: + +- **Crisp black and white** (the default) — thresholded, so letters have hard + edges and part photos become silhouettes. The PDF comes out as lossless + CCITT G4, a few kilobytes a page. +- **Dithered** — Floyd-Steinberg, which keeps photographic shading at the cost + of speckling the type. +- **Leave in colour** — for printing the same PDF on an inkjet or laser. + +Category colour stripes print as black bars either way. Other options worth knowing: *Skip slots* starts partway into a part-used sticker, *Margin* keeps ink off the die-cut edge where feed tolerance lives, @@ -295,7 +315,8 @@ app/services/ipp_client.py minimal IPP client (RFC 8010/8011) app/routes/labels.py /admin/labels (all admin_required) app/routes/labels_catalog.py /admin/labels/catalog app/routes/labels_tape.py /admin/labels/tape -app/services/dymo_sheet.py Dymo stock presets, ganging, 300dpi PDF +app/services/dymo_sheet.py Dymo stock presets, ganging, 300dpi PDF, + thermal ink reduction app/routes/labels_dymo.py /admin/labels/dymo app/data/part_taxonomy.json the starter taxonomy app/static/css/labels-bricklink.css the catalogue skin