LINUX.ORG.RU
ФорумTalks

Оказывается люди могут ущемиться от наличия лигатур

 ,


0

1

https://practicaltypography.com/ligatures-in-programming-fonts-hell-no.html

Прочитал статью и немного не понял.

Человек возмущается, что в шрифтах для программирования символы типа != могут визуально отображаться как . Аргумент: "А вот в unicode есть символ , и он не является частью языка, поэтому надо смотреть на != и не бухтеть!

P.S. Сам я уже много лет использую FiraCode с лигатурами и их наличие позволяет очень быстро понимать, что происходит в коде, не обращая внимание на синтаксические условности.

★★★★★

Я не люблю магию, лигатуры от лукавого.

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

MoldAndLimeHoney ★★
()

Прочитал статью и немного не понял.

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

Представь ситуацию, когда у тебя в коде действительно появилось .
Как быстро ты поймёшь (поймёшь самостоятельно), что это \u2260, а не лигатурный \u0023+\u003D?

mord0d ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

их же можно просто не использовать

Некоторые шрифты принудительно с лигатурами, и клали МПХ на любые попытки отключить. Позиция авторов таких шрифтов «Я художник, я так вижу! Не нравится — используй другой шрифт.»

mord0d ★★★★★
()
Ответ на: комментарий от ugoday

Как только на ≠ ругнётся компилятор.

Ты подтверждаешь что самостоятельно различить от лигатурного != невозможно.

Усложнение ради усложнения, потому что и так всё сложно!

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Я не могу представить такую ситуацию хотя бы потому что вбить реальный не лигатурный «не равно» весьма проблематично в современных системах.

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

unDEFER ★★★★★
()
Ответ на: комментарий от mord0d

самостоятельно

Какая-то спец. олимпиада, но ладно. Ты победил, держи медаль.

Усложнение ради усложнения,

С точки зрения визуального восприятия — упрощение.

ugoday ★★★★★
()
Ответ на: комментарий от unDEFER

вбить реальный не лигатурный «не равно» весьма проблематично в современных системах

Linux: Compose = /

Mac: Option =

static_lab ★★★★★
()
Ответ на: комментарий от mord0d

самостоятельно различить ≠ от лигатурного != невозможно

Они одинаковые, поэтому их не отличить. Просто редактор знает где он подменил символы лигатурой, а где реальный \u2260

dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

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

static_lab ★★★★★
()
Ответ на: комментарий от mord0d

Представь ситуацию, когда у тебя в коде действительно появилось ≠.

С хрена ли? Больше вероятность у меня замутить с Билли Айлиш и Сашей Грей одновременно.

Shadow ★★★★★
()
Ответ на: комментарий от unDEFER

Я не могу представить такую ситуацию хотя бы потому что вбить реальный не лигатурный «не равно» весьма проблематично в современных системах.

Я использую юникодные символы повсюду. Не знаю чем так проблематично Compose, =, / или AltGr + =.

alt-intl-вариация любой раскладки…

А пользователи Wayland пососут лапу, у них с кастомизацией всё печально. (%

mord0d ★★★★★
()
Ответ на: комментарий от dmitry237

Они одинаковые, поэтому их не отличить.

Именно поэтому лигатуры — зло.

Вот если бы оно подменяло на , занимающее место обоих символов в != — не было бы никаких проблем, я бы и сам, наверное, пользовался.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Вот если бы оно подменяло на ≠, занимающее место обоих символов в != — не было бы никаких проблем, я бы и сам, наверное, пользовался.

Так оно же именно так и работает

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

Они не одинаковые

Я не могу сравнить (посмотреть код символа лигатуры), нет ни одного редактора или терминала с поддержкой лигатур. Хорошо, будем считать, что это отдельный символ.

dmitry237 ★★★★★
()

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

Последнее, что МНЕ нужно от шрифта для кода, это двусмысленность написанного. , может быть, и красивое, но это не то, что там написано - написано !=, так что будьте добры не интерпретировать смысл написанного.

Хороший шрифт для кода, ящитаю, должен иметь всего-ничего по признакам:

  • Поддерживать нужные секторы юникода без поломки моноширинности и рендеринга пустых квадратов (например, для меня это кириллица и зона CJK).

  • Бороться с двусмысленностью отображаемого текста - явно создавать отличия в обычно похожих часто употребимых символах (например, 1 I l или O 0).

  • Не быть вырвиглазным - и иметь pixelperfect рендеринг - по вкусу.

Bfgeshka ★★★★★
()
Ответ на: комментарий от dmitry237

Ну и как скопировать не последовательность, а именно сам глиф?

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

static_lab ★★★★★
()
Ответ на: комментарий от dmitry237

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

Kolins ★★★★★
()
Последнее исправление: Kolins (всего исправлений: 1)

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

vtVitus ★★★★★
()

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

DumLemming ★★★
()
Ответ на: комментарий от Shadow

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

DumLemming ★★★
()
Ответ на: комментарий от Shadow

Тебе нужно в лог вывести ‘x ≠ y’. Что делать будешь?

DumLemming ★★★
()

Присоединяюсь ко всем нелюбителям лигатур.

От себя только добавлю, что одно лучше двух, что единый образ в голове != лучше двух != и . Смысл весь в том, чтобы сократить нагрузку.

Ещё эта же проблема возникает, когда делают совсем необычные лигатуры, например для =<< или ===. Три полоски — это вообще что за символ? И таких примеров куча.

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

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 6)

Честно говоря, ересь какая то. != это !=, ≠ это ≠. Это же совсем разное. Например в луа это ~= вообще.

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

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

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

LightDiver ★★★★★
()

А я наоборот хочу шрифт, где есть лигатуры для i++, NULL и Segmentation fault. Но пока не нашёл.

apt_install_lrzsz ★★★
()

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

Так это не лигатура, а рандомная замена двух символов каким-то другим левым. Можно с тем же успехом на смайлик с какашкой менять. Допустим, в ЯП используется другое обозначение для «не равно», а != тоже имеет смысл, но иной. И вы тут же смачно садитесь в лужу с этими т.н. лигатурами.

bread
()
Ответ на: комментарий от dmitry237

редактор знает где он подменил символы

Не хотел бы я пользоваться редактором который по собственному желанию подменяет символы:(

watchcat382
()
Ответ на: комментарий от mord0d

Представь ситуацию, когда у тебя в коде действительно появилось ≠.

Я представил ситуацию, когда на улице нашел миллион долларов.

rupert ★★★★★
()
Ответ на: комментарий от rupert

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

LightDiver ★★★★★
()
Ответ на: комментарий от rupert

У них полная камера таких.

А вот подмена символов это чот ну такое. Нужно посмотреть реализацию, но звучит не очень.

LightDiver ★★★★★
()
Ответ на: комментарий от maristo

Маловато символов, а так всеми конечностями «за».

LightDiver ★★★★★
()
Ответ на: комментарий от mord0d

После первой ошибки коптелятора?

действительно появилось

*Fixed FTGH*

Если в коде что-то появляется, то тут в пору задуматься о том, что что-то здесь не так.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 2)
Ответ на: комментарий от ugoday

Как только на ≠ ругнётся компилятор.

А если это интерпретатор? И ругнется он только когда зайдет в эту ветку условия. А зайдет в нее только в специфичных условиях у заказчика…

Опасное это дело. Читать код приятнее, но если надо работать с кодом — лучше без лигатур, так спокойнее.

Ecl
()

Предлагаю пойти дальше и набирать операторы капителью. Вот тогда-то всем станет проще!

Khnazile ★★★★★
()
Ответ на: комментарий от Ecl

А если это интерпретатор? И ругнется он только когда зайдет в эту ветку условия.

def foo(i):
	if i ≠ 0
		return "done"
	
for i in range(10000):
	print(f"{i:03d}", end="/")
	if i == 9000:
		print(foo(i))
		exit()
  File "/tmp/untitled.py", line 2
    if i ≠ 900:
         ^
SyntaxError: invalid character '≠' (U+2260)

Алсо, цитата про яйца и дверь.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 4)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)