Document the font requirement and the ink modes

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vunz4VLxAYDBnU5tLciLDC
This commit is contained in:
jessikittyandClaude Opus 5 committed 2026-10-13 12:06:31 +11:00
1 parent ca0cde198b
commit 85877b3824
1 file changed
+25 -4
+25 -4
View File
@@ -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* | | 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` | | 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 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. 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 | | 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 | | *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 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. through whatever driver the machine already has.
**It is a thermal printer**, so there is no colour and no greys of its own: **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 each dot is burnt or it isn't. LIM reduces the page itself rather than leaving
will actually come out — untick *Monochrome* if you would rather judge the it to the driver, whose halftoning turns 2mm letters to mush. *Ink*:
colour version. Category colour stripes still print, as black bars.
- **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 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, 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.py /admin/labels (all admin_required)
app/routes/labels_catalog.py /admin/labels/catalog app/routes/labels_catalog.py /admin/labels/catalog
app/routes/labels_tape.py /admin/labels/tape 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/routes/labels_dymo.py /admin/labels/dymo
app/data/part_taxonomy.json the starter taxonomy app/data/part_taxonomy.json the starter taxonomy
app/static/css/labels-bricklink.css the catalogue skin app/static/css/labels-bricklink.css the catalogue skin