Хтось віддає перевагу пропорційним шрифтам? [зачинено]


51

Я читав статтю wikipedia про стиль програмування і помітив щось в аргументі проти вертикально вирівняного коду:

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

Якщо чесно, я не думаю, що я ніколи не зустрічав програміста, який віддав перевагу пропорційному шрифту. Я також не можу придумати жодних справді вагомих причин їх використання. Чому хтось віддасть перевагу пропорційному шрифту?


11
Мені подобаються пропорційні шрифти для читання, але я строго використовую одноразові шрифти для коду. Завжди, завжди, завжди.
Френк Ширар

12
Цитую також Вікіпедію: [citation needed]:)
доктор Ганнібал Лектер

7
Багато років тому професор, який я мав у коледжі, на жарт сказав: "... тому що це не програмування, якщо це не новий кур'єр".
Стівен Еверс

12
Моя причина використання пропорційного шрифту дуже проста. Це вже не 1980-ті. Ми перейшли від символьних терміналів. Газети, книги та веб-сайти, як правило, не використовують шрифти однопросторових міркувань з міркувань читальності. Я думаю, що вони мають крапку.
Тімві

4
Verdana 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, порівняно. Тут немає чіткого переможця, якщо ви запитаєте мене.

Однак, шрифти - це як їжа. Деякі люблять їх добре закруглені, деякі люблять їх гарячими і гострими - немає жодного правильного шрифту, або ми б усі його зараз використовували. Так, на вибір!


Я не розумів, що шрифт Ubuntu був випущений. Я думаю, що там добре працює.
Алан Пірс

+1 за показ мені WenQuanYi Zen Hei Mono, цей шрифт дивовижний. Я майже напевно використовую його в своїй дипломній роботі. Залежить від того, наскільки добре він виглядає надрукованим - на екрані це виглядає дивовижно і не займає багато горизонтального місця, що дуже важливо при друку.
Конрад Рудольф

9
Дійсно, є лише одна велика товста точка проти пропорційного: ви насправді не можете вирівняти, тому що ніхто не піклується про еластичні стільниці. Що надзвичайно дивно, враховуючи, як це приносить користь як односхилим штампів, так і тим, хто насправді вважає за краще читати гарні шрифти змінної ширини. Давай, світ! Еластичні вкладки!
Роман Старков

7
@romkyns: прийняти стиль відступу, який не покладається на вирівнювання з іншими рядками. Простий.
Зан Лінкс

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.

Ось що відбувається під час використання консолей , шрифту монопростіру. Я натискаю Backspace, і це все, я можу витратити час, що залишився, щоб зробити щось дійсно корисне.

Зображення показує, що за допомогою консолей прямокутник вибирає властивість репутації.

І тут те саме і з інтерфейсом Segoe . Ой!

Зображення показує, що у користувальницькому інтерфейсі Segoe деякі властивості репутації вибираються лише частково, тоді як в інших рядках вибирається початок властивості рейтингу.


9
Це сталося тому, що ви використовували пробіли, які відповідали шрифту monspace. Якби у вас був належний проміжок з пропорційним шрифтом, ви б не мали цієї проблеми.
Кос

6
@Kos: значить, замість того, щоб натиснути, скажімо, три вкладки, ви натиснули б п'ятнадцять разів клавішу пробілу, ніж помітили, що ви ввели занадто багато, і видалили останній пробіл? Здається, це занадто складно, ви не думаєте?
Арсеній Муренко

6
Eclipse насправді підтримує використання іншого шрифту для прямокутного режиму вибору, що робить це менш проблемою.
Миколай

8
@Kos RE: "правильний інтервал з / п / т пропорційним шрифтом": Але тоді, якщо інший програміст використовує інший шрифт у тому самому файлі, він не вирівняється. Якщо всі редактори використовують шрифти монопростіру, вони завжди будуть розташовуватися у рядку (якщо припустимо, що код не зловживає вкладками для вирівнювання).
Макс Нанасі

5
Я використовую пропорційний шрифт протягом 2 років без еластичних вкладок. Я не використовую прямокутні виділення, оскільки є щось інше, що повністю замінює його у більшості IDE: багатокаретний вибір. У цьому прикладі я вибрав би "MyReputation =", а потім натисніть Вибрати наступне виникнення за допомогою CTRL-DSublimeText і VSCode ALT-Jв редакторах IntelliJ / JetBrains. Далі, SHIFT-CTRL-RIGHT ARROWщоб розширити виділення на наступний маркер справа, і це зроблено. Головна перевага полягає в тому, що нікому не потрібно вирівнювати матеріали для редагування. Недолік, якщо у вас щось вирівняно, цього більше не буде.
Сіно

15

Я використовував пропорційний шрифт, здебільшого тому, що знаходжу пунктуацію, насправді простіше розмежувати, але з часом я відмовився, тому що ніхто інший цього не робить, і всі несвідомо приймають монорозміщені шрифти (як згадується у статті вікіпедії, намагаючись робити таблицю) форматування, мистецтво ascii в коментарях тощо).

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


9
Подобається ваш коментар міні-бій з мікрософт за цю помилку. І їхня весела відповідь, яка в основному "Привіт! Дякую! Чудово познайомимося! Ми нічого не зробимо. Добре, дякую, милуємося з вами!" Уявіть собі, якби люди діяли так у реальному житті ...
danio

2
Ви отримуєте нагороду за симпатію, оскільки, хоча я не використовую шрифт пропорційної ширини з тих самих причин, які ви цитуєте, мій внутрішній друкар постійно прагне належної підтримки редактора, як у дизайні, так і в програмуванні.
Джон Перді

Дивно, я просто думав, що пунктуацію насправді важче розрізнити (особливо повні зупинки), оскільки вона займає менше місця. Я також пам’ятаю, що Notepad ++ найдовше використовував Comic Sans MS для коментарів.
НезадоволенняGoat

6
Якщо вам знаходить розділові знаки важко ідентифікувати у шрифті монопростору, є й інші шрифти монопростору - це не означає, що вам потрібно використовувати пропорційний шрифт.
Ніхто

Саме для кращої пунктуації, я іноді використовую EnvyCode A або B .
занлок

9

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


3
Я повністю згоден. А за допомогою вкладок (на відміну від жорстко кодованих пробілів) ви можете перемикатися між монопростором та пропорційними шрифтами та відповідно регулювати ширину вкладок. Однак я ще не бачив - це редактор, в якому можна встановити ширину вкладок в одиницях ЕМ.
Серпень Карлстром

6

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


4
Я здивований, що ти любиш Аріала та Вердану. Я вважаю їх трохи грубими та непрофесійними. Ви пробували Калібри?
Тімві

2
Я використовую 8pt Verdana. Довгі імена ідентифікаторів легше читати. Я можу переглянути 70 рядків коду без прокрутки, а рядки набагато коротші, тому код - це вузький стовпчик, як у газеті. Це дозволяє мені розділити вигляд редактора на два вертикальні стовпці: я переглядаю декларацію в одному поданні, а код - в іншому. Також при налагодженні екран заповнений налагодженнями вікон, перегляд коду поміщається у невеликому просторі. Використання пропорційних шрифтів - це усунути бажання вертикально вирівняти речі та поставити вікна Ascii зірочками навколо коментарів.
Кальмарій

2
Я бачу 147 рядків коду у Visual Studio на моніторі 1920х1200, повернутим на 90 ° для портретного режиму, використовуючи шрифт Lucida Console.
zanlok

158 рядків із шрифтом Monaco у Vim ... Мій екран навіть не HD
Mark K Cowan

4

Пам’ятаю, у книзі Б'ярна Струструпа " Мова програмування на C ++" для коду використовували пропоновано розміщені шрифти. (Я не можу знайти жодних зразкових сторінок в Інтернеті)

Я не пам’ятаю точних причин, але думаю, що він згадував про цю та іншу зміну (я думаю, що сама мова C ++) як новий вступ до цієї книги.

Особисто я віддаю перевагу фіксованим космічним. Консолі - це мій улюблений.


1
Перевірка сторінки 5 мого Спеціального видання: пропорційні шрифти, як правило, вважаються кращими для тексту, їх використання дозволяє менше нелогічних розривів рядків, і більшість людей звикають до нього. Мені легко читати. Stroustrup представляє тут код, не намагаючись його створити, і це може зробити щось іншим.
Девід Торнлі

4
@David, так, він представляє код. Але він представлений для "читання", і саме питання фіксованого проти пропорційного стосується "читання" коду, ІМХО.
Nivas

4

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

Проблема більшості пропорційних шрифтів полягає в тому, що вони не були розроблені для програмування. На цій сторінці показані деякі шрифти, які були.

Обріжте шрифт


4
мертве посилання на Google Code :(
Флоріан Кастеллайн

2

Середовища малих розмов, як Pharo, використовують пропорційні шрифти, і завдяки мовному стилю це виглядає дуже добре. Але в мовах C-стилю, таких як Go, або інших, таких як Erlang або Python, я віддаю перевагу односхилим шрифтам.


2

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

Це мої висновки:

  • Більшість пропорційних шрифтів розраховані на прозу та лише невеликі розділові знаки (що, в свою чергу, зазвичай це один чи рідко два символи). У мові сімейства С є багато пунктуаційних знаків, що, на мою думку, просто не виглядає добре і важче читати, ніж потрібно.
  • Символи змінної довжини означають, що довжина рядків змінюється. Це робить його майже неможливо здогадатися, де закінчиться курсор під час навігації за допомогою кнопок зі стрілками. Мені це було прикро.
  • Вертикальний інтервал теж має значення. Зазвичай це не те, що можна легко змінити, і більшість пропорційних шрифтів мають менше місця між рядками, ніж я хотів би.
  • Дуже мало IDE тестуються за допомогою пропорційних шрифтів. Це створює місце для тонких помилок, як розміщення курсора в неправильному місці, неправильне перефарбування символів тощо.

Звідси я виявив, що для мене це не вартує клопоту.


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

Я вважаю, що застосування автоматичного форматування для кожного на кожному економії мінімізує помилкові позитиви в системі управління джерелами під час проведення криміналістичного аналізу.


0

Ніколи, ніколи, тому що Monospaced шрифти дозволяє мені порівнювати різні атрибути.

Порівняйте:

name1 = ["Вільям", "Шекспір", 1564, "Пеотрі"]

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

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

До:

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

Пропорційні шрифти просто не можуть розміщувати еквівалентні атрибути точно один над одним.


2
Мені цікаво знати, в якому середовищі це проблема для вас. Ви можете використовувати вкладки з шрифтами пропорційної та фіксованої ширини для вирівнювання їх у стовпцях. Де виникає проблема, якщо ви використовуєте пробіли замість вкладок.
темптар

2
@temptar: розгляньте "iii12345", "AAA12345" та "nnn12354" один над одним. Помилку ("345") помітити набагато простіше. ви не можете ставити вкладки посередині значення.
Адам Матан

1
Вкладки @temptar Python не рекомендуються, і їх ширина змінюється в різних редакторах, що може призвести до неправильного вибору коду.
Адам Матан

2
@Adam Matan Саме тому ви не повинні робити фантазійне форматування.
Серпень Карлстром

0

Хоча я відчуваю, що пропорційні шрифти гарніші, в деяких з них, особливо без серіфіфічних шрифтів, неможливо побачити різницю між "я" та "л". Зачекайте, що я знову назвав цю змінну?


2
Вердана має серіфи на I для легшого розмежування.
Кальмарій

1
0 і O - ще одна основна проблема. Також 'vs `і. vs, а також. Іноді & і $ є проблемою (турбує perl / php). Однак, Verdana хороша для більшості з вищезазначених, хоча і не велика при 0s. На жаль, на існуючих проектах із вкладками, змішаними зі злими просторами, я зазвичай відмовляюся і використовую консоль Lucida. Якщо ви запитуєте про іменування змінних, ви не використовуєте сучасне завершення коду або принаймні копіюєте / вставляєте, як слід.
zanlok

Один пропорційний шрифт, який я знаю, що має неоднозначний 0Oo1lLiI, це "Latin Modern Mono Prop" TeX, пропорційно розташований родич "Latin Modern Mono", який був абсолютно розроблений для коду (для друку не на екрані, однак, я вважаю, що візуалізація трохи розмита) . Пунктуація все ще є проблемою, має занадто мало проміжків для своєї важливості в коді ІМХО, і створює двозначності, наприклад, дві одиничні лапки проти однієї подвійної цитати: "проти",'' vs "
Бені Чернявський-Паскін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.