Шрифт превращает набранный текст в штрихкод — и сам считает контрольную сумму EAN-13

Проект Libre Barcode предлагает шрифты, которые рендерят сканируемые штрихкоды прямо из текста: Code 39, Code 128 и EAN-13. Хитрость в том, что контрольная сумма EAN-13 считается внутри самого шрифта через фичи OpenType. Самый опытный голос в треде резюмировал: лучше не надо.

Вкратце

Шрифты для штрихкодов существуют давно, но в Libre Barcode контрольный разряд EAN-13 вычисляется прямо внутри типографских фич шрифта — пользователь вводит цифры и получает готовый код. Шрифты доступны через Google Fonts.

Практикующий инженер, который реально внедрял Code 128, предупреждает: сгенерировать корректный Code 128 как SVG требует примерно столько же усилий, и по-настоящему сложная часть задачи — переключение между кодировочными таблицами — как раз то, с чем шрифт справляется плохо.

Штрихкод, который можно напечатать

Проект Libre Barcode выпускает шрифты, которые превращают текст в сканируемые штрихкоды — Code 39, Code 128 и EAN/UPC (EAN-13), с человекочитаемыми цифрами под кодом и без, — распространяемые через GitHub и Google Fonts. Главная изюминка, которую заметил один из читателей: шрифт «умеет самостоятельно считать контрольную сумму EAN-13», перекладывая логику в фичи OpenType — то, что старые шрифты для штрихкодов оставляли пользователю. Один известный хакер отреагировал с нескрываемым восторгом от изощрённости решения: «Это извращение самого тошнотворного свойства. Отлично сделано!»

«Не делайте этого, если есть хоть какой-то выбор»

Самый полезный комментарий оказался предупреждением от человека, явно поставившего штрихкоды в реальной жизни. Инженер, реализовывавший Code 128, объяснил, почему подход с шрифтом — ловушка:

«Сгенерировать корректный Code 128 в виде SVG — примерно столько же работы, сколько подготовить правильный ввод для какого-нибудь шрифтового штрихкодера. Трудная часть — определить переключения между кодировочными таблицами, а не превратить байты в полоски.»

Иными словами, шрифт берёт на себя лёгкую половину задачи и оставляет вам трудную. Второй читатель распространил этот тезис на плотные двумерные форматы: самостоятельный подсчёт контрольной суммы — это приятно, но «удачи с чем-нибудь вроде Reed-Solomon (QR, Data Matrix)».

Почему об этом всё равно стоит знать

Честная оценка такова: это красивое типографское решение с узкой зоной применения. Для простого ярлыка EAN-13, когда принтер не умеет генерировать коды сам, шрифт с встроенной контрольной суммой реально выручает; для задач с переключением кодировочных таблиц или двумерной коррекцией ошибок опытные участники треда возьмут полноценный генератор. Самый занятный момент к печати не относился вовсе: один читатель рассказал, как с помощью генератора штрихкодов создал специальный код, который перепрограммирует дешёвый сканер на чтение как UPS, так и FedEx-трекинговых номеров. Штрихкоды, как выясняется, куда более глубокая кроличья нора, чем выглядит по шрифту.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 28 из 28 Читать дальше
🌍Other

«Читать новости — это новое курение»: тред спорит, привилегия ли бросить

Адам Мастроянни бросил новости в 2020-м и говорит, что в голове «стало тише». Его аргумент: новости вызывают зависимость, разрушают нервы, вредят окружающим — совсем как сигареты. Технический директор ProPublica отвечает: если не реагировать на геноцид, значит, он вам безразличен.

★ 55 · 💬 57 · experimental-history.com · 3 мин