Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

Я ранжировал шрифты по следующим показателям:

  • Насколько различимы схожие символы, такие как 0O, 1lI.
  • Легко ли читается шрифт (ширина строк, ширина/высота символов).
  • И мои личные предпочтения!

Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.

1. Hack


Hack — свободный шрифт, специально разработанный для исходного кода и основанный на проектах Bitstream Vera и DejaVu. 0O и 1lI чётко различимы, а шрифт в целом легко читается. Особенно мне понравился ноль с вертикальной прорезью.



2. DejaVu Sans Mono


Производный шрифт от Bitstream Vera. Это тоже хороший вариант со свободной лицензией. Sans Mono ясно различает 0O и 1lI. Точка внутри 0 не так заметна, как у Hack, но в целом шрифт удобен.



3. Monaco


Monaco использовался по умолчанию в OSX до выхода Snow Leopard. Символы хорошо различаются, поэтому трудно спутать 0O и 1lI. Этот шрифт мне нравится из-за его особого стиля, как будто снова возвращаешься в OSX (сейчас я в основном использую Ubuntu).



4. Source Code Pro


Source Code Pro разработан компанией Adobe. В целом текст выглядит чётче других шрифтов, не говоря уже о хорошей различимости символов.



5. Menlo


Menlo — новый шрифт по умолчанию в macOS для Xcode и Terminal. Это производная от DejaVu Sans Mono. Лично мне больше нравится Monaco, так как я давно использую OSX, но Menlo тоже хороший выбор для программирования.



Дополнение: Menlo больше не шрифт по умолчанию в macOS. В версии High Sierra шрифт по умолчанию изменили на San Francisco Mono, что тоже отличный выбор для программирования. Спасибо Ивану Кантарино и p13t3rm.

6. Consolas


Consolas — шрифт по умолчанию в Visual Studio. Он очень популярен, потому что поставляется с Windows. Лично мне не очень нравится символ l, потому что его легко спутать с 1.



7. Space Mono


Space Mono разработан Colophon Foundry и это отличный моноширинный шрифт. Отмечу два недостатка: 1) l можно спутать с 1; 2) , не отличается от . на размере шрифта в 14 пунктов.



8. FiraCode


FiraCode поддерживает лигатуры, то есть может объединить два или более символов в один символ, чтобы облегчить чтение кода. Обратите внимание на !=, <=, и == на скриншоте. Лично я привык к оригинальным символам, а лигатуры немного меня путают. Но кому-то такой шрифт может понравиться.



Примечание: для активации лигатур в VSCode нужно добавить следующую строку.

"editor.fontLigatures": true,

9. Anonymous Pro


Мне нравится Anonymous Pro, потому что он даёт ощущение пишущей машинки. Кроме того, здесь символ < более узкий, чем в Hack, так что он больше похож на знак.



10. IBM 3270


IBM 3270 основан на шрифте, который использовался в консоли IBM 3270, выпущенной IBM в 1971 году. Этот шрифт отлично подходит для программирования и выполнен в стиле ретро (хотя мне он не совсем привычен).



Обратите внимание, что этот шрифт относительно небольшой, поэтому предлагаю увеличить размер шрифта и уменьшить высоту строки, чтобы сделать его более читаемым на экране.

"editor.lineHeight": 20,
"editor.fontSize": 14,

11. Droid Sans Mono


Droid Sans создан для Android и очень красив. Но самая большая проблема в том, что у него нет нуля с прорезью, поэтому 0 и O не различимы.



Дополнение: Для Droid Sans Mono созданы варианты, где есть ноль с перечёркиванием и точкой. Спасибо hawtre smith.



Спасибо за чтение! Надеюсь, эта статья поможет вам найти новый шрифт для IDE или консоли! Пожалуйста, порекомендуйте эту статью другим, если она вам понравилась!

ДОПОЛНЕНИЕ:

Я получил отклики о других шрифтах для программирования. Да, все они замечательные, полностью согласен! Основная цель этой статьи — обеспечить начальную базу для тех, у кого мало опыта с разнообразными шрифтами, поэтому постараюсь сохранить минимальный список и не перегружать людей. Но спасибо всем за отзывы. С удовольствием попробую в повседневной работе шрифт, которые вы упомянули.

Комментарии (111)


  1. x893
    21.05.2018 10:17
    +1

    Iosevka?


    1. fareloz
      22.05.2018 18:41
      +2

      вот и наглядный пример когда шрифт важен. Вместо иосевки искал лосевку(


  1. EndUser
    21.05.2018 10:37
    +3

    1. Ritorno
      21.05.2018 19:22

      Пожалуй, этот комментарий гораздо полезнее самой статьи, в которой просто представлены скриншоты [практически идентичных шрифтов] без акцента на различиях.


    1. trdm
      24.05.2018 05:14

      если отключить Font Anti-Alias: off, то некоторые шрифты выглядят очень погано — некоторые палки жирные, некоторые тонкие, изображение рваное.
      По этому софт, который не использует Anti-Alias будет выглядеть ужасно с этими шрифтами.
      https://prnt.sc/jlv3jo
      интересно, какова стоимость технологии Anti-Alias в тиках процессора?


      1. EndUser
        24.05.2018 05:27

        У меня anti-aliasing в системе выключен, так как меня он не устраивает до рези в глазах.
        У меня он настолько полностью выключен, что я и в браузере сделал автозамену всего на Verdana (и это одна из причин, почему я не могу пользоваться Google Chrome).
        Что любопытно, за мои сообщения о выключенном aa или подмене веб-шрифта здешние коллеги всегда насыпают мне минусов. Видать, страдает душа художника, который страстно наваливает гарнитуры в своё поделие.
        Поэтому лично я выбираю pixel perfect экранные шрифты, а на принтере разницы между качеством Verdana и векторным Arial я не обнаруживаю.

        В частности, на предложенном вами скриншоте именно видно, что пиксельные шрифты, вроде Lucida Console, Andale Mono или Dina выглядят терпимо, по сравнению с…


        1. trdm
          24.05.2018 07:03

          Да, у меня схожая проблема с глазами, почему то от АА начинается резь в глазах и быстро устают.
          по этому шрифты, которые нуждаются в АА для нормальной отрисовки я не использую. Обычно в IDE у меня Courier.
          https://prnt.sc/jlvtn3
          https://prnt.sc/jlvvbx — скрин поясняет, почему важна кириллица.


  1. Harrix
    21.05.2018 10:40

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


    Сам же почти полностью перешел на Roboto Mono от Google.




    Код из примера в статье
        uppercase_sample = 'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
        lowercase_sample = 'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя'
        digit_sample = '0123456789'
        if keras.backend.image_dim_ordering != 'tf' and count <= 100:
            keras.backend.set_image_dim_ordering('tf')
            print("INFO: '~/.keras/keras.json' sets 'image_dim_ordering' to "
                "'th', temporarily settings to 'tf'")
    
        # Create TF session and set as KERAS backend session
        sess = tf.Session()
        keras.backend.set_session(sess)
    
        # Get MNIST test data
        X_train, Y_train, X_test, Y_test = data_mnist(train_start=train_start,
                                                      train_end=train_end,
                                                      train_start=train_start,
                                                      train_end=train_end)
    
        assert Y_train.shape[1] == 10


    1. Leopotam
      21.05.2018 11:04
      -3

      Локализация в коде? Треш же, локализованные вещи всегда должны быть вынесены во внешние ресурсы, а комментарии написаны на английском.


      1. dmpas
        21.05.2018 11:07

        Зачем локализация? Существует и код на кириллице.


        1. Leopotam
          21.05.2018 11:08

          Сомневаюсь, что пользователи 1С ставят какие-то кастомные шрифты.


          1. panoplied
            21.05.2018 21:21
            -1

            1C не единственный код на кириллице.


      1. Harrix
        21.05.2018 11:19
        +2

        Если комментарий про русские буквы на скриншотах, то это исключительно для примера отображения кириллицы сделано.

        Если комментарий про русские буквы (и другие языки, отличные от английского) в коде вообще, то это странный довод.
        1. В ИДЕАЛЕ нужно локализованные вещи выносить во внешние ресурсы. Ситуаций, когда этот идеал недостижим или просто не используется, масса. А потом слушать вещи: «У вас в коде используется русские буквы, а это нехорошо, поэтому у вас крякозябры отображаются или отображаются другим шрифтом» — это бред. Например, по этой причине ушел с Evernote.
        2. Существует масса ситуаций, когда комментарии ДОЛЖНЫ быть на русском языке (например, в учебных примерах).
        3. Вынесли, как нужно, локализацию во внешние ресурсы. А эти внешние ресурсы просматривать теперь другим редактором?
        4. А, как просматривать, например, локализованную документацию в формате Markdown?
        5. И, например, в том же Visual Studio Code люди работают только с исходными кодами? Другие текстовые файлы нужно в других программах читать и редактировать?


        1. Leopotam
          21.05.2018 11:25
          -2

          1. Не в идеале, а всегда. Попробуйте поработать в международной команде.
          2. В случае обучающих материалов какая вообще речь про кастомные шрифты? Ну и учить такому не нужно изначально.
          3. Разумеется, в редакторах с поддержкой либо всех возможных локализаций (что маловероятно), либо в редакторах, заточенных под конкретную локаль. Как пример, могу посоветовать поработать с RTL языками и посмешивать их в одной строке с LTR, чтобы почувствовать ад.
          4. Документация — это код? Разговор был именно про код, маркдаун обычно используется для разметки текста и последующего «рендера» во что-то более удобное типа html.
          5. Опять же, это выбор людей — использовать микроскоп для любой задачи. Я же говорю исключительно про исходный код, который должен оставаться транспортабельным между терминальной консолью / блокнотом / навроченной IDE. Именно по этой причине я использую FiraCode — для людей, видящих мой экран, это может выглядеть ужасно, но я знаю, что внутри оно остается нормальным plain текстом, который будет работать везде одинаково независимо от настроек OS / IDE.


          1. Harrix
            21.05.2018 11:39

            1. А если работаешь не в международной команде? Идеальный код, написанный по всем code style с правильной документацией и так далее — это редкое явление. Вот, например, статья про проблемы в Яндексе https://habr.com/company/yandex/blog/341192/
            2. А почему обучающие материалы должны быть оделены кастомными шрифтами? О_о Например, кастомные шрифты на сайтах с примерами кода.
            «Ну и учить такому не нужно изначально» — я вот, например, работаю дополнительно со школьниками. Посмотрю на вас, как вы будете им давать код только на английском.
            3. «Разумеется, в редакторах с поддержкой либо всех возможных локализаций (что маловероятно), либо в редакторах, заточенных под конкретную локаль.» Зачем использовать несколько программ, если можно использовать одну с нормальным шрифтом?
            «могу посоветовать поработать с RTL языками и посмешивать их в одной строке с LTR» — это уже отдельная специфика.
            4. Разговор в статье шел не про код, а про «шрифты для программирования». И программист в процессе работы использует не только файлы кодов в своей работе. А если следовать вашей логике, где говорите только про код, то программисту для разных задач нужно использовать разные программы.


            1. Leopotam
              21.05.2018 11:51
              -3

              1. «Плох тот солдат, который не мечтает стать генералом» (с), всегда нужно смотреть вперед и думать о будущем. Ну а если серьезно, то нужно следовать codestyle-правилам команды: если в нем указано «используем русские комментарии везде» — используем только русские буковки, если нет — нет.
              2. Зависит от языка, но если вы не преподаете 1С, то все популярные языки — на латинице (это про «давать код только на английском»). Про комментарии нужно объяснять, что код пишут не один раз и его кто-то будет поддерживать в будущем, поэтому он либо не должен требовать комментариев вообще, либо комментарии должны быть написаны четко, кратко и понятно для всех потенциальных пользователей. Это не значит, что нужно от них требовать запрета кириллицы, но об это следует обязательно рассказать как преподавателю.
              3. Случаи бывают разные и «это уже отдельная специфика.» — это не специфика, а конкретный пример, когда приложение было вроде бы как на Европу рассчитано, а потом внезапно пошло в Саудовскую Аравию и Сирию.
              4. Если уж на то пошло — программисту не следует править ничего, кроме кода. Да, он может накидать образец локализованных данных на английском, который потом будет подправляться носителем языка + будет использоваться для локализации на другие языки. Это не его задача, для этого есть менее «дешевые» сотрудники, которые потратят меньше денег работодателя за тот же час работы — так работает бизнес, тут уж ничего не поделаешь.


              1. DrPass
                21.05.2018 16:59
                -1

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

                Программист — не солдат, и он должен руководствоваться здравым смыслом, а не железобетонным шаблоном поведения. Выносить текстовки в ресурсы — это всегда дополнительная работа и дополнительное время. И для приложений, которым никогда (или хотя бы в сколь-нибудь обозримом будущем) не потребуется локализация на другие языки, тратить время на фен-шуйное хранение текстовок — просто работа ради работы, бесполезная растрата вашего времени. Раньше выпустить продукт заказчику без правильной локализации, в данном случае правильно и разумно.


              1. Harrix
                21.05.2018 18:26
                +1

                1. Не всегда нужно думать об отдаленном будущем. Например, есть ТЗ, есть бюджет, есть сроки — и если написание идеального кода не укладывается в указанные условия, то идеальный код не пишем. И это правильно. Но вы хотя бы признали, что есть случаи, когда русские буквы могут использоваться в коде.
                2. «но об это следует обязательно рассказать как преподавателю.» А вы думаете, что об этом не рассказываю? Конечно, рассказываю. Но если, например, я дам школьникам учебный пример с поясняющими комментариями на английском, то поясняющие комментарии свою роль потеряют.
                3. Это специфическая задача, которая требует специальных средств. И тот факт, что вы для своей задачи не смогли найти много подходящих инструментов, это и подтверждает. Разработчики программ не тратят время на проработку этой проблемы, так как проблема не распространенная и специфическая. Тогда как частое наличие в программистских шрифтах букв других языков свидетельствует о том, что вот этот момент востребован программистами.
                4. Теперь вы еще и программиста ограничиваете в своей работе. И сколько вы знаете программистов, которые занимаются только кодом и никогда другие текстовые файлы не правят? Например, я таких не знаю.


              1. mayorovp
                22.05.2018 10:02

                Что-то я не пойму, у вас что ли сначала программист переводит свои мысли на неродной английский, а потом приходит переводчик и переводит их обратно на русский?


                Может быть, для кого-то это действительно так, но ведь есть и русские программы, которые изначально пишутся на русском а потом уже может быть переводятся на английский...


          1. turone
            21.05.2018 11:57

            а как же регулярки? или мне отказаться от работ с кириллицей?


            1. Leopotam
              21.05.2018 12:01

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


              1. turone
                21.05.2018 12:12

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


              1. faiwer
                21.05.2018 12:33

                А почему вы всё время говорите о локализации? Те же самые регулярки с кириллицей, я думаю, редко касаются локализации. Последний раз у меня это была обработка документов. И регулярок с кириллицей там было много. Никакого отношения к локализации они, конечно же, не имели. Это была именно часть бизнес-логики. Я уверен, достаточно много существует проектов, жёстко завязанных на конкретную группу языков.


                1. Leopotam
                  21.05.2018 12:42

                  Локализация — это не обязательный мультиязык, а использование локали для обработки / отображения данных. Если только один язык и не хочется думать о расширении — можно и захардкодить.


                  1. faiwer
                    21.05.2018 13:20

                    Я бы не стал относить обработку документов к локализации. Скажем у меня это была обработка текстов законодательных актов. Ни о каком расширении речи не идёт, они имеют заданные языки. И разные блоки их обработки, в зависимости от языка, на котором они написаны, ввиду разных грамматик, алфавитов, лексики и прочих тонкостей. Не уверен, что тут уместно слово захардкодить. Это могут быть разные классы/сущности, наследуемые от одного родителя. И это будет кириллица, арабица, что-угодно в код файлов.


                1. masai
                  21.05.2018 20:17
                  +4

                  А почему вы всё время говорите о локализации? Те же самые регулярки с кириллицей, я думаю, редко касаются локализации.

                  Более того, моноширинные шрифты — это не всегда код. Это может быть и терминал, где программа что-то выдаёт кириллицей.


          1. ainoneko
            22.05.2018 14:12

            Документация — это код? Разговор был именно про код, маркдаун обычно используется для разметки текста и последующего «рендера» во что-то более удобное типа html.
            Вы будете смеяться, но бывает: Курс «Техническая документация в IT-проектах», лекция 8 («Лекция 8, о методологии docs as code.»)


        1. oldbie
          21.05.2018 15:26

          Например, по этой причине ушел с Evernote.

          сори за оффтоп, а куда ушли, если не секрет


          1. Harrix
            21.05.2018 18:33

            Пока на Onenote. Но думаю, что не долго на нем продержусь. Boostnote также приглянулся, но чувствую, что придется пилить свой велосипед под свои хотелки.


            1. mr-m
              21.05.2018 21:21

              Посмотрите на Notion, он выглядит довольно гибким.


      1. slovak
        21.05.2018 11:31
        +1

        Внешние ресурсы (тот же xml, json, yaml итд) обычно в том же редакторе или IDE, что и код редактируются. Как вы представляете локализацию в этом случае?


        1. Leopotam
          21.05.2018 11:35
          -1

          Локализация — всегда боль, особенно для разных направлений написания. На данный момент не существует редактора, работающего без ошибок при одновременном использовании написания слева-направо и справа-налево, особенно в одном документе. Мы использовали для этого google docs sheets, но приходилось руками форсированно выставлять направление + без остановки отдавать приложение (были проблемы и с рендером в самом приложении) на вычитку носителям языков.


          1. Barbaresk
            22.05.2018 09:00
            +2

            Удивительно, вам задали один вопрос, а вы ответили на какой-то свой вопрос в своей голове. Как уж на сковородке вертитесь… Вы, видимо, теоретик, оторванный от практики и не писали ничего в сжатые сроки со сжатым бюджетом, про поддержку легаси я уж не говорю.


      1. faiwer
        21.05.2018 11:46

        Показывать содержимое XML & JSON одним шрифтом, а код другим? Смотреть сторонний код, где может быть кириллица в коде — в другом редакторе? А ещё кириллица может быть в коде (да и не только она) вне комментариев. К примеру какие-нибудь языковые костыли, регулярные выражения и пр… Или регулярные выражения тоже будем выносить в отдельные файлы? Полагаю, что я ещё что-нибудь не учёл.


        1. Alek_roebuck
          21.05.2018 20:01
          +1

          Или регулярные выражения тоже будем выносить в отдельные файлы?

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


      1. daggert
        21.05.2018 12:37
        +6

        Да идите вы в пионерлагерь, со своими идеями про обязательный английский в комментариях.

        Я делаю продукт ориентированный на 10-20 программистов работающих в РФ и не планирую даже локализацию подключать, ибо никому за пределами стен институтов не нужен данный ресурс — мне удобней писать развернутый комментарий и документацию на русском языке. Тем кто делает модули — удобней читать и дополнять ее на русском. Мне не надо думать над фразами, мне не надо думать что один на английском говорит и думает, я знаю на уровне понимать/писать, а студент который работает над проектом вообще в английском через гугл-транслейт сидит.

        Просто примите как реальность: комментарии на родном для автора языке — это норма для небольших проектов, коих большинство.


        1. Color
          22.05.2018 11:48

          Да и не только для небольших. Есть крупрые энтерпрайз-проекты и целые компании, ориентированные только на русский сегмент. У них часто прямо в гайдлайнах прописано, что в комментах использовать русский язык.


          1. guai
            22.05.2018 12:51

            Во-во. Мы субподрядчик РЖД, если и есть нормативный документ с переводом терминологии на другие языки, я его не видел.
            Уж лучше писать по-русски, чем когда в каждой команде возникнет свой вариант перевода, да еще транслит частенько проскакивает, если не осилили.
            Плюс смена языка является неплохим маркером, где у нас бизнес-логика, а где код ядра, либ и тому подобного, что тоже бывает полезно.


      1. Mabu
        21.05.2018 12:58

        Ад, а ещё все профессиональные программисты разговаривают только на английском языке.


        1. Whuthering
          21.05.2018 13:43
          +2

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


          1. Ndochp
            22.05.2018 10:17

            Ну читаю я по английски тех литературу, но комментарии по бизнес логике сецифичны для области бизнеса. И если он в России, то 95%, что я не знаю как тот термин из описания задачи (который я по русски то узнал на прошлой неделе) пишется на английском языке. И тот, кто поддерживать код будет — тоже не знает. А комменты должны быть во многом про бизнес, а не про код. Код сам себя комментирует.


      1. domix32
        21.05.2018 17:35
        -1

        Комментарии тоже для слабаков, да.


      1. markmariner
        22.05.2018 14:38

        Почему комментарии на английском? Я без стёба, серьёзно спрашиваю.


      1. acsel31
        23.05.2018 12:13
        -1

        Внешние ресурсы тоже надо в редакторе открывать.


      1. trdm
        24.05.2018 05:29
        +1

        Русский человек прежде всего должен заботиться о соотечественниках, а уже потом об иностранцах.
        Если им надо, то помочь с локализацией — не проблема. Поможем.
        Но соотечественники — прежде всего.


  1. darthsergious
    21.05.2018 10:43

    San Francisco Mono (SF Mono)


  1. develop7
    21.05.2018 10:44

    PragmataPro (я его, правда, ещё в 2011 покупал по скидке).


    1. rinnaatt
      21.05.2018 11:57

      Мне он тоже нравился за его "узкость" тем самым он экономит место по ширине. Но у бесплатного варианта была ограниченная поддержка символов, думал купить, но цена в тот момент меня шокировала. Потом "нашёл" похожий бесплатный шрифт Iosevka — и он меня полностью устроил, я его даже в терминале ставлю (Iosevka Term).


    1. vsb
      21.05.2018 20:42
      +1

      Тоже пользуюсь, пожалуй самая неоднозначная покупка в моей жизни. Но сам шрифт хорош именно тем, что позволяет вместить больше по горизонтали. У меня зрение не ахти, стандартно ставлю везде 20-24 размер шрифта и с другими шрифтами вмещается ощутимо меньше символов.


    1. VanDamM
      22.05.2018 14:09

      +1 Pragmata Pro очень хорош, пользуюсь уже несколько лет


  1. iPilot
    21.05.2018 11:13
    +1

    Различимость символов это, конечно, важно. Но, зачем тогда скриншоты из «продвинутого» текстового редактора, который реализует цветовую дифференциацию символов и слов?


    1. Rsa97
      21.05.2018 11:59

      Например, строки «INFO» и «INF0» будут показаны одним цветом.
      Так что цветовая дифференциация штанов элементов не отменяет необходимости в различимых символах.


  1. Goodkat
    21.05.2018 11:55
    +2

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


    1. sumanai
      21.05.2018 19:33

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


  1. koldoon
    21.05.2018 12:01
    +1

    Небольшое замечание: «легко ли читается шрифт» еще зависит от физического разрешения экрана. Когда я перешел на mac retina для меня многие привычные шрифты стали выглядеть сильно по-другому.


  1. maxvape
    21.05.2018 12:19

    IBM Plex Mono


  1. berezuev
    21.05.2018 12:21

    Оффтоп: А есть какой-то аналог виндового ClearType в убунте? А то здесь от любого шрифта начинают болеть глаза.


    1. staticlab
      21.05.2018 16:05

      Субпиксельное сглаживание есть, но сильно зависит от дистрибутива и его версии. Например, у меня в Xubuntu 16.04 всё шикарно, а вот 18.04 даёт жуткое мыло как при апгрейде, так и при чистой установке.


    1. rinnaatt
      22.05.2018 12:31

      В винде просто включается сглаживается, в убунту нужно настраивать три отдельных параметра: "Hinting", "Antialiasing", "RGBA order". Нужно подбирать эмпирически, так как зависит от монитора и от предпочтений. Например я использую Linux Mint (основан на убунту) и поставил так:
      Hinting — "Slight", Antialiasing — "Rgba", RGBA Order — "RGBA". Посмотреть скриншот


      1. mastan
        22.05.2018 20:50

        В винде тоже настраивается. Называется «Средство настройки текста ClearType», в последних осях уже встроен и ищется поиском по «cleartype» в главном меню или запуском cttune.exe.
        В стародавние времена была даже утилита ClearType PowerToy для WinXP.
        См. www.howtogeek.com/howto/windows-vista/tune-your-cleartype-font-settings-in-windows-vista


  1. achekalin
    21.05.2018 12:40
    -3

    Все скриншоты сделаны в VSCode на одном фрагменте кода

    Перевод такой перевод. Разговор идет о том, что человек взял одну версию VSC, и в ней, тем же кодом рендеринга и в том же ОС, вывел все эти гарнитуры?

    Что касается отрисовки, то сильно, конечно, интересно, как эти фонты отрисовываются в условиях включенного и отключенного Cleartype, потому что для иных шрифтов это принципиально важно, вплоть до невозможномть использовать.

    P.S. Почему было не написать подобную статью, но самому, взяв все те же (или еще и другие) шрифты и попробовав вывести не только латинские, но и, в т.ч., русский символы? Сайт, как бы сказать, русскоязычный, аудитория была бы не в претензии. А то перевод «неизвестного автора» (автор, конечно, у оригинала есть, но кто он, и почему верить его «я опробовал много шрифтов и выбрал следующие для вас» выводам — непонятно), да еще не очень вдумчивый, а тема-то довольно благодатна: делай скриншоты да пости.


  1. Cassar
    21.05.2018 12:58

    Странно, что никто не упомянул Inconsolata
    image


  1. Mabu
    21.05.2018 13:18
    -1

    Моноширинные шрифты не используются мной.
    Периодически меняю шрифты и стили в редакторе, чтобы глаза не замыливались.


    1. extempl
      24.05.2018 12:07
      +1

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


  1. nightwolf_du
    21.05.2018 13:28
    +1

    На постоянной основе пользуюсь FiraCode в Vs2017 около двух лет.
    Спасибо человеку, который подсказал в своё время.
    Лигатуры — вещь. Сильно облегчают «видение» операторов.


    1. dmitrytorshin
      21.05.2018 16:34

      Согласен, от лигатур отказаться уже не смогу.
      Использую DejaVu Sans Code, т.к. изначально привык к DejaVu Sans Mono.


      1. extempl
        24.05.2018 12:09

        Единственный минус в лигатурах — они оставляют место отведённое под изначальное кол-во символов (например тройное тире будет либо длиной в === либо с пробелами =). От этого внедрить лигатуры (мне) довольно сложно.


        1. dmitrytorshin
          24.05.2018 14:36

          Я считаю это плюсом — моноширность шрифта должна сохраняться, по очевидным причинам.


  1. manny21
    21.05.2018 13:38

    Terminus

    image


    1. SergeiMinaev
      23.05.2018 09:30

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


  1. loqiue
    21.05.2018 13:59

    Советую также посмотреть на Monoid


  1. Beholder
    21.05.2018 14:06

    Hack, DejaVu Sans Mono, Menlo, Droid Sans Mono и Bitstream Vera Sans Mono являются в приципе одним и тем же, с некоторыми вариациями.


  1. workless
    21.05.2018 14:30

    В этом году пересел на Input (до этого были Meslo LG\Hack\DejaVu)
    input.fontbureau.com

    Правда для Visual Studio (не Code) надо получить «спец» версию
    input.fontbureau.com/workarounds


    1. SayLovePlz
      21.05.2018 15:49

      Плюсую. Input Mono шикарен.


  1. m52
    21.05.2018 14:38

    Продолжаю пользоваться consolas. Для меня очень важно, чтобы у шрифта была харизма и индивидуальность. Это есть например у consolas и monaco.


    1. Harrix
      21.05.2018 18:31

      Шикарный шрифт. Жалко, что распространяется не по свободной лицензии(


    1. extempl
      24.05.2018 12:09

      Да, много перепробовал, но кругленькие буквы Consolas сложно на что-нибудь променять.


  1. maxdm
    21.05.2018 15:43
    +1

    Коллеги, сможете подсказать шрифт, в котором латинские и русские одинаковые символы отличаются (например, С и C)?


    1. eisaev
      22.05.2018 13:00

      Я использую последнюю версию Hack перед «исправлением» этого отличия. Подробности здесь.


  1. Juma
    21.05.2018 16:04

    Для меня одна из главных проблем шрифтов в VS Code — это то что почти все шрифты на тёмном фоне выглядят полужирными. И чем выше контраст у текста с фоном тем жирнее вглядит шрифт. Но эта проблема глубже, в хроме все так же.


    1. YemSalat
      21.05.2018 23:27

      А какая у вас система? На маке можно через css сглаживание поправить (на винде не очень работает).


      1. Juma
        21.05.2018 23:32

        Windows 10. Но на маке с ретиной такой эффект будет не сильно заметен. Так как этот эффект уменьшается с увеличением размера шрифта (в пикселях).


  1. parmactep
    21.05.2018 16:05

    Много лет использую Cousine. Среди достоинств — он не слишком широкий и работает одинаково нормально на всех используемых мной ОС.
    image


    1. nurik_6
      22.05.2018 09:01

      Плюсую. Использовал раньше consolas, потом подсел на шрифт Cousine. Есть поддержка кириллицы. Как преимущество, так же хорошо читабелен как consolas на экранах с низким PPI. Нуль с с точкой.


  1. acedened
    21.05.2018 16:15

    Какой смысл показывать шрифты с таким ужасным сглаживанием?


    1. YemSalat
      21.05.2018 23:29

      Вот тот же вопрос. Причем человек пишет что работает на маке — уж мог мы с нормального экрана сделать скрины, а то на ретине на это смотреть — слезы наворачиваются.


      1. YemSalat
        22.05.2018 05:59

        Ради прикола сделал скрин. У меня шрифт по умолчанию в VS Code (по-видимому это Menlo)
        В нормальном сглаживании он выглядит лучше чем любой шрифт из статьи (попробуйте зазумить скриншот и сравнить) — таким образом становится понятно что статья мощно теряет актуальность из-за корявого подхода автора к presentation'y

        Заголовок спойлера
        image


        1. faiwer
          22.05.2018 07:41

          YemSalat, на разных мониторах с разным DPI шрифты выглядят по-разному. Вплоть до того, что люди покупают себе мониторы с заданным комфортным DPI для однопиксельных шрифтов. У меня 3 монитора, у всех свой DPI. Проводя окно между ними я вижу надписи по-разному. Это я к чему? К тому что нет никакого смысла обсуждать сглаживание шрифтов по скриншотам. Надо быть физически рядом, чтобы сказать своё фи. А не то получается, как в анекдоте про Шаляпина и телефон.


          1. YemSalat
            22.05.2018 10:58

            Я с вами в целом согласен (у самого несколько мониторов с разным разрешением), но все-таки, согласитесь, есть какой-то «предел» после которого мы оба согласимся что картинка выглядит «мыльно» и т.п. На мой взгляд в скриншотах к статье этот предел был достигнут.


  1. zlob
    21.05.2018 16:33

    Liberation mono


  1. kemsky
    21.05.2018 18:42
    +2

    FiraCode давно приглянулся, использую его в Идее и Райдере, они как раз добавили поддержку лигатур.


  1. alexeiz
    21.05.2018 19:43
    -1

    Iosevka и FiraCode. Остальное всё так себе.


  1. kalininmr
    21.05.2018 19:47

    в Monaco ужасны некоторые символы — например m.
    очень хорошо что поменяли


  1. POPSuL
    22.05.2018 03:14

    А я вот пользуюсь шрифтом Ayuthaya, он почти такой же как и Monaco, но как мне кажется, немного приятнее. А может быть я ошибаюсь и он точно такой же как Monaco...


    Заголовок спойлера


  1. stryaponoff
    22.05.2018 06:24

    У Source Code Pro ещё есть форк Hasklig с поддержкой лигатур


  1. KirillGuzenko
    22.05.2018 08:00

    Пару лет назад нашел для себя Fantasque sans mono, и с тех пор не меняю шрифтimage


  1. Dmitresso
    22.05.2018 09:03

    Без лигатур есть Fira Mono


  1. BUY33
    22.05.2018 10:39

    А как же Input? Настроить можно как угодно. Внешний вид l и 1, o и 0 в том числе.

    input.fontbureau.com


  1. eisaev
    22.05.2018 12:53

    Использую Hack, но, к сожалению, не последние версии, т.к. авторы убили самое привлекательное в нём для меня (читай IMHO, чтоб не было в ответах нечистот «ненужно») — различные начертания кириллической «с» (эс) и латинской «c» (си). Когда моноширинный шрифт используется не только при написании кода, визуальное отличие этих символов очень важно. Да и в уже упомянутых регулярках оно может всплывать и во вполне реальном коде. Комментарии авторов на мои замечания были из разряда «это же уродство» и «ненужно». Вот так вот лучший (опять же IMHO) «технический» шрифт был изменён в угоду «дизигна».


    1. DrPass
      22.05.2018 14:22

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

      Просто ради любопытства, сколько раз у вас в жизни случалось, что вы сомневались, какая там буква «с», из кириллицы или латиницы? Просто например у меня за два десятка лет работы программистом такие сомнения были раза два, ну максимум три. Я бы (моё ИМХО) в таком случае тоже предпочел бы дизигн вместо юзабилити.


      1. eisaev
        22.05.2018 16:14
        +1

        Несколько раз доходил до hex-редактора в поисках истины, так что мои предпочтения просто сформировались на основании полученного опыта. Не оспариваю, что опыт и тяга к прекрасному у всех разная.


    1. snp
      23.05.2018 10:17

      А почему именно про разницу c/с речь? А o/о или p/р и другие одинаковые по начертанию буквы?


      Вообще, радикальным решением было бы настройка разных шрифтов для разных диапазонов символов. Например, по дефолту Iosevka, а для кириллицы — IBM 3270.


      1. vconst
        23.05.2018 10:26

        С и C находятся на одной клавише.


        1. eisaev
          23.05.2018 11:08

          Опередили. Конечно же дело в коварном расположении на клавиатуре.


          1. vconst
            23.05.2018 11:13

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

            И это меньшая из проблем, потому что иногда менеджеры путают ширину с высотой…


            1. snp
              23.05.2018 11:31

              Иногда в работе мозги так закипают, что можно, например, если хотел напечатать «p», то по ошибке вместо кнопки с p/з нажать h/р; или, что хуже, начинаешь делать ошибки в духе «пишы» или «ачевидно», хотя всю жизнь грамотно писал.


              И менеджеров можно понять.


        1. snp
          23.05.2018 11:26

          Ну… Не так всё однозначно. Обычно при кодинге раскладка на англ. включена, с чего бы русской букве оказаться? Ну и вероятность того, что человек переключился на русский > забыл об этом > решил написать одну букву c/с > отвлёкся > забыл, в каком алфавите её набрал, практически нулевая. Скорее чаще случается, когда пишешь несколько букв разом, видишь, что не в той раскладке, сразу удаляешь.


          По-моему, проблема гораздо менее актуальна, чем кажется.


          1. vconst
            23.05.2018 11:36

            При написании кода может и не очень актуально, но если приходится часто переключаться на русский и обратно — то проблема возникает чаще, чем хочется. А когда закипают мозги, можно еще и не такое напутать…


          1. eisaev
            23.05.2018 12:04

            У меня все случаи перепутанных c/с были связаны не с кодом, набитым мною, а с пришедшими из вне данными: входные текстовые данные для обработки (привет выгрузки всяких там *АИС) и имена папок/файлов, которые «всё правильно же написано, но не видит».


  1. skssxf
    23.05.2018 19:45

    Перепробовал большую часть из упомянутых, но остался на Courier New, 10.


    1. sumanai
      23.05.2018 22:22

      Не мелко? У меня 14 стоит.