Третья версия типографа Муравьёва

    Типограф Муравьева 3.0

    Практически пять лет назад я опубликовал на Хабре пост про свой типограф: habrahabr.ru/post/67010. Прошло много времени, он несколько раз обновлялся и получал продолжения в модулях для движков и блогов. Пришло время задуматься о самом лучшем и грамотном инструменте, который будет за вас типографировать текст. Именно по этому я вернулся к своему типографу и все начал заново.

    Типограф — инструмент для форматирования текста с использованием норм, правил и специфики русского языка и экранной типографики.



    Естественно я понимал, что существуют и другие решения от других разработчиков, которые имеют свои плюсы и минусы. Но мне очень хотелось начать создавать продукт, который будет иметь минимальное количество минусов и сложностей. Другими словами я хочу создать самый лучший типограф в мире — пока только для русского языка. Просмотрев все существующие типографы, собрав все правила, тесты, проверки и книги по типографике, я постарался составить тот список правил, который получится нормально реализовать в новой, третьей версии типографа, а остальные оставить на обдумывание.

    О продукте


    1. Типограф получил поддержку Unicode (это позволяет получать на выходе сразу красивый и форматированный текст без HTML-мнемоники). По умолчанию он отключен, нужно вручную включить.
    2. Включил около 70 правил, 30 дополнений и исключений к ним. На сайте есть раздел со всеми общими правилами, там можно подробнее прочитать. Но опять-таки они не все, т.к. есть множество под-правил и условий.
    3. Теперь типограф занимаем всего один файл (EMP.php) и доступен для PHP, но в ближайшее время выйдут версии и для Python (в процессе), Ruby, Perl и JS.
    4. Инструмент бесплатный и всегда будет оставаться таким. Открытый исходный код. При использовании мы не просим ничего указывать, но будет здорово, если расскажете об этом.
    5. Каждое правило можно включить или выключить. Внутри много скрытых правил.
    6. Реализована висящая пунктуация (некоторые это называют оптическим выравниванием).




    Будущее


    Как уже говорил выше, мы поддержим все популярные языки веб-разработки и посмотрим в сторону прикладных. Мы сделаем все возможное, чтобы наши решения попали на самые популярные рунетовские ресурсы (Яндекс, Look At Me, Habr, Аййо и так далее). Будем благодарны, если вы поможете на основе нашего типографа написать модули для популярных блогов и движков. Это действительно поможет сделать тексты, которые мы читаем более приятными и красивыми. Сделаем API, чтобы разработчики могли всегда иметь актуальную версию и положим все на Гитхаб.

    Реальность


    В жизни не все так гладко, как хочется. Типограф не идеален и в версии 3.1 мы исправим ряд проблемных мест о которых уже знаем, хоть они и редкие.

    Буду очень благодарен за полезную критику и помощь в продвижении. Расскажите, что вам не хватает, что стоит добавить, убрать или обратить внимание? Я считаю, что о таких вещах надо рассказывать друзьям, коллегам, да и вообще, повышать вокруг грамотность.

    Сайт mdash.ru содержит список правил, демо и вводные по установке. Группа в Фейсбуке.

    Давайте сделаем тексты красивыми!
    Поделиться публикацией

    Похожие публикации

    Комментарии 53
      +6
      А может на GitHub стоит разместиться? Было бы очень прекрасно.
        +4
        Да, на выходных я думаю опубликую.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            И заодно определиться с лицензией. Потому что «бесплатный и всегда будет оставаться таким» — это, конечно, хорошо, но очень неудобно.
              0
              Какую посоветуете?
                0
                Я за BSD-лицензию, еще можно Public Domain, но обычно это для экстремалов :)
                  0
                  главное — чтобы разрешала коммерческое применение, BSD — ок
                    0
                    Мы уже определились с лицензией, об этом указано в футере на сайте. Типограф — общественное достояние.
                0
                А composer будет поддерживаться?
              +2
              Открыл вот эту страничку mdash.ru/rules.html и чуть не ослеп. Разве можно использовать столь безобразно выглядящие шрифты?
                0
                Может проблемы с версткой? Сделайте, пожалуйста, скриншот.
                  0
                  Например


                  Последний Хром, вин7.
                    0
                    Сначала подумал, что что-то конкретно не так с антиалисингом, потом с удивлением понял, что это гарнитура.
                      +2
                      Конкретно что-то не так с антиалиасингом. В убунте все прекрасно (Хром):
                      image
                        +2
                        Правильно, потому что гарнитуру там уже сменили.
                          0
                          Сапожник без сапог. На данном скрине прекрасно видно, как всё слиплось и ни какой «Типограф» не поможет, пока типографику в верстке не поправят, в частности — интерлиньяж.
                            0
                            Уже давно все исправили ;)
                              0
                              скрин
                                +3
                                Тут «ад перфекциониста». Буква «К» в первой строке под «Стало» на 1px отступает вправо от вертикальной линии по отношению к другим строкам.
                        +2
                        Теперь все ок. Спасибо.
                      • НЛО прилетело и опубликовало эту надпись здесь
                      +2
                      Здорово, посмотрю с перспективой использования в своём проекте.

                      Правда, если честно, никогда не понимал желания включить в типограф автоматическую правку ошибок неграмотного пользователя (замена сдвоенных знаков препинания на одинарные, удаление повторяющихся знаков препинания, расстановка запятых перед а, но и т. п.) Но, думаю, это легко отключить. Был бы, правда, рад, если бы можно было всё это отрубить одной настройкой, оставив за типографом только типографику. А остальное, имхо, задача спелл-чекера (да и то скорее на уровне «подсветить», а не «исправить»).

                      Из пожеланий ещё — наличие минимального форматирования полученного html-кода. Одна длинная строчка из всего текста — не тру, надо иметь возможность по абзацам разбивать, иначе руками в полученный код уже никогда не залезешь (бывает надо).
                        0
                        Я не планирую его превращать в орфограф. Добавили исправления ошибок, которые в лоб: запятые перед А и НО. Отключить их действительно не сложно. Возможно, стоит вынести это в отдельный блок правил.
                        0
                        Есть плагин для Wordpress?
                          +1
                          Пока нет, но будет. И не только для Вордпресса.
                          +8
                          Можно ли когда-нибудь ожидать такой функционал:
                          — Подключаем типограф как .js скрипт
                          — И применяем типограф к блоку текста $(«p»).tg();

                          При этом типограф должен
                          — Отслеживать изменение пользователем масштаба страницы и заново рендерить текст
                          — Поддерживать адаптивность так, чтобы при смене ориентации дисплея, заново рендерить текст
                            0
                            Поддержка js будет, я собственно в самом посте про это и написал. А можете уточнить, зачем поддерживать адаптивность типографу при рендере страницы?
                              0
                              Например когда есть блок с динамическим размером по ширине, то при смене ориентации экрана, ширина блока либо увеличивается, либо уменьшается и как следствие — необходимо корректно расставлять переносы с учетом правил русского языка, а также избавляться от висячих предлогов.
                                0
                                Мне кажется, что это дело верстки, чтобы при рендере страницы текст размещался правильным образом. Типограф только говорит какие слова привязывать каким и что заменить на что. Или я ошибаюсь?
                                  +1
                                  Верстка же адаптивная, поэтому верстальщик не знает какая ширина блока будет, тем самым он не может правильно разместить текст.

                                  Вот если сейчас взять bootstrap 3 и создать

                                  <div class="row">
                                  <div class="col-md-3 col-md-offset-6">здесь много текста</div>
                                  </div>
                                  

                                  то этот код на ipad'e в горизонтальной ориентации будет меть отступы слева и справа, таким образом текст будет расположен по центру экрана в блоке шириной около 234px, а при смене ориентации экрана в вертикальную, этот блок будет растянуть на всю ширину экрана = 768px. Таким образом сначала положение текста было одно, а после смены ориентации стало другим (намного шире).
                                    0
                                    Да, понял. Есть над чем подумать. Спасибо!
                            –1
                            Есть ещё одно правило, которое хотелось бы видеть: очень часто «бо́льших» пишут как «бОльших» или «больших»/«больших»: т.е. заменяют ударение в слове на большую букву или разного рода выделение (первое чаще).
                              +2
                              Если человек не умеет грамотно читать текст, то типограф ему не поможет. И не хочется из-за таких людей портить семантику самого текста добавляю в середину слов заглавные буквы.
                                0
                                Так я наоборот прошу, чтобы большие буквы в середине заменялись на ударение, а не наоборот, потому что «наоборот», как вы правильно заметили, портит текст.
                                  0
                                  Понятно теперь. Но логику для такого правила тяжело написать. Некоторые люди пишут ГостДеп и в принципе здесь нет никаких ошибок. Иногда могут иностранные слова писать на российский манер: айФон. Такое правило, в принципе, можно добавить, но точно по умолчанию выключить :)
                                    +1
                                    На согласных ударение не ставится. Если больших букв больше одной в начале слова и одной в середине, то правило однозначно неприменимо (почти наверняка это сокращение вроде «МежДелМаш»). Кроме того, вариант с выделением более однозначен: «айфон» люди не пишут. Правда и намного более редок.

                                    Я предлагаю разбить это правило на два: это правило для известного списка слов (слова вида «бо́льш*» я видел записанными в таком виде намного чаще, чем все остальные слова вместе взятые) и для любых слов и оставить включённым по‐умолчанию только первое.
                              +1
                              Нашёл ошибку: слова с несколькими ASCII апострофами (U+0027, ') превращаются в слова с одним Unicode апострофом (U+2019, &rsquo;) и оставшимися неизменёнными ASCII апострофами на месте всех апострофов, кроме первого.
                                0
                                Спасибо, исправим.
                                +1
                                Отличный инструмент! Ждем развития. Хочется использовать, но пока есть над чем работать (см. ниже)

                                А пока скажите: куда слать багрепорты? (даешь выкладку на ГитХаб).

                                Что сразу бросилось в глаза (тестировал демо на сайте):
                                — из неправильного: при обработке текста с html разметкой TG зачем-то проредил список тегами перевода строки:
                                <li>пункт1</li> <br />
                                <li>пункт2</li><br />
                                <li>пункт3</li><br />
                                


                                — из пожеланий — доработать, что-бы не ломал структуру html кода (имею в виду отступы и переводы строк).
                                Понимаю, что на 100% эту задачу не выполнить, т.к. полностью разделить контент и структуру кода не получится (если есть идеи пишите ниже), но как минимум часть правил вполне определимо…
                                Например: если пробелы/табы и(или) переносы строк идут одним блоком (без включения других символов) между закрывающей скобкой тега «>» и открывающей скобкой следующего тега «<», то есть все основания полагать, что это относится к форматированию html разметки, а не непосредственно к тексту.

                                  0
                                  Про li это вы хорошо заметили. Насчет красоты кода: по идеи типограф надо настраивать так, чтобы он форматировал только текст, а не html-код. Но даже если внутри есть небольшая часть верстки, то ничего страшного в том, что она будет в одну строку я не вижу. Типограф это ведь больше для людей =)

                                  Но я понимаю, что код должен быть красивым и мы попробуем решить проблему.
                                    0
                                    Спасибо. Согласен, что больше для людей.
                                    Но иногда хочется встроить такое красивое решение, например в CMS, для автоматизации вывода страниц в «красивом» виде. А там на входе уже форматированный тегами код, который получен например на выходе редактора страниц. Для CKeditor это текст с html разметкой, для MarkItUp это текст разбавленный BB-кодами.

                                    p.s. Кстати, совет — сделать тогда расширения для популярных редакторов, в виде доп. кнопки. Выделил текст — нажал кнопку, тут же в редакторе получил красиво.
                                      0
                                      Да очень не хватает такой кнопки в CKEditor и подобных.
                                      Вырезаешь, идешь к лебедеву, типографируешь, вставляешь… Когда текстов много ужасно долго и муторно.
                                        0
                                        Теперь можете копировать и вставлять к нам =) В общем, сделаем все
                                          0
                                          Подписался на обновления и жду!
                                          Удачи в развитии проекта!
                                          +1
                                          Да, именно про это речь. Я правда для этих целей вот таким пользовался — www.typograf.ru/

                                          Таки да… ждем обновлений.
                                    +1
                                    А кстати, еще из хотелок: можно ли правило АнтиКапс прикрутить?
                                    Что бы исправлял регистр или «как в предложениях» или «каждое слово с большой буквы»?
                                      0
                                      В следующей версии
                                        0
                                        Круто!
                                      0
                                      Доступна новая версия — 3.3, см. mdash.ru
                                        0
                                        А что насчёт Github? И, кстати, как получается версия для Python? Очень похоже на какой‐то автоматический конвертер.

                                        Ссылка на Python версию сейчас нерабочая (“The requested URL /download/emt3.3-python.zip was not found on this server.”). И ещё, никогда не используйте файловый менеджер MacOS X для создания архивов. Он добавляет мусор:

                                        Каталог __MACOSX не нужен никому, кроме тех, кто пользуется для распаковки тем же, чем вы пользовались для запаковки. Да и у пользователей MacOS X без него всё прекрасно работает.
                                          0
                                          Ссылку поправили, спасибо. До гитхаба руки не доходят, сделаем.
                                        +3
                                        Опубликовали на ГитХабе: github.com/emuravjev/mdash
                                          0
                                          Друзья, мы обновили типограф до версии 3.4.

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое