Comments 56
Еще очень жаль, что по чисто историческим причинам символы с кодами 0x00..0x1F оказались частично не задействованы (фактически сейчас там используются только переносы строк, табуляция и нулевой код, и целых 24 кода фактически свободны). В то же время в основной интернациональной части Юникода («ASCII символов», т.е. среди тех символов, которые гарантированно есть на любой клавиатуре мира) объективно не хватает некоторых фундаментальных символов. Например стрелок и некоторой базовой математики. Хотя они есть в Юникоде, но идея в том, что «общемировые символы» — латинские буквы, цифры и базовые знаки препинания — наследие ASCII, однобайтовые коды в UTF-8 и они есть на всех клавиатурах.
Особенно хочется для языков программирования.
Но увы, теперь туда уже ничего не добавить…
Почему не добавить? Я уже лет восемь вот такой раскладкой пользуюсь.
Для Win и Мака есть раскладка Бирмана.
Свою сделать — тоже не титаническая работа.
Я имею в виду общемировое распространение. Если бы исторически в ASCII было на 24 символа больше, то на клавиатурах всего мира вероятно был бы еще один «shift» или какой-то иной способ для переключения на дополнительную функцию каждой буквенно-цифровой клавиши, на каждой клавише был бы нанесен дополнительный символ (например стрелки ↑ → ↓ ←, фигуры ◊ □ △ ▽ ◁ ▷, математические символы ± ≈ ≠ × ÷ ∃ ∀ ⌀ ∞, дополнительные скобки и кавычки). Это было бы уже частью культуры. Языки программирования выглядели бы иначе. Например в С++ не пришлось бы использовать знаки «больше» и «меньше» для шаблонов, просто взяли бы еще одни скобки, в результате парсеры были бы проще и код нагляднее.
Юникод огромен и в нем есть практически любые символы, но в этом и проблема. А самое начало кодовой таблицы, унаследованное от ASCII, является как-бы обязательным по умолчанию набором для клавиатур всего мира:)
В DOS, кстати, эти символы вполне себе были:
https://en.wikipedia.org/wiki/Code_page_437
Но вот с Linux так не получилось, потому что вывести изображение управляющего символа в терминал попросту невозможно из-за самой концепции терминала.
И в Linux, насколько я понимаю, ситуация такая же
В DOS при выводе управляющих символов во многих случаях тоже не символ отобразится, а выполнится действие (писк, смещение на позицию табулявции и т.д.).
А в линуксе при желании можно и картинку символа отобразить. Не помню точно, но, если не путаю, даже в некоторых терминалах была возможность "экранировать" управляющий символ, что приводило к отображению картинки символа.
В DOS управляющие символы не выводились в консоль, а рисовались на экране напрямую. В Linux же такой радости нет. Непечатные символы можно вывести, только заменив их на другие.
И современный Юникод повторяет эту же ошибку, вводя коды цветов и наложение символов друг на друга. Это по сути escape-коды, а не символы! И они должны быть в отдельном стандарте. А Юникод должен быть только для символов, без цвета и без взаимосвязи.
И как же люди в 1960 году, разрабатывая кодировку для телетайпа, не смогли этого предусмотреть?
Если в DOS в программе вывести символ с кодом 0x0d, то будет осуществлен перевод строки, а не изображение музыкальной ноты.
Чтобы вывести изображение, соответствующее этому коду, придется напрямую поместить символ в буфер экрана.
В линуксе, внезапно, все точно так же, только средства доступа к буферу экрана другие, и не все терминалы это поддерживают.
Но, тем не менее, вывести изображение ноты символом с кодом 0x0d в терминале линукса вполне возможно, особенно если это не графический терминал, запущенный в иксах, а текстовый режим.
Чтобы вывести изображение, соответствующее этому коду, придется напрямую поместить символ в буфер экрана.
Именно так. Но вообще, прямой вывод в буфер экрана, а не через int 21h был чуть ли не нормой.
Но, тем не менее, вывести изображение ноты символом с кодом 0x0d в терминале линукса вполне возможно, особенно если это не графический терминал, запущенный в иксах, а текстовый режим.
А как? Просто интересно.
В Linux можно открыть на запись /dev/vcs и писать туда любые символы, включая управляющие - они не будут интерпретироваться драйвером терминала.
на клавиатурах всего мира вероятно был бы еще один «shift»
А он есть, правый альт (он же AltGr) называется.
Есть не везде.
До сих пор страдаю и тяну ради AltGr руки к встроенной клавиатуре. Лох, чо — надо было в Интернете заказывать, а не выбирать из полутора клавиатур, что были в магазине.
Еще очень жаль, что по чисто историческим причинам символы с кодами 0x00..0x1F оказались частично не задействованы (фактически сейчас там используются только переносы строк, табуляция и нулевой код, и целых 24 кода фактически свободны
Просто legacy, которое будет всё время теперь занимать место. Не забывайте, что при разработке Unicode и UTF-8 важным моментом была совместимость с однобайтными кодировками.
А насчёт не используются — ох как вы ошибаетесь. В тексте — ну да, не используются, но в консоли задействованы абсолютно все. А от консоли современные операционные системы и программы что-то не торопятся отказываться.
в консоли задействованы абсолютно всеОй ли? Вот где сейчас form feed и вертикальная табуляция используются, например?
Да, используются.
Form feed — очистка экрана в консоли.
Vertical tab — обычно дейтвие аналогично Line feed
Vertical tab — обычно дейтвие аналогично Line feed
Это где такое? o_O Первый раз слышу.
Это где такое? o_O Первый раз слышу.
#include <cstdio>
int main(int argc, char **argv)
{
printf("Hello\vWorld\n");
return 0;
}
g++ %filename% && ./a.out
Действительно. Ляпота-то какая!
@bq:23:10:08:/tmp/dl$ echo -e 'Hello\vWorld'
Hello
World
Вот только LF ведёт себя иначе и переводит курсор в начало строки, как CR — хоть теоретически и не должен иметь такого побочного эффекта, отчего в DOS сделали перенос строки комбинацией CR и LF.
@bq:23:14:06:/tmp/dl$ echo -e 'Hello\nWorld'
Hello
World
habr.com/ru/post/126198
А вот это
так и предполагается выглядеть?
Да. Это древний… хм… Скажем, "стилистический приём". Из той же категории, как "ПоМнИтЕ, КоГдА ТаКоЕ БыЛо ПоПуЛяРнО?" ну или "аццкий сотона пашёл в бабруйск", ну или "3T0 }|{E 1337".
Лет 15, наверное, назад было популярно вполне.
lurkmo.re/zalgo
Кроме того, эмодзи теперь поддерживают модификаторы цвета кожи.
Надо было сразу добавить три модификатора [R][G][B], чтобы в будущем не возникало недопониманий при общении с инопланетными рассами.
Заодно в соцсетях буковки во все цвета радуги красить можно было бы.
Разработчики бы были в ВОСТОРГЕ!
Следующим расширением может стать задание угла поворота символа, процентов растяжения и сжатия по осям координат.
Дальше — декораторы, типа bold, italic, underline, overline, upper и lower index и т.д.
Исторически escape-последовательности были с самого начала, а что мешает расширить это понятие и ввести туда всякое типа «повторения символа N раз».
Это будет ад для разработчиков, и вот тогда они поймут, что стандарт нужно пересматривать и переделывать, делить логически на несколько уровней абстракции, и так появится Unicode 2!
Дальше — декораторы, типа bold, italic, underline, overline, upper и lower index и т.д.
Почему «дальше»? Они для латиницы давно есть уже.
.> рисования или форматирования текста
Да что там рисование и форматирование?
Пора уже и скрипты подключать. Пишем какой-нибудь код (код - не программа, а кодовый знак), обозначающий, что за ним начинается вставка скрипта (прямо текстом скрипта или урлом скрипта) или вставка другого объекта (тоже самим объектом или его адресом - ну подобно тегам html) и можно будет не то, что любые символы рисовать, но и вообще делать знаки шрифта интерактивными с выполнением кучи всяких действий. ?
Наверное, Вы хотели сказать "?
UPD. Там был
UPD2. Так, с помощью двух экспериментов (начинающихся как шутка), выяснилось, что хабр, предусмотрительно вырезает все последовательности UTF, начинающиеся с верхнего суррогата...
UPD: чёрт, у меня тоже эксперимент не получился :(
UPD2: а впрочем получился, на полной версии сайта под этим комментарием потерялась кнопка ответа, так-то)
UPD3: а теперь пропали все комментарии под моим, ха-ха, ответить получится только через мобильную версию
Куда пропали? Другие ветки я все вижу. А ответов на этот комментарий не вижу и в мобильной.
А вообще, Хабр работает на той же CMS, что и Табун, чего тут удивляться-то.
Хабр работает на той же CMS, что и Табун
Вообще-то нет, это автор CMS в первых версиях просто срисовывал всё по максимуму с Хабра https://habr.com/ru/post/39482/
Вот бы доступный гайд по тому, как убрать эмодзи из шрифтов.
Ну, символов бы, но зачем эмодзи, смайлики, цвета кожи и прочую голубятню?
Он «пухнет» не по дням, а по часам!
Скоро туда ещё что-нибудь воткнут, вот, есть ли там 53 (или уже больше) гендера?
Этот восхитительный Юникод