gianthare: (Default)
[personal profile] gianthare

Короче, я понял, корейский вас интересует больше, чем вечерние купания.
Так вот. Во первых, корейский, хоть и выглядит как кракозябры, на самом деле алфавит. Только, видимо все же под влиянием китайского, буквы группируются в слоги, в смысле буквы/звуки одного слога пишутся один рядом/под другим и вписаны в типа квадрат. Каждый слог состоит примерно из начального согласного, гласного и конечного согласного, примерно, которые пишется один над другим. Один из согласных может отсутствовать, для этого специальное обозначение, по крайней мере для первого. Кстати, корейский алфавит придумал лично какой-то их король в 16-ом веке. До этого они писали более-менее на китайском, как я понимаю. И до сих пор немного (или много, я не смог понять) используют иероглифы.
Что это означает с точки зрения компьютера и программиста? Что нельзя просто показать корейские буквы одна за другой справа налево. А надо их хитро размещать одну рядом/под другой. Причем иногда рядом, иногда под, в зависимости от того, что дальше в слоге.
Простым решением было сделать фонт, в котором каждый слог нарисован уже целиком, и так его и показывать. Коды для этих знаков не случайные, а вполне себе вычислимые: [(initial) × 588 + (medial) × 28 + (final)] + 44032
Последнее 44032 думаю юникодовская добавка.
Вот пример из Википедии:
Чтобы найти код слога "한" in Unicode:
Код начальной согласной (ㅎ) - 18.
Код гласной (ㅏ) - 0.
Код конечной согласной (ㄴ) - 4.
Подставляем в формулу и получаем [(18 × 588) + (0 × 28) + 4] + 44032 = 54620. В Unicode код слога 한 это 54620.
(Я когда-то примерно знал буквы, но забыл, так что я не знаю, какой это слог. Ок, это, оказывается, хан)
Полюбуйтесь, как они нетривиально расположены. Неудивительно, что решили нарисовать весь слог заранее.

Хорошо, а как мы их вводим? А очень просто - по одной букве, ведь это же алфавит. Кстати, для отдельных букв у нас тоже есть символы, хотя реально в корейском тексте отдельные буквы не встречаются. Значит, человек нажимает Х, мы ставим/рисуем Х, дальше человек нажимает А, опа, стираем последнее Х, и пишем вместо этого ХА, человек нажимает Н - стираем ХА и пишем ХАН, т.е. символ Х*588 + А*18 + Н + 44032.
А если он ошибся, хочет исправить и нажал backspace, то стираем символ ХАН, считаем, из каких букв он был составлен, и пишем ХА. Красота.
Казалось бы, в нынешние времена процессору делать в основном нечего и он вполне может сам посчитать и отрендерить ХАН в правильном порядке, так же как он может показать â, закодированный при помощи обычного a, за которым идёт circumflex.
Но нет, ещё 7 лет назад то ли айфон то ли андроид правильно показывал только pre-composed syllables, а отдельные буквы так и показывал по-отдельности.

Date: 2023-01-13 12:53 pm (UTC)
From: [identity profile] green-fr.livejournal.com

Кайф, спасибо! Я вспомнил, как в 2006 году пытался разобраться с корейским юникодом — до численной формулы я так и не дошёл, а основной проблемой, смешно сказать, было отсутствие половины символов в стандартных шрифтах.

Date: 2023-01-13 01:22 pm (UTC)
From: [identity profile] gianthare.livejournal.com

Видимо в 2006 я ЖЖ уже не читал. Иного объяснения тому, что там не моего коммента, я придумать не могу - в 2006 я знал про корейский ввод всё

Date: 2023-01-13 02:12 pm (UTC)
From: [identity profile] green-fr.livejournal.com

Возможно, мы ещё не были знакомы? Ну и я в своём ЖЖ не сильно рекламировал этот свой побочный журнал. Писал практически "для души", разбирался одновременно и с письменностями, и с юникодом.

Date: 2023-01-13 02:47 pm (UTC)
From: [identity profile] gianthare.livejournal.com

А, это 2006, я думал про 2016

Profile

gianthare: (Default)
gianthare

March 2026

S M T W T F S
1234567
8910111213 14
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 15th, 2026 12:55 pm
Powered by Dreamwidth Studios