Technical / Part 1
Part 1 — Label Format
The visual grammar of a DBNF label: geometry, typography, print production, and the compact form for tiny stickers.
DBNF deliberately reuses the visual grammar of the FDA Nutrition Facts panel (21 CFR 101.9, 2016 format). Fifty years of packaged-goods labeling taught every consumer to parse this layout at a glance; DBNF spends that literacy rather than inventing a new one. Two additions are normative: the Caffeine row (voluntary under FDA rules, mandatory here) and the DBNF mark identifying the label as computed for the as-ordered drink.
1.1Reference geometry
All dimensions are specified at the reference width of 300 CSS px and scale linearly (§1.4). Print equivalents assume the recommended 2×3 in sticker.
| Context | Size | Notes |
|---|---|---|
| Reference render | 300 css px wide | Normative baseline for every measurement in this Part. |
| Recommended cup sticker | 51 × 76 mm (2 × 3 in) | Fits 12–24 oz cold cups without wrapping distortion. |
| Large-format sleeve | 76 × 102 mm (3 × 4 in) | Hot-cup sleeves; scale factor 1.5. |
| Minimum tabular width | 38 mm (1.5 in) | Below this the tabular panel is illegible — use §1.5. |
| Absolute minimum (linear) | 25 mm strip | Compact linear format + QR only. |
| PNG export | 3× reference (900 px) | ≈ 300 DPI at 3.0 in; background MUST be opaque white. |
| Outer border | 2 px (≈ 0.5 pt) | Solid, full perimeter, square corners. |
| Inner padding | 8 px top/bottom · 10 px sides | Content MUST NOT touch the border. |
1.2Element stack
Top to bottom. Rules ("bars") are horizontal separators; their relative weights are load-bearing — the heavy bar is what makes the calories block scannable.
| # | Element | Spec @ 300 px | Requirement |
|---|---|---|---|
| 1 | Drink name | 13 px · 700 · uppercase · centered · tracking 0.04 em | MUST name the as-ordered drink, not the menu category |
| 2 | Title "Nutrition Facts" | 30 px · 900 · tracking −1 px · leading 1.05 | MUST; exact string, no substitutes |
| 3 | Hairline | 1 px rule | MUST |
| 4 | Servings per container | 12 px · 400 | MUST |
| 5 | Serving size row | 13 px · 700 both sides · value right-aligned | MUST state both fl oz and mL |
| 6 | Heavy bar | 10 px rule | MUST; heaviest rule on the label |
| 7 | "Amount per serving" | 10.5 px · 700 | MUST |
| 8 | Calories row | word 26 px / value 34 px · 900 · value right-aligned, baseline-aligned | MUST be the largest datum on the label |
| 9 | Medium bar | 5 px rule | MUST |
| 10 | "% Daily Value*" | 10.5 px · 700 · right-aligned | MUST |
| 11 | Nutrient rows | 12.5 px · hairline separators · indent 14 px/level · %DV right, bold | order per §1.2.1 |
| 12 | Heavy bar | 10 px rule | MUST (closes the nutrient block) |
| 13 | Caffeine row | 12.5 px · name 700 | MUST — DBNF addition |
| 14 | Medium bar | 5 px rule | MUST |
| 15 | DV footnote | 9 px · leading 1.3 | MUST; exact FDA wording |
| 16 | Deposit strip | 10.5 px · 600 · cup ID in monospace | MAY (Part 6) |
| 17 | DBNF mark | 7 px · 700 · tracking 0.14 em · centered | MUST: DYNAMIC BEVERAGE NUTRITION FACTS · AS ORDERED |
1.2.1 Nutrient row order
Total Fat Xg ▸ bold, %DV
Saturated Fat Xg ▸ indent 1, %DV
Trans Fat Xg ▸ indent 1, "Trans" italic, no %DV
Cholesterol Xmg ▸ bold, %DV
Sodium Xmg ▸ bold, %DV
Total Carbohydrate Xg ▸ bold, %DV
Dietary Fiber Xg ▸ indent 1, %DV
Total Sugars Xg ▸ indent 1, no %DV
Includes Xg Added Sugars ▸ indent 2, %DV, sub-hairline inset 18 px
Protein Xg ▸ bold, no %DV
1.3Typography
| Property | Requirement |
|---|---|
| Typeface | Helvetica, Arial, or a metrically-close grotesque sans. Reference stack: "Helvetica Neue", Helvetica, Arial, sans-serif. MUST NOT use condensed cuts below 90% of normal width. |
| Weights | Three weights only: 400 (values, sub-nutrients), 700 (nutrient names, headers), 900 (title, calories). Weight MUST NOT be simulated by stroking. |
| Numerals | Lining figures. Tabular numerals SHOULD be used for the %DV column. |
| Color | Single ink: black (#000) on white (#FFF) for print. Minimum contrast 4.5:1 if rendered on-screen in a themed context (§1.7). |
| Casing | Nutrient names in title case exactly as §1.2.1; "Trans" italic; footnote sentence case. |
| Minimum legible size | No printed text below 6 px @ reference scale (≈ 4.5 pt on the 2×3 in sticker). |
1.4Scaling rules
Given a target width W in px, the scale factor is k = W / 300. All type sizes, rules, paddings, and indents multiply by k. Two constraints override linear scaling:
- Floor: if any element would fall below the §1.3 minimum legible size, the tabular format MUST NOT be used — switch to §1.5.
- Rule integrity: after rounding to device pixels, the heavy bar MUST remain ≥ 2× the medium bar, and the medium bar ≥ 3× the hairline. Rounding MUST NOT collapse the hierarchy.
1.5Compact linear format
For receipt printers, narrow thermal stock, and wrap-around cup strips under 38 mm, DBNF defines a linear form modeled on FDA's small-package linear display. Fields appear in the §1.2.1 order, comma-separated, with %DV in parentheses:
DBNF · CARAMEL LATTE · 16 fl oz (473 mL)
Calories 320, Total Fat 7g (9% DV), Sat Fat 4.5g (23% DV), Trans Fat 0g,
Cholest. 25mg (8% DV), Sodium 170mg (7% DV), Total Carb 50g (18% DV),
Fiber 0g (0% DV), Total Sugars 48g (Incl. 43g Added Sugars, 86% DV),
Protein 10g, Caffeine 300mg. CUP #A92F · DEPOSIT $1.00
GDV based on a 2,000 calorie diet · [QR]
| Rule | Requirement |
|---|---|
| Lead-in | MUST begin with DBNF · followed by drink name and serving size. |
| Calories | MUST be first and set in bold where the medium supports it. |
| Abbreviations | Only from the closed set: Sat Fat, Trans Fat, Cholest., Total Carb, Fiber, Incl. |
| QR | A §Part-6 QR MUST accompany the linear form, resolving to the full label. |
| Omissions | Nutrients present at zero MAY be omitted except calories, total & added sugars, and caffeine, which always appear. |
1.6Print production
1.6.1 Direct thermal (recommended for counters)
| Parameter | Spec |
|---|---|
| Printer class | 203 dpi minimum; 300 dpi recommended (e.g. Brother QL-8xx, Zebra ZD4xx class) |
| Stock | Continuous or die-cut 51/62 mm; top-coated for smudge resistance |
| Cold cups | Condensation-rated adhesive; BOPP or PP face stock SHOULD be used instead of paper |
| Rendering | 1-bit threshold at printer resolution. Anti-aliasing MUST be disabled; no dithering on rules or type |
| Longevity | Direct thermal fades; for keep-the-cup programs use thermal-transfer resin ribbon |
1.6.2 Laser / inkjet sheets
Standard 2×3 in label sheets. Print at 100% (no fit-to-page). Toner black only — composite CMY "black" MUST NOT be used for body text below 10 px reference size (registration blur).
1.6.3 Placement
The label SHOULD sit on the upper third of the cup, opposite the seam, not under the sleeve. On lidded cold cups, never on the lid (lids are swapped). The QR quiet zone (Part 6) MUST NOT wrap around cup curvature by more than 15°.
1.7On-screen rendering
Order screens, kiosks, and confirmation pages rendering a DBNF panel MUST keep the label region white-on-black-ink regardless of surrounding app theme (the reference implementation renders the label as a fixed white card inside a themed page). The label MUST be shown at or before order confirmation — after payment is nonconforming for L2+ (Part 7). Kiosks SHOULD re-render live as modifiers change; the reference implementation demonstrates sub-frame recompute cost (the entire pipeline is arithmetic on a 12-tuple).
1.8Accessibility & internationalization
| Concern | Requirement |
|---|---|
| Screen readers | On-screen labels MUST be semantic text (not an image). If an image is unavoidable, alt MUST carry the §1.5 linear string. |
| Structure | Nutrient rows SHOULD be a two-column table or definition list, so cell relationships survive assistive-tech traversal. |
| Units | Both fl oz and mL always. Jurisdictions using kJ MAY append kJ in parentheses after calories. |
| Decimal separator | Follows the label locale; the underlying DBNF document (Part 4) always uses . per JSON. |
| Translation | Nutrient names MAY be localized; the DBNF mark string and the dbnf version tag are never translated. |