Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: Iskandar от июня 15, 2012, 09:56

Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 09:56
На авестийский алфавит завели юникод.
(wiki/en) Avestan_alphabet#Graphemes (http://en.wikipedia.org/wiki/Avestan_alphabet#Graphemes)

К сожалению, я не очень представляю, что такое на самом деле Юникод и как сделать так, чтобы символы отражались не в виде квадратиков с цифрами. Что нужно скачать?
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 10:00
Учитывая, что его добавили только в версии 6.1, нормальных шрифтов может ещё и не быть.

Ещё одна сложность — что его добавили в первую плоскость, а многие программы работают только с  нулевой. Например, на ЛФ даже квадратики исчезнут.

Одним словом, ждите нормальной поддержки не-нулевых плоскостей, без неё трудно...
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 10:05
Понятно, спасибо.
В общем, нормальные уроки авестийского не получатся.

Есть неюникодовские шрифты, но они даже без поддержки справа налево
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 10:06
Скачайте шрифт отсюда: http://openfontlibrary.org/font/ahuramazda

Вот подробнее: http://zoroastrian-ru.livejournal.com/8014.html

Говорят, Firefox 3.6 должне поддерживать.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 10:18
Да, Firefox поддерживает.

𐬛𐬨𐬍𐬝𐬭𐬌

Так как Лингвофорум (точнее, MySQL; я когда-то посылал РавонаМу хак, который позволяет это обойти, но он не использовал его) не поддерживает не-нулевые плоскости, приходится набирать по кодам (минус — люди не смогут их нормально цитировать, и они не работают в Опере; с редактированием таких сообщений тоже будут проблемы):
[font=Ahuramazda]𐬛𐬨𐬍𐬝𐬭𐬌[/font]

Коды можно брать отсюда: http://www.alanwood.net/unicode/avestan.html (берите шестнадцатиричные и обводите в &#xКОД;.

Если надумаете писать уроки, можно автоматизировать ввод (сделать транслитератор из латиницы, например; только правила опишите).
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 10:36
Нда, без увеличения выглядит не очень...
А автоматический ввод справа налево можно создать?

Буду очень признателен, если поможете с этим всем.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 11:07
Цитата: Iskandar от июня 15, 2012, 10:36А автоматический ввод справа налево можно создать?
Его даже на форуме можно создать.
[bdo=rtl]Текст[/bdo] даст
Текст
Название: Авестийский Юникод
Отправлено: Karakurt от июня 15, 2012, 11:13
А давайте так писать? :)
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 11:39
Где-то так уже писали.
А в иврите только так и пишут.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 12:51
𐬵𐬈𐬮𐬮𐬊 𐬬𐬊𐬭𐬮𐬛𐬽

Кажется работает... Сейчас выставлю.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 13:05
Итак, вот пробная бета-версия: http://ablog.site90.com/lang/avest.html

Просьба всем: проверить, работает ли у Вас, и отписаться: а) какая версия браузера, а) какие баги, чего не хватает. Работает, скорее всего, только в Firefox'е (у меня версия 12), но нужно проверить и другие браузеры.

Буквы вводятся как они названы в уникоде. То есть см. в табличку http://www.alanwood.net/unicode/avestan.html (http://www.alanwood.net/unicode/avestan.html). Если буква называется aee, то её так и надо вводить. (Исключение: если буква называется Ce, CCe или CCCe, то вводить её надо C, CC, CCC соответственно, где C — согласный). Пунктуация рандомно разбросана по кнопкам *,:.!?;.

Чего пока что нет:
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 13:06
В Опере не видно, в BabelMapʼе вот это:
(http://teilnehmer.somee.com/WpfTextImage/Make.ashx?src=W2Y9VW5pdmVyc2FsaWFQbHVzXVtzej03Ml3wkKy18JCsiPCQrK7wkKyu8JCsiiDwkKys8JCsivCQrK3wkKyu8JCsm_CQrL1bL3N6XVsvZl0)
Spoiler: Текст ⇓⇓⇓
Название: Авестийский Юникод
Отправлено: Joris от июня 15, 2012, 13:07
в опере 12 не работает
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 13:09
Цитата: Bhudh от июня 15, 2012, 13:06
В Опере не видно, в BabelMapʼе вот это:
BabelMap написал её задом наперёд, насколько я понимаю.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 13:10
Цитата: Juuurgen от июня 15, 2012, 13:07
в опере 12 не работает
Ну, про Оперу можно было догадаться. Она вообще не поддерживает кодов уникода выше 0xFFFF.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 13:10
Он написал её Универсалиею+, ибо других шрифтов нету.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 13:12
У кого есть какие уникодные авестийские шрифты? Подгрузните на http://teilnehmer.somee.com/WpfTextImage/Fonts.aspx.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 13:15
Цитата: Bhudh от июня 15, 2012, 13:12
У кого есть какие уникодные авестийские шрифты? Подгрузните на http://teilnehmer.somee.com/WpfTextImage/Fonts.aspx.
См. выше в этой теме, я же дал ссылку на шрифт Ahuramazda и блог пост со шрифтами. Грузить лень, т.к. бесполезно: если универсалией не написалось слева направа, значит, другими тоже так напишется.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 13:22
Почему-то коды даёт вводить только в «Быстром ответе», а в полноценной форме не даёт. Раньше давало. Видимо, следствие вчерашнего обновления.


a𐬀aa𐬁ao𐬂aao𐬃
an𐬄aan𐬅ae𐬆aee𐬇
e𐬈ee𐬉o𐬊oo𐬋
i𐬌ii𐬍u𐬎uu𐬏
k𐬐x𐬑xy𐬒xv𐬓
g𐬔gg𐬕gh𐬖c𐬗
j𐬘t𐬙th𐬚d𐬛
dh𐬜tt𐬝p𐬞f𐬟
b𐬠bh𐬡ng𐬢ngy𐬣
ngv𐬤n𐬥ny𐬦nn𐬧
m𐬨hm𐬩yy𐬪y𐬫
v𐬬r𐬭l𐬮s𐬯
z𐬰sh𐬱zh𐬲shy𐬳
ssh𐬴h𐬵_𐬶__𐬷
___𐬸*𐬹,𐬺:𐬻
.𐬼!𐬽?𐬾;𐬿
Название: Авестийский Юникод
Отправлено: Искандер от июня 15, 2012, 13:24
Не ребят, надо авестийскому кириллицу пилить.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 13:25
Я уже приводил примеры ;D.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 13:36
Цитата: Искандер от июня 15, 2012, 13:24
Не ребят, надо авестийскому кириллицу пилить.
Перепиливать метод ввода с латиницы на кириллицу? Да ну нафиг. Не, если Искандару так удобнее, то могу перепилишь, каэшн...
Название: Авестийский Юникод
Отправлено: Тайльнемер от июня 15, 2012, 14:49
Так должно быть:
(http://teilnehmer.somee.com/WpfTextImage/Make.ashx?src=W2Y9QWh1cmFtemRhXVtkaXI9cnRsXVtzej03Ml3wkKy18JCsiPCQrK7wkKyu8JCsiiDwkKys8JCsivCQrK3wkKyu8JCsm_CQrL0)
Spoiler: Текст ⇓⇓⇓
?
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 14:50
Ahuramzda⁈ Кому мзда?
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 14:56
𐬨𐬭𐬀𐬊𐬝 𐬹 𐬀𐬵𐬎𐬭𐬋 𐬹 𐬨𐬀𐬰𐬛𐬂 𐬼

Работает
Правда конечная точка уплывает вперёд, ну так оно у меня и в арабице.
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 15:21
А может, задействовать большие буквы, а не диграфы?
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 15:27
Новая версия (там же (http://ablog.site90.com/lang/avest.html)). Теперь должны работать Ctrl+C/Ctrl+V.

Проверка: ‏𐬞𐬭𐬊𐬬𐬉𐬭𐬐𐬀𐬼‏ Надеюсь, так будет работать. Я добавил right-to-left mark (#8207;) в генерируемый код.

Цитата: Iskandar от июня 15, 2012, 14:56
Правда конечная точка уплывает вперёд, ну так оно у меня и в арабице.
А это точно точка? А то я знаки препинания наугад порасставлял. ;D

Если что-то не так или можно сделать по-другому, говорите. Например, можно сделать aE вместо aee, или D вместо dh. Или заставить пробел выводить сочетание «‏ 𐬹 ‏».

Цитата: Bhudh от июня 15, 2012, 14:50
Ahuramzda⁈ Кому мзда?
И правда, я неправильно написал название шрифта.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 15:33
Цитата: Iskandar от июня 15, 2012, 15:21
А может, задействовать большие буквы, а не диграфы?
Можно. Скажите, какие — я задействую. Заменить все двойные большими?

Всего есть такие триграфы: aao, aan, aee, ngy, ngv, shy, ssh;
И такие диграфы: aa, ao, an, ae, ee, oo, ii, uu, xy, xv, gg, gh, th, dh, tt, bh, ng, ny, nn, hm, yy, sh, zh

Чему какие коды присвоить?

Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 15:34
Цитата: Тайльнемер от июня 15, 2012, 14:49
Так должно быть:
Я не знаю. :-[
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 15:34
Цитата: wangjhenbai от июня 15, 2012, 15:25
Если что-то не так или можно сделать по-другому, говорите. Например, можно сделать aE вместо aee, или D вместо dh.

Поскольку Авеста уже существует в набранном виде: http://www.avesta.org/yasna/yasna.htm, то хорошо бы синхронизировать набор. Там используются другие шрифты транслита и собственно авестийского - просто с обратным порядком. Правда сам принцип набора в этих шрифтах мне не очень нравится. Я пока продумаю оптимальный набор и выставлю его здесь, хорошо?
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 15:36
Цитата: wangjhenbai от июня 15, 2012, 15:27
Или заставить пробел выводить сочетание

Вот это точно нужно, безусловно.

Большое спасибо за помощь
Название: Авестийский Юникод
Отправлено: Joris от июня 15, 2012, 15:45
стало отображаться в опере, но процитировать не могу
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 16:00
Цитата: Juuurgen от июня 15, 2012, 15:45
стало отображаться в опере, но процитировать не могу
Процитировать нигде нельзя. И редактировать толком нельзя. Проблема с MySQL.

Варианты:
а) для всех: дождаться, пока в MySQL исправят (или исправить самим),
б) для всего ЛФ: попросить РавонаМа (я когда-то давал функцию для этого, но уже потерял её...),
в) для отдельных людей: сделать User JavaScript.

Цитата: Iskandar от июня 15, 2012, 15:36
Вот это точно нужно, безусловно.
Сделал. Обычный пробел можно ввести по Shift+пробел.

Цитата: Iskandar от июня 15, 2012, 15:36
Большое спасибо за помощь
Вам спасибо за Ваши уроки!
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 17:37
Цитата: Iskandar от июня 15, 2012, 15:34
Поскольку Авеста уже существует в набранном виде: http://www.avesta.org/yasna/yasna.htm, то хорошо бы синхронизировать набор. Там используются другие шрифты транслита и собственно авестийского - просто с обратным порядком. Правда сам принцип набора в этих шрифтах мне не очень нравится.
Насколько я понял, они там обходятся вообще без диграфов, с однозначными соответствиями «латиница — авестийский алфавит». Если так, то сделать как у них даже проще, чем с диграфами.

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

Если бы Вы мне сказали, какой уникодовой букве (или какому диграфу из уникодового описания) соответствует какая их буква, мне было бы проще.
Название: Авестийский Юникод
Отправлено: Iskandar от июня 15, 2012, 18:03
Конечно, я и хочу сделать соответствия... Счас подумаю
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 15, 2012, 18:08
Цитата: Iskandar от июня 15, 2012, 15:34
другие шрифты транслита
Вот, я пока что написал транслитератор из их транслита в нормальный уникод: http://ablog.site90.com/lang/avestaorg_transcription.html

Это не метод ввода, а просто конвертор. Ценность скрипта невелика, но вдруг понадобится процитировать кусок из их набранной Авесты в уникоде? Думаю, сейчас и для их авестийского такое сделаю (учитывая, что у них почти идентичные коды для латиницы и авестийского, это должно быть просто).

На входе вставляем:
frawarAne mazdayasnO zaraquStriS WIdaEwO ahura-TkaECO
И получаем:
[font=Arial Unicode MS][font=DejaVu Sans]fravarāne mazdayasnō zaraθuštriš vīdaēvō ahura-t̰kaēṣ̌ō[/font][/font]
Название: Авестийский Юникод
Отправлено: Bhudh от июня 15, 2012, 18:14
Spoiler: 
Aṣ̌əm vohū ⇓⇓⇓

Может, имеет смысл сделать режим, убирающий нумерацию?
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 02:27
Транслитератор из авестийского шрифта на avesta.org в уникод: http://ablog.site90.com/lang/avestaorg_avestan.html

На входе:
`,OCEakT-aruha ,OwEadIW ,SirtSuqaraz ,Onsayadzam ,enArawarf

На выходе:
‏𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. 𐬰𐬀𐬭𐬀𐬚𐬎𐬱𐬙𐬭𐬌𐬱. 𐬬𐬍𐬛𐬀𐬉𐬎𐬎𐬋. 𐬀𐬵𐬎𐬭𐬀_𐬝𐬐𐬀𐬉𐬴𐬋.𐬻‏




Насколько я понял, я неправильную штуку поставил в качестве пробела.

Я взял 𐬹 10B39 AVESTAN ABBREVIATION MARK

Такое впечатление, что это не то... Видимо, надо пользоваться «универсальными» знаками для разделения слов. Наверное, лучше взять обычную точку?
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 02:42
Проверка: для гуглохрома... ‏𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. 𐬰𐬀𐬭𐬀𐬚𐬎𐬱𐬙𐬭𐬌𐬱. 𐬬𐬍𐬛𐬀𐬉𐬎𐬎𐬋. 𐬀𐬵𐬎𐬭𐬀_𐬝𐬐𐬀𐬉𐬴𐬋.𐬻‏
А так:
‏𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. 𐬰𐬀𐬭𐬀𐬚𐬎𐬱𐬙𐬭𐬌𐬱. 𐬬𐬍𐬛𐬀𐬉𐬎𐬎𐬋. 𐬀𐬵𐬎𐬭𐬀_𐬝𐬐𐬀𐬉𐬴𐬋.𐬻‏
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 02:56
Да, в Хроме теперь работает (в Эксплорере и Опере — нет).

Но коды ужасно длинные. Редактировать сообщения с такими кодами совсем неудобно.

Думаю, лучше сделать userscript, который будет заменять в сообщении надписи перед посылкой на соответствующий код... Т.е. чтобы можно было ввести ‏𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. ‏или [ave]farwarAne mazdayasnO[/ave], нажать на «Лингвофоруме» же кнопку «Preprocess» — и оно само преобразуется, непосредственно перед отправкой. Можно даже на кнопку «Отправить» это повесить.

Единственное, что меня волнует — скорость. Для userscript'ов используется GreaseMonkey. Тормозит он или нет? Гм...
Название: Авестийский Юникод
Отправлено: Тайльнемер от июня 16, 2012, 11:32
Цитата: wangjhenbai от июня 16, 2012, 02:56
в Эксплорере и Опере — нет
В Опере — да.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 11:36
У меня — нет.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 11:52
Гм... Да, в новой опере читает (причём даже не требует [bdo=rtl]). Отлично.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 11:53
Цитата: О программе
Информация о версии
Версия: 11.64
Сборка: 1403
Что значит «в новой»⁈
В 12-й?
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 11:56
Цитата: wangjhenbai от июня 15, 2012, 10:18
Так как Лингвофорум (точнее, MySQL; я когда-то посылал РавонаМу хак, который позволяет это обойти, но он не использовал его) не поддерживает не-нулевые плоскости, приходится набирать по кодам
Срочно напишете Равонаму ещё раз, пока он химичит. Значит есть время и желание!!!
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 11:56
Цитата: Bhudh от июня 16, 2012, 11:53
Что значит «в новой»⁈
В 12-й?

Гм... Не знаю.  У меня такая:
Цитата: 關於 Opera
版本資訊
版本11.64
建號1403
作業系統Win32
系統Windows 7
XHTML+Voice並未載入外掛程式

瀏覽器識別資料
Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.10.229 Version/11.64
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 11:59
Цитата: Валентин Н от июня 16, 2012, 11:56
Срочно напишете Равонаму ещё раз, пока он химичит
Я уже потерял тот код, мне лень его заново писать.

Цитата: Валентин Н от июня 16, 2012, 11:56
Значит есть время и желание!!!
Желание что-то делать на форуме ≠ желание исправлять отображение символов из верхних плоскостей.

Пусть хотя бы «такие» коды починит.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 12:15
Цитата: wangjhenbai от июня 16, 2012, 11:56Не знаю.  У меня такая:
Значит, это в семёрке пашет, а не в Опере. В хрюшке не пашет.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 13:11
Продублирую сюда:
Благодаря настойчивости Валентина Н., РавонаМ только что поправил (http://lingvoforum.net/index.php/topic,21926.msg1354428.html#msg1354428) отображение авестийских символов.

Теперь можно просто вводить/копировать символы — и они отобразятся (впрочем, для Хрома можно окружать их кодом [bdo=rtl]...[/bdo]). Также работают цитаты.

Так что можно вместо метода ввода использовать обычную клавиатурную раскладку (например, исходник для MSKLC одного варианта поставляется с шрифтом Ahuramzda).

Впрочем, если Вы составили таблицу соответствий, можете её сюда кинуть — онлайновый метод ввода всё равно может кому-то пригодится.
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 15:26
Offtop
у меня есть джава транслитератор, что надо сделать чтобы он стал плагином оперы?
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 15:28
Offtop
Сунуть в папку UserJS.
А что, нельзя его сделать отдельной страницей, что ли?
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 15:37
Цитата: Bhudh от июня 16, 2012, 15:28
Сунуть в папку UserJS.
Не работает, там 3 файла: 1. сам транслитератор, 2. список замен, 3. хтмл интерфейс.

Цитата: Bhudh от июня 16, 2012, 15:28
А что, нельзя его сделать отдельной страницей, что ли?
хотел чтоб тексты транслителись на страницах, а не отдельлно перегонять текст.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 15:42
Цитата: Валентин Н от июня 16, 2012, 15:37там 3 файла: 1. сам транслитератор, 2. список замен, 3. хтмл интерфейс.
Не вижу препятствий к их объединению. Разве что Вы боитесь размера...

Цитата: Валентин Н от июня 16, 2012, 15:37хотел чтоб тексты транслителись на страницах
Скрипт должен искать подходящие символы и перегонять. Регэкспы рулят.
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 15:48
Цитата: Bhudh от июня 16, 2012, 15:42
Не вижу препятствий к их объединению. Разве что Вы боитесь размера...
Но там же ссылка на другой файл наверно?

Цитата: Bhudh от июня 16, 2012, 15:42
Скрипт должен искать подходящие символы и перегонять. Регэкспы рулят.
Но ведь он перегоняет только то, что введено в поле ввода в хтмл интерфейсе...
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 15:51
Цитата: Валентин Н от июня 16, 2012, 15:48Но там же ссылка на другой файл наверно?
Какая ссылка? Все три файла можно объединить в один. "Ссылки" будут только внутренними.

Цитата: Валентин Н от июня 16, 2012, 15:48Но ведь он перегоняет только то, что введено в поле ввода в хтмл интерфейсе...
Скрипт делает то, что Вы ему приказываете.
Приказали перегонять то, что введено в поле ввода — он и перегоняет... :donno:
Прикажете перегонять то, что на странице — будет перегонять то, что на странице.
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 15:54
Цитата: Bhudh от июня 16, 2012, 15:51
Прикажете перегонять то, что на странице — будет перегонять то, что на странице.
Если это не трудно, то может вы смогли бы это сделать?
:-[
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 15:57
Охх... Потерял я ссылку на кроссбраузерную оболочку... У меня на странице ВКонтакта есть ссылка (http://vk.com/wall138948858_174) на один js-файл для Оперы, качните да вписывайте что душе угодно :).
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 16:01
И чо туда вписывать‽‽‽
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 16:04
Транслитератор. :)
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 16:10
вот код самого транслитератора: Что там надо изменить, чтоб он:
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
— список замен брал не из другого файла, а из себя самого.

Программировал, только в школе на бейсике!
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 16:22
Цитата: Валентин Н от июня 16, 2012, 15:26
у меня есть джава транслитератор, что надо сделать чтобы он стал плагином оперы?
Если Джава — то ничего не получится, скорее всего. Если ДжаваСкрипт — то можно попробовать...

Дело в том, что я не умею писать плагины. Я умею писать только юзерскрипты. Т.е. прикрутить транслитерацию к отдельному сайту я могу, а ко всему интернету, чтобы по кнопочке меню — нет. Но можно попробовать...
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 16:26
Цитата: Валентин Н от июня 16, 2012, 16:10
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
С какой страницы? Если это userJS, он будет выполняться на всех страницах или на всех страницах определённого сайта.
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 16:30
Имя файла translator.js джаваскрипт наверно.
А почему можно прикрутить к отдельному сайту, а не к любому?
Он может участки кода страницы транслитерировать?
Название: Авестийский Юникод
Отправлено: Karakurt от июня 16, 2012, 16:48
Что делать в линуксе?
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 17:19
Цитата: Валентин Н от июня 16, 2012, 16:30А почему можно прикрутить к отдельному сайту, а не к любому?
Потому что это особенность UserJS.
Я же дал ссылку, там есть указание на сайт.


Цитата: Валентин Н от июня 16, 2012, 16:30Он может участки кода страницы транслитерировать?
В смысле кода? Участки текста, код-то менять незачем...


Цитата: Валентин Н от июня 16, 2012, 16:10
вот код самого транслитератора: // RuleMap вертає функцію, що реалізує ефективне перетворення слова за заданими правилами.
// Правила задаються у вигляді масиву правил, кожне з яких складається з префіксних букв, замінюваної частини, результату і постфіксних букв.
// Префіксні букви при цьому можуть бути як відтрансльованими так і невідтрансльованими.
Translator.RuleMap = function(rules){
   // Вертає рядок str записаний буквами в регістрі відповідно до регістру букв рядка chars. Небукви іґноруються.
   // Букви в верхньому регістрі з str зберігаються такими незалежно від рядка chars.
   var ConvertStringCase = function (str,chars,addchars,defaultregister){
      if(!defaultregister) defaultregister=false;
      var chrs = new Array();
      var ssize = 0;
      for(var j=0; j<chars.length; ++j){
         var ch = chars.charAt(j);
     if(ch.toLowerCase()==ch)
        if(ch.toUpperCase()==ch);
    else chrs[ssize++]=false;
     else
        chrs[ssize++]=true;
      }

      var FindFirstCharCase = function(seq){
         for(var j=0; j<seq.length; ++j){
            var ch = seq.charAt(j);
        if(ch.toLowerCase()==ch)
           if(ch.toUpperCase()==ch);
           else return false;
        else return true;
         }
         return defaultregister?(!chrs[0]?false:true):false;
      }
 
      if(ssize<=1&&str.length>1) chrs[ssize++] = FindFirstCharCase(addchars);
   
      var result="";
      if(ssize<=str.length){
         for(var j=0; j<ssize; ++j)
        result+=chrs[j]?str.charAt(j).toUpperCase():str.charAt(j);
     if(ssize<str.length) result+=chrs[ssize-1]?str.substring(ssize,str.length).toUpperCase():str.substring(ssize,str.length);
      }else{
         var i=0;
     var jssize=0;
         for(var j=0; j<str.length; ++j){
        var chr = false;
    jssize+=ssize;
        while(jssize>=i*str.length) if(chrs[i++]) chr=true;
        result+=chr?str.charAt(j).toUpperCase():str.charAt(j);
     }
      }
      return result;
   }

   var map = new Object();
   for(var i=0; i<rules.length; ++i){
      var Rule = new Object();
      if(rules[i].length==2){
     Rule.pre="";
Rule.post="";
Rule.pattern=rules[i][0];
Rule.res=rules[i][1];
  }else
      if(rules[i].length==4){
     Rule.pre=rules[i][0];
Rule.post=rules[i][3];
Rule.pattern=rules[i][1];
Rule.res=rules[i][2];
  } else continue;
      var lettermap=Rule.pattern.charAt(0);
  if(lettermap.length){
     var mapelement=map[lettermap];
if(!mapelement)
    mapelement=new Array();
mapelement[mapelement.length]=Rule;
map[lettermap]=mapelement;
  }
   }
     
   var LastLetter = function(s,def){
      var i = s.length;
  while(i--){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
  }
  return def;
   }
   var FirstLetter = function(s,def){
  for(var i = 0; i<s.length; ++i){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
  }
  return def;
   }

   var translate = function(word){   
      var result = "";
      var lwr = word.toLowerCase()+" ";
      var lastchar = " ";
      var lastchart = " ";
  var lastletter = " ";
  var lastlettert = " ";
      while(word.length){
         var str = word.charAt(0);
     var dec = str.length;
         var rules = map[lwr.charAt(0)];
         if(rules)
            for(var i=0; i<rules.length; ++i){
          if(rules[i].pre.length&&
         (lastchar.length==0||lastchart.length==0||rules[i].pre.indexOf(lastchar)==-1&&rules[i].pre.indexOf(lastchart)==-1))
    if(rules[i].pre.indexOf("@")==-1||rules[i].pre.indexOf(lastletter)==-1&&rules[i].pre.indexOf(lastlettert)==-1) continue;
       var pattern = rules[i].pattern;
       if(lwr.indexOf(pattern)==0){
      if(rules[i].post.length){
     var post = lwr.substring(pattern.length,lwr.length);
         if(rules[i].post.indexOf(post.charAt(0))==-1&&(rules[i].post.indexOf("@")==-1||rules[i].post.indexOf(FirstLetter(post," "))==-1)) continue;
  }
      dec=pattern.length;
      str=ConvertStringCase(rules[i].res,word.substring(0,dec),word.substring(dec,word.length-dec+1),result.length>0);
      break;
       }
        }
     lastchar=lwr.substring(dec-1,dec);
     lastchart=str.substring(str.length-1,str.length).toLowerCase();

lastletter = LastLetter(lwr,lastletter)
lastlettert = LastLetter(str.toLowerCase(),lastlettert);
 
     word=word.substring(dec,word.length);
     lwr=lwr.substring(dec,lwr.length);
         result+=str;
      }
      return result;
   }

   return translate;
}

// Вертає функцію, що перетворює текст, підставляючи всі слова у функцію Rule.
// Функція вважається чистою і кешується за допомогою мапи слів.
Translator.TranslateText = function(Rule){
   var IsExcluded = function(str){
      var i = OnChange.exclsymbols.length;
      while(i--) if(str.indexOf(OnChange.exclsymbols.charAt(i))!=-1) return true;
      return false;
   }

   var wordmap = new Object();
   
   var OnChange = function(src){
      var startDate = new Date();
 
  var firstsplit = src.split("\n");
      var newmap = new Object();

      OnChange.patches = 0;
      OnChange.cached = 0;  

      for(var i=0; i<firstsplit.length; ++i){
     var source = firstsplit[i].split(" ");
OnChange.patches+=source.length;
  for(var s=0; s<source.length; ++s){
            var stext = source[s];
            var text = wordmap[stext];
            if(!text)
   text=Rule(stext);
else
   OnChange.cached++;
            newmap[stext]=text;
            if(OnChange.dogcheck&&stext.charAt(0)=="@")
               text=stext.substring(1,stext.length);
            else
               if(OnChange.exclcheck&&IsExcluded(stext))
                  text=stext;
               else;
source[s]=text;
         }
firstsplit[i]=source.join(" ");     
       }

   wordmap = newmap;  
   var dst=firstsplit.join("\n");
       OnChange.worktime = ((new Date()).getTime() - startDate.getTime());
   return dst;
   }
   
   OnChange.dogcheck = true;
   OnChange.exclcheck = true;
   
   OnChange.worktime = 0; // час роботи в мілісекундах
   OnChange.patches = 0;  // кількість оброблених слів
   OnChange.cached = 0;   // кількість кешованих слів

   OnChange.exclsymbols = "@/\\+=*";

   return OnChange;
}

Util = new Object();

Util.IsCharacter = function(ch){
   return ch.toUpperCase()!=ch.toLowerCase();
}

// Об'єднує спецсимволи з одного і того ж слова
Util.MergeSpecSym = function(word1, word2){
   var res = "";
   if(!word2 || !word1) return res;
   var c1 = 0;
   var c2 = 0;
   for(;;){
  while(word1.charAt(c1)==word2.charAt(c2)){
res+=word1.charAt(c1);
     ++c1;
++c2;
     if(c1>=word1.length) return res+word2.substr(c2,word2.length);
else
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
  }
  if(!Util.IsCharacter(word1.charAt(c1))){
res += word1.charAt(c1++);
if(c1>=word1.length) return res+word2.substr(c2,word2.length);
  }else
  if(!Util.IsCharacter(word2.charAt(c2))){
res += word2.charAt(c2++);
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
  } else return res;
   }
}

// Вертає значення параметра, взяе з адресного рядка
Util.GetParam = function(name){
   var results = RegExp("[\\?&]"+name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)").exec(window.location.href);
   return results == null?"":decodeURIComponent(results[1]);
}

Util.PutParam = function(name, value, tail){
   if(!tail)tail="";
   if(!value || !name || !value.length || !name.length) return tail;
   return "?"+name+"="+encodeURIComponent(value)+tail.replace("?","&");
}

// Визначає яку форму іменника вживати — однину, двоїну, троїну чи множину
Util.SelectSDTP = function(num, singular, dual, trial, plural){
   if(plural==null){ plural=trial; trial=dual; }
   if(plural==null) plural=trial;
   if(plural==null) return singular;
   num=num%100;
   if(num<10||num>19) switch (num % 10){
      case 1: return singular;
  case 2: return dual;
  case 3: return trial;
  case 4: return trial;
   }
   return plural;
}

Что там надо изменить, чтоб он:
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
— список замен брал не из другого файла, а из себя самого.
1) Задать диапазон или полный список букв, нуждающихся в конвертации и написать функцию их добычи из текста.
2) Внедрить другой файл в первый, в виде массива, к примеру, что и решает п. 1).
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 17:21
Цитата: Karakurt от июня 16, 2012, 16:48Что делать в линуксе?
А UserJS в Линухе не работают⁈
Название: Авестийский Юникод
Отправлено: Karakurt от июня 16, 2012, 17:25
Поставил фонт, терь кажет.
Название: Авестийский Юникод
Отправлено: wangjhenbai от июня 16, 2012, 17:25
Цитата: Karakurt от июня 16, 2012, 16:48
Что делать в линуксе?
А что в Линуксе не так?

У Вас не отображается авестийский? А расскажите, пожалуйста, подробнее: какой обозреватель, какой дистрибутив?
Название: Авестийский Юникод
Отправлено: Karakurt от июня 16, 2012, 17:31
После установки шрифта стал показывать. Минт дебиан. Жирнолис.
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 18:55
И куда конкретно это надо вставить и что надо изменить для этого.
Вот список замен
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 19:05
Блин, я для кого в цитате тэг [code][/code] использовал⁈ >(

А как Вы сделали этот массив? Что-то у меня нехорошее предчувствие, что работать оно не будет...
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 19:24
Цитата: Bhudh от июня 16, 2012, 19:05
А как Вы сделали этот массив? Что-то у меня нехорошее предчувствие, что работать оно не будет...
Что значит как с делал??? Как у разработчика было, так и сделал, только свой список составил.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 20:21
И у разработчика разное число аргументов в массиве было?
Название: Авестийский Юникод
Отправлено: Валентин Н от июня 16, 2012, 20:22
Цитата: Bhudh от июня 16, 2012, 20:21
И у разработчика разное число аргументов в массиве было?
Не работает только если меньше, больше можно.
Название: Авестийский Юникод
Отправлено: Bhudh от июня 16, 2012, 20:26
А, врубился...
Если три ввести, тоже может не сработать.
Название: Авестийский Юникод
Отправлено: Iskandar от июля 21, 2012, 15:54
А что, транслитераторы больше работать не будут? :(
Название: Авестийский Юникод
Отправлено: fujhi от июля 21, 2012, 16:14
Цитата: Iskandar от июля 21, 2012, 15:54
А что, транслитераторы больше работать не будут? :(
Проблемы у хостера, обещали через 6 часов исправить:
ЦитироватьServer #17 is under the DDOS attack (IP Nullrouted)
We have just received a HUGE (over 3GB/s incoming traffic) DDoS attack targeting the Server #17. Our CISCO guard firewall was unable to handle such attack, so one of the server IP address - 31.170.162.223 was disabled (all the rest websites on this server are working fine).

If your website is using this IP (due to unique IP rotation system only 3% websites are using this IP) it will be unavailable for the next 6 hours. As soon attack will subside, this IP address will be enabled and your website will start working again. We thank you for your patience and understanding.

К сожалению, у меня под рукой сохранилось не всё и, возможно, не самые актуальные версии. Прикрепляю во вложении: все эти скрипты можно скачать и использовать локально.
Название: Авестийский Юникод
Отправлено: Iskandar от июля 21, 2012, 16:24
Спасибо
Название: Авестийский Юникод
Отправлено: Iskandar от августа 10, 2012, 19:52
ii   𐬍 и uu 𐬏  не годятся, потому что 𐬌𐬌= [y] и 𐬎𐬎 = [w] не в начале слова.
Название: Авестийский Юникод
Отправлено: I. G. от августа 12, 2012, 12:54
Для Искандара от Деметриуса:
ЦитироватьНовая версия скрипта:
http://ablog.site90.com/lang/avest-2012-08-11.html

В ней код ii заменён на I (Shift+I), а uu заменён на U (Shift+U).

Кроме того, теперь апостроф можно использовать для разбиения диграфов (т.е. можно вводить s's, например).

Старая версия (правда, в неё backport'ирована возможность разбиения i'i и u'u апострофами) доступна тут: http://ablog.site90.com/lang/avest-2012-06-16.html (теперь все файлы будут с датой, чтобы не путаться).
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 12:17
Я спёр на сайте http://www.lexilogos.com/keyboard/index.htm персидскую клавиатуру и попробовал переделать её в авестийскую, чтобы был виртуальный клавишный набор. Также в файле джавы переписал раскладочную замену, почти полностью подогнав её под avesta.org.

Поскольку в хтмл я ничего не соображаю, я не смог:
1. Переименовать файл  ;D  :fp:
2. Вставить многие полезности из работы дорогого Деметриуса

http://blagoverie.org/persian.htm

Кстати, вспомогательный транслит - экспериментальный, кириллический
Название: Авестийский Юникод
Отправлено: I. G. от августа 16, 2012, 13:09
Ответ Диметриуса:
Цитировать
Цитировать
1. Переименовать файл  ;D  :fp:
Важно, что вместе с файлом тащится папка persian_files. В зависимости от настроек Windows эта папка может переименовываться вместе с файлом (т.е. при переименовании persian.htm в avestan.htm, persian_files поменяется на avestan_files). Если так, в самом файле persian.htm исправьте эти строки:
Цитата: persian.htm (строки 16—18)
<link href="persian_files/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="persian_files/comlat.js"></script>
<script type="text/javascript" src="persian_files/carfa.js"></script>

Кстати, вот это можно удалить:
Цитата: persian.htm, строка 8<link rel="alternate" type="application/rss+xml" title="Lexilogos" href="http://www.lexilogos.com/english/english.xml">

Дальше. Насчёт конвертора:
Цитата: carfa.js
car = car.replace(/1000/g, "𐭿");
Такие вещи никогда не выполнятся, т.к. 1 после ввода сразу преобразуется вот этой строчкой:
Цитата: carfa.js
car = car.replace(/1/g, "𐭸");

Вывод: замените код для 10, 20, 100, 1000, чтобы он учитывал, что замены уже произведены:
Цитата: carfa.js
car = car.replace(/1/g, "𐭸");
car = car.replace(/2/g, "𐭹");
car = car.replace(/3/g, "𐭺");
car = car.replace(/4/g, "𐭻");
car = car.replace(/10/g, "𐭼");
car = car.replace(/20/g, "𐭽");
car = car.replace(/100/g, "𐭾");
car = car.replace(/1000/g, "𐭿");
на это:
Цитата: carfa.js
car = car.replace(/1/g, "𐭸");
car = car.replace(/2/g, "𐭹");
car = car.replace(/3/g, "𐭺");
car = car.replace(/4/g, "𐭻");
car = car.replace(/𐭸0/g, "𐭼");
car = car.replace(/𐭹0/g, "𐭽");
car = car.replace(/𐭼0/g, "𐭾");
car = car.replace(/𐭾0/g, "𐭿");

Цитировать
2. Вставить многие полезности из работы дорогого Деметриуса
А чего не хватает?

Цитировать
Кстати, вспомогательный транслит - экспериментальный, кириллический
Потом сделаю автоматический транслитератор, сейчас занят.

Я подредактирую свой транслитератор на основе Вашей раскладки, но попозже.
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 13:49
Цитата: I. G. от августа 16, 2012, 13:09
Важно, что вместе с файлом тащится папка persian_files. В зависимости от настроек Windows эта папка может переименовываться вместе с файлом (т.е. при переименовании persian.htm в avestan.htm, persian_files поменяется на avestan_files). Если так, в самом файле persian.htm исправьте эти строки:

Да, я что-то именно так пробовал, да не вышло. Видать не все строчки поправил.

Цитата: I. G. от августа 16, 2012, 13:09
Такие вещи никогда не выполнятся

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

Цитата: I. G. от августа 16, 2012, 13:09
А чего не хватает?

Я не понял, как делается пробел > средняя точка.
Да и остальные знаки препинания что-то не заменяются...
Ну и конечно, get ligvoforum code :)

Цитата: I. G. от августа 16, 2012, 13:09
Потом сделаю автоматический транслитератор, сейчас занят.

Я подредактирую свой транслитератор на основе Вашей раскладки, но попозже.

Спасибо большое
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 13:51
Пока так:

http://blagoverie.org/keyboards/avestan_cyr.htm
Название: Авестийский Юникод
Отправлено: ali_hoseyn от августа 16, 2012, 13:56
Потом, когда эта эпопея закончится, подскажете, как сделать, чтобы и у меня отображалось? Подпись Искандара, к примеру, видна, а вот на сайте...
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 14:03
Цитата: ali_hoseyn от августа 16, 2012, 13:56
Подпись Искандара, к примеру, видна, а вот на сайте...

Да, в Опере не показывает почему-то...
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 14:23
Ага, и в Хроме, и в Ишаке.
Я так и думал, что Мозила - лучший браузер  ;D
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 14:39
Наверно, надо прописать, что получаемый в результате набора шрифт - это именно Ahuramzda, а не шаляй-валяй...
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 15:17
Так и сделал, вроде стало работать в других браузерах.
Название: Авестийский Юникод
Отправлено: ali_hoseyn от августа 16, 2012, 15:43
Зинда бод! ;up:

update: Только там слева направо печатает. Пичаль.
Название: Авестийский Юникод
Отправлено: Hellerick от августа 16, 2012, 16:06
*шепотом* Здесь кто-нибудь видит подпись Iskandar'а?
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 16:46
Цитата: ali_hoseyn от августа 16, 2012, 15:43
update: Только там слева направо печатает. Пичаль.

Исправил.

Пардон, это у меня глюк.
Попробую ещё
Название: Авестийский Юникод
Отправлено: Iskandar от августа 16, 2012, 17:08
Однако... Форма Деметриуса у меня тоже не работает в Опере и Хроме...   :what:
Название: Авестийский Юникод
Отправлено: Bhudh от августа 16, 2012, 19:21
Цитата: Dēmētriusзамените код для 10, 20, 100, 1000, чтобы он учитывал, что замены уже произведены
:o
Зачем так извращаться? Просто все замены с бо[b]́[/b]льшим количеством символов делаются раньше, чем с меньшим!
И ничего никому не мешает!
Название: Авестийский Юникод
Отправлено: I. G. от августа 16, 2012, 22:15
Цитировать
ЦитироватьНу и конечно, get ligvoforum code :)
Эта штука была важна до того, как РавонаМ форум починил. Сейчас она уже, в принципе, нужна только для указания шрифта и [bdo=] (это важно для Оперы и Хрома), а так можно всё копировать без кодов, напрямую.

ЦитироватьЯ не понял, как делается пробел > средняя точка.
Да и остальные знаки препинания что-то не заменяются...
У Вас скрипт реализован так (по правде говоря, достаточно плохо), что просто заменить пробелы на срединные точки не получится. Замените что-то другое; например, на двоеточия или что-то ещё.




Про отсутствие поддержки ввода в Опере и Хроме я предупреждал, кажется. Проблема в том, что у них не прописано, что авестийские буквы — справа налево.

Можно сделать костыли одного из двух видов:

  • прописать unicode-bidi: bidi-override; direction: rtl; в стилях поля ввода (но тогда нельзя будет вставлять кириллицу и нормальную кириллицу в авестийский текст);
  • добавлять код указания направления возле каждого авестийского символа (но тогда это лишние пару байтов после каждой буквы); так сделан мой вариант транслитератора http://ablog.site90.com/lang/avest_compatible.html (но в нём ii и uu не поправлены).
Но — это костыли. Возможно, проще дождаться, чтобы разработчики этих браузеров сами добавили нормальную поддержку нового уникода.




Цитата: Bhudh:O
Зачем так извращаться?
Если бы ты посмотрел Искандаров скрипт (я уже код смотреть не прошу — посмотри сам скрипт), у тебя бы не возникало таких вопросов.




Искандар, а скажете мне свой email? Если не сложно,  напишите мне, пожалуйста, с какого-то ящика, на который Вам можно писать, на dmymd@yandex.ru. А то живых клонов у меня не осталось, а постоянно просить I. G. тоже не дело.