В начале 1990-х цифровая печать только зарождалась. Компании тратили миллионы на переводу документации, корпоративных отчётов и каталогов в цифровой формат. Ключевое слово было «плавность» — шрифты должны были выглядеть так же четко на экране 72 dpi, как и на лазерном принтере 1200 dpi. Adobe, создатель PostScript и Type 1 шрифтов, предлагала решение: хинтинг — набор математических инструкций, которые на уровне каждого глифа подправляли контуры, прижимая их к пиксельной сетке.
Казалось, это магия. Буква «а» на низкокачественном мониторе отображалась так же аккуратно, как на полиграфическом оборудовании. Однако в некоторых специфических глифах начали появляться странные артефакты: буквы «drifted», «wobbled», иногда даже превращались в нечитаемые треугольники. Проблема была стехиометрична — возникала только при определьной комбинации размера шрифта, разрешения экрана и технических характеристик монитора. И виновата была ошибка округления в 0,001 пикселя.
Алгоритм хинтинга Adobe Type 1 работал рекурсивно. Для каждого контура шрифта вычислялась поправка, чтобы кривая Bézier «привязалась» к целочисленной пиксельной сетке. Проблема в том, что вычисления были в фиксированной точке с ограниченной точностью, а некоторые глифы (например, нижняя часть «e» или внутренний вырез «a») требовали неоднократных поправок. В определённых условиях процесс расходился — каждая итерация добавляла микроскопическое смещение, которое в сумме за несколько шагов достигало целого пикселя.
Называли это grid fitting instability или «singing pixels» — пиксель, который продолжает двигаться при каждом кадре рендеринга. В документации Adobe были предупреждения, но решения не предлагали — считалось что это «проблема низкокачественных мониторов». Пользователи же видели просто: корпоративные документы, распечатанные на лазерном принтере, иногда содержали буквы с «завихрениями» или даже полностью исчезающие внутренние дыры в «е», «а», «о». Никто не мог точно сказать, почему это происходит.
Пик кризиса пришёлся на период массового перехода на цифровые шрифты. В 1994 году Apple и Microsoft выпустили TrueType — альтернативу Type 1, которая использовала другой алгоритм хинтинга, но тоже страдала от подобных проблем. Однако Adobe Type 1 оставался стандартом для профессиональной печати, и именно там артефакты были наиболее заметны.
Крупные корпорации (особенно банки и юридические фирмы, где точность документа была критична) начали массово жаловаться. Типография «не читается». При печати в высоком разрешении (1200 dpi) проблема иногда исчезала, но на офисных лазерных принтерах (300-600 dpi) проявлялась регулярно. Adobe выпускала обновления, которые лишь сдвигали границы возникновения артефактов, но не уничтожали причину.
Парадокс: идея сделать шрифт независимым от разрешения с помощью «умных инструкций» привела к появлению артефактов, которые делали шрифт зависимым от разрешения и параметров рендеринга. Чем больше пытались адаптировать к разным средам, тем больше условий, при которых что-то ломалось.
Позднее анализ показал, что корень проблемы лежал в оптимизации для «типичного» случая. Алгоритм хинтинга был создан для большинства глифов (простых, без замкнутых контуров или с большой площадью заливки). Но для сложных глифов со множеством внутренних контуров (например, «е» с середничком или «g» с двумя петлями) рекурсивные поправки накапливались и создавали петли обратной связи.
Adobe никогда официально не признавала этот баг как фатальный. Вместо этого они выпустили набор «шрифтов-заглушек» для корпоративных клиентов — специальные версии шрифтов, где хинтинг был отключён для спорных глифов. Это было признанием: сложность системы превышает возможности управления.
История с хинтингом — это история о том, как дефект математического моделирования становится дефектом производства. 0,001 пикселя в абстракции превратились в нечитаемые буквы на бумаге, которые потом перепечатывали, теряя время и деньги. И самое страшное: проблема была интервальной — она проявлялась только в определённых условиях, что делало её почти невозможной для воспроизведения в лаборатории, но массовой в реальных офисах.
Сегодня, когда мы говорим о «джитре» нейросетей или «галлюцинациях» LLM, важно помнить, что подобные эффекты — не новизна. Ещё в 1990-х整个世界 discovered that the pursuit of perfect fidelity through complex instruction sets can create its own kind of chaos. And sometimes the most dangerous errors are those that appear only under specific conditions — because they resist detection until it's too late.