Comments 69
Первые слова текста "THE LORD OF THE RINGS PART ONE THE FELLOWSHIP OF THE RING J.R.R. TOLKIEN". Что-то мне подсказывает, что это таки не Библия короля Якова.
Которая, если очень внимательно вглядываться в монитор, выглядит вот так:
Я бы сказал, что для этого нужно смотреть в монитор под лупой.
У меня получалось разобрать отдельные глифы невооружённым взглядом. Зависит от разрешения монитора, наверное.
Ага. Попытался — вообще без шансов. Монитор 4K, 140 ppi. Невооружённым глазом субпиксели вообще не видно — потому всем так ненавистный ClearType работает просто замечательно. Только при макросъёмке при примерно с 10 попытки получилось сделать чёткий кадр.
Эти картинки и есть шрифт, я их сейчас вытащил из тех самых .jar файлов, которые запускал на своём сименсе в 2005-м.
Такой шрифт можно было установить в ридере для книг, или добавить в конструкторе для Jimm ICQ.
С 36 используемыми символами получается ровно 36х5 пикселей. Если считать, что каждый пиксель занимает 3 байта, то нам нужно 36*5*3 = 540 байт на то, чтобы хранить весь рисуонкНу и зачем это? Если можно сделать нормальный шрифт 8×5, в котором каждый символ будет занимать 5 байтов.
Имхо, идея интересна лишь тем, как впихнуть на экран низкого разрешения как можно больше символов.
Незачем, помимо эстетической ценности. Я даже представить себе не могу таких обстоятельств, когда надо будет настолько экономить байты, но при этом будет доступен многоцветный LCD-экранчик.
Взять такой шрифт, порендерить квадратами, занести результат на экране модели условно древней мобилки — и готов элемент окружения «а-ля нулевые» для какой-нибудь игры, причём вполне допускающий осмысленную сюжетную интерактивность(кто сказал «Steins;Gate»?).
Если уж начали делать минимализм(который никому не нужен), то делайте его полноценным.
Это правда. Мне тоже в статье не хватило выжимания ещё десятка байт каким-нибудь хитрым сжатием.
А есть это статья?
Насколько мне известно, нет. В репозитории оригинала последний коммит что-то около месяца назад, так что, может быть, ещё пишется.
Я видел пост еще в конце 2018 года: 1px-wide font. Правда эта статья намного более подробная.
Получается что в таком шрифте 5 позиций для кодирования. Это мне напомнило азбуку Морзе. Если записать те же буквы вертикальными столбцами в азбуке Морзе, то читать будет даже проще.
Вы сейчас открыли новые возможности для написания неудобных пунктов договоров мелким шрифтом
Ну доступно это было, конечно только на композитных мониторах.
А вот в оригинальном размере читаемо только под лупой. Действительно разборчиво. Но под лупой, которую надо подносить к монитору.
Так оно и не должно быть читаемо, по сути «программно увеличенное» изображение показывает как именно (каким цветом) закодирован символ. Каждый цветной пиксель разбивается дисплеем на 3 составляющие, в виду технических особенностей, и получается «магия». Собственно в статье об этом и рассказывается.
Очень неопределнный вопрос. Сразу возникает уточняющий вопрос:
— на каком устройстве? Например, используя лазерный принтер, можно печатать на качественной пленке с разрешением 1200x600 dpi — это выдает по паспорту мой принтер и я его использовал для печати миры, чтобы проверить возможности фотосканера Epson Perfection Photo 4870 в проходящем свете. Если кодировать прямо в postscript, можно печатать отдельными пикселями вышеуказанного размера. «Шахматная доска» из пикселей остается разборчивой. То же самое получается на хорошей мелованной бумаге. И это получается на устройстве типа ширпотреб. Есть еще более «тонкое» устройство — степпер. Каждый жук и жаба, проектирующий чипы и заказывающий их на фабах, считает своим долгом что-нибудь написать мелкими буквами на кремнии.
2) Сколько памяти понадобится, чтобы его хранить?
Все зависит от представления. Для растрового представления достаточно широкого набора разборчиво читаемых символов хватает поля 5x7. Это 35 бит. Если сжать без потерь, будет где-то 16-19, в зависимоти от алгоритма сжатия. Если с потерями, но без потери разборчивости на латинке, можно догнать до 7 бит на символ. Если использовать словарь для фильтрации вариантов, можно догнать до 5.
3) Сколько кода понадобится, чтобы его использовать?
Смотря что понимать под кодом. ЕМНИП, программа рендеринга шахматного поля с клеткой в один пиксель на постскрипте (файл, который отправлялся на принтер командой lp), весил чуть более 300 байт.
Если просто печатать текст шрифтом по умолчанию, на устройство, в том числе и на экран, то на символ ASCII идет ровно один байт.
С 36 используемыми символами получается ровно 36х5 пикселей. Если считать, что каждый пиксель занимает 3 байта, то нам нужно 3653 = 540 байт на то, чтобы хранить весь рисуонк
Сжатие
Палитра
итд
Я конечно понимаю что в итоге автор статьи пришёл к верному решению, но количество попутно совершённых при этом заведомо лишних действий удивляет.
Всё же просто: символы состоят из 3х5 точек, каждая точка либо включена либо нет (1 бит). То есть это монохромная картинка 3х5 с 1 битом на пиксель. То что её выводят на монитор в субпиксельном режиме — для кодирования дела нисколько не меняет.
Банальные чёрные поля добавляют читабельности:
Если для компонентов пикселя не использовать исключительно 0x00 и 0xFF, а подбирать значения в зависимости от соседних точек и восприятия разных цветов человеком, то наверняка можно сделать ещё читабельнее.
Можно для интервала между буквами использовать 1 субпиксель, это в 1.5 раза уменьшит занимаемое место.
А можно картинку в оригинальном масштабе? Подозреваю, что качество так будет хуже, потому что слова вообще будут сливаться.
Неплохо, но тогда на каждый символ нужно три глифа в зависимости от его позиции по субпикселям. Посмотрите на, например, L в слове Hello. Это либо раздует атлас втрое, либо (что логичнее) потребует хранить чёрно-белый атлас и генерировать колонки на лету.
А нет ли онлайн сервиса, в котором можно сгенерировать произвольный текст таким шрифтом?
В качестве дальнейшего развития можно попробовать генерировать субпиксельные анимации. Сделать гифку или даже игру.
Минимальный возможный шрифт