Международные компоненты для Unicode
Разработчики) | Консорциум Юникод |
---|---|
Начальная версия | 1999 |
Стабильная версия | 75.1 [1] ![]() |
Репозиторий | |
Написано в | C / C++ ( C++11 ) и Java 8+ |
Операционная система | Кросс-платформенный |
Тип | Библиотеки для Unicode и интернационализации |
Лицензия | Лицензия Юникод |
Веб-сайт | отделение интенсивной терапии |
International Components for Unicode ( ICU ) — это проект с открытым исходным кодом , состоящий из зрелых C / C++ и Java библиотек Unicode для поддержки , интернационализации программного обеспечения и глобализации программного обеспечения. ICU широко переносится на многие операционные системы и среды. Он дает приложениям одинаковые результаты на всех платформах, а также между программным обеспечением C, C++ и Java. Проект ICU создан техническим комитетом Консорциума Unicode и спонсируется, поддерживается и используется IBM и многими другими компаниями. [2] ICU включен в качестве стандартного компонента в Microsoft Windows, начиная с Windows 10 версии 1703. [3]
ICU предоставляет следующие услуги: обработка текста в Юникоде , полные свойства символов и наборов символов преобразования Юникода ; Регулярные выражения ; полные наборы Unicode; границы символов, слов и строк; с учетом языка сортировка и поиск ; нормализация , преобразование верхнего и нижнего регистра и транслитерация скриптов ; комплексная локали архитектура пакетов данных и ресурсов через Common Locale Data Repository (CLDR); несколько календарей и часовых поясов ; а также форматирование и анализ дат, времени, чисел, валют и сообщений на основе правил. ICU исторически предоставлял комплексную службу макетирования текста для арабского, иврита, индийского и тайского языков, но она была устарела в версии 54 и была полностью удалена в версии 58 в пользу HarfBuzz . [4]
ICU предоставляет более широкие возможности интернационализации, чем стандартные библиотеки для C и C++. В будущем выпуске ICU 75, запланированном на апрель 2024 года, потребуется C++17 (вместо C++11 ) или C11 (вместо C99), в зависимости от того, какие языки используются. ICU исторически использовал UTF-16 и до сих пор использует только для Java; в то время как для C/C++ UTF-8 , поддерживается [5] [6] включая правильную обработку «незаконного UTF-8». [7]
В ICU 73.2 внесены существенные изменения в поддержку соответствия требованиям GB18030-2022 , то есть для китайского языка (обновленный китайский стандарт формата преобразования Unicode GB18030 немного несовместим); имеет «модифицированную таблицу преобразования символов, сопоставляющую некоторые символы GB18030 с символами Юникода, которые были закодированы после GB18030-2005», а также ряд других изменений, таких как улучшение разрыва строк короткого текста на японском и корейском языках, а также на «английском языке» имя « «Тюркие» теперь используется для обозначения страны вместо «Турция» (в данных также доступно альтернативное написание)». [8]
ICU 74 "обновления Unicode 15.1, включая новые символы, смайлы, механизмы безопасности, а также соответствующие API и реализации. [..] ICU 74 и CLDR 44 — это основные выпуски, включающие новую версию Unicode и значительные улучшения данных локали». [9] Из множества изменений некоторые касаются форматирования имени человека или улучшения языковой поддержки, например, нижненемецкого языка , а также, например, нового API проверки подделки, следующего за (последней версией) Unicode 15 .1.0 UTS #39: Механизм безопасности Unicode.
Подробности старой версии [ править ]
ICU 72 обновлен до Unicode 15 (и 73.2 до последней версии 15.1). «Во многих шаблонах форматирования пробелы ASCII заменяются пробелами Unicode (например, « тонким пробелом »).» ICU (ICU4J) теперь требует Java 8, но «Большая часть библиотечного кода ICU 72 по-прежнему должна работать с Java 7/Android API уровня 21, но мы больше не тестируем Java 7». [10] В ICU 71 добавлен, например, перенос строк на основе фраз для японского языка (более ранние методы не работали для короткого японского текста, например, в заголовках и заголовках) и поддержка хинди, написанного латинскими буквами (hi_Latn), также называемого « хинглиш ». . В ICU 70 добавлена, например, поддержка свойств emoji строк, и теперь его можно создавать и использовать с компиляторами C++20 (а функции ICU оператор==() и оператор!=() теперь возвращают bool вместо UBool в качестве корректировки для несовместимые изменения в C++20"), [11] и начиная с этой версии минимальной версией Windows является Windows 7 . ICU 67 занимается выводом Великобритании из ЕС . В ICU 64.2 добавлена поддержка Unicode 12.1, то есть единственного нового символа текущей японской эпохи Рэйва (но его поддержка также была перенесена в более старые версии ICU, вплоть до ICU 4.8.2). ICU 58 (с поддержкой Unicode 9.0) — последняя версия, поддерживающая старые платформы, такие как Windows XP и Windows Vista . Поддержка AIX , Solaris и z/OS также может быть ограничена в более поздних версиях (т.е. сборка зависит от поддержки компилятора). [12]
и развитие Происхождение
После того как Taligent стала частью IBM в начале 1996 года, Sun Microsystems решила, что новый язык Java должен иметь лучшую поддержку интернационализации. Поскольку компания Taligent имела опыт работы с такими технологиями и была близка географически, их группе Text and International было предложено внести международные классы в Java Development Kit как часть интернационализации JDK 1.1 API-интерфейсов . [13] Большая часть этого кода все еще существует в java.text
и java.util
пакеты. Дополнительные функции интернационализации добавлялись с каждым последующим выпуском Java.
Классы интернационализации Java затем были перенесены на C++ и C. [14] как часть библиотеки, известной как ICU4C («ICU для C»). Проект ICU также предоставляет ICU4J («ICU для Java»), который добавляет функции, отсутствующие в стандартных библиотеках Java. ICU4C и ICU4J очень похожи, хотя и не идентичны; например, ICU4C включает API регулярных выражений, а ICU4J — нет. Обе платформы со временем были усовершенствованы для поддержки новых возможностей и новых функций Unicode и Common Locale Data Repository (CLDR).
ICU был выпущен как проект с открытым исходным кодом в 1999 году под названием IBM Classes for Unicode. Позже он был переименован в «Международные компоненты для Юникода». [15] В мае 2016 года проект ICU присоединился к консорциуму Unicode в качестве технического комитета ICU-TC , и исходники библиотеки теперь распространяются под лицензией Unicode. [16]
Формат сообщения [ править ]
Частью ICU является класс MessageFormat , система форматирования, которая позволяет любому количеству аргументов управлять формой множественного числа ( plural
, selectordinal
) или более общий переключателя ( выбор в стиле select
) для таких вещей, как грамматический род . Эти операторы могут быть вложенными. [17] ICU MessageFormat был создан путем добавления системы множественного числа и выбора к одноименной системе в Java SE .
Альтернативы [ править ]
Альтернативой использованию ICU с C++ или его непосредственному использованию является использование Boost.Locale, который является оболочкой C++ для ICU (но при этом позволяет использовать другие серверные части). [18] ). Утверждение, что его использование вместо непосредственного использования ICU заключается в том, что оно «абсолютно недружелюбно по отношению к разработчикам C++. Оно игнорирует популярные идиомы C++ (STL, RTTI, исключения и т. д.), вместо этого в основном имитируя Java API». [19] [20] Другое утверждение о том, что ICU поддерживает только UTF-16 (и, следовательно, причина избегать использования ICU), больше не соответствует действительности, поскольку ICU теперь также поддерживает UTF-8 для C и C++. [5]
См. также [ править ]
- Расширенная типографика Apple
- Службы Apple Type для обработки изображений в Юникоде
- получить текст
- Графит (технология умных шрифтов)
- NetRexx (лицензия ICU)
- OpenType
- Черный
- Уконв
- Отписаться
Ссылки [ править ]
- ^ «Выпуск ICU 75.1 · unicode-org/icu» . Проверено 21 апреля 2024 г.
- ^ «ICU — Международные компоненты для Юникода» . сайт.icu-project.org . Архивировано из оригинала 27 августа 2021 г. Проверено 14 ноября 2011 г.
- ^ Чен, Раймонд (27 мая 2021 г.). «Как я могу преобразовать часовые пояса IANA и часовые пояса на основе реестра Windows?» . Старая новая вещь . Майкрософт .
- ^ «Механизм макета — Руководство пользователя отделения интенсивной терапии» . userguide.icu-project.org .
- ^ Перейти обратно: а б «УТФ-8» . Документация ОИТ . Проверено 24 мая 2022 г.
- ^ «UTF-8 — Руководство пользователя отделения интенсивной терапии» . userguide.icu-project.org . Проверено 03 апреля 2018 г.
- ^ «#13311 (изменить обработку недопустимого UTF-8 на «лучшую практику» Unicode)» . bugs.icu-project.org . Проверено 03 апреля 2018 г.
- ^ «ICU — Международные компоненты для Юникода — ICU 73» . icu.unicode.org . Проверено 24 сентября 2023 г.
- ^ «ICU — Международные компоненты для Юникода — ICU 74» . icu.unicode.org . Проверено 29 ноября 2023 г.
- ^ «ICU — Международные компоненты для Юникода — ICU 72» . icu.unicode.org . Проверено 24 января 2023 г.
- ^ «ICU — Международные компоненты для Unicode — ICU 70» . icu.unicode.org . Проверено 24 января 2023 г.
- ^ «Загрузить ICU 64 — ICU — Международные компоненты для Юникода» . сайт.icu-project.org . Проверено 20 октября 2019 г.
- ^ Лаура Вернер (1999). «Готовим Java к мировому использованию: краткая история усилий IBM и Sun по интернационализации» . Архивировано из оригинала 17 ноября 2021 г. Проверено 23 мая 2007 г.
- ^ «Руководство пользователя отделения интенсивной терапии» . userguide.icu-project.org .
- ^ «Комитет по управлению проектами ICU» . Архивировано из оригинала 28 августа 2021 г. Проверено 17 августа 2012 г.
- ^ «ICU присоединяется к Консорциуму Unicode» . Юникод, Inc., 16 мая 2016 г. Проверено 1 августа 2016 г.
- ^ «Форматирование сообщений» . Руководство пользователя отделения интенсивной терапии .
- ^ «Boost.Locale: использование серверов локализации» . www.boost.org . Проверено 24 мая 2022 г.
- ^ «Boost.Locale: обоснование дизайна» . www.boost.org . Проверено 24 мая 2022 г.
- ^ «ICU против Boost Locale в C++» . Переполнение стека . Проверено 24 мая 2022 г.