За последние полгода интернет просто наводнила «буква» «и?». Я встречал ее на новостных сайтах, в мессенджерах, на хабрахабре и geektimes. «О чем вообще речь?» — спросите вы — «Я вижу обычную букву й!». Вам повезло. Я вижу ее так:
Как же так получается?
Графемы, глифы, code points, компоновка и байты
Очень краткое введение:Графема — то, что мы привыкли называть буквой в смысле единицы текста. Глиф является единицей графики, и может графически представлять саму графему или же ее часть (например, различные диакритические знаки: ударения, умляуты, надстрочное двоеточие у буквы ё и т.д.).
Code Point — то, как записывается текст в представлении Unicode. Одна графема может записываться разными code points.
Code Points кодируются различным байтовым представлением в зависимости от стандарта: UTF-8, UTF-16, UTF-32, BE, LE…
Языки программирования, как правило, работают с code points; для нас, людей, привычно мыслить глифами.
Давайте же наконец разберемся с нашей буквой и?. Что же в ней такого особенного?
Эта буква представляет из себя одну графему («и» краткое), но записана она двумя code points:
U+000438 CYRILLIC SMALL LETTER I
U+000306 COMBINING BREVE
Если вы проделали фокус с нажатием backspace, вы как раз и стерли COMBINING BREVE, или, говоря полиграфическим языком, значок краткости над гласной.
Обычная буква «и» краткое, которую мы все с вами привыкли набирать клавиатурой, представляет из себя композитный символ, который записывается одним code point:
U+000439 CYRILLIC SMALL LETTER SHORT I
Отображение диакритических знаков зависит от шрифта и рендерера. Например, в окне редактирования данного поста символ выглядит правильно, а вот при просмотре едет. Некоторые шрифты могут отображать диактрические знаки раздельно даже в композитных символах.
Чем это плохо?
Не все программы, а сайты и подавно, умеют приводить code points к такому виду, который позволяет сравнивать одинаковые глифы, записанные с разными code points. Иными словами, не каждая программа и сайт распознает «и?» и «й» за один символ, из-за чего становится невозможно, например, производить поиск по таким буквам.За примером далеко ходить не нужно: относительно свежая статья с обзором мыши на geektimes, скриншот из которой приведен выше в статье. Давайте выполним поиск в Google по следующей фразе, которая, вроде как, есть в статье:
никто не мешает создать «пустой» профиль
Пост выдается вторым результатом, и, как видно по выделенной жирным части, у нас полное текстовое совпадение. Отлично, открываем его и пытаемся найти на странице этот же текст и видим, что Firefox ничего не нашел:
Поиск по Geektimes также не выдает подходящего результата:
Но стоит заменить композитную «й» на ее декомпозитного собрата «и?», как все встает на свои места:
Очевидно, что Google как-то преобразовывает запрос поиска, позволяя искать по глифам, а не по их code points.
Как это работает?
Нормализация
Стандарт нормализации Unicode описывает две эквиваленции символов: Canonical и Compatibility. Первая как раз позволяет сравнивать одинаковые глифы с разными code points, а вторая позволяет их сравнивать с упрощенными аналогами — ? с 1/2, ? c H и т.д.Также существует 4 типа нормализации:
- Normalization Form D (NFD) — canonical-декомпозиция. Разложит czesc (привет по-польски) на с, z, e, c + ?, s + ?.
- Normalization Form C (NFC) — соберет то, что разложил предыдущий вариант.
- Normalization Form KD (NFKD) — compatibility-декомпозиция. Сделает 1/2 из ?, 25 из 2?.
- Normalization Form KC (NFKC) — попытается собрать то, что разложила предыдущая.
Если говорить о сайте типа хабрахабра, то имеет смысл производить NFC-нормализацию всех постов до их публикации, а поисковой запрос подвергать NFKD-обработке.
В Python, например, это можно сделать модулем unicodedata.
import unicodedata
print(unicodedata.normalize('NFKD', sys.argv[1]))
% python unicode.py czesc | hexdump -C
00000000 63 7a 65 73 cc 81 63 cc 81 0a |czes..c...|
% echo 'czesc' | hexdump -C
00000000 63 7a 65 c5 9b c4 87 0a |cze.....|
Заключение
Не могу сказать с полной уверенностью, кто виноват в появлении «и?» в рунете, но подозрение падает на Google Docs. К счастью, похоже, баг починили, т.к. уже 3 недели мне не приходилось смотреть на уползшую кратку.Проблемы с глифами случаются и в оффлайне. Вот фотография реального паспорта с буквой, вероятно, «е?» (CYRILLIC SMALL LETTER IE + COMBINING DIAERESIS)
Комментарии (115)
fshp
15.07.2015 21:39А каким браузером и шрифтом вы пользуетесь?
ValdikSS Автор
15.07.2015 21:41Firefox, Liberation Sans. Такая же проблема под Windows 7 с IE 11 на Meduza, например (у них там PFRegalTextPro-RegularB).
meduza.io/news/2015/06/11/v-gosdumu-vnesen-zakonoproekt-ob-ispolnenii-gimna-rossii-v-shkolahencyclopedist
15.07.2015 21:57+5Забавно, у меня Firefox (на Ubuntu 15.04) показывает сам топик в DjVu Sans, и там все нормально. В комментариях почему-то Liberation Sans. В заголовке окна и вкладки шрифт Ubuntu, и там «кратка» съехала.
kalterfive
15.07.2015 21:50-4Буква «й», которую я ввожу с клавиатуры, и котороую просите скопировать вы — разные. Определено экспериментально и при помощи шрифта.
encyclopedist
15.07.2015 22:00+5Так о том и топик — что у буквы й есть 2 представления: одно в виде единого символа, а другое — составное. И в некоторых программах они ведут себя по-разному. А также в некоторых шрифтах они ведут себя по-разному.
Mithgol
15.07.2015 22:18+6Я всегда думал, может быть наивно, что «и с краткою» вместо однобуквенного «й» вставляет
какой-то макосный софт.
Потому что я видел этот символ часто во блогозаписях одного блоггера, о котором достоверно известно, что человек этот — пользователь «Эппл».
Неужели тут всё же не «Эппл», а «Гугл» повинен?ValdikSS Автор
15.07.2015 22:31+2Вот, честно говоря, полностью не уверен. На маках мы получали нормальную «й», но в интернете я действительно находил сообщения, что на маках такое есть. Правда, они все были старые, лет 5 назад, возможно, что-то поменялось в новых версиях.
Maccimo
16.07.2015 00:10+4От маководов не раз получал zip-архивы, где вместо «й» в имени файла была комбинация «и» и кратки. Так что что-то у яблок не так, как на windows в этом плане.
quarantino
16.07.2015 05:21+2На маке файловая система (HFS+) использует decomposed unicode, на форточках (например NTFS) — composed. (А на линуксе — как повезет, можно получить обе сразу).
Иногда получаются проблемы — архивы, синхронизация файлов, вот это все. В svn с этим долго боролись в свое время.khim
16.07.2015 07:10+2А на линуксе — как повезет, можно получить обе сразу
На линуксе самый простой и «естественный» подход к именованию файлов. Имя файла — это любая последовательность байт в которой нет символов '/' и '\0'. Что здорово упрощает ядро, но приводит к куче проблем в других местах.
GEOgraf
15.07.2015 23:00+2>вот вам фокус: скопируйте ее (букву «и?») в блокнот, поставьте курсор в конец буквы и нажмите backspace. Магия, отвал башки просто!
У меня ubuntu, а что не так, объясните? заинтриговали…ValdikSS Автор
15.07.2015 23:02Не работает, башка (знак краткости) не убирается, буква не превращается в обычное «и»? Что за браузер? Может, особенность IME? В убунту какой, ibus?
encyclopedist
15.07.2015 23:15+3Я тоже попробовал, gedit, Ubuntu 15.04. Буква удаляется полностью. ibus выключен.
zelenin
15.07.2015 23:24+2а уж как PHPStorm колбасит от комбинирующих символов — мама дорогая.
artspb
21.07.2015 17:17А поделитесь скриншотом, пожалуйста — любопытно.
zelenin
21.07.2015 21:37i.imgur.com/NjDgFsk.png это просто строка с разными символами для теста ) местоположение курсора отмечено стрелкой. При перемещении курсора символы прыгают в разные стороны. Заметьте где закрывающая кавычка и точка с запятой — между ними на самом деле нет пробелов — это артефакты.
GEOgraf
15.07.2015 23:23+1Я вас не понял
> Не работает, башка (знак краткости) не убирается, буква не превращается в обычное «и»?
я просто попробовал в gedit, и всё норм.
>Что за браузер? Может, особенность IME? В убунту какой, ibus?
мне интересно как это в windows происходит на примере блокнота и не понимаю причём здесь браузер.ValdikSS Автор
15.07.2015 23:29+1А, я думал, вы в браузере в поле «ответ» копируете. У меня KDE4, выглядит это так:
a.1339.cf/mbyzyb.webm
AndreyDmitriev
15.07.2015 23:04+3уже 3 недели мне не приходилось смотреть на уползший умляут
Вот честно — ни разу такого явления не видел.
Вообще если быть дотошным, то эта галочка над й — не умляут, а «кратка» или «бреве» — так по крайней мере википедия утверждает.
А умляуты — они в основном только в немецком встречаются.
Кстати, об умляутах — я уже много лет время от времени вообще смотрю вот на такое:
И еще долго буду смотреть, потому что многим просто не приходит в голову, что кто-то может в Германии включить кириллицу для неюникодных приложений (да, я в курсе про applocale). Хотя казалось бы — юникод уже почти четверть века существует.
Я настолько привык к этим «цffnen» и «schlieЯen», что даже и не замечаю уже — как будто так и надо. А у вас — «галочка уползла», понимаешь…ValdikSS Автор
15.07.2015 23:21+4Вообще если быть дотошным, то эта галочка над й — не умляут, а «кратка» или «бреве» — так по крайней мере википедия утверждает.
Спасибо, исправил.
Эх, я как-то с японской локалью сидел, тоже насмотрелся на C:?Program Files?SgtRiggs91
16.07.2015 00:04+1Есть такой софт на Java для регистрации пассажиров в аэропортах, пишется для одной большой российской авиакомпании. Так вот в консоли там знак йены заменяет апостроф. Вот прямо нажимаешь на клавиатуре ', а вставляется ?. Это не единственная такая замена там, но эта встречается чаще всего.
ValdikSS Автор
16.07.2015 00:05+4Так там локаль, наверное, японская с SHIFT JIS установлена, только у нее такая особенность
ru.wikipedia.org/wiki/Shift_JIS
zelenin
15.07.2015 23:04+1подобная статья уже была на Хабре. В ней было рассказано все то же самое, примеры с браузерами приводились, причем даже тесты в разных.
Сам в первый раз встретился с подобным не в теории на Ютубе. Скачал ролик, копипастом с ютуба назвал его, а потом натравил на него видеоредактор, а тот не смог файл открыть. Начал я пытаться этот ролик открыть разным ПО до тех пор, пока один не открыл его с такой ошибкой, какая мне помогла вспомнить статью из начала коммента — имя файла исказилось в последней позиции (там тоже должна была быть «й»). Проверил — так и есть: на ютубе в названии фигурировал комбинирующий бреве.ValdikSS Автор
15.07.2015 23:07Хм, если найдете, линканите, пожалуйста. Я не нашел, когда искал.
zelenin
15.07.2015 23:19+2news.shamcode.ru/blog/sanitize-this-i-search-that автор удален, поэтому статья исчезла — в избранном кусочек текста нашел и загуглил
вот еще подробная статья на эту тематику: habrahabr.ru/post/45489ValdikSS Автор
15.07.2015 23:42+2Спасибо, хорошая статья и информативные комментарии. Обидно, что автора удалили.
matiouchkine
16.07.2015 10:23+3Автор я; удалить меня не так просто, но с тех пор все такие статьи пишутся исключительно на английском и выкладываются в места, где нет воинствующей русскоязычной школоты.
По мотивам этой заметки я тогда написал и более-менее полновесную библиотеку для руби, которая умеет композицию и декомпозицию, up-case и down-case, и так далее. Работает с современной версией описаний юникода от консорциума. Если надо — пожалуйста: github.com/mudasobwa/forkforge
Ezhyg
15.07.2015 23:33Когда я написал комментарий про косяк с «отображением» этой буквы, где-то тут же, меня просто проигнорировали. Мне встречалось такое поведение только на хабре/гике.
domix32
16.07.2015 01:04+17А????????????????????????? ????????????????????????????е???????????????????щ????????????????????????????????ё?????????????????????????????? ???????????????????????????????м???????????????????о????????????????????ж??????????????????????н??????????????????о?????????????????????????????? ????????????????????????в????????????????????с???????????????????????????п????????????????????????????????????о?????????????????????????м??????????????????????????????????????н????????????????????????????и??????????????????????????????????т??????????????????????ь????????????????????????????????? ??????????????????????????????Z????????????????????????????A??????????????????????????????L?????????????????????????????G??????????????????????O????????????????????????
grossws
16.07.2015 05:10+1Вы очень
суровыUbuntovod
16.07.2015 06:52На какой системе смотрите, интересно?
Артефактов нет
grossws
16.07.2015 07:07+2Arch Linux, KDE, chrome 43. В консоли хрома другие артефакты (например, нет черточек вокруг А). То что отрендерилось содержит 32 разлоичных глифа из Arial, 11 из DejaVu Sans и 11 из Liberation Mono. В общем, поддержка такого юникода у меня в шрифтах — так себе.
GAS_85
16.07.2015 16:06+1Win 7, FireFoxZyXI
16.07.2015 17:42+2Судя по количеству символов, которое я вижу:
Скрытый текстpepelsbey
16.07.2015 03:55+3Первый раз столкнулся с уехавшей краткой именно на Маке, так что привычно виню скорее его, чем Google Docs.
BlackFoks
16.07.2015 09:55Раньше этим еще грешил Adobe Acrobat. Например при копировании из него в Word, «й» вставлялась как 2 отдельных символа, причем Word тогда некорректно это обрабатывал и знак «кратка» съезжал. Приходилось постоянно за этим следить, особенно во всяких курсовых и прочем, где могли придраться.
toxicdream
16.07.2015 12:14+1Если кратка уползает, то это по большей части вина определенного шрифта.
Попробуйте в том же блокноте с текстом с этой «и?» «поиграться шрифтами».
Много интересного можно увидеть.
ValdikSS Автор
16.07.2015 22:37+1Внимание!!! Найдена «е?» (CYRILLIC SMALL LETTER IE + COMBINING DIAERESIS) в большом количестве!
habrahabr.ru/company/yandex/blog/250753
Написал автору публикации, может сможет вспомнить, какая ОС и софт использовался.encyclopedist
16.07.2015 23:32Я тут всрпомнил, что когда-то обращал внимание на «красивенькие» кавычки в каком-то топике. И нашёл, и бинго! Буква й там составная! Человек использовал некий iA Writer. Кстати, в топике по вашей ссылке тоже такие кавычки есть.
encyclopedist
16.07.2015 23:42Видимо, вот это: iA Writer. Есть для MacOS, iOS и Android. Интересно, зараза свойственна конретному редактору или это свойство какой-то библиотеки которую они применяют и есть другие приложения с такими же свойствами.
encyclopedist
16.07.2015 23:57На их сайте в справке интересная информация тут. Похоже, эти замены делает таки OSX.
Artima
17.07.2015 11:37Мда… недавно боролся с неразрывным пробелом в тексте отчаянно, а тут оказывается еще интереснее всё.
MTonly
19.07.2015 02:19+1Проблема в полный рост в статье на Lenta.ru (проявляется в Firefox 40 и IE 11). В браузерах на основе Chromium (например, Opera 30 и Яндекс.Браузер) не проявляется, и поиск по странице работает корректно.
vlivyur
20.07.2015 08:19Причём лишь некоторыми местами, основная масса букв нормальные. В opera 12 тоже не работает.
amarao
24.07.2015 19:53Линукс, FF, mousepad — все композитные символы рисуются нормально и удаляются за единый бэкспейс.
NeoCode
Unicode все больше напоминает какую-то немыслимое нагромождение вещей, относящихся по сути к разным уровням абстракции.
Хотя всего-то — таблица символов. Должна быть таблица символов — если делать по уму.
Зачем вообще было делать возможность прикручивать всякие надстрочные символы к любой букве? Тогда бы уж и математическую нотацию поддержали, всякие верхние/нижние индексы, подчеркивания/надчеркивания/перечеркивания/обводку, многоэтажные дроби и корни и прочее.
Только тогда это был бы уже не Unicode, а полноценный язык разметки. А это совсем не то, ради чего создавался Unicode. ИМХО конечно.
SerafimArts
Как обозначить символ ударения в строке? Сдублировать все возможные символы с этим символом? Думаю что не сто?ит.
NeoCode
А как обозначить верхний индекс (x в степени n)? Дублировать все цифры и буквы всех алфавитов еще два раза (для верхнего и нижнего индексов)?
Чем ударение концептуально отличается от индекса?
ValdikSS Автор
Цифры-то есть: x?, x?, x?…
NeoCode
Ну в реальном применении цифры без букв малополезны. Хотя-бы латинский алфавит напрашивается… но где в таком случае остановиться? Допустим, корень — это символ v и надчеркивание над всеми символами подкоренного выражения. Вроде сделать несложно — по аналогии с ударением ввести верхнюю черту над символом (а может такая уже и есть). Но дальше пойдут вложенные корни. Их как?
khim
Латинский алфивит у Unicode есть почти весь (нет почему-то только буквы q): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.
Что включать, а что нет — над этим очень долго думают, да. Понятно что всё это — некоторый компромисс, но как бы понятно, что как минимум IPA поддерживать нужно — оттуда всё и идёт.
ivan386
У меня на планшете отображаются только: h j n w. Остальные заменены пробелами.
il--ya
Я подозреваю, q отсутствует по вине Bell Labs.
Вот так выглядели их кнопочные номеронабиратели:
seriss.com/people/erco/dtmf_bell_labs/sv11111219.jpg
torbasow
Частицы бы, ли, же пишутся через пробел! Как можно так косячить в такой перфекционистской дискуссии?
vanxant
И сколько этих «всех возможных» символов могут иметь ударение? 6 гласных в латинице, 10 в кириллице, еще несколько (не знаю точное количество) в греческом. Умножаем на два для прописных букв. Итого аж меньше 50. При овер миллионе кодопоинтов в текущей версии стандарта.
Как надо было делать правильно: для каждого языка свой набор символов, даже если внешне они совпадают. То есть кодопоинт немецкой А должен отличаться от английской А (так же как он сейчас отличается от кодопоинта русской А). Тогда для каждого конкретного языка можно однозначно было бы определить коллацию (алфавитный порядок и таблицу подстановок при поиске и сравнении). В которой, например, русские символы и, И, й, Й все приводились бы к И для целей сравнения, как это и должно быть по правилам конкретно русского языка. При этом для украинского языка коллация была бы другой. Потому что она и есть другая. Если бы кодопоинт русской И отличался от кодопоинта украинской И, всё работало бы «из коробки». Но сейчас программисты должны явно указывать, какую коллацию нужно использовать — вот только 99% слыхом про все эти заморочки не слыхивали.
andreishe
Угу, вот только тогда немцам пришлось бы иметь две раскладки на компьютере, если бы они захотели набирать текст и на английском, и на немецком, и не забывать переключаться между ними. При том, что все буквы английского алфавита содержаться в немецком, никто в своем уме этим заморачиваться бы не стал. Таким образом, мы получим гору текста на английском, которую англичане могут прочитать, но по которой не работает поиск. Точно так же поиск с включенной немецкой раскладкой не работал бы по тексту, набранному в английской, что с точки зрения пользователя (которому пофиг на проблемы программистов) — баг.
khim
Хочу только добавить, что идея разделить кириллические и латинские символы пришла в голову разработчикам тоже не сразу. На какой-нибудь БЭСМ-6 они были слиты «де юре», на ЕС ЭВМ они были слиты «де факто», но уже на СМках их разнесли. То есть это просто оказалось удобнее. Французы же и немцы ничего такого даже не пытались сделать, то есть им этого было не нужно.
Всё это случилось задолго до появления Unicode 1.0.
vanxant
На эту тему есть интересная заметка в преамбуле стандарта юникода.
Хотя общеизвестно, что европейские алфавиты унаследованы друг от друга (греческий породил два потомка — латиницу и кириллицу) и многие буквы в них совпадают, тем не менее, в лингвистике принято считать их разными алфавитами. В том числе из-за сложившихся культурных отличий в начертании некоторых «совпадающих» букв (например, ? — a — а. Обратите внимание на разницу в начертании латинской и кириллической «a» в одном и том же шрифте).
А вот на востоке всё наоборот, совпадающие иероглифы не дублируются для разных языков.
khim
P.S. Особенно радует что Unicode 8.0 в том месте, где должны описываться эти самые флаги ссылается на github. В раздел «Google Internationalization». А если завтра github обанкротится или Гугл перестанет этой темой интересоваться, то что — всё? Уже никто и никогда не сможет быть уверен, что он правильно реализует стандарт?
macik_spb
А что там с законодательным запрещением некоторых последовательностей символов?
Это я про emoji и вариации на тему компоновки: MAN+MAN+HEART и типа того…
vanxant
Не скажу за немцев, но во многих латино-алфавитных странах раскладок действительно две, английская и родная с местными спецсимволами (умляутами и т.п.).
Определение языка по словарю никто не отменял, да.
KReal
ШОК! У немцев и так две раскладки :)
MuLLtiQ
ну так идея в том что имея немецкую раскладку можно писать символы английского алфавита, а вот с английской раскладкой символы немецкого — нет
NeoCode
В русском языке «И» и «Й» все-же разные буквы (как и буквы «Е» и «Ё»). То что у буквы есть какие-то элементы не связанные с ней непрерывными линиями, не значит что эти элементы нужно выделять в отдельные символы, и в дальнейшем лепить любой другой букве. Ударение — ладно, соглашусь, это отдельный символ. Может быть в каких-то специальных случаях нужен отдельный символ " ? ", но использовать его для конструирования существующих букв неверно.
И, если возвращаться к исходной проблеме, ошибка в том что кто-то прилепил к букве «И» верхний элемент, получив таким образом визуально другую букву.
Я могу аналогично сделать букву «Ы» из мягкого знака и латинской L: «Ьl». Но зачем?
khim
Именно: незачем. Потому что знак «ы» логически на две сущности не разделяется. А вот «и» краткое (вы хоть на название-то обратите внимание, да?) — разделяется.
NeoCode
«И» и Й" это две разные буквы. Название буквы тут вообще не при чем.
Надстрочные элементы как таковые могут быть отдельными сущностями и использоваться в каких-то особых случаях (то же ударение или еще что-то) — но это не делает букву «Й» состоящей из двух символов. Иначе эта «кратка» занимала бы отдельное место в алфавите, чего не наблюдается.
khim
Разумеется. Её делает состоящей из двух элементов тот простой факт, что в 35-буквенном русском алфавите её нет. А использовался он вовсе не так и давно — меньше ста лет назад.
Если вы считаете что Unicode призван обслуживать ваши личные потребности, то вы ошибаетесь. Мир, он, как бы, не вчера родился и в нём есть много вещей, про которые вы ничего не знаете — но это не значит, что они никому не нужны. Для ваших личных потребностей, я уверен, сгодился бы вариант и без римских цифр и без многих других чудес.
Egor3f
Позволю себе вклиниться в ваш спор.
и далее: По вашему же, получается, в Unicode должна отсутствовать полноценная буква современного алфавита только потому, что она образована модификатором.khim Вы, конечно, правы, что в дореволюционном алфавите такой буквы нет, и для поддержки старых текстов её добавили наряду с древнешумерской письменностью, как Вы указали в комментарии ниже.
Но в современном русском языке де-юро и де-факто такая буква есть, также как в белорусском алфавите есть у краткое.
Откройте эту статью в Википедии, пункт 4.
По моему скромному мнению, NeoCode также не во всём прав: диакритические знаки входить в Unicode также должы, для формальной поддержки тех же старославянских текстов.
khim
По поводу того что может «складываться» и «раскладываться» в своё время много копий сломали, но сейчас-то всё уже давно устаканилось, канонические таблицы как бы всем доступны, так что неясно почему этот вопрос всё ещё возникает. Написано что «й» может «расколадываться» — значит раскладиывается. Не написано, что «щ» и/или "?" могут раскладываться — значит не раскладываются. Чего шуметь-то?
Zava
«Й» достойна быть самостоятельным элементом Unicode уже хотя бы по тому, что это не просто «И» краткая (которой гораздо ближе символ «i»), а по природе своей отдельный звук имеющий совершенно иную природу произношения: «и» — гласный звук, «й» — согласный. «И» и «Й» не чередуются в корнях слов, в отличае от «е» и «ё», которые в этом смысле — суть одно и тоже.
andyudol
Буква й пришла в русское светское письмо из церковнославянского грубо говоря при Никоне. А исчезла по повелению Петра I, отменившего все надстрочные знаки. Через небольшое время кратка восстановилась, но й отдельной буквой не считалась. И только большевики объявили её снова отдельной буквой.
Iceg
>А вот «и» краткое (вы хоть на название-то обратите внимание, да?) — разделяется.
Тогда почему в алфавите она присутствует как самостоятельная буква? В немецком гласные с умляутом — это именно обычные гласные с умляутом, их нет в алфавите.
surkova
В шведском a, a, o — обычные буквы алфавита. И шведский алфавит это не A-Z, а A-O.
gene4000
Зато есть «эсцет», которую тоже упразднить давно хотят.
vanxant
Буквы И и Й разные, но по факту взаимозаменяемые. Любителями андройда, например. Хотя это и безграмотно, но в южных губерниях общепринято.
А вот точки над Ё даже по правилам ставятся только в том случае, если их наличие/отсутствие влияет на смысл. В случае все/всё, например, или в именах собственных.
khim
Дело даже не в любителях «андройдов». Как я уже писал: дело в том, что ещё каких-то 100 лет назад буквы «й» не существовало, а знак " ?" можно было ставить не только над «и». А поскольку Unicode должен позволять набирать не только современные тексты и будет странно если он будет совместим с древнешумерскими текстам, но не будет поддерживать старославянские, то и имеем то, что имеем — всякие чудеса типа ??…
Maccimo
Малограмотные граждане без проблем заменяют на «и краткую» и безударное «е».
Взаимозаменяемыми от этого «и», «й» и «е» не становятся.
vanxant
Да плевать, много или мало в этом грамоты.
Гуманитарии они вообще люди такие, оторванные от реальности.
Вот допустим, у вас интернет-магазин телефонов.
И вот вы анализируете логи поиска и выясняете, что 3% посетителей ищут [нокия андройд]. И дальше вы можете или искать по правилам юникода, или по правилам сложившейся практики.
Ну, если вы владелец магазина, вы, конечно, можете удовлетвориться осознанием собственного грамматического превосходства над этими убогими.
Но если вы всего-лишь разработчик, то, с точки зрения владельца, вы допустили баг, который снизил его доходы с поиска по сайту на 3%. И он имеет полное право вычесть убытки из вашей зарплаты.
Шутки шутками, но битрикс, который требует mbstring.func_overload=2 на этапе установки, многократно окупается уже за счёт этого — относительно джумлы и ворпресса, где в плагинах сплошь и рядом тупорылые вызовы однобайтовых строковых функций.
andreishe
Интересная позиция. Этот гипотетический владелец магазина и прибылью наверно с программистами делится тогда, раз считает допустимым убытки с них вычитать?
vanxant
Ну, в мире эльфов и единорогов — может быть, кто-то действительно и делится.
В том несовершенном мире, который дан нам Господом в объективных ощущениях и строчках ТК — работодатель вправе лишать премии (которая может достигать 40% от зарплаты) за умеренно-некачественное исполнение служебных обязанностей. А вот вопрос начисления плюшек почти всецело отдан на откуп договору между фирмой и сотрудником.
khim
Согласитесь, что «лишать премии за умеренно-некачественное исполнение служебных обязанностей» и «и он имеет полное право вычесть убытки из вашей зарплаты» это таки сасем чут-чут разные вещи, да?
Принцип приватизации прибылей и национализация убытков не в России придуман, но почему-то в других странах это считается злом, с которым хотя бы теоретически борются и которое скрываются за всякими хитрыми словесами, а вот в России работодатели как-то даже не понимают почему кому-то этот подход может не нравится. То есть такое ощущение, что они искренне не понимают, что слова «у нас договор сорвался, денег нет» ну никак не могут быть оправданием для «мы тебе только половину зарплату выплатим».
Я, правда, сам это больше десяти лет назад наблюдал (просто прекратив общаться с российскими работодателями), но мои знакомые говорят, что за эти десять лет ничего толком не изменилось…
lany
Взаимозаменяемые? А в каких губерниях говорят «йрйдйи» вместо «иридий»?
khim
asm0dey
Плюс все вариации всех гласных из всех языков — с бреве, умляутами и так далее. Плюс заглавные тоже.
chabapok
Насколько помню, в юникоде есть как буквы с ударением одним codepoint, так и дополнительный codepoint ударения.
Maccimo
А вы уверены, что это именно буквы с ударением, а не, к примеру, часть венгерского алфавита?
https://ru.wikipedia.org/wiki/Венгерский_алфавит
chabapok
не уверен