|
| 1 | +% Barcode Writer in Pure PostScript |
| 2 | +% https://bwipp.terryburton.co.uk |
| 3 | +% |
| 4 | +% Copyright (c) 2004-2026 Terry Burton |
| 5 | + |
| 6 | +% vim: set ts=4 sw=4 et : |
| 7 | + |
| 8 | +/rendertext dup /uk.co.terryburton.bwipp findresource cvx def |
| 9 | + |
| 10 | +/uk.co.terryburton.bwipp.global_ctx << |
| 11 | + /named_colors << |
| 12 | + (_testsep) [ |
| 13 | + [ /Separation (Test Separation) /DeviceCMYK { dup 0.49 mul exch dup 0 mul exch dup 0.03 mul exch 0 mul } ] 1.0 |
| 14 | + ] |
| 15 | + >> |
| 16 | +>> def |
| 17 | + |
| 18 | +/setup { |
| 19 | + /pixx 100 def |
| 20 | + /pixy 100 def |
| 21 | + /txt [] def |
| 22 | + /includetext false def |
| 23 | + /textcolor (unset) def |
| 24 | + /textxalign (unset) def |
| 25 | + /textyalign (unset) def |
| 26 | + /textdirection (forward) def |
| 27 | + /textfont (Courier) def |
| 28 | + /textsize 10.0 def |
| 29 | + /textxoffset 0.0 def |
| 30 | + /textyoffset 0.0 def |
| 31 | + /textgaps 0.0 def |
| 32 | + /textlinegaps 1.2 def |
| 33 | + /alttext () def |
| 34 | + /alttextsplit () def |
| 35 | + /alttextsubspace () def |
| 36 | + /extratext () def |
| 37 | + /extratextsubspace () def |
| 38 | + /extratextsplit () def |
| 39 | + /extratextlinegaps 1.2 def |
| 40 | + /extratextcolor (unset) def |
| 41 | + /extratextxalign (left) def |
| 42 | + /extratextyalign (above) def |
| 43 | + /extratextdirection (forward) def |
| 44 | + /extratextfont (Courier) def |
| 45 | + /extratextsize 10.0 def |
| 46 | + /extratextxoffset 0.0 def |
| 47 | + /extratextyoffset 0.0 def |
| 48 | + /extratextgaps 0.0 def |
| 49 | +} def |
| 50 | + |
| 51 | +/ok_tmpl { |
| 52 | + { 50 dict begin setup 0 exec rendertext end } |
| 53 | + dup 3 -1 roll 4 exch put |
| 54 | + stopped { stop } if |
| 55 | +} def |
| 56 | + |
| 57 | +/er_tmpl { |
| 58 | + { 50 dict begin setup 0 exec rendertext end } |
| 59 | + dup 4 5 -1 roll put |
| 60 | + exch isError |
| 61 | +} def |
| 62 | + |
| 63 | + |
| 64 | +% |
| 65 | +% includetext=false (no-op) |
| 66 | +% |
| 67 | +{ } ok_tmpl |
| 68 | + |
| 69 | + |
| 70 | +% |
| 71 | +% txt array (encoder-positioned text) |
| 72 | +% |
| 73 | +{ /includetext true def /txt [ [ (X) 0 0 (Courier) 10 ] ] def } ok_tmpl |
| 74 | + |
| 75 | +{ /includetext true def /txt [ [ (X) 0 0 (Courier) 0 ] ] def } /bwipp.fontTooSmall er_tmpl |
| 76 | +{ /includetext true def /txt [ [ (X) 0 0 (Courier) -1 ] ] def } /bwipp.fontTooSmall er_tmpl |
| 77 | + |
| 78 | + |
| 79 | +% |
| 80 | +% alttext |
| 81 | +% |
| 82 | +{ /includetext true def /alttext (TEST) def } ok_tmpl |
| 83 | + |
| 84 | + |
| 85 | +% |
| 86 | +% textfont textsize |
| 87 | +% |
| 88 | +{ /includetext true def /alttext (TEST) def /textfont (Helvetica) def } ok_tmpl |
| 89 | +{ /includetext true def /alttext (TEST) def /textfont (Times-Roman) def } ok_tmpl |
| 90 | +{ /includetext true def /alttext (TEST) def /textsize 8.0 def } ok_tmpl |
| 91 | +{ /includetext true def /alttext (TEST) def /textsize 14.0 def } ok_tmpl |
| 92 | + |
| 93 | + |
| 94 | +% |
| 95 | +% alttextsplit alttextsubspace |
| 96 | +% |
| 97 | +{ /includetext true def /alttext (A|B) def /alttextsplit (|) def } ok_tmpl |
| 98 | +{ /includetext true def /alttext (A_B) def /alttextsubspace (_) def } ok_tmpl |
| 99 | + |
| 100 | +{ /includetext true def /alttext (A|B) def /alttextsplit (||) def } /bwipp.alttextsplitBad er_tmpl |
| 101 | + |
| 102 | + |
| 103 | +% |
| 104 | +% textcolor |
| 105 | +% |
| 106 | +{ /includetext true def /alttext (TEST) def /textcolor (FF0000) def } ok_tmpl |
| 107 | +{ /includetext true def /alttext (TEST) def /textcolor (00FF0000) def } ok_tmpl |
| 108 | +{ /includetext true def /alttext (TEST) def /textcolor (_testsep) def } ok_tmpl |
| 109 | + |
| 110 | + |
| 111 | +% |
| 112 | +% textdirection |
| 113 | +% |
| 114 | +{ /includetext true def /alttext (TEST) def /textdirection (forward) def } ok_tmpl |
| 115 | +{ /includetext true def /alttext (TEST) def /textdirection (backward) def } ok_tmpl |
| 116 | +{ /includetext true def /alttext (TEST) def /textdirection (upward) def } ok_tmpl |
| 117 | +{ /includetext true def /alttext (TEST) def /textdirection (downward) def } ok_tmpl |
| 118 | + |
| 119 | + |
| 120 | +% |
| 121 | +% textxoffset textyoffset |
| 122 | +% |
| 123 | +{ /includetext true def /alttext (TEST) def /textxoffset 5.0 def } ok_tmpl |
| 124 | +{ /includetext true def /alttext (TEST) def /textxoffset -5.0 def } ok_tmpl |
| 125 | +{ /includetext true def /alttext (TEST) def /textyoffset 5.0 def } ok_tmpl |
| 126 | +{ /includetext true def /alttext (TEST) def /textyoffset -5.0 def } ok_tmpl |
| 127 | + |
| 128 | + |
| 129 | +% |
| 130 | +% textgaps textlinegaps |
| 131 | +% |
| 132 | +{ /includetext true def /alttext (TEST) def /textgaps 1.0 def } ok_tmpl |
| 133 | +{ /includetext true def /alttext (TEST) def /textlinegaps 2.0 def } ok_tmpl |
| 134 | + |
| 135 | + |
| 136 | +% |
| 137 | +% textxalign |
| 138 | +% |
| 139 | +{ /includetext true def /alttext (TEST) def /textxalign (left) def } ok_tmpl |
| 140 | +{ /includetext true def /alttext (TEST) def /textxalign (center) def } ok_tmpl |
| 141 | +{ /includetext true def /alttext (TEST) def /textxalign (right) def } ok_tmpl |
| 142 | +{ /includetext true def /alttext (TEST) def /textxalign (offleft) def } ok_tmpl |
| 143 | +{ /includetext true def /alttext (TEST) def /textxalign (offright) def } ok_tmpl |
| 144 | + |
| 145 | +{ /includetext true def /alttext (TEST) def /textxalign (justify) def /textdirection (forward) def } ok_tmpl |
| 146 | +{ /includetext true def /alttext (TEST) def /textxalign (justify) def /textdirection (backward) def } ok_tmpl |
| 147 | + |
| 148 | +{ /includetext true def /alttext (TEST) def /textxalign (justify) def /textdirection (upward) def } /bwipp.textxjustify er_tmpl |
| 149 | +{ /includetext true def /alttext (TEST) def /textxalign (justify) def /textdirection (downward) def } /bwipp.textxjustify er_tmpl |
| 150 | + |
| 151 | + |
| 152 | +% |
| 153 | +% textyalign |
| 154 | +% |
| 155 | +{ /includetext true def /alttext (TEST) def /textyalign (above) def } ok_tmpl |
| 156 | +{ /includetext true def /alttext (TEST) def /textyalign (below) def } ok_tmpl |
| 157 | +{ /includetext true def /alttext (TEST) def /textyalign (top) def } ok_tmpl |
| 158 | +{ /includetext true def /alttext (TEST) def /textyalign (bottom) def } ok_tmpl |
| 159 | +{ /includetext true def /alttext (TEST) def /textyalign (center) def } ok_tmpl |
| 160 | + |
| 161 | +{ /includetext true def /alttext (TEST) def /textyalign (justify) def /textdirection (upward) def } ok_tmpl |
| 162 | +{ /includetext true def /alttext (TEST) def /textyalign (justify) def /textdirection (downward) def } ok_tmpl |
| 163 | + |
| 164 | +{ /includetext true def /alttext (TEST) def /textyalign (justify) def /textdirection (forward) def } /bwipp.textyjustify er_tmpl |
| 165 | +{ /includetext true def /alttext (TEST) def /textyalign (justify) def /textdirection (backward) def } /bwipp.textyjustify er_tmpl |
| 166 | + |
| 167 | + |
| 168 | +% |
| 169 | +% extratext |
| 170 | +% |
| 171 | +{ /extratext (EXTRA) def } ok_tmpl |
| 172 | + |
| 173 | + |
| 174 | +% |
| 175 | +% extratextfont extratextsize |
| 176 | +% |
| 177 | +{ /extratext (EXTRA) def /extratextfont (Helvetica) def } ok_tmpl |
| 178 | +{ /extratext (EXTRA) def /extratextfont (Times-Roman) def } ok_tmpl |
| 179 | +{ /extratext (EXTRA) def /extratextsize 8.0 def } ok_tmpl |
| 180 | +{ /extratext (EXTRA) def /extratextsize 14.0 def } ok_tmpl |
| 181 | + |
| 182 | + |
| 183 | +% |
| 184 | +% extratextcolor |
| 185 | +% |
| 186 | +{ /extratext (EXTRA) def /extratextcolor (FF0000) def } ok_tmpl |
| 187 | +{ /extratext (EXTRA) def /extratextcolor (00FF0000) def } ok_tmpl |
| 188 | +{ /extratext (EXTRA) def /extratextcolor (_testsep) def } ok_tmpl |
| 189 | + |
| 190 | + |
| 191 | +% |
| 192 | +% extratextdirection |
| 193 | +% |
| 194 | +{ /extratext (EXTRA) def /extratextdirection (forward) def } ok_tmpl |
| 195 | +{ /extratext (EXTRA) def /extratextdirection (backward) def } ok_tmpl |
| 196 | +{ /extratext (EXTRA) def /extratextdirection (upward) def } ok_tmpl |
| 197 | +{ /extratext (EXTRA) def /extratextdirection (downward) def } ok_tmpl |
| 198 | + |
| 199 | + |
| 200 | +% |
| 201 | +% extratextxoffset extratextyoffset |
| 202 | +% |
| 203 | +{ /extratext (EXTRA) def /extratextxoffset 5.0 def } ok_tmpl |
| 204 | +{ /extratext (EXTRA) def /extratextxoffset -5.0 def } ok_tmpl |
| 205 | +{ /extratext (EXTRA) def /extratextyoffset 5.0 def } ok_tmpl |
| 206 | +{ /extratext (EXTRA) def /extratextyoffset -5.0 def } ok_tmpl |
| 207 | + |
| 208 | + |
| 209 | +% |
| 210 | +% extratextgaps extratextlinegaps |
| 211 | +% |
| 212 | +{ /extratext (EXTRA) def /extratextgaps 1.0 def } ok_tmpl |
| 213 | +{ /extratext (EXTRA) def /extratextlinegaps 2.0 def } ok_tmpl |
| 214 | + |
| 215 | + |
| 216 | +% |
| 217 | +% extratextsplit extratextsubspace |
| 218 | +% |
| 219 | +{ /extratext (A|B) def /extratextsplit (|) def } ok_tmpl |
| 220 | +{ /extratext (A_B) def /extratextsubspace (_) def } ok_tmpl |
| 221 | + |
| 222 | +{ /extratext (A|B) def /extratextsplit (||) def } /bwipp.extratextsplitBad er_tmpl |
| 223 | + |
| 224 | + |
| 225 | +% |
| 226 | +% extratextxalign |
| 227 | +% |
| 228 | +{ /extratext (EXTRA) def /extratextxalign (left) def } ok_tmpl |
| 229 | +{ /extratext (EXTRA) def /extratextxalign (center) def } ok_tmpl |
| 230 | +{ /extratext (EXTRA) def /extratextxalign (right) def } ok_tmpl |
| 231 | +{ /extratext (EXTRA) def /extratextxalign (offleft) def } ok_tmpl |
| 232 | +{ /extratext (EXTRA) def /extratextxalign (offright) def } ok_tmpl |
| 233 | + |
| 234 | +{ /extratext (EXTRA) def /extratextxalign (justify) def /extratextdirection (forward) def } ok_tmpl |
| 235 | +{ /extratext (EXTRA) def /extratextxalign (justify) def /extratextdirection (backward) def } ok_tmpl |
| 236 | + |
| 237 | +{ /extratext (EXTRA) def /extratextxalign (justify) def /extratextdirection (upward) def } /bwipp.extratextxjustify er_tmpl |
| 238 | +{ /extratext (EXTRA) def /extratextxalign (justify) def /extratextdirection (downward) def } /bwipp.extratextxjustify er_tmpl |
| 239 | + |
| 240 | + |
| 241 | +% |
| 242 | +% extratextyalign |
| 243 | +% |
| 244 | +{ /extratext (EXTRA) def /extratextyalign (above) def } ok_tmpl |
| 245 | +{ /extratext (EXTRA) def /extratextyalign (below) def } ok_tmpl |
| 246 | +{ /extratext (EXTRA) def /extratextyalign (top) def } ok_tmpl |
| 247 | +{ /extratext (EXTRA) def /extratextyalign (bottom) def } ok_tmpl |
| 248 | +{ /extratext (EXTRA) def /extratextyalign (center) def } ok_tmpl |
| 249 | + |
| 250 | +{ /extratext (EXTRA) def /extratextyalign (justify) def /extratextdirection (upward) def } ok_tmpl |
| 251 | +{ /extratext (EXTRA) def /extratextyalign (justify) def /extratextdirection (downward) def } ok_tmpl |
| 252 | + |
| 253 | +{ /extratext (EXTRA) def /extratextyalign (justify) def /extratextdirection (forward) def } /bwipp.extratextyjustify er_tmpl |
| 254 | +{ /extratext (EXTRA) def /extratextyalign (justify) def /extratextdirection (backward) def } /bwipp.extratextyjustify er_tmpl |
| 255 | + |
0 commit comments