Цепочка косых штрихов, наклоненных влево или право, соответствует цепочке из нулей и единиц.
Штрихи взаимно перпендикулярны, и потому распознающее устройство вычисляет их ориентацию, как бы криво ни лежала бумага. Кстати, кодирование данных с помощью ориентации символа вообще устойчивее к помехам, чем привычный способ «есть символ/нет символа».
Здесь уместен вопрос: насколько больше площади требует косой штрих в сравнении с черно-белой точкой других стандартов? Все зависит, конечно, от длины линий. Разработчики советуют делать их не короче пяти пикселов, а лучше — семи. Может показаться, что тогда один штрих займет квадрат, куда влезло бы 25 или 49 точек, но не все так просто. Точечный штрих-код не стоит печатать на пределе разрешения — одно его поле (черное или белое) должно быть размером в несколько пикселов. Сколько именно — зависит от зоркости сканера[Двухмерные штрих-коды, включая датаглифы, не распознаются обычным лазерным сканером из супермаркета, им нужна упрощенная фотокамера или 2D-сканер]. Если сравнивать датаглифы и, например, самый популярный точечный штрих-стандарт PDF-417, то оказывается, что при одинаковой распознаваемости черно-белые точки на той же площади вмещают по крайней мере в полтора раза меньше данных.
Подобно другим двухмерным штрих-кодам в датаглифы можно добавлять избыточную информацию. При декодировании эти добавки позволяют восстановить оригинал, если часть штрихов повреждена. Кроме того, биты располагаются не подряд, по вертикали или горизонтали, а перемешаны и уложены по размашистой зигзагообразной траектории. Таким образом, избыточность и глубокое перемешивание обеспечивают прочтение всех данных с листа, даже если от него оторвали угол и заляпали кляксами (до известной степени, конечно). Для надежного чтения весь блок датаглифов пронизывают синхронизирующие штрихи, позволяющие работать с криво отснятыми и даже изогнутыми поверхностями.
Интересно, что когда люди видят датаглифы, они не воспринимают их как специальные знаки. Из-за малых размеров и регулярного расположения бумага кажется просто заштрихованной, и датаглифная полоса, размещенная выше или ниже текста, выглядит декоративным элементом. Более того, установив высокую избыточность, буквы можно печатать вообще поверх датаглифов. Конечно, правильнее печатать текст и датаглифы вместе, размещая штрихи между буквами и строками. Тогда высокая избыточность не понадобится. Еще лучше делать документ не черно-белым, а цветным. Человек по-разному различает цвета, и тонкие желтые линии на белом фоне мы почти не замечаем. В то же время фотокамеры и сканеры хорошо видят желтый на белом. Можно печатать черные буквы поверх желтой датаглифной штриховки и получать почти обычный документ, но содержащий десятки килобайт данных и лишь слегка желтоватый, как на старой бумаге.
Теперь вспомним, что текстовые данные хорошо сжимаются. Древний Zip-алгоритм и его родственники способны уменьшать обычный текст примерно вдвое. Современный WinRar — вчетверо-впятеро, а экспериментальные программы, настроенные на конкретные языки, уже достигли соотношения один к шести. Поскольку дешевая офисная техника, оперирующая разрешением 300 dpi, может работать с датаглифами плотностью двести байт на квадратный дюйм, то применив даже несложное сжатие, можно получить штриховую полосу шириной с палец (напечатанную внизу листа), содержащую около 10 Кбайт информации. Для сравнения: стандартная емкость того же листа, заполненного обычными буквами, — 1800 символов (лист журнала — около 4500 символов. — Прим. ред.). Ну а весь лист А4, заполненный датаглифами до краев (с тем же разрешением и умеренной избыточностью), будет содержать на одной стороне около 50 Кбайт несжатых данных.
Возможно, кто-то спросит: «А зачем вообще нужен штрих-код?» Ведь машины уже хорошо различают нормальные буквы, и если нужна высокая плотность, то можно же печатать их очень мелким шрифтом. Но распознавание штрих-кодов (любых) принципиально отличается от распознавания обычного текста. Человеку кажется, что в обоих случаях компьютер из снимка бумажной страницы получает некие данные. В действительности же узнавание слов требует наличия словарей, очень большой памяти и сложной программы вроде FineReader’а. Наши буквы удобны для нас, но не для компьютеров. Тогда как штрих-коды — это машинопись, изначально задуманная для легкого распознавания «железками». Разница здесь такая же, как между человеческой речью и писком модема. Соответственно и устройства для обработки штрих-кодов могут быть весьма простыми. Фактически их могут понимать сегодня даже мобильные телефоны, тем более что они вовсю оснащаются фотокамерами.