dfox 10 hours ago

Do not do this unless you do not have any other choice. Preferrably use whatever native barcode support of the printer involved, if it does not have that, just generate the barcode as vector image or bitmap with a resolution that is a integer fraction of the printers resolution. Generating correct Code128 as a SVG is about the same amount of work as generating the correct input for some sort of barcode font (the hard part is determining the switches between character sets, not generating bars from bytes).

  • alex_suzuki 9 hours ago

    Shameless plug for my web-based Zint frontend: https://barcode.new (in-browser WASM)

    I wrote it specifically because most online barcode generators don’t support vector output or suck in some other way: ads, signup necessary, code payload exposed to server-side processing etc.

    • pwdisswordfishs 7 hours ago

      Aside from obfuscating the source code to sell licenses, how does this benefit from WASM?

      Barcodes have been generated for decades on low-resource embedded devices. Even what would have been a modest-to-low-end machine 25 years ago would have no problem handling the compute needed for this job.

      On this end, it just looks like the user has to deal with the penalty of dealing with 1 MB of resources when hitting the main page.

      • alex_suzuki 7 hours ago

        The benefit of WASM in this case is that you can wrap a mature library written in C/C++ (in this case, Zint), and run it in a runtime that supports WASM, e.g. the browser. There's plenty of people who occasionally need to create barcodes, and not in some industrial, automated way, and a browser is just an easy way to accomplish that. Yes, you have 1MB loaded when you load the page, but hopefully that will be served from a cache.

        • nolroz 3 hours ago

          One MEGAbyte?? How could you!?

  • mark-r 8 hours ago

    I once worked at a company that used a Code39 font cartridge in HP Laserjets. When HP stopped putting font cartridge slots in their printers, I had the task of intercepting print jobs and detecting the font selection sequence, then taking the text and converting it to a Code128 bitmap graphic. It wasn't hard at all, kind of fun actually.

    • darksim905 1 hour ago

      'font' cartridge? the what now?

      • ValdikSS 1 hour ago

        In the dark ages, when printers were PostScript and more powerful (and expensive) than the computers which printed on them, you added fonts by installing additional hardware modules, similar to a game console cartridge.

      • wildzzz 1 hour ago

        They were ROM cards that stored extra typefaces or other PostScript functions.

      • EvanAnderson 1 hour ago

        You're one of today's lucky 10,000.

        Like another poster said, laser printers "back in the day" were freestanding computers with various communications interfaces that happened to have fancy paper handling and printing peripherals attached. In the case of the Apple LaserWriter, for example, it was arguably a more powerful computer[0] than the Mac machines of the day that were sending print jobs to it.

        There were different ROM "personalities" available for laser printers, some of which came on pluggable cartridges.

        Check these links out:

        - https://www.pagetable.com/?p=1673

        - https://www.pagetable.com/?p=1721

        - https://www.pagetable.com/?p=1850

        Michael Steil, the blogger responsible for those links, has done work extracting code and PostScript data out of some of those old cartridges. It's a really cool aspect of retrocomputing many people aren't even aware of.

        [0] https://web.archive.org/web/20240404213221/https://lowendmac...

      • xp84 12 minutes ago

        Up until like 15 years ago, lots of laser printers even had RAM slots as well. Populating them with extra RAM made them behave better when printing big PDFs and stuff.

1bpp 15 hours ago

Is anyone willing to sacrifice their sanity for the sake of implementing a QR renderer as TTF hinting code?

ahlCVA 10 hours ago

Barcode fonts have been around for ages. But what's cute about this one is that it can calculate the EAN13 checksum on its own.

  • alex_suzuki 10 hours ago

    It can’t, at least for Code 128? There’s a text field that you enter the text into, and then the start/stop/checksum characters are computed.

    • ahlCVA 9 hours ago

      It seems like it doesn't do this for Code 128 (possibly because it is variable-width?). It definitely works with EAN13 though - I tried it locally using only the TTF file.

joewhale 6 hours ago

fyi code 39 barcodes are outdated because of the lack of check sums and leads to false positives.

ciupicri 6 hours ago

It's not clear to me how can I put FNC3 and the beginning of the Code 128 bar code.

muhammadusman 4 hours ago

just curious: are barcodes better in anyway compared to a QR code?

  • wps 2 hours ago

    I believe they are much faster to scan, as you don’t need to identify the corners.

  • dimatura 6 minutes ago

    They are simpler and can be read by more devices, especially legacy devices that are still pretty widely deployed. Other than that, not much to say in their favor. They have lower data density compared to 2D codes such as QR or datamatrix. Many linear barcode symbologies have weak or nonexistent error correction capability. But often you don't need that extra data, and the cost of changing processes and equipment to upgrade to a new barcode format is seen as not worth it.

utopiah 14 hours ago

Damn, yes please.

Another cool font, but less original, I stumbled upon recently is Marelle https://marelle.forge.apps.education.fr/ for cursive.

  • endre 13 hours ago

    this is genius

  • albert_e 12 hours ago

    > https://marelle.forge.apps.education.fr/

    This website is in French so I was unable tounderstand the text

    and the website is very resistant to automatic translation by Google Translate

    >https://marelle-forge-apps-education-fr.translate.goog/?_x_t...

    What gives?

    • utopiah 12 hours ago

      No problem translating it with Firefox :

      " Marelle is a free cursive police force for teaching writing in elementary school. Introduction

      This project is supported by the Digital Directorate for Education of the Ministry of National Education, and developed in the Forge of Digital Educational Commons.

      The Marelle police is designed specifically for teaching cursive writing in elementary school, it was developed by a team of teachers and designers specialized in writing systems.

      Teaching Cursive Writing

      Structure and sequence of letters, rhythm and proportion, contextual variants: the Marelle font was thought around specific criteria to offer a quality model to teachers and students. Particular attention has been paid to the trace of numbers, capital letters and punctuation. A complete professional tool

      The Marelle police offers 3 types of variants:

          uppercase sticks or cursive
          with or without lineage Seyes
          height of ascendants and descendants
      

      These variants can be combined to best meet the needs of teachers and students." etc

      • jurgemaister 11 hours ago

        > cursive police force

        • ligne 9 hours ago

          Homographs are tricky :-)

        • bombcar 8 hours ago

          I know I've often cursive'd the police.

      • albert_e 2 hours ago

        Thanks!

        (the first line made me laugh)

        I now understand why there is no English version (though still surprised Google could not translate it)

    • piltboy 12 hours ago

      "Marelle is a free cursive font designed for teaching handwriting in [French] elementary school."

      I'm not sure they owe it to anyone to make the website available in English :-)

      • albert_e 2 hours ago

        That there is not much use for an english version -- is only evident to me with hindsight after reading the english translation :)

        Thanks

    • tokai 8 hours ago

      ooh thanks, the Bâton in capital letter is very nice.

  • tecleandor 10 hours ago

    Nice! That looks pretty similar to the one in "Cuadernos Rubio", a system that was super popular from the 60s to the 90s in Spain (that still exists) for learning handwriting in primary school.

alex_suzuki 10 hours ago

This would be more interesting if you wouldn’t need to calculate checksums yourself, and could just write the barcode value. Good luck doing that with something like Reed-Solomon (QR, Data Matrix, etc.) or the shenanigans they’re doing with GS1 DataBar.

nemoniac 12 hours ago

ASCII only?

  • Terr_ 12 hours ago

    More or less, AFAICT the underlying barcode standards don't support Unicode, if that's what you mean.

    It looks like Code 128 could potentially handle some ISO-8859-1 accented latin characters, but I'm not sure how to test it.

    • ale42 11 hours ago

      Code 128 supports some ISO-8859-1 indeed, but it requires switching between encodings (there are 3 of them), and couldn't work with 128B (I guess the one used by the font, as it supports ASCII). See the table on Wikipedia: https://en.wikipedia.org/wiki/Code_128

      • trashb 10 hours ago

        actually it seems they support 128A 128B and 128C with the correct encoder.

          To use these fonts you have to use an encoder like the one below. It is an optimizing encoder, that means, it produces the shortest barcode that can encode the input. For this the encoder, if necessary or shorter, switches between the three available Code Sets (list from Wikipedia):
        

        https://graphicore.github.io/librebarcode/documentation/code...

    • matsemann 9 hours ago

      Even with plain ASCII we sometime struggle with the various scanners, as they emulate keyboards. So for instance using : in the barcode as a separator of values becomes wonky if the OS has a different input language than expected.

dmitrygr 14 hours ago

This is a perversion of the most sickening nature. Nicely done!

  • breakingcups 12 hours ago

    I'm surprised at this reaction, this has been standard practice for many years in various companies where I worked.

    • dfox 10 hours ago

      The fact that this is standard practice does not mean that it is not perverse. It kind of works sanely for plain Code39 (and even then you will see effects of doing that in weird places, like VAG stamping human readable VIN on a chassis, including the Code39 start/stop symbols), once you start using barcode fonts for Code128-derived symbologies (ie. UPC/EAN) the whole thing becomes a pointless exercise.

  • Dwedit 7 hours ago

    I mean there was already the Bad Apple font (keep adding another character to your text and you get the next video frame)