Программисты любят псевдографику. В любом языке полно составных знаков:
Казалось бы, дело швах. Но в апреле 2014 года Ian Tuomi придумал изящный выход: заменять часто встречающиеся последовательности лигатурами. Моноширинность при этом не ломается (если сделать ширину лигатуры кратной количеству символов, в нее входящих), код тоже не портится (лигатуры — чисто визуальная фича). Зато можно вместо
Так родился шрифт Hasklig: это Адобовский Source Code Pro, дополненный лигатурами для программ на Хаскелле. Выглядит это так:
![](https://habrastorage.org/r/w1560/files/637/25a/500/63725a50074248a1b02139629413e26d.png)
Сравните с чистым Source Code Pro без лигатур:
![](https://habrastorage.org/r/w1560/files/e3b/d84/a3a/e3bd84a3a4c249d69b34358b2d4de25d.png)
Есть и нюансы: далеко не во всех редакторах это работает. Из маковских это построенные на веб-движках Atom и LightTable, BBEdit, последние сборки TextMate, про остальные смотрите в README к репозиторию. Если я правильно понимаю, очень хорошо дела обстоят у линуксовых редакторов. Будем надеяться, что если идея наберет популярность, остальные подтянутся.
У Hasklig, впрочем, есть три принципиальных недостатка: он содержит только лигатуры, присутствующие в Хаскелле, и он основан на Source Code Pro, и у него нет кириллицы.
Эти проблемы призван решить Fira Code: шрифт, основанный на открытом шрифте Fira Mono от Мозиллы, дополненный лигатурами для большинства языков программирования. Картинки:
![](https://habrastorage.org/r/w1560/files/b57/88f/685/b5788f6854cf4deeb8262a1c57681578.png)
Для сравнения:
![](https://habrastorage.org/r/w1560/files/d91/40d/ad6/d9140dad65b245e9bb566aaac186be2e.png)
Мне очень нравится это направление мысли, и я надеюсь, что оно наберет популярность: производители редакторов запилят поддержку лигатур, а у моноширинных шрифтов станет нормой выпускать шрифт с набором стандартных программерских лигатур, как сейчас является нормой включать fi, ffi и fl в пропорциональные шрифты.
->
, <=
, ++
, :=
. По смыслу это один символ, но составленный из нескольких более простых. Мозгу требуются дополнительные усилия на то, чтобы считать и объединять такие конструкции на лету. Когда-нибудь, возможно, всех спасет Юникод, где символов хватит на сто языков вперед — если придумают удобный способ ввода и отомрет всё легаси. Но пока нам приходится читать и писать код в ASCII.Казалось бы, дело швах. Но в апреле 2014 года Ian Tuomi придумал изящный выход: заменять часто встречающиеся последовательности лигатурами. Моноширинность при этом не ломается (если сделать ширину лигатуры кратной количеству символов, в нее входящих), код тоже не портится (лигатуры — чисто визуальная фича). Зато можно вместо
->
нарисовать настоящую стрелочку. Это сильно облегчает мозгу сканирование и токенизацию кода: там, где по смыслу один символ, теперь и нарисован один символ. Самое главное, что это работает с любым, даже уже написанным кодом.Так родился шрифт Hasklig: это Адобовский Source Code Pro, дополненный лигатурами для программ на Хаскелле. Выглядит это так:
![](https://habrastorage.org/files/637/25a/500/63725a50074248a1b02139629413e26d.png)
Сравните с чистым Source Code Pro без лигатур:
![](https://habrastorage.org/files/e3b/d84/a3a/e3bd84a3a4c249d69b34358b2d4de25d.png)
Есть и нюансы: далеко не во всех редакторах это работает. Из маковских это построенные на веб-движках Atom и LightTable, BBEdit, последние сборки TextMate, про остальные смотрите в README к репозиторию. Если я правильно понимаю, очень хорошо дела обстоят у линуксовых редакторов. Будем надеяться, что если идея наберет популярность, остальные подтянутся.
У Hasklig, впрочем, есть три принципиальных недостатка: он содержит только лигатуры, присутствующие в Хаскелле, и он основан на Source Code Pro, и у него нет кириллицы.
Эти проблемы призван решить Fira Code: шрифт, основанный на открытом шрифте Fira Mono от Мозиллы, дополненный лигатурами для большинства языков программирования. Картинки:
![](https://habrastorage.org/files/b57/88f/685/b5788f6854cf4deeb8262a1c57681578.png)
Для сравнения:
![](https://habrastorage.org/files/d91/40d/ad6/d9140dad65b245e9bb566aaac186be2e.png)
Мне очень нравится это направление мысли, и я надеюсь, что оно наберет популярность: производители редакторов запилят поддержку лигатур, а у моноширинных шрифтов станет нормой выпускать шрифт с набором стандартных программерских лигатур, как сейчас является нормой включать fi, ffi и fl в пропорциональные шрифты.