Локальный типограф на python — typus β

в 6:31, , рубрики: open source, python, typus, типограф, типографика

diff

Я уже презентовал свой типограф на хабре. С того момента он несколько обновился: я добавил доки, дифф типографированного результата на сайте и скромненький web api.

Прежде всего: что это и зачем оно надо?

Грубо говоря, это субъективщина. Но если вдруг у вас мак, то, скорее всего, вы заметили, что при наборе текста у вас двойной дефис и «простые» кавычки подменяются другими символами. То же самое творится в ворде и других текстовых процессорах.

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

Вот, собственно, весь аргумент: «такой текст приятно читать». Как правило, большинство зарубежных информационных ресурсов, вроде medium.com, уделяют огромное внимание тому, чтобы текст был оформлен по всем канонам.

Typus

Typus — это локальный типограф на Python. Очень долгое время я пользовался веб-сервисом Лебедева, однако задержка в ответе, которая неизменно появляется в работе с удаленным api, просто убивала. Поэтому я решил написать свой.

Что оно делает

  • заменяет кавычки на типографские
  • расставляет апострафы
  • расставляет короткие, длинные тире и знак минуса
  • заменяет всякие (c) на спец-символы
  • связывает союзы и предлоги неразрывным пробелом со словами, перед которыми они стоят
  • связывает числа с единицами измерения
  • расставляет всякие математические символы
  • ставит знак рубля в некоторых случаях
  • триммит, чистит, в общем, избавляет текст от лишнего «оформления»

Конечно же, все это конфигурируется (локально). Более-менее полный список с примерами доступен в доках.

Demo

Чтобы лучше понять «что происходит», можно поиграться с демкой. «Отреставрированные» части будут подсвечены (не всегда идеально).

"I don't feel very much like Pooh today..." said Pooh.
"There there," said Piglet. "I'll bring you tea and honey until you do."
- A.A. Milne, Winnie-the-Pooh

“I don’t feel very much like Pooh today…” said Pooh.
“There there,” said Piglet. “I’ll bring you tea and honey until you do.”
— A. A. Milne, Winnie-the-Pooh

diff

Стоит отметить, что результат частично зависит от выбранной вами гарнитуры. К примеру, в некоторых нет короткого неразрывного пробела, а в моноширинных многое вообще теряет смысл.

API

Ну как api. На самом деле, не знал как назвать. Но может пригодиться:

$ curl --data "text='foo'&lang=ru" https://byashimov.com/typus/api/v1/                  
{
  "text": "u00abfoou00bb"
}

Исходный код всего сайта (и апи в том числе) доступен на гитхабе.

Доки

Довольно подробно расписал что и как работает, до кучи многое покрыто доктестами. Пока только на ломанном английском.

Планы и вообще

  1. Надо бы написать plugin для InDesign и Illustrator, которые бы общались с API. Идея в том, чтобы можно было по щелчку получить полностью готовый к печати текст в выбранном текст-боксе. Однако, я давно не работаю с этими пакетами, так что, если есть желание, жду вашего пулл-реквеста )
  2. Поддержка Markdown и reStructuredText. Последнее, идеально бы, прикрутить прямо в sphinx-doc, потому что красивые доки — это хорошо и приятно.

Автор: magic4x

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js