Умный принтер узнает «в лицо» картридж с чернилами по специальному чипу, содержащемуся в последнем. Очень умный принтер может даже оценить белизну, глянец и рыхлость бумаги с помощью оптического датчика. Но, как вы понимаете, данные о бумаге будут уже приблизительными, а не точными. Цифровые приборы способны хорошо «видеть» лишь друг друга, а «нецифровые предметы» для них как будто покрыты туманом. В таких случаях частенько прибегают к помощи особых ярлычков, узнаваемых техникой безошибочно. Способы навешивания ярлычков называются Embedded Data Technologies.
Самым ярким представителем такой технологии являются радиометки (RFID), быстро завоевывающие популярность, однако и старомодный штрих-код отнюдь не исчерпал своего потенциала. Например, компании Anoto и Digimarc считают, что ярлыки должны быть незаметны, и первая предлагает маркировать товары невидимыми чернилами, а вторая – едва различимой рябью. Сотрудникам PARC, однако, приходится учитывать специфику материнской компании и делать нечто, с чем могли бы работать копиры, принтеры, факсы и прочая техника Xerox. Такие ограничения сразу приземляют любую Embedded Data Technologies на лист бумаги, посыпанный тонером. Придумать же что-то новое для бумаги крайне трудно, и еще труднее вытеснить с нее старомодный штрих-код. Между тем у этого старика есть серьезные недостатки – в частности, низкая информационная емкость в пересчете на единицу площади и никудышная устойчивость к повреждениям[Линейный штрих-код обычно содержит контрольные цифры, позволяющие только обнаруживать ошибку, но не исправлять ее].
Попытки заменить линейный штрих-код делались многократно, и сегодня Wikipedia перечисляет больше тридцати таких разработок. В PARC наверняка изучали их и обсуждали, как можно втиснуть на квадратный дюйм побольше байтов. Очевидный ответ – взять не «зебру» из длинных линий, а некую таблицу или решетку (такие разработки тоже известны, обычно они представляют собой матрицу из черных и белых точек). И вот в какой-то умной голове родилась мысль: а почему нули-единицы обязательно передавать на бумаге белыми и черными участками? Почему бы не рисовать один-единственный символ, а два бита – 1 или 0 – кодировать вариантами его ориентации? Какой выбрать символ? Самый простой – короткую прямую. Эта изящная идея позже была названа DataGlyphs – датаглифы.
Цепочка косых штрихов, наклоненных влево или право, соответствует цепочке из нулей и единиц.
Штрихи взаимно перпендикулярны, и потому распознающее устройство вычисляет их ориентацию, как бы криво ни лежала бумага. Кстати, кодирование данных с помощью ориентации символа вообще устойчивее к помехам, чем привычный способ «есть символ/нет символа».
Здесь уместен вопрос: насколько больше площади требует косой штрих в сравнении с черно-белой точкой других стандартов? Все зависит, конечно, от длины линий. Разработчики советуют делать их не короче пяти пикселов, а лучше – семи. Может показаться, что тогда один штрих займет квадрат, куда влезло бы 25 или 49 точек, но не все так просто. Точечный штрих-код не стоит печатать на пределе разрешения – одно его поле (черное или белое) должно быть размером в несколько пикселов. Сколько именно – зависит от зоркости сканера[Двухмерные штрих-коды, включая датаглифы, не распознаются обычным лазерным сканером из супермаркета, им нужна упрощенная фотокамера или 2D-сканер]. Если сравнивать датаглифы и, например, самый популярный точечный штрих-стандарт PDF-417, то оказывается, что при одинаковой распознаваемости черно-белые точки на той же площади вмещают по крайней мере в полтора раза меньше данных.
Подобно другим двухмерным штрих-кодам в датаглифы можно добавлять избыточную информацию. При декодировании эти добавки позволяют восстановить оригинал, если часть штрихов повреждена. Кроме того, биты располагаются не подряд, по вертикали или горизонтали, а перемешаны и уложены по размашистой зигзагообразной траектории. Таким образом, избыточность и глубокое перемешивание обеспечивают прочтение всех данных с листа, даже если от него оторвали угол и заляпали кляксами (до известной степени, конечно). Для надежного чтения весь блок датаглифов пронизывают синхронизирующие штрихи, позволяющие работать с криво отснятыми и даже изогнутыми поверхностями.