Кириллица и диакритические знаки в UNICODE

Ответить
Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Кириллица и диакритические знаки в UNICODE

Сообщение roman »

Как оказалось на сегодня это проблематичный вопрос. Как набрать русские буквы с диакритическими знаками и чтобы это все было в UNICODE?
  1. Интересная заметка Бриджабаси прабху, но без непосредственного решения.
  2. Онлайн конвертер который делает IAST english в IAST russian !!!! Просто шикарная вещь ) На Выходе получаем кириллицу с диакритикой и все это в UNICODE.
Если, кто-то знает, как решить вопрос с набором в электронном виде, то пожалуйста пишите.
Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

... отныне политика использования диакритических знаков заключается в том, что я хочу, чтобы они использовались везде, в больших книгах, маленьких книгах, а также BTG(Обратно к Богу). Если есть какие-либо трудности с произношением, то после правильного диакритического написания в скобках могут быть написаны слова "произносится как _". Поэтому даже на обложках следует использовать диакритические знаки. Мы не должны снижать наш стандарт из-за невежественных масс. Диакритическое правописание принято на международном уровне, и ни один ученый человек не станет даже читать наши книги, если эта система не поддерживается.
Письмо: Джадурани - Бомбей, 31.12.1971

Трансцендентная вибрация, возникающая в результате повторения:
Харе Кр̣шн̣а, Харе Кр̣шн̣а
Кр̣шн̣а Кр̣шн̣а, Харе Харе
Харе Ра̄ма, Харе Ра̄ма
Ра̄ма Ра̄ма, Харе Харе
- это возвышенный метод возрождения нашего сознания Кр̣шн̣ы.
Комментарий к Харе Кр̣шн̣а Мантре, первая грампластинка - 1966.
За это сообщение автора roman поблагодарил:
Abhay Charan das (24 июл 2019, 10:36)
Рейтинг: 50%
Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

получил ответ от Бриджабаси прабху:
Вот метод ввода для m17n. Нужно скопировать это в текстовый файл, назвать его sa-cyrillic.mim и поместить его в usr/share/m17n/. После этого нужно перелогиниться и добавить в ibus созданную нами раскладку (sa-cyrillic). Она будет в конце в меню Other. Например, для набора «ӯ» нужно дважды нажать «u» в этой раскладке.

Код: Выделить всё

;;;
sa-cyrillic.mim
;;;
;;; Input method for Sanskrit transliteration using the ITRANS scheme.

(title «sa-cyrillic»)

(map
(trans

(«aa» «а̄»)
(«AA» «А̄»)
(«ii» «ӣ»)
(«II» «Ӣ»)
(«uu» «ӯ»)
(«UU» «Ӯ»)
(«.r» «р̣»)
(«.R» «Р̣»)
(«.rr» «р̣̄»)
(«.RR» «Р̣̄»)
(«.l» «л̣»)
(«.L» «Л̣»)
(«.ll» «л̣̄»)
(«.LL» «Л̣̄»)
(«.m» «м̣»)
(«.M» «М̣»)
(«;m» «м̇»)
(«;M» «М̇»)
(«.h» «х̣»)
(«.H» «Х̣»)
(«;n» «н̇»)
(«;N» «Н̇»)
(«~n» «н̃»)
(«~N» «Н̃»)
(«.t» «т̣»)
(«.T» «Т̣»)
(«.d» «д̣»)
(«.D» «Д̣»)
(«.n» «н̣»)
(«.N» «Н̣»)
(«;s» «ш́»)
(«;S» «Ш́»)

(«a» ?а)
(«b» ?б)
(«v» ?в)
(«g» ?г)
(«d» ?д)
(«e» ?е)
(«j» «дж»)
(«i» ?и)
(«y» ?й)
(«k» ?к)
(«l» ?л)
(«m» ?м)
(«n» ?н)
(«o» ?о)
(«p» ?п)
(«r» ?р)
(«s» ?с)
(«t» ?т)
(«u» ?у)
(«h» ?х)
(«c» ?ч)
(«sh» ?ш)
(«.e» ?э)

(«A» ?А)
(«B» ?Б)
(«V» ?В)
(«G» ?Г)
(«D» ?Д)

(«E» ?Е)
(«I» ?И)

(«J» «Дж»)
(«Y» ?Й)
(«K» ?К)
(«L» ?Л)

(«M» ?М)
(«N» ?Н)
(«O» ?О)
(«P» ?П)
(«R» ?Р)
(«S» ?С)
(«T» ?Т)
(«U» ?У)

(«H» ?Х)
(«C» ?Ч)

(«Sh» ?Ш)
(«SH» ?Ш)

(«.E» ?Э)
))

(state
(init
(trans)))
А вот макросы для ЛибреОффиса:

1) Из Баларама в кириллицу:

Код: Выделить всё

*********************
Sub BalaramToCyrillicUnicode

Dim balaram(5) As String, cyrillic(5) As String
Dim n as long
Dim oDoc as object, oReplace as object

balaram() = Array(» eva», «ñ», «ä», «é», «ü», «å», «è», «ÿ», «ì», «ï», «ö», «ò», «ë», «ç», «ù», «à», «Ä», «É», «Ü», «Å», «È», «Ì», «Ï», «Ö», «Ò», «Ë», «Ç», «Ñ», «Ù», «a», «b», «c», «d», «e», » e», «g», «h», «i», «j», «k», «l», «m», «n», «o», «p», «r», «s», «t», «u», «v», «y», «A», «B», «C», «D», «E», » E», «G», «H», «I», «J», «K», «L», «M», «N», «O», «P», «R», «S», «T», «U», «V», «Y»)

cyrillic() = Array(» эва», «ш», «ā», «ӣ», «ӯ», «р̣», «р̣̄», «л̣», «н̇», «н̃», «т̣», «д̣», «н̣», «ш́», «х̣», «м̇», «Ā», «Ӣ», «Ӯ», «Р̣», «Р̣̄», «Н̇», «Н̃», «Т̣», «Д̣», «Н̣», «Ш́», «Ш», «Х̣», «а», «б», «ч», «д», «е», «э», «г», «х», «и», «дж», «к», «л», «м», «н», «о», «п», «р», «с», «т», «у», «в», «й», «А», «Б», «Ч», «Д», «Е», » Э», «Г», «Х», «И», «Дж», «К», «Л», «М», «Н», «О», «П», «Р», «С», «Т», «У», «В», «Й»)

oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(balaram()) To UBound(cyrillic())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = balaram(n)
oReplace.ReplaceString = cyrillic(n)
ThisComponent.ReplaceAll(oReplace)
Next n
End Sub
***********************
2) Из юникода в Баларам:

Код: Выделить всё

Sub UnicodeToBalaram

Dim Balaram(5) As String, IAST(5) As String
Dim n as long
Dim oDoc as object, oReplace as object

IAST() = Array(«ā», «ī», «ū», «ṛ», «ṝ», «ḷ», «ṅ», «ñ», «ṭ», «ḍ», «ṇ», «ś», «ḥ», «ṁ», «Ā», «Ī», «Ū», «Ṛ», «Ṝ», «Ṅ», «Ñ», «Ṭ», «Ḍ», «Ṇ», «Ś», «Ṣ», «Ḥ», «ṃ»)

Balaram() = Array(«ä», «é», «ü», «å», «è», «ÿ», «ì», «ï», «ö», «ò», «ë», «ç», «ù», «à», «Ä», «É», «Ü», «Å», «È», «Ì», «Ï», «Ö», «Ò», «Ë», «Ç», «Ñ», «Ù», «à»)

oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(IAST()) To UBound(Balaram())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = IAST(n)
oReplace.ReplaceString = Balaram(n)
ThisComponent.ReplaceAll(oReplace)
Next n

IAST() = Array(«ṣ»)

Balaram() = Array(«ñ»)

oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(IAST()) To UBound(Balaram())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = IAST(n)
oReplace.ReplaceString = Balaram(n)
ThisComponent.ReplaceAll(oReplace)
Next n
End Sub
***********************
3) Из Баларама в юникод:

Код: Выделить всё

Sub BalaramToUnicode

Dim Balaram(5) As String, IAST(5) As String
Dim n as long
Dim oDoc as object, oReplace as object

Balaram() = Array(«ñ», «ä», «é», «ü», «å», «è», «ÿ», «ì», «ï», «ö», «ò», «ë», «ç», «ù», «à», «Ä», «É», «Ü», «Å», «È», «Ì», «Ï», «Ö», «Ò», «Ë», «Ç», «Ñ», «Ù»)

IAST() = Array(«ṣ», «ā», «ī», «ū», «ṛ», «ṝ», «ḷ», «ṅ», «ñ», «ṭ», «ḍ», «ṇ», «ś», «ḥ», «ṁ», «Ā», «Ī», «Ū», «Ṛ», «Ṝ», «Ṅ», «Ñ», «Ṭ», «Ḍ», «Ṇ», «Ś», «Ṣ», «Ḥ»)

oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(Balaram()) To UBound(IAST())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = Balaram(n)
oReplace.ReplaceString = IAST(n)
ThisComponent.ReplaceAll(oReplace)
Next n

Balaram() = Array(«jṣ», «Jṣ», «ṣj», «cṣ», «ṣc», «haṣā», «laṣā», «JṢ», «ṢJ», «CṢ», «ṢC», «osāṣi», «muṣi», «pāṣā», «tuṣi», «jhañ»)

IAST() = Array(«jñ», «Jñ», «ñj», «cñ», «ñc», «hañā», «lañā», «JÑ», «ÑJ», «CÑ», «ÑC», «osāñi», «muñi», «pāñā», «tuñi», «jhaṣ»)

oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(Balaram()) To UBound(IAST())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = Balaram(n)
oReplace.ReplaceString = IAST(n)
ThisComponent.ReplaceAll(oReplace)
Next n
End Sub

Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

latin symbols
ā ī ū ṛ ṝ ḷ ḹ ṃ ḥ ṭ ḍ ṅ ñ ṇ ś ṣ


Ā
ā

Код: Выделить всё

U+0100(hex)  0xC480(utf-8)  Ā(xhtml)
U+0101(hex)  0xC481(utf-8)  ā(xhtml)

Ī
ī

Код: Выделить всё

U+012A(hex)  0xC4AA(utf-8)  Ī(xhtml)  0049 0304
U+012B(hex)  0xC4AB(utf-8)  ī(xhtml)  0069 0304
Ū
ū

Код: Выделить всё

U+016A(hex)  0xC5AA(utf-8)  Ū(xhtml)  0055 0304
U+016B(hex)  0xC5AB(utf-8)  ū(xhtml)  0075 0304

Код: Выделить всё

U+1E5B(hex)  0xE1B99B(utf-8)  ṛ(xhtml)  0072 0323
U+1E5D(hex)  0xE1B99D(utf-8)  ṝ(xhtml)  1E5B 0304

Код: Выделить всё

U+1E37(hex)  0xE1B8B7(utf-8)  ḷ(xhtml)  006C 0323
U+1E39(hex)  0xE1B8B9(utf-8)  ḹ(xhtml)  1E37 0304

Код: Выделить всё

U+1E43(hex)  0xE1B983(utf-8)  ṃ(xhtml)  006D 0323

Код: Выделить всё

U+1E25(hex)  0xE1B8A5(utf-8)  ḥ(xhtml)  0068 0323

Код: Выделить всё

U+1E6D(hex)  0xE1B9AD(utf-8)  ṭ(xhtml)  0074 0323

Код: Выделить всё

U+1E0D(hex)  0xE1B88D(utf-8)  ḍ(xhtml)  0064 0323

ñ

Код: Выделить всё

U+1E45(hex)  0xE1B985(utf-8)  ṅ(xhtml)  006E 0307
U+00F1(hex)  0xC3B1(utf-8)  ñ (ñ)(xhtml)  006E 0303
U+1E47(hex)  0xE1B987(utf-8)  ṇ(xhtml)  006E 0323
ś

Код: Выделить всё

U+015B(hex)  0xC59B(utf-8)  ś(xhtml)  0073 0301
U+1E63(hex)  0xE1B9A3(utf-8)  ṣ(xhtml)  0073 0323
________________________________________________________________
Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

cyrillic symbols
а̄ ӣ ӯ р̣ р̣̄ л̣ л̣̄ м̣ х̣ т̣ д̣ н̇ н̃ н̣ ш́



а̄

Код: Выделить всё

U+0304   U+0430


Ӣ
ӣ

Код: Выделить всё

U+04E2(hex)  0xD3A2(utf-8)  Ӣ(xhtml)  0418 0304
U+04E3(hex)  0xD3A3(utf-8)  ӣ(xhtml)  0438 0304

Ӯ
ӯ

Код: Выделить всё

U+04EE(hex)  0xD3AE(utf-8)  Ӯ(xhtml)  0423 0304
U+04EF(hex)  0xD3AF(utf-8)  ӯ(xhtml)  0443 0304

Р̣
р̣
Р̣̄
р̣̄

Код: Выделить всё

U+0420  U+0323
U+0440  U+0323
U+420  U+323  U+304
U+440  U+323  U+304


Л̣
л̣
Л̣̄
л̣̄

Код: Выделить всё

U+041B U+0323
U+043B U+0323
U+041b U+0323 U+0304
U+043b U+0323 U+0304

М̣
м̣

Код: Выделить всё

U+041C  U+0323
U+043C  U+0323

Х̣
х̣

Код: Выделить всё

U+0425  U+0323
U+0445  U+0323

Т̣
т̣

Код: Выделить всё

U+0422  U+0323
U+0442  U+0323

Д̣
д̣

Код: Выделить всё

U+0414  U+0323
U+0434  U+0323

Н̇
н̇
Н̃
н̃
Н̣
н̣

Код: Выделить всё

U+041D  U+0307
U+043D  U+0307
U+041D  U+0303
U+043D  U+0303
U+041D  U+0323
U+043D  U+0323

Ш́
ш́

Код: Выделить всё

U+0428  U+0301
U+0448  U+0301
Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

Combining Diacritical Marks
https://unicode-table.com/en/blocks/com ... cal-marks/

Hex to ASCII Text Converter
https://www.rapidtables.com/convert/num ... ascii.html

Cyrillic unicode
https://unicode-table.com/en/blocks/cyrillic/

Decode/Encode Unicode text
https://www.online-toolz.com/tools/text ... vertor.php

How to Type Transliterated Sanskrit with Diacritics in Mac OSX Video Tutorial
https://youtu.be/BozyBCVsgpI https://www.yogicstudies.com/blog/how-t ... in-mac-osx

Статья сайта Chakra, с у помянутым набором из под vim )
http://www.chakra.lv/blog/2016/10/19/tr ... o-russian/

Keyswap – IAST Diacritics Windows software (for Sanskrit scholars)
https://www.yesvedanta.com/keyswap/
Вложения
Keyswap-Sanskrit-Roman-Transliteration-Windows-Tool.zip
(80.78 КБ) 39 скачиваний
За это сообщение автора roman поблагодарил:
Abhay Charan das (20 июн 2021, 12:40)
Рейтинг: 50%
Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

Небольшое резюме по теме:

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

Проблема на сегодняшний день частично решается с помощью "составного" варианта, это когда для отображения одного символа используется несколько кодов юникод например кириллическая буква а̄ состоит из двух юникодовских кодов - U+0304 U+0430. Тогда, как латинская буква ā состоит из одного юникодовского кода - U+0100 поэтому с латинскими символами нет проблем, так как в юникод есть все необходимые коды для латинских букв с диакритикой. Что в свою очередь позволяет создателям шрифта создавать один символ(глиф) для отрисовки буквы с диакритическим знаком и такая буква будет выглядеть одинаково на всех устройствах.

"Частично" - почему же так, потому, что составной метод является проблемой для отрисовки шрифтов на разных устройствах, в разных браузерах и разных ОС которые в свою очередь привносят свои правила для отрисовки составных символов, вследствии чего кириллические символы с диакритикой отображаются некорректно. Это мы можем видеть на примере буквы а с верхним макроном - макрон просто съезжает с буквы в сторону - а̄

Каково же нормальное решение, оно достаточно доступно - необходимо отправить запрос по добавлению недостающих кириллических кодов юникод, в саму организацию юникод. Тогда создатели шрифтов смогут используюя один код создать букву(глиф) с диакритическим знаком, которая будет отображаться корректно на всех устройствах и во всех ОС.
За это сообщение автора roman поблагодарил:
Abhay Charan das (20 июн 2021, 12:40)
Рейтинг: 50%
Правдивость - последняя надежда человечества.

Аватара пользователя
roman
Администратор
Сообщения: 300
Зарегистрирован: 16 дек 2015, 06:51
Благодарил (а): 17 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Кириллица и диакритические знаки в UNICODE

Сообщение roman »

Пример подачи заявки в юникод https://habr.com/ru/post/395337/ , https://github.com/jloughry/Unicode
Правдивость - последняя надежда человечества.

Ответить

Вернуться в «Публикация книг и другой литературы»