Кто-нибудь предпочитает пропорциональные шрифты? [закрыто]

51

Я читал статью в Википедии о стиле программирования и заметил кое-что в аргументе против вертикально выровненного кода:

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

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

Джейсон Бейкер
источник
11
Мне нравятся пропорциональные шрифты для чтения, но я строго использую моноширинные шрифты для кода. Всегда, всегда, всегда.
Фрэнк Шиарар
12
Чтобы также процитировать Википедию: [citation needed]:)
доктор Ганнибал Лектер
7
Много лет назад профессор, которого я учил в колледже, шутливо сказал: «... потому что это не программирование, если это не новый курьер».
Стивен Эверс
12
Моя причина использования пропорционального шрифта очень проста. Это уже не 1980-е годы. Мы перешли от терминалов персонажей. Газеты, книги и веб-сайты обычно не используют моноширинные шрифты для удобства чтения. Я думаю, что они имеют смысл.
Тимви
4
Вердана 11px великолепна.
Чарек Томчак,

Ответы:

47

Общие точки против пропорциональных шрифтов, комментируется.

  • Вы не можете точно выровнять код по вертикали с помощью пропорциональных шрифтов. Я имею в виду, что вы могли бы точно выровнять код по вертикали с помощью пропорциональных шрифтов, если бы все использовали упругие табуляции , но увы ...
  • Некоторые пропорциональные шрифты затрудняют различение некоторых групп символов. (например, MRNM). Однако не все программные шрифты идеальны: Courier New имеет идентичные 'O' и '0' и идентичные '1' и 'l'.
  • Некоторые IDE плохо поддерживают шрифты не фиксированной ширины (например, вышеупомянутую Visual Studio или IDLE Python). В некоторых случаях вы также не можете использовать его. (например, терминалы.)
  • Выбор пропорционального шрифта для кодирования приведет вас к бесконечным священным войнам. Здесь, однако, существует проблема между клавиатурой и креслом.

Очки в пользу пропорциональных шрифтов

Лично я с удовольствием использую как шрифт Ubuntu, так и WenQuanYi Zen Hei Mono и не могу предпочесть одно другому. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 и WenQuanYi Zen Hei Mono 9, по сравнению. Здесь нет явного победителя, если вы спросите меня.

Тем не менее, шрифты, как еда. Кому-то они нравятся, округлые, другим - они острые и острые - правильного шрифта нет, или все мы будем использовать его прямо сейчас. Уя за выбор!

badp
источник
Я не осознавал, что шрифт Ubuntu был выпущен. Я думаю, что это хорошо работает там.
Алан Пирс
+1 за то, что показал мне WenQuanYi Zen Hei Mono, этот шрифт потрясающий. Я почти наверняка буду использовать это в своей диссертации. Зависит от того, насколько хорошо он выглядит напечатанным - на экране он выглядит потрясающе и не занимает много места по горизонтали, что очень важно при печати.
Конрад Рудольф
9
На самом деле, есть только одна большая жирная точка в сравнении с пропорциональной: вы не можете по-настоящему выровнять, потому что никому нет дела до упругих табуляторов. Что весьма странно, учитывая то, как это приносит пользу как моноширинным приверженцам, так и тем, кто на самом деле предпочитает читать красивые шрифты переменной ширины. Давай, мир! Эластичные таб-стопы!
Роман Старков
7
@romkyns: принять стиль отступа, который не зависит от совпадения с другими строками. Просто.
Zan Lynx
4
@ZanLynx Я так и сделал, потому что мне нравятся пропорциональные шрифты больше, чем вертикальное выравнивание в местах, отличных от начала строки.
Роман Старков
29

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

Эта функция, часто не очень полезная и не очень известная при работе с обычным текстом, необходима разработчикам. Вы можете представить себе множество сценариев: удаление //комментариев в несколько строк, добавление скобок или других символов и т. Д. Это еще более ценно с расширенной поддержкой прямоугольных выделений, как в Visual Studio 2010, где вы можете не только выделять и удалять текст, но выберите и замените его.

Давайте возьмем пример:

private IEnumerable<SELove> StackExchangeRocks()
{
    var howILoveSEWebsites = new []
    {
        new SELove { SiteName = "Stack Overflow", MyReputation = 5269,  MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Programmers",    MyReputation = 16937, MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Super User",     MyReputation = 650,   MyRating = Rating.QuiteGood,   },
        new SELove { SiteName = "Server Fault",   MyReputation = 489,   MyRating = Rating.Good,        },
        // Initialize other websites here.
    };

    return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}

private class SELove
{
    public string SiteName { get; set; }
    public int MyReputation { get; set; }
    public Rating MyRating { get; set; }
}

private enum Rating
{
    Outstanding,
    Good,
    QuiteGood,
}

В этом унаследованном коде я хочу заменить рейтинг в коде методом, который будет загружать мой рейтинг с самих сайтов Stack Exchange, чтобы всегда иметь актуальную информацию. Я начал проводить рефакторинг MyReputationсвойства, и теперь я хочу удалить инициализацию в области видимости. Представьте, что у меня не четыре, а все 84 сайта SE.

Вот что происходит при использовании Consolas , моноширинного шрифта. Я нажимаю Backspace, и все, я могу потратить оставшееся время, чтобы сделать что-то действительно полезное.

Изображение показывает, что с Consolas прямоугольник выбирает свойство репутации.

И здесь то же самое с Segoe UI . Ой!

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

Арсений Мурзенко
источник
9
Это произошло потому, что вы использовали интервал, который совпадал со шрифтом monspace. Если бы у вас был правильный интервал с пропорциональным шрифтом, у вас не было бы этой проблемы.
Кос,
6
@ Kos: так что вместо того, чтобы нажимать, скажем, три вкладки, вы нажали бы пятнадцать раз клавишу пробела, чем заметили, что вы набрали слишком много, и удалили последний пробел? Кажется, это слишком сложно, не правда ли?
Арсений Мурзенко
6
Eclipse фактически поддерживает использование другого шрифта для режима прямоугольного выбора, что делает это менее проблемным.
Николай
8
@ Kos RE: «правильный интервал w / r / t пропорционального шрифта»: но тогда, если другой программист использует другой шрифт в одном и том же файле, он не выстроится в линию. Если все редакторы используют моноширинные шрифты, они всегда будут выстраиваться (при условии, что код не использует вкладки для выравнивания).
Макс Нанаси
5
Я использую пропорциональный шрифт в течение 2 лет без каких-либо упругих табуляции. Я не использую прямоугольные выделения, потому что есть нечто, что полностью заменяет его в большинстве IDE: выбор из нескольких карет. В этом примере я выбрал бы «MyReputation =», а затем нажмите «Выбрать следующее вхождение», используя CTRL-DSublimeText и VSCode, ALT-Jв редакторах IntelliJ / JetBrains. Далее, SHIFT-CTRL-RIGHT ARROWчтобы расширить выбор до следующего токена справа, и все готово. Основным преимуществом является то, что никому не нужно выравнивать материал для редактирования. Недостатком, если вы что-то выровняли, больше не будет.
сено
15

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

Кроме того, проблемы в Visual Studio , которые Microsoft не хочет исправлять, в основном делают невозможным использование правильно разработанных пропорциональных шрифтов.

Дин Хардинг
источник
9
Мне нравится ваш комментарий мини-битва с Microsoft на эту ошибку. И их радостный ответ: «Привет! Спасибо! Приятно познакомиться! Мы ничего не сделаем. Хорошо, спасибо, что поболтали с вами!» Только представьте, если бы люди так себя
вели
2
Вы получаете одобрение за сочувствие, поскольку, хотя я не использую шрифт пропорциональной ширины по некоторым причинам, которые вы цитируете, мой внутренний типограф постоянно жаждет надлежащей поддержки редактора, как в дизайне, так и в программировании.
Джон Перди
Странно, я просто думал, что пунктуацию на самом деле сложнее дифференцировать (особенно на полных остановках), потому что она занимает меньше места. Я также помню, что Notepad ++ использовал Comic Sans MS в комментариях дольше всего.
Рассерженная шлюха
6
Если вам трудно определить пунктуацию в моноширинном шрифте, есть другие моноширинные шрифты - это не значит, что вам нужно использовать пропорциональный шрифт.
Никто
Именно для лучшей пунктуации, я иногда использую EnvyCode A или B .
Занлок
9

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

УЭО
источник
3
Я полностью согласен. А с помощью вкладок (в отличие от жестко запрограммированных пробелов) вы можете переключаться между моноширинным и пропорциональным шрифтами и соответствующим образом регулировать ширину вкладки. Однако мне еще предстоит увидеть редактор, в котором вы можете установить ширину вкладки в единицах EM.
Август Карлстром,
6

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

rwallace
источник
4
Я удивлен, что тебе нравятся Ариал и Вердана. Я нахожу их немного грубыми и непрофессиональными. Вы пробовали Calibri?
Тимви
2
Я использую 8pt Verdana. Длинные имена идентификаторов легче читать. Я могу просмотреть 70 строк кода без прокрутки, и строки намного короче, поэтому код представляет собой узкую колонку, как в газете. Это позволяет мне разделить представление редактора на две вертикальные колонки: я рассматриваю объявление в одном представлении и пишу код в другом. Также при отладке экран заполнен окнами отладки, представление кода помещается на небольшом пространстве. Использование пропорциональных шрифтов - это устранение желания выровнять вещи по вертикали и размещение звездочек вокруг комментариев.
Кальмариус
2
Я вижу 147 строк кода в Visual Studio на мониторе 1920x1200, повернутом на 90 ° для портретного режима с использованием шрифта Lucida Console.
Занлок
158 строк с шрифтом Monaco в Vim ... Мой экран даже не HD
Mark K Cowan
4

Я помню, что в книге Бьярна Страуструпа « Язык программирования C ++» для кода использовались пропотентно расположенные шрифты. (Я не могу найти образцы страниц в Интернете)

Я не помню точных причин, но думаю, что он упомянул это и одно другое изменение (я думаю, что сам язык C ++) как новое введение в эту книгу.

Лично я предпочитаю фиксированные космические. Консолас мой любимый.

Нивы
источник
1
Проверка на странице 5 моего Специального издания: пропорциональные шрифты обычно считаются более подходящими для текста, их использование позволяет сократить количество нелогичных разрывов строк, и большинство людей привыкли к этому. Мне легко читать. Страуструп представляет здесь код, а не пытается его создать, и это может изменить ситуацию.
Дэвид Торнли
4
@ Дэвид, да, он представляет код. Но он представлен для «чтения», а сам вопрос «фиксированный и пропорциональный» - для «чтения» кода, ИМХО.
Нивас
4

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

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

Обрезать шрифт

user287424
источник
4
Флориан Кастеллан
2

В средах Smalltalk, таких как Pharo, используются пропорциональные шрифты, и благодаря стилю языка они там выглядят очень хорошо. Но в языках стиля C, таких как Go или в других, таких как Erlang или Python, я предпочитаю моноширинные шрифты.

themue
источник
2

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

Вот мои выводы:

  • Большинство пропорциональных шрифтов предназначены для прозы и имеют небольшую пунктуацию (которая в свою очередь обычно составляет один или редко два символа). В семействе языков C много пунктуации, которая, на мой взгляд, выглядит не очень хорошо, и ее сложнее читать, чем необходимо.
  • Символы переменной длины означают, что длина строк варьируется. Это делает почти невозможным угадывание конца курсора при навигации с помощью кнопок со стрелками. Я нашел это раздражающим.
  • Вертикальное расстояние тоже имеет значение. Обычно это не то, что можно легко переопределить, и большинство пропорциональных шрифтов имеют меньше места между строками, чем хотелось бы.
  • Очень немногие IDE тестируются с пропорциональными шрифтами. Это освобождает место для незначительных ошибок, таких как установка курсора в неправильном месте, неправильная перерисовка символов и тому подобное.

Следовательно, я обнаружил, что это не стоило мне проблем.


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

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


источник
0

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

Для сравнения:

name1 = ["Уильям", "Шекспир", 1564, "Peotry"]

name2 = ["Джон", "Локк", 1632, "Философия"]

name3 = ["Джонатан", "Литтелл", 1967, "Проза"]

Для того, чтобы:

name1=["William",  "Shakespear", 1564, "Peotry"     ]
name2=["John",     "Locke",      1632, "Philosophy" ]
name3=["Jonathan", "Littell",    1967, "Prose"      ]

Пропорциональные шрифты просто не могут размещать эквивалентные атрибуты ровно один над другим.

Адам Матан
источник
2
Мне интересно знать, в какой среде это проблема для вас. Вы можете использовать вкладки со шрифтами пропорциональной и фиксированной ширины, чтобы выстроить их в столбцы. Проблема возникает в том случае, если вы используете пробелы вместо вкладок.
Temptar
2
@temptar: рассмотрите "iii12345", "AAA12345" и "nnn12354" один над другим. Ошибка («345») намного легче обнаружить. Вы не можете поместить вкладки в середине значения.
Адам Матан
1
Вкладки @temptar не рекомендуются Python, и их ширина варьируется в разных редакторах, что может привести к смещению кода.
Адам Матан
2
@ Adam Matan Именно поэтому вы не должны заниматься модным форматированием.
Август Карлстром,
0

Хотя я чувствую, что пропорциональные шрифты красивее, в некоторых из них, особенно шрифтах без засечек, невозможно увидеть разницу между «я» и «я». Подождите, как я снова назвал эту переменную?

Billjk
источник
2
У Verdana есть засечки на I для облегчения дифференциации.
Кальмарий
1
0 и О - еще одна серьезная проблема. Также "против" и. против тоже. Иногда & и $ - проблема (беспокоящая в perl / php). Однако Verdana хороша для большинства из вышеперечисленного, хотя не очень хороша в 0. К сожалению, в существующих проектах с вкладками, смешанными со злыми пробелами, я обычно сдаюсь и использую Lucida Console. Однако, если вы спрашиваете о присвоении имен переменным, вы не используете современное завершение кода или, по крайней мере, копирование / вставку, как следует.
Занлок
Я знаю, что одним пропорциональным шрифтом, который имеет однозначный 0Oo1lLiI, является «Latin Modern Mono Prop» от TeX, пропорционально разнесенный родственник «Latin Modern Mono», который был абсолютно спроектирован для кода (для печати, а не для экрана, хотя я считаю рендеринг немного размытым) , Пунктуация по-прежнему является проблемой, слишком малая пробел для ее важности в коде IMHO и создает неоднозначности, например, две одинарные кавычки против одной двойной кавычки: '' против ",'' vs "
Бени Чернявский-Паскин