@@ -141,6 +141,15 @@ image:data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
141141
142142=== Symbol Dimensions
143143
144+ By default, symbols are rendered in normalised units: 1 point per narrow
145+ bar for linear barcodes and 2 points per module for most 2D symbologies.
146+ Bar heights default to 1 inch. These values produce pixel-locked output
147+ when rendered at 72 DPI, ensuring crisp bitmaps without anti-aliasing
148+ artefacts. For other resolutions, <<_gridfit,gridfit>> can snap modules
149+ to device pixel boundaries. For output that conforms to application
150+ specifications such as the GS1 Symbol Specification Tables, use
151+ <<_physspec,physspec>> mode.
152+
144153==== height
145154
146155Height of longest bar, in inches.
@@ -180,6 +189,162 @@ Encoder: code93
180189
181190image:data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTkwIiBoZWlnaHQ9Ijc0IiB2aWV3Qm94PSIwIDAgMTkwIDc0Ij4KPHJlY3QgeD0iLTE5IiB5PSItNy40IiB3aWR0aD0iMjI4IiBoZWlnaHQ9Ijg4LjgiIGZpbGw9InJnYigxMDAlLCAxMDAlLCAxMDAlKSIgZmlsbC1vcGFjaXR5PSIxIi8+CjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZmlsbD0icmdiKDEwMCUsIDEwMCUsIDEwMCUpIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0gMC44MzU5MzggNzMgTCAxODkuMTY0MDYyIDczIEwgMTg5LjE2NDA2MiAxIEwgMC44MzU5MzggMSBaIE0gMC44MzU5MzggNzMgIi8+CjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZmlsbD0icmdiKDAlLCAwJSwgMCUpIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0gMjMuMTY3OTY5IDEgTCAyNS4wODIwMzEgMSBMIDI1LjA4MjAzMSA3MyBMIDIzLjE2Nzk2OSA3MyBaIE0gMjcuNjY3OTY5IDEgTCAyOS41ODIwMzEgMSBMIDI5LjU4MjAzMSA3MyBMIDI3LjY2Nzk2OSA3MyBaIE0gMzIuMTY3OTY5IDEgTCA0MC44MzIwMzEgMSBMIDQwLjgzMjAzMSA3MyBMIDMyLjE2Nzk2OSA3MyBaIE0gNDMuNDE3OTY5IDEgTCA0Ny41ODIwMzEgMSBMIDQ3LjU4MjAzMSA3MyBMIDQzLjQxNzk2OSA3MyBaIE0gNTAuMTY3OTY5IDEgTCA1Mi4wODIwMzEgMSBMIDUyLjA4MjAzMSA3MyBMIDUwLjE2Nzk2OSA3MyBaIE0gNTYuOTE3OTY5IDEgTCA2MS4wODIwMzEgMSBMIDYxLjA4MjAzMSA3MyBMIDU2LjkxNzk2OSA3MyBaIE0gNjMuNjY3OTY5IDEgTCA2Ny44MzIwMzEgMSBMIDY3LjgzMjAzMSA3MyBMIDYzLjY2Nzk2OSA3MyBaIE0gNzIuNjY3OTY5IDEgTCA3NC41ODIwMzEgMSBMIDc0LjU4MjAzMSA3MyBMIDcyLjY2Nzk2OSA3MyBaIE0gNzkuNDE3OTY5IDEgTCA4MS4zMzIwMzEgMSBMIDgxLjMzMjAzMSA3MyBMIDc5LjQxNzk2OSA3MyBaIE0gODMuOTE3OTY5IDEgTCA4OC4wODIwMzEgMSBMIDg4LjA4MjAzMSA3MyBMIDgzLjkxNzk2OSA3MyBaIE0gOTAuNjY3OTY5IDEgTCA5NC44MzIwMzEgMSBMIDk0LjgzMjAzMSA3MyBMIDkwLjY2Nzk2OSA3MyBaIE0gOTkuNjY3OTY5IDEgTCAxMDEuNTgyMDMxIDEgTCAxMDEuNTgyMDMxIDczIEwgOTkuNjY3OTY5IDczIFogTSAxMDQuMTY3OTY5IDEgTCAxMDguMzMyMDMxIDEgTCAxMDguMzMyMDMxIDczIEwgMTA0LjE2Nzk2OSA3MyBaIE0gMTEwLjkxNzk2OSAxIEwgMTE1LjA4MjAzMSAxIEwgMTE1LjA4MjAzMSA3MyBMIDExMC45MTc5NjkgNzMgWiBNIDExOS45MTc5NjkgMSBMIDEyMS44MzIwMzEgMSBMIDEyMS44MzIwMzEgNzMgTCAxMTkuOTE3OTY5IDczIFogTSAxMjQuNDE3OTY5IDEgTCAxMjYuMzMyMDMxIDEgTCAxMjYuMzMyMDMxIDczIEwgMTI0LjQxNzk2OSA3MyBaIE0gMTMxLjE2Nzk2OSAxIEwgMTM1LjMzMjAzMSAxIEwgMTM1LjMzMjAzMSA3MyBMIDEzMS4xNjc5NjkgNzMgWiBNIDEzNy45MTc5NjkgMSBMIDE0Mi4wODIwMzEgMSBMIDE0Mi4wODIwMzEgNzMgTCAxMzcuOTE3OTY5IDczIFogTSAxNDQuNjY3OTY5IDEgTCAxNDYuNTgyMDMxIDEgTCAxNDYuNTgyMDMxIDczIEwgMTQ0LjY2Nzk2OSA3MyBaIE0gMTQ5LjE2Nzk2OSAxIEwgMTUxLjA4MjAzMSAxIEwgMTUxLjA4MjAzMSA3MyBMIDE0OS4xNjc5NjkgNzMgWiBNIDE1My42Njc5NjkgMSBMIDE2Mi4zMzIwMzEgMSBMIDE2Mi4zMzIwMzEgNzMgTCAxNTMuNjY3OTY5IDczIFogTSAxNjQuOTE3OTY5IDEgTCAxNjYuODMyMDMxIDEgTCAxNjYuODMyMDMxIDczIEwgMTY0LjkxNzk2OSA3MyBaIE0gMTY0LjkxNzk2OSAxICIvPgo8L3N2Zz4K[image]
182191
192+ ==== physspec
193+
194+ Enable physical specification mode. The symbol is rendered at the
195+ correct physical dimensions for the symbology, based on the nominal
196+ X-dimension and height from the symbology's specification or selected
197+ Application Specification Table (AST).
198+
199+ ===== Notes
200+
201+ * When enabled, the output is dimensioned in millimetres according to
202+ the symbology's specification.
203+ * Use *mag* to scale the symbol by a magnification factor relative to
204+ nominal.
205+ * Use *xdim* or *hdim* to directly specify physical dimensions in mm,
206+ overriding the nominal values.
207+ * Inkspread is adjusted to maintain a fixed physical reduction
208+ regardless of magnification.
209+ * Not compatible with *width*.
210+ * The output is resolution-independent (EPS/PDF compatible) unless
211+ <<_gridfit,gridfit>> is also enabled.
212+
213+ ===== Example
214+
215+ An EAN-13 at 100% specification dimensions:
216+
217+ ....
218+ Data: 9520123456788
219+ Options: includetext physspec
220+ Encoder: ean13
221+ ....
222+
223+ An EAN-13 at 150% magnification:
224+
225+ ....
226+ Data: 9520123456788
227+ Options: includetext physspec mag=1.5
228+ Encoder: ean13
229+ ....
230+
231+ ==== propspec
232+
233+ Enable proportional specification mode. Adjusts bar heights to match the
234+ specification's height-to-width ratio without changing the physical
235+ scale.
236+
237+ ===== Notes
238+
239+ * Useful for bitmap output at the normalised scale where correct
240+ height-to-width proportions are desired without physical scaling.
241+ * Requires the symbology to have both *xnom* and *hnom* defined (via AST
242+ or user override).
243+ * Linear barcodes only.
244+
245+ ===== Example
246+
247+ ....
248+ Data: 9520123456788
249+ Options: includetext propspec
250+ Encoder: ean13
251+ ....
252+
253+ ==== mag
254+
255+ Magnification factor for physical specification mode. Scales the symbol
256+ relative to its nominal specification dimensions. Default: `+1.0+`
257+ (100%).
258+
259+ ===== Notes
260+
261+ * Only meaningful with *physspec*.
262+ * Mutually exclusive with *xdim* and *hdim*.
263+
264+ ===== Example
265+
266+ A QR Code at twice the nominal X-dimension:
267+
268+ ....
269+ Data: Hello
270+ Options: physspec mag=2.0 xnom=0.330
271+ Encoder: qrcode
272+ ....
273+
274+ ==== xdim
275+
276+ Directly specify the X-dimension (narrow bar width or module size) in
277+ millimetres. Overrides the nominal value from the AST.
278+
279+ ===== Notes
280+
281+ * Only meaningful with *physspec*.
282+ * Mutually exclusive with *mag*.
283+ * If neither *xdim* nor *xnom* is available, an error is raised.
284+
285+ ===== Example
286+
287+ ....
288+ Data: 9520123456788
289+ Options: includetext physspec xdim=0.400
290+ Encoder: ean13
291+ ....
292+
293+ ==== hdim
294+
295+ Directly specify the bar height in millimetres. Overrides the nominal
296+ height from the AST. Linear barcodes only.
297+
298+ ===== Notes
299+
300+ * Only meaningful with *physspec*.
301+ * Mutually exclusive with *mag*.
302+
303+ ==== xnom
304+
305+ Override the nominal X-dimension in millimetres. Normally provided by
306+ the Application Specification Table (AST), but can be set by the user.
307+
308+ ==== hnom
309+
310+ Override the nominal bar height in millimetres. Normally provided by the
311+ AST. Linear barcodes only.
312+
313+ ==== xmin
314+
315+ Override the minimum allowed X-dimension in millimetres. Normally
316+ provided by the AST.
317+
318+ ==== xmax
319+
320+ Override the maximum allowed X-dimension in millimetres. Normally
321+ provided by the AST.
322+
323+ ==== ast
324+
325+ Select an Application Specification Table profile. The default profile
326+ (`+default+`) provides the symbology's own specification values. Named
327+ profiles (e.g., `+gs1.sst1+` through `+gs1.sst13+`) provide
328+ GS1-application-specific values.
329+
330+ ===== Notes
331+
332+ * GS1 Symbol Specification Tables (SSTs) define X-dimension bounds and
333+ nominal heights for specific application contexts such as retail POS,
334+ general distribution, healthcare, and logistics.
335+ * See the GS1 General Specifications, Section 5.12.3 for the full list
336+ of SSTs.
337+
338+ ===== Example
339+
340+ An EAN-13 at GS1 SST 2 (general distribution) specification:
341+
342+ ....
343+ Data: 9520123456788
344+ Options: includetext physspec ast=gs1.sst2
345+ Encoder: ean13
346+ ....
347+
183348==== gridfit
184349
185350When enabled, the renderer snaps symbol elements to device pixel
@@ -195,7 +360,17 @@ performance.
195360** Symbologies with fractional bar widths (e.g. postal codes,
196361Pharmacode).
197362** Linear barcodes with a non-integer *barratio*.
198- * The device resolution is probed Unless *gridfit* is provided.
363+ * The device resolution is probed automatically. If the user provides
364+ *griddpi* then this value is used directly without hardware probing,
365+ which also enables gridfit to operate on devices that would otherwise be
366+ skipped (e.g. nullpage).
367+ * When combined with <<_physspec,physspec>>:
368+ ** The effective X-dimension after snapping is validated against
369+ <<_xmin,xmin>> and <<_xmax,xmax>> bounds.
370+ ** If rounding to the nearest whole pixel produces an X-dimension
371+ outside the specification bounds, the alternate rounding direction
372+ (ceiling or floor) is tried automatically.
373+ ** If neither direction produces an in-spec result, an error is raised.
199374
200375===== Example
201376
@@ -240,6 +415,9 @@ hexagons to compensate for inkspread, in points.
240415===== Notes
241416
242417* Negative values will increase the bar width.
418+ * When <<_physspec,physspec>> is enabled, inkspread is automatically
419+ adjusted so that the physical reduction (in mm) remains constant
420+ regardless of magnification.
243421
244422===== Example
245423
0 commit comments