Как стать автором
Обновить

Комментарии 29

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

Читаемость и простота выравнивания. Это особенно важно в языках, где для уровней вложенности используются отступы, типа Python.

Для уровней вложенности используют пробелы которые стоят вначале строки, а у них ширина одинаковая. А вот если форматировать однотипные команды колонками то всё разъезжается. Да и выделять мышью узкие символы типа 111111111111 lower(L)=llllllllllllllllllllllllllllllllllllllllllllllllllllllll upper(i)=IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII становиться не очень удобно. Да и текст в зависимости от шрифта разъезжается вправо по разному.

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

0123456789
??????????
??????????
??????????
??????????
??????????
0123456789
Еще примеры
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~

??????????????????????????
??????????????????????????

??????????????????????????
??????????????????????????
??????????????????????????
??????????????????????????

??????????????????????????
??????????????????????????
??????????????????????????
??????????????????????????

??????????????????????????
???????ℎ??????????????????

??????????????????????????
??????????????????????????
??????????????????????????
??????????????????????????

??????????????????????????
??????????????????????????

??????????????????????????
????????????????????????????????
??????????????????????????
????????????????????????????????
??????????????????????????
????????????????????????????????
??????????????????????????
????????????????????????????????
??????????????????????????
????????????????????????????????

?ℬ??ℰℱ?ℌℑ??ℒℳ????ℜ????????
????ℯ?ℊ???????ℴ???????????

??ℭ????ℋℐ????????ℛ???????ℨ
??????????????????????????

??????????????????????????
??????????????????????????

??ℂ????ℍ?????ℕ?ℙℚℝ???????ℤ
??????????????????????????

⏻⏎⌨⌀
⬜⬛???
□█⣿

У вас разные шрифты – браузер их замещает, если какого-то символа нет в заданном шрифте. Поэтому и логично, они разные.

Большие и маленькие буквы тоже из разных шрифтов?

ABCDE |
abcde |
????? |
????? |
????? |
????? |
?ℬ??ℰ |
????ℯ |
АБВГД |
абвгд |
ΑΒΓΔΕ |
αβγδε |
あいうえお |
アイウエオ |
????? |
????? |
▚█▓▒░ |
▨▩▤▥▧ |
◧◨◩◪◫ |
▼◀▲▶◉ |
❶❷❸❹❺ |
➀➁➂➃➄ |

В разных редакторах и терминалах оно разъезжается по разному.

Hidden text

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

DejaVuMathTeXGyre-Regular
DejaVu Sans
DejaVu Sans Mono
Liberation Mono
NimbusMonoPS-Regular
Noto Sans Mono Regular
Source Han Sans CN
Twemoji Mozilla

То есть не приводить к одному размеру в случае моноширинного шрифта это не баг, а фича?

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

Пиши код! ?

Если честно, с годами просто ставлю Consolas везде. Меньше выбора – больше энергии.

написали 4 абзаца про похожие буквы но не упомянули про l, 1, I и O и 0

Большинство шрифтов по умолчанию уживаются с латиницей, но мы часто пишем комментарии на русском языке

Как человек разбиравшийся и в коде откомментированом по-немецки и в коде откомментированом по-японски, слёзно ваш прошу, пишите все комментарии только по-английски и только ascii-символами. Те кому достанется код после вас, скажут вам спасибо.

Лигатуры. В некоторых шрифтах соседние символы автоматически объединяются в один.

Может, в редакторах, а не в шрифтах?

Может, в редакторах, а не в шрифтах?

нет, все-таки в шрифтах. если в шрифте нет лигатур, редактор сам их не добавит.
(правда, если редактор не поддерживает подобные фишки, лигатур тоже не будет)

всё-таки символы автоматически соединяются редактором. В шрифте лигатуры просто присутствуют.

"Cascadia Code" вот так прикольно умеет:

Это прикольно, но не думаю что удобно для программирования.

Удобно.

Ну а мне неудобно.

Не представляю, как код, который я пишу на работе, попадёт к человеку, который не читает по-русски.

Если я буду писать по-английски, то за мной начнут охотиться. Читать-то я более-менее могу, но вот писать…
Давайте попробую: "If I will write in English, it will cause to hount me. I can read somehow, but not write".

Коллеги из Германии и Японии тоже не представляли, что их код попадёт ко мне. Пути кода неисповедимы.

А вы тоже делаете вёрстку для Битрикса? :))

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

Поэтому предпочтительнее более "низкий" шрифт (разумеется при одинаковых параметрах "разборчивости" и вообще "удобства").

С шириной таких проблем обычно нет.

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

Высота, конечно, тоже существенна, но она подстраивается выбором комфортного кегля,

Точно так же как и ширина - КМК это лишнее, не относящееся к теме обсуждения.

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

Я всегда выбираю второе, т.к. на практике очень раздражает (утомляет и замедляет работу), когда какая-то часть нужного кода не влезла на экран и приходится скролить.
По горизонтали (а это особенность современных 16:9 мониторов) весь код влезает, по вертикали часто нет.

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

Он на винде современной супертонко выглядит. Раньше (2000-е), когда разрешения были малыми, только его и использовали. А теперь Consolas лучше справляется с регулярной читаемостью.

Ну, у меня сейчас такое же разрешение, как и в 2005-м. Поэтому courier по прежнему наше всё :)

Да, но с каким современным монитором это вообще актуально? (Без размытия)

Зачем чего-то выбирать, если есть Consolas?

Критерий на самом деле один, всё остальное вода.

Главное чтобы шрифт нравился, остальное суета.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий