OberonCore
https://forum.oberoncore.ru/

Поддержка юникода в BlackBox1.6rc5
https://forum.oberoncore.ru/viewtopic.php?f=3&t=453
Страница 1 из 3

Автор:  Кривохатько С.А. [ Вторник, 08 Май, 2007 12:22 ]
Заголовок сообщения:  Поддержка юникода в BlackBox1.6rc5

Несмотря на "BlackBox 1.6 is full Unicode support" столкнулся с рядом глюков. Например, при двойном щелчке на русскоязычном слове оно не выделяется целиком; диалог Find/Replace не ищет русскоязычные слова без учета регистра; поиск без учета регистра в файлах помощи работает странно - например не обрабатывает букву 'Т'; и т.п.
Кроме того в каждом модуле поддержка юникода реализуется по своему, повторяя разными способами одну и ту же функциональность. Под юникодом подразумевается представление то в UTF8, то в UTF16. Нет единого механизма.
Из более абстрактных проблем - например, не соблюдаются рекомендации стандарта юникода на коды символов разрыва линии и параграфа.
Очевидно, что поддержка юникода даже в 1.6 требует серьезной доработки, в связи с чем предлагаю обсудить следующие впоросы:
1) Определится с внутренним способом представления юникодных символов: UTF8, UTF-16LE, UTF-16BE, UTF-32BE, UTF-32LE.
2) Для поддержки юникода необходимо будет либо изменять существующие процедуры/функции(например CAP, Strings.Lower) нарушая спецификации, либо вводить дополнительные с другими именами.
3) Способ реализации единого, сквозного механизма работы с юникодом.

Что скажете, господа?

Автор:  Кривохатько С.А. [ Вторник, 08 Май, 2007 13:40 ]
Заголовок сообщения: 

По отдельности эти вопросы уже обсуждались. Но в 1.6rc5 изменили формат объектного файла и убрали некоторые подсистемы, и в результате требуется переделка/перекомпиляция существующего кода. Народ отнесся вполне терпимо к этому. Т.е. имеем удобный момент для внесения изменений/дополнений.
Иначе придется отложить реализацию юникода до какого-нибудь BlackBox 2.0

Автор:  Info21 [ Вторник, 08 Май, 2007 16:01 ]
Заголовок сообщения:  1.6

нужно сообщать Оминк обо всем этом.

Автор:  Илья Ермаков [ Вторник, 08 Май, 2007 22:38 ]
Заголовок сообщения: 

ББ не поддерживает UTF!
С двухбайтовым CHAR имеется фактически безальтернативный UCS2...

А изменения действительно надо "добивать" сразу.

Мы потихоньку отсылаем Оминк отчеты о тестировании.
В частности, сейчас пытаемся решить проблему с нац. идентификаторами, на которые завязались школы...

Автор:  Кривохатько С.А. [ Вторник, 08 Май, 2007 23:18 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
ББ не поддерживает UTF!
С двухбайтовым CHAR имеется фактически безальтернативный UCS2...


Да, согласен, его реализовать будет проще, хоть он и считается устаревшим. Хотя к размерности CHAR это отношения не имеет. Просто в UTF-16 допускаются комбинации из двух CHAR, а в UCS2 - нет. UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар).

Автор:  Кривохатько С.А. [ Вторник, 08 Май, 2007 23:25 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Мы потихоньку отсылаем Оминк отчеты о тестировании.
В частности, сейчас пытаемся решить проблему с нац. идентификаторами, на которые завязались школы...


Такими темпами, как сейчас, долго будем ждать. С момента релиза 1.5 уже скоро два года будет, а там только по юникоду всё ещё работы непочатый край.

Автор:  Иван Горячев [ Среда, 09 Май, 2007 02:09 ]
Заголовок сообщения: 

Кривохатько С.А. писал(а):
UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар).

Просто в порядке уточнения. ucs2 - набор символов, а utf-8,16,etc. - кодировки. Так что одно никак не может быть подмножеством другого.

Автор:  Trurl [ Среда, 09 Май, 2007 10:06 ]
Заголовок сообщения: 

Ivor писал(а):
Просто в порядке уточнения. ucs2 - набор символов, а utf-8,16,etc. - кодировки. Так что одно никак не может быть подмножеством другого.

Не ucs2 - тоже кодировка.

Автор:  Сергей Оборотов [ Среда, 09 Май, 2007 11:18 ]
Заголовок сообщения: 

Есть предложение переходить на UTF16, не дожидаясь OM Inc.

Автор:  Иван Горячев [ Среда, 09 Май, 2007 14:23 ]
Заголовок сообщения: 

GUEST писал(а):
Есть предложение переходить на UTF16, не дожидаясь OM Inc.

Каким образом? utf-16 - кодировка с переменной длиной символов, в отличие от ucs-2. Только если библиотеку писать, но ни в коем случае не на уровне компилятора!

Автор:  batyrmastyr [ Среда, 09 Май, 2007 23:02 ]
Заголовок сообщения: 

GUEST писал(а):
Есть предложение переходить на UTF16, не дожидаясь OM Inc.

Тут есть проблема - шрифтов которые поддреживают даже 2 байт юникод не так уж много, а 4 байт должно быть еще меньше. для хранения в оперативке подходят ucs2 ucs4 utf32 и, возможно, ucs32(если кто знает, что это за зверь такой). поддержка юникода сейчас, насколько понял, сводится к ucs2 и utf8. А utf16- ни рыба, ни мясо.

Автор:  Сергей Оборотов [ Среда, 09 Май, 2007 23:39 ]
Заголовок сообщения: 

Ivor писал(а):
GUEST писал(а):
Есть предложение переходить на UTF16, не дожидаясь OM Inc.

Каким образом? utf-16 - кодировка с переменной длиной символов, в отличие от ucs-2. Только если библиотеку писать, но ни в коем случае не на уровне компилятора!
У себя на компьютере я символы с переменной длиной в кодировке UTF16 не наблюдаю, хотя саму её задать могу. Отсюда вывод - если кого-то интересует как можно реализовать кодировку с переменной длиной символов расскажите как её установить в системе. Для себя я такой необходимости не вижу.
Впрочем, это детали, которые не должны заслонять собой главного. Принципиальные противники перехода на использование единого формата символов внутри BlackBox имеются?

Автор:  Иван Горячев [ Четверг, 10 Май, 2007 00:16 ]
Заголовок сообщения: 

GUEST, а вы символы за пределами первых 64K не пробовали? И ччто значит "единый формат символов"? А сейчас CHAR не единый?

Автор:  Иван Горячев [ Четверг, 10 Май, 2007 00:23 ]
Заголовок сообщения: 

batyrmastyr, шрифты - не самая большая проблема. Для большинства языков хватит и двубайтовых символов. К тому же LONGCHAR - явный перерасход памяти, более чем в два раза.

Да, ещё есть вопрос совместимости с дрругими оберонами. Двухбайтовый CHAR есть в gpcp и active oberon, а четырёхбайтовый?

Автор:  Сергей Оборотов [ Четверг, 10 Май, 2007 01:20 ]
Заголовок сообщения: 

Как Вы полагаете войдут символы за пределом первых 64К в диапозон типа CHAR? С большой степенью вероятности могу предсказать, что нет. Поэтому предлагаю перенести диапозон в которым коды символов не укладываются в фиксированные 16 разрядные значения UTF16-кодов в область, которую ей соответствует в диапазоне 32 разрядных значений UTF32-кодов. После чего можно будет сказать, что собственно у самого UTF16 все значения лежат в диапозоне типа CHAR, а для остальных существует UTF32 и тип LONGCHAR. Если понадобится последний, в чем я очень сомневаюсь пока. На таких условиях единый тип сейчас - CHAR.
PS.
Ivor писал(а):
GUEST, а вы символы за пределами первых 64K не пробовали?
Вы имеете в виду какой-то конкретно? А Вы пробовали?

Автор:  Иван Горячев [ Четверг, 10 Май, 2007 05:12 ]
Заголовок сообщения: 

GUEST писал(а):
Как ... - CHAR.

Видимо у меня что-то с восприятием. Я просто не понял этого абзаца :(

GUEST писал(а):
Вы имеете в виду какой-то конкретно? А Вы пробовали?

Да это в стандарте прописано! utf-16 ничем не отличается от utf-8 по своей сути. Просто "как есть" он передаёт первые 64k символов, вместо первых 256и.

Автор:  Борис Рюмшин [ Четверг, 10 Май, 2007 15:12 ]
Заголовок сообщения: 

ucs2... собственно, это то, что применяется в винде и Яве. :) Utf-8 поддерживать, конечно можно попробовать, однако не на внутренных структурах, а только на экспорт. Иначе слишком много придется переделывать для поддержки многобайтовых кодировок. Кроме того, CHAR фиксирован в стандарте языка, как Unicode. Из такого определения предположить что-то кроме ucs2 достаточно сложно.

Да, и не следует забывать, что CHAR делался именно для совместимости с Явой.

Кстати, Бутылка работает на UTF-8, никото не смотрел внутрь, на реализацию?

Автор:  Борис Рюмшин [ Четверг, 10 Май, 2007 15:17 ]
Заголовок сообщения: 

Да и de facto, сейчас достаточное распространие имеют (во всяком случае для обычных языков) ucs2, на уровне ОС - в винде и UTF-8 в интеренете (стандарт XML, и, как следствие, XHTML, остальное в нём допускается только для обратной совместимости, на сколько я помню). Также в последнее время UTF-8 настоятельно рекомендуется для использования в качестве локали Linux.

Автор:  Сергей Оборотов [ Четверг, 10 Май, 2007 17:24 ]
Заголовок сообщения: 

Ivor писал(а):
Да это в стандарте прописано!
Спасибо, я спрашивал о другом.
Ivor писал(а):
utf-16 ничем не отличается от utf-8 по своей сути. Просто "как есть" он передаёт первые 64k символов, вместо первых 256и.
Когда я писал пост viewtopic.php?p=4656#4656 я такое различие усматривал. Отсутствие данного различения возможно в рамках более широкого обсуждения, чем то которое присутствует здесь. Предлагаю вынести его в отдельную тему (о стандарте UTF), а в этой их различать.

Автор:  Сергей Оборотов [ Четверг, 10 Май, 2007 17:51 ]
Заголовок сообщения: 

Борис Рюмшин писал(а):
Кроме того, CHAR фиксирован в стандарте языка, как Unicode. Из такого определения предположить что-то кроме ucs2 достаточно сложно.
Перепутана причина и следствие. Вот если Unicode представляется исключительно типом CHAR, тогда еще соглашусь. Но даже в этом случае использование ограниченного 16-битными кодами символов UTF16 не представит большой сложности. Пусть Ivor поправит, если я опять что напутал.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/