Libre Barcode Project
graphicore.github.io
graphicore.github.io
Yes, generating the image isn't that complicated, but getting them to scale correctly so that your label printer will produce a printed barcode that will both fit on the label and be readable by a barcode reader is a nightmare.
Having to scale a font seem to be much easier to deal with, but I might be wrong.
My app renders canvas data down to 1-bit images and sends them off to the printer as raster images. Each printer handles image data a bit differently. Although Zebra printers do support in-printer-barcodes (put a barcode of type Z at x,y) I opted to send full-sized images for every label and lose efficiency for greater reproducibility. I also support DYMO and BROTHER thermal printers that do not have built in barcode support.
One of the things that people don’t think about (ie my loving users) is how a minimally sized barcode doubles in size due to DPI. If your barcode has narrow bars equaling one dot width, then your next choice larger is literally 2x the size. There is no gray in thermal printers, just black or white. And on the flip side, barcode scanners need the highest contrast to scan.
Where people get in trouble is pixel misalignment, thinking that you can scale a tiny barcode by 20% at 200 DPI. Nope, sorry dear user!
The last few years have been a ton of fun. I really enjoy HN posts about barcodes. It makes me feel relevant. Ha!
The issue we faced was a bit stupid and a result of trying to save money. The type of barcode we used, and I forget the type, was actually a little to large for the labels we wanted to use, and the labels where very skinny. Trying to maximize the size of the barcode, so our cheap scanner would read the, meant pushing the barcode almost to the edge of the label. That involved fiddling with the size and margins on the Zebra printers, and if you don't get it right the scanner would either fail to read the barcode because the margin was to small (at least our cheap scanners require a margin of some minimal size to identify where the bars start) or the lines where to short and scanners can't read the bars if they're to short.
Is there anything wrong with maintenance mode if it works?
I was trying to make a barcode scanner out of a raspberry pi with a camera module during a hackathon once. What an absolute nightmare.
Code39 is pretty common to convert into a font, since the checksum is optional.
IIRC ligatures break this constraint - that's how coding fonts get fancy glyphs for "==", "===", "=>" and so on.
I don't have the knowledge to respond to your second point.
[edit] Updated link
Could be useful, probably not too hard to include but they have other priorities apparently...
The second reason is that there are a LOT of barcode algorithms, so you would be duplicating the entire encodable codeblock (which is sometimes larger than ascii) a bunch of times.
The third issue is that barcode algorithms are not usually literal 1:1 stand ins. Barcodes usually have the equivalent of a header and footer, and often, a character will influence how the next one looks. At a guess, this font can (and probably does) handle that with font ligatures.
Why do we use barcodes?
Warehouse management systems, same story. In fact, in supply chain, QRCodes are extremely rare. All the portable "brick on a stick" wireless terminals rely upon barcodes.
Production workflow, where jobs move from station to station often rely on barcodes to identify jobs and components.
Not to mention the most obvious one: shopping. Cash register scanners don't do QRCode. They follow the UPC standard along with the entire retail industry. That's likely never going to change.
1D scanners are able to scan the entire surface of an object to find the codes quickly, or even two surfaces at the same time. Think cashiers again, quickly plowing through a cartload of merchandise. They don't have to aim to do that. They just have to know what side the barcode is on. It's a non-trivial engineering issue to make 2D as efficient to scan as 1D.
There is absolutely no reason to move to 2D codes for the majority of existing 2D applications.
You can read it with a led or laser, a motor with a mirror, a filter, a photodetector and a cheap microcontroller that cost cents.
The technology is so simple. A point of light moves and you get an output of ceros and ones, edges are supersharp.
There are lots of cheap chinese guns with the components already integrated.
If you have already a video camera and big microprocesor, QR are much better.Scanning barcodes with cameras is tricky, because barcodes edgess are blurry.
Professionals are going to use a gun anyway so it makes sense for them.
Barcode readers are cheaper.
[0] https://www.freecodecamp.org/news/lets-enhance-how-we-found-...
a 100 pixel high 1d barcode is 10,000% redundant in one axis :)
[Edit] I misunderstood the context as being optical scan codes vs other technologies, not 2d vs 1d
And if you're in the <12 digits only space C128 is still a safe choice