Как выглядят арабские цифры в ворде
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 | ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Цифра цифре рознь
Форма цыфров арабских составлена из следующей фигуры:
Александр Пушкин. Table-talk
Все с детства знают, что буквы бывают прописные и строчные. Но тот факт, что цифры тоже могут иметь прописное или строчное начертание, многим остаётся неведом до гробовой доски.
Арабские цифры, к которым мы привыкли, по форме и высоте гармонируют с прописными буквами:
Но те же цифры могут иметь другой регистр, гармонирующий со строчными буквами размером, пропорциями и выносными элементами:
Эти знаки часто называются «цифрами старого стиля», потому что такое начертание было характерно для арабских цифр, когда они начали использоваться в европейской письменности в Средние века. «Прописные» цифры появились только в конце XVIII века. По одной из версий, это произошло с подачи коммерсантов и рекламщиков, которые желали придать своим числам более внушительный вид. Ко второй половине XX века «строчные» цифры едва не канули в Лету, а в нашей стране про них начисто забыли после Октябрьской революции. Поэтому в отечественной типографике для «прописных» и «строчных» цифр даже нет официальных терминов, хотя в последнее время их обычно называют и соответственно.
В начале XXI века в издательскую практику стали возвращаться многие традиции докомпьютерной эпохи, и среди них — минускульные цифры. С ними познакомились даже обычные пользователи компьютеров благодаря тому, что в некоторых популярных шрифтах (например, Georgia) цифры по умолчанию имеют регистр «старого стиля».
Минускульные цифры хорошо смотрятся в массиве сплошного текста, состоящего в основном из строчных букв. Однако некоторые дизайнеры так обрадовались возрождению старостильных цифр, что пихают их посреди прописных букв, с которыми они не сочетаются:
(Резонный вопрос о том, стоило ли вообще делать такую длинную многострочную надпись одними прописными, выходит за рамки этой статьи.)
В дополнение к маюскульным и минускульным цифрам многие шрифты содержат третий регистр — цифры, призванные гармонировать, соответственно, с капительными буквами:
Разнообразие цифр не ограничивается тремя регистрами. Если выстроить числа в столбик друг под другом (например, в финансовом документе), этот столбик может выглядеть неровно разной ширины цифр:
Чтобы преодолеть эту проблему, разработчики шрифтов обеспечивают отдельный комплект цифр. Все знаки в таком комплекте располагаются на площадках одинаковой ширины, поэтому столбики смотрятся ровно:
Ради этого выравнивания приходится искажать формы цифр и интервалы между ними. В хороших шрифтах эти искажения не бросаются в глаза, однако моноширинные цифры всё равно рекомендуется использовать только в «столбчатом» контексте — например, в таблицах. (Поэтому такие цифры называются ещё .) Там, где вертикальное выравнивание разрядов не требуется, уместны разноширинные () цифры.
Цифры могут быть пропорциональными или моноширинными независимо от регистра, так что в профессиональных шрифтах обычно есть четыре комплекта арабских цифр: маюскульные пропорциональные, маюскульные моноширинные, минускульные пропорциональные и минускульные моноширинные. В некоторых шрифтах бывают и два отдельных набора капительных цифр.
К сожалению, полный ассортимент цифр недоступен в приложениях, где набирают и редактируют текст обычные пользователи. В соцсетях, мессенджерах, электронной почте и даже в Microsoft Office можно вводить только одну разновидность каждой цифры — ту, которую разработчик шрифта назначил по умолчанию. В большинстве популярных шрифтов таковыми являются маюскульные моноширинные цифры, хотя есть исключения — скажем, та же Georgia.
Полноценно работать с цифрами можно в профессиональных программах графики и вёрстки. Например, «Фотошоп» позволяет выбрать любой знак шрифта с помощью панелей «Глифы» и «Символ»:
Веб-технологии тоже дошли до развитой типографики, поэтому на этом сайте вы можете видеть всё богатство цифровых форм.
Теперь самое время вспомнить о том, что цифры часто используются в верхнем и нижнем — не только в научных формулах но и в обычной жизни («Сдаю квартиру площадью
К сожалению, распространённые программы для работы с текстом (например, Microsoft Word) делают индексы неправильно. Когда вы нажимаете на кнопку , Word берёт обычную цифру и механически её уменьшает, отчего её пропорции и толщина штрихов перестают гармонировать с основным текстом:
Настоящие индексы — это самостоятельные знаки, которые нельзя получить из полноразмерных цифр механическими трансформациями. В отличие от разновидностей цифр, про которые шла речь раньше, индексы можно использовать и в почте, и в скайпе. Правда, они не вводятся напрямую с клавиатуры. В офисных программах их можно извлечь из диалогового окна «Символ»:
Кроме того, цифры в верхнем и нижнем индексах можно скопировать прямо из нижеприведённой таблички и вставить, куда вам надо. Над цифрами указаны коды соответствующих символов в Unicode:
Верхние индексы | |||||||||
---|---|---|---|---|---|---|---|---|---|
2070 | 00B9 | 00B2 | 00B3 | 2074 | 2075 | 2076 | 2077 | 2078 | 2079 |
x ⁰ | x ¹ | x ² | x ³ | x ⁴ | x ⁵ | x ⁶ | x ⁷ | x ⁸ | x ⁹ |
Нижние индексы | |||||||||
2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 2087 | 2088 | 2089 |
x ₀ | x ₁ | x ₂ | x ₃ | x ₄ | x ₅ | x ₆ | x ₇ | x ₈ | x ₉ |
Ещё один тип цифр — и , которые, представьте совсем не то же самое, что верхний и нижний индексы. Обычно эти цифры ещё мельче индексов и устроены так, чтобы из них было удобно составлять дроби. в диалоговом окне «Символ» доступны несколько распространённых дробей (½, ¾, ⅚ и др.). Профессиональные системы позволяют конструировать произвольные дроби ( 355/113 ) или придавать им вертикальный вид Косые дроби распространены в европейской типографике, а в отечественном издательском деле более традиционны вертикальные.
Дроби могут быть полезны в деловом тексте:
В мелком кегле дроби могут оказаться недостаточно разборчивыми, поэтому я предпочитаю имитировать их с помощью индексов. Между числителем и знаменателем при этом ставится не косая черта с клавиатуры, а дробная черта ⁄ ( U+2044 ):
Наконец, есть одна цифра, которой не хватило даже всех вышеперечисленных ипостасей. Это нyль: его легко перепутать с буквой «О» и в кириллице, и в латинице. Поэтому в некоторых шрифтах нyль выделяют перечёркиванием: 0 . Прежде всего это касается шрифтов, которыми пользуются айтишники при работе с компьютерным кодом. Кроме перечёркивания, нуль может выделяться точкой или овалом внутри.
Отдельные серьёзные шрифты содержат два знака нуля: с перечеркиванием и без него:
Однако в таких шрифтах перечёркнутый нуль обычно недоступен простым пользователям, и его можно извлечь только с помощью профессиональных программ.
- rostislav@chebykin.ru
- Воля автора
- Дать денег
Использование языков с написанием справа налево в Office
Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Access для Microsoft 365 Publisher для Microsoft 365 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Access 2021 Project стандартный 2021 Publisher 2021 Visio стандартный 2021 OneNote 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Access 2019 Project стандартный 2019 Publisher 2019 Visio стандартный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Access 2016 OneNote 2016 Project стандартный 2016 Publisher 2016 Visio стандартный 2016 Office 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Access 2013 OneNote 2013 Project профессиональный 2013 Project стандартный 2013 Publisher 2013 Visio профессиональный 2013 Visio 2013 Excel 2010 Word 2010 Outlook 2010 PowerPoint 2010 Access 2010 OneNote 2010 Project 2010 Project стандартный 2010 Publisher 2010 Visio 2010 Visio стандартный 2010 Office 2010 Еще. Меньше
Microsoft 365 поддерживает возможности работы с языками с написанием справа налево, а также ввод, изменение и отображение текста на языках с обоими вариантами написания. В этом случае «язык с написанием справа налево» обозначает любую систему письма, в которой текст записывается справа налево, включая языки, требующие контекстного написания, например арабский, и языки, не требующие такового. Вы можете настроить свой интерфейс, чтобы меню и кнопки отображались справа налево, или изменить направление письма для содержимого отдельных файлов.
Чтобы использовать язык с написанием справа налево, вам необходимо включить соответствующий язык клавиатуры Windows. Узнайте, как в Windows добавить язык ввода и включить раскладку клавиатуры для написания текста справа налево.
Щелкните заголовок ниже, чтобы получить дополнительные сведения.
Выбор или изменение языка интерфейса
Если требуется, вы можете использовать один язык для отображения интерфейса (меню, диалоговых окон, мастеров), а другой язык — для ввода текста. Если язык с написанием справа налево нужно использовать как для ввода, так и в качестве языка интерфейса меню и справки, можно выбрать его в качестве языка интерфейса Microsoft 365. Дополнительные сведения см. в статье Изменение языка Microsoft Office.
Примечание: Короткий видеоролик о том, как это сделать, созданный участником сообщества, вы можете посмотреть на YouTube: Изменение языка для Office 2016.
Некоторые функции для работы с текстом с написанием справа налево в приложениях Microsoft 365 используют язык интерфейса для определения направления в макете на экране и выравнивания текста в диалоговых окнах. Если выбрать язык с написанием справа налево в качестве языка интерфейса в диалоговом окне Настройка языковых параметров Office, текст и объекты в меню, диалоговых окнах и мастерах будут располагаться справа налево, однако параметры направления письма в Microsoft Windows останутся прежними.
Например, если в качестве языка интерфейса Microsoft 365 выбран арабский, изображение на экране будет выглядеть примерно так:
Содержимое меню отображается справа налево. Если в качестве языка интерфейса Windows установлен английский, заголовок окна отображается на английском, а кнопки Закрыть, Свернуть и Развернуть остаются в правом углу, как при языке интерфейса с написанием слева направо. Если установить в качестве языка интерфейса Windows язык с написанием справа налево, то заголовок окна будет переведен, а кнопки Закрыть, Свернуть и Развернуть будут отображаться в левом верхнем углу окна.
Если приходится чаще использовать язык с написанием слева направо, но иногда возникает необходимость вставить текст на языке с написанием справа налево, можно в качестве языка интерфейса выбрать язык с написанием слева направо (например, английский) и при необходимости вводить текст на языке с написанием справа налево в большинстве приложений Microsoft 365. Для этого нужно задать направление справа налево для текста, маркированных и нумерованных списков в области редактирования, а также включить соответствующую раскладку клавиатуры.
Изменить направление текста можно непосредственно в приложении Microsoft 365, нажав кнопку Направление текста в группе Абзац на вкладке Главная (она отображается, только если включен язык с написанием справа налево). Даже если настроено отображение интерфейса на языке с написанием справа налево, для ввода текста на этом языке необходимо включить его в качестве языка клавиатуры.
Чтобы изменить язык интерфейса с английского на диалект арабского языка, сделайте следующее:
- Откройте файл Microsoft 365, например документ Word.
- На вкладке Файл выберите Параметры >Язык.
- В диалоговом окне Задание языковых параметров Office в списке Язык редактирования выберите нужный региональный вариант арабского языка и нажмите кнопку Добавить.
- Убедитесь, что в таблице Выбор языков редактирования выделен добавленный региональный вариант арабского языка, а затем нажмите кнопку По умолчанию.
Важно: Если вы указываете в качестве языка редактирования по умолчанию другой язык, он становится языком редактирования по умолчанию для всех приложений Microsoft 365.
Переключение языка раскладки клавиатуры
Для печати с использованием стандартной клавиатуры конкретного языка необходимо добавить соответствующую раскладку клавиатуры. Инструкция по добавлению дополнительного языка клавиатуры приведена в разделе Изменение языка Microsoft Office.
После добавления раскладки клавиатуры для другого языка на панели задач рядом с часами появляется языковой индикатор (называется «Языковая панель»), который показывает текущий язык клавиатуры. Например, в Windows 10 языковым индикатором для иврита будет .
Примечание: Языковая панель появляется автоматически, как только в диалоговом окне Языки и службы текстового ввода в Microsoft Windows добавляется хотя бы один язык, кроме английского.
Для изменения текущего языка клавиатуры щелкните языковую панель и выберите необходимый язык или нажмите сочетание клавиш ALT+SHIFT для переключения по списку установленных вариантов клавиатуры.
Для ввода небольших фрагментов текста на другом языке без переключения клавиатуры можно использовать таблицу символов — одно из стандартных приложений Microsoft Windows. Вы можете выбрать символ на одной из страниц шрифтов для языка с написанием справа налево или слева направо, скопировать его в буфер обмена и вставить в документ. Дополнительные сведения о вводе текста с помощью таблицы символов см. в статье Использование специальных символов (таблица символов).
В зависимости от требуемых языков вы также можете ввести небольшие фрагменты текста с помощью галереи символов, см раздел Вставка флажка или другого символа.
Задание направления справа налево для текста, маркированных и нумерованных списков
После включения языков с написанием справа налево и слева направо на ленте в большинстве приложений Microsoft 365 появляются кнопки Слева направо и Справа налево. Используйте эти кнопки для изменения направления текста при его вводе и выравнивании.
Примечание: В Microsoft OneNote кнопки Слева направо и Справа налево можно отобразить с помощью стрелки Выравнивание абзаца.
Направление текста в Access и Excel
Текст в ячейках и полях может быть выровнен по левому краю, по центру или по правому краю. В некоторых программах, таких как Access и Excel, направление текста также может зависеть от контекста.
При использовании контекстного направления выравнивание текста и чисел определяется языком первого введенного символа (например, текст в ячейке или поле выравнивается по правому краю, если первый символ относится к языку с написанием справа налево, и по левому краю в противном случае). Кроме того, можно отказаться от контекстного направления для отдельных объектов и выровнять их по левому краю, по центру или по правому краю.
Во многих программах для работы с текстом в направлении справа налево или со смешанным текстом применяются контекстные правила, определяющие направление письма и порядок чтения текста. Поля, списки и другие элементы задают контекстные правила для текста, который они содержат.
Порядок чтения и направление текста определяются следующими контекстными правилами:
- если первый значащий символ относится к языку с написанием слева направо, выбирается порядок чтения слева направо и текст выравнивается по левому краю;
- если первый значащий символ относится к языку с написанием справа налево, выбирается порядок чтения справа налево и текст выравнивается по правому краю;
- если введены только нейтральные знаки, порядок чтения и направление выбираются в соответствии с направление абзаца (слева направо либо справа налево), пока не будет введен первый значащий символ.
Каждый раз при изменении направления языка первого значащего символа соответствующим образом изменяются порядок чтения и направление текста.
Выделение лигатур и диакритических знаков
В Word и других текстовых редакторах можно выделить, найти и заменить отдельные диакритические знаки и арабские символы независимо от того, связаны они или нет. Каждая лигатура и диакритический знак обрабатывается как отдельный элемент слова языка с написанием справа налево.
Ниже показан пример выделения арабского слова с лигатурой на три символа (по мере выделения каждого из них).
Проблемы с поиском и заменой знаков в языках с письмом справа налево, индийских языках и языках Юго-Восточной Азии
В текстах на языках индийской группы (таких как бенгальский, гуджарати, хинди, каннада, малаялам, маратхи, панджаби, тамильский и телугу) могут поддерживаться не все параметры поиска в Microsoft Office. Например, параметры Учитывать регистр и Только слово целиком не будут работать в тексте на этих языках. Тем не менее эти параметры могу применяться в том же документе для поиска латинских букв.
Языки с письмом справа налево
Средства поиска и замены текста выполняют поиск в том порядке, в котором текст вводится в поле Поиск, вне зависимости от порядка его отображения. Поэтому можно выполнять поиск текста с письмом справа налево независимо от направления абзаца. Кроме того, можно находить совпадающие знаки с кашиды и без них (только для арабского языка), с Алиф Гамза и без него (только для арабского языка) или с диакритические знаки, такими как никуд в иврите. Список кодов символов ASCII и Юникода см. в статье Вставка символов и знаков на основе латинского алфавита в кодировке ASCII или Юникод.
Индийские языки
В текстах на языках индийской группы (таких как бенгальский, гуджарати, хинди, каннада, малаялам, маратхи, панджаби, тамильский и телугу) могут поддерживаться не все параметры поиска в Microsoft Office. Например, параметры Учитывать регистр и Только слово целиком не будут работать в тексте на этих языках. Тем не менее эти параметры могу применяться в том же документе для поиска латинских букв.
Языки Юго-Восточной Азии
В текстах на языках Юго-Восточной Азии (таких как тайский и вьетнамский) могут поддерживаться не все параметры поиска в Microsoft Office. Например, параметры Учитывать регистр и Только слово целиком не будут работать в тексте на этих языках. Тем не менее эти параметры могу применяться в том же документе для поиска латинских букв.
Арабская локализация: слова, слова, слова
Эта вторая часть рассказа про локализацию ABBYY FineReader Sprint на арабский. В отличие от первой части, где собственно про язык было мало, а про окна много, здесь речь пойдет уже про письменность и ее особенности.
Арабские арабские цифры
Точнее индо-арабские. В то время как европейцы и примкнувшие к ним полмира используют арабские цифры, сами арабы (в большинстве стран) предпочитают использовать другие, хоть и (отдаленно) похожие цифры: ٠١٢٣٤٥٦٧٨٩. Слегка подробнее, например, в википедии. Но в википедии не описан удивительный факт: в современном арабском языке число, скорее всего, будет записываться слева направо – вне зависимости от того, какие цифры используются. Сколько-нибудь подробных правил, где в интерфейсах какие цифры применять, я не нашел. Те закономерности, что использовали мы, были выведены эмпирически, в процессе разглядывания Windows 8 с арабским языком интерфейса. И не так уж и много их нашлось:
• Если цифра – часть английского текста, то она остается «английской». Например, F1 или A4.
• Если в контроле текстового ввода вводятся цифры, то они «арабские». Да, и в IP address контроле тоже.
• Да и вообще, почти всегда используются «арабские» цифры.
Кстати, хорошие новости. Судя по нашему опыту, для того чтобы выполнить эти правила, не нужно делать ничего специально. Вот что пишет msdn по этому поводу: «… мы чаще всего оставляем цифры в ANSI, оставляя операционной системе вывод правильных цифр в зависимости от системных настроек».
Про клавиатурные ускорители
Речь идет о тех подчеркнутых буквах, которые можно увидеть в диалогах и меню (если не видно – нужно нажать Alt). В терминах Микрософт – Access Keys. На всякий случай опишу, как это работает (с точки зрения пользователя) на примере Notepad:
Если открыть меню, как на картинке, и нажать ‘X’, то приложение закроется, если ‘P’ – откроется диалог печати, и т.д. Кстати, чтобы получить меню такого вида, нужно нажать “Alt, F” (можно не одновременно). Поддержка этой фичи «встроена» в WinAPI: все, что нужно сделать при разработке, — указать в соответствующем ресурсе меню или диалога, какая буква будет ускорителем для того или иного пункта. Это делается с помощью символа ‘&’, проставленного перед нужной буквой. Т.е. в ресурсах меню Notepad просто написано: “E&xit”.
А что, если язык приложения русский? Да то же самое. Сложности начинаются тогда, когда используемая для выбранного языка интерфейса раскладка клавиатуры не предполагает ввода символа за одно нажатие. Например, если приложение локализовано на японский (или китайский). Но и в таких случаях эта проблема решаема:
Решение, как видно на этом скриншоте, не самое красивое, но рабочее: к японскому названию пункта меню в скобках дописывается латинская буква, которая и будет ускорителем.
Так вот, возвращаясь к арабскому. К счастью, практически все арабские символы вводятся одним нажатием клавиши. Исключения, т.е. те символы, которые не стоит делать ускорителями при локализации на арабский, это:
• лигатуры (письменный арабский очень любит лигатуры, но, к счастью, обязательной является только лям-алиф, остальные при вводе с клавиатуры практически не встречаются),
• символы, которые вводятся с зажатым Shift,
• символы, которые на письме объединяются в конструкцию, по которой сложно понять, какой символ подчеркнут (например, алиф с хамзой: أ),
• латинские символы — если есть возможность этого избежать (так, если частью названия пункта меню является английское слово, не нужно ставить на него ускоритель).
Подробнее можно посмотреть в микрософтовском Arabic Style Guide, в разделе Software Consideration, Keys.
Кстати, по какой-то причине техписатели решили, что арабский язык в контексте таких ускорителей похож на японский: إنهاء(X). И эта ошибка имела шанс прожить довольно долго незамеченной, если бы не более бросающаяся в глаз проблема со скобками, описанная в следующем разделе.
Смешение языков
Иногда (а в случае локализации программ весьма часто) в арабский текст нужно встраивать английские слова: названия компаний (хоть у ABBYY и есть перевод названия на китайский, но в арабском продукт все еще называется ABBYY FineReader Sprint), технологий (например, TCP/IP) и многое другое. При этом основной арабский текст будет читаться, как и положено, справа налево, а английскии слова в нём – слева направо. Например, «Домашняя страница ABBYY» будет писаться как «زيارة موقع ABBYY على الويب». Кстати, попробуйте скопировать эту фразу в текстовый редактор, и «погулять» по ней курсором, чтобы понять всю логичность порядка чтения в смешанных текстах.
Но это еще была не проблема: сам по себе смешанный текст беды не приносит. Но стоит рядом с английскими словами в арабском тексте оказаться знакам препинания или цифрам… Например, в нашем приложении (поскольку оно поддерживает сканирование) есть строка, описывающая популярный размер бумаги: “A4 (210 x 297 mm)”. Название размера не переводится, а вот единица измерения – да. В итоге, в арабском эта строка выглядит вот так (скриншот сделан на английской системе, поэтому на «не арабские» цифры обращать внимание не нужно):
К нашему удивлению, когда ресурсы пришли с перевода, текст в приложении выглядел совсем не так:
Причем, для пущего веселья, в Windows 8 (предыдущий скриншот сделан в Windows 7) эти же строки выглядели уже вот так:
Хуже того, в Windows 7 даже текст без единого арабского символа тоже рисовался неправильно (это уже диалог выбора сканера):
Итак, кто виноват и что делать? Отвечает за вывод смешанного текста алгоритм bidi. Описание алгоритма уже было на хабре, правда с упором на применение в html. Я же кратенько перескажу википедию, и перейду к тому, как это работает в Windows.
В этом алгоритме символы делятся на сильные (те, направление которых заведомо известно, – буквы), слабые (те, направление чтения которых может меняться, – знаки препинания) и нейтральные (те, к которым не применимо понятие направления, – пробельные символы). В памяти символы хранятся в порядке чтения: первая буква, вторая буква и т.д. Ну а алгоритм выводит буквы в визуальном порядке: LTR слова слева направо, RTL – справа налево. Несколько слов одинаковой направленности будут выводиться в порядке этой направленности. Взаимное же расположение частей текста разной направленности определяется общим направлением текста. На следующей картинке это показано наглядно: порядок слов обозначен числами, порядок чтения (т.е. букв в словах) – стрелками, сверху указано общее направление текста.
Что же происходит со слабыми символами? Их направленность определяется окружающими их сильными символами: если с обеих сторон ближайшими сильными символами (слабые и нейтральные символы просто пропускаются) будут RTL буквы, то и этот слабый символ будет RTL, и наоборот. Если же слабый символ окажется на границе между кусками разной направленности, или в начале, или в конце строки, то он примет общее направление текста. При этом нужно учитывать, что несимметричные знаки препинания в арабском зеркалируются, и для скобок это означает, что открывающая скобка просто «превращается» в закрывающую, и наоборот.
И опять про цифры. Описание алгоритма на wiki говорит, что цифры – это слабые символы. Но это не совсем так. Как я уже упоминал, вне зависимости от того, арабские или индо-арабские цифры используются, числа будут писаться слева направо. А направление слабых символов должно зависеть от окружения. Но при расчете направления других слабых символов цифры не учитываются, так что, по сути, они выделены в отдельную категорию направленных слабых символов. Эксперименты также показали, что если «граничное» число следует за LTR текстом (в порядке хранения в памяти), то и выводится оно как часть LTR текста даже в RTL окружении.
Экспериментально было выяснено, что Windows XP/Vista/7/7.1 используют одну версию алгоритма, а Windows 8/8.1 другую. Начиная с Windows 8, судя по всему, алгоритм был усовершенствован: если в строке присутствуют два парных слабых символа (например, открывающая и закрывающая скобки), один из которых расположен на границе, а второй между сильных символов одной направленности, то оба парных символа будут нарисованы в той направленности, которая определена сильными символами.
Что же делать, если определенное правилами положение символа при рисовании не соответствует ожидаемому? Стандарт Unicode предлагает для этого несколько способов. Из них, на мой взгляд, самым простым (для понимания) и вполне достаточным для любых ситуаций является использование символов “Left-to-right mark” (LRM, U+200E) и “Right-to-left mark” (RLM, U+200F). Это невидимые сильные символы, имеющие соответствующую названию направленность. Их нужно просто вставлять в те места, где направленность граничного слабого символа определяется неверно. Эти символы MS Visual Studio показывает, впрочем, как и Notepad, если включить соответствующую настройку в контекстном меню. В том же меню есть и команда вставки LRM и RLM:
Альтернативным способом ввода этих символов (помимо очевидного: копирование нужного символа из другого места :-), является ввод через Alt код. Для этого нужно добавить в реестр строковый ключ HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad со значением 1 и перезагрузить компьютер. После этого символs LRM и RLM можно будет вводить с помощью последовательностей “Alt + Num+, 200e” и “Alt + Num+, 200f” соответственно. Подробнее: нужно нажать одновременно Alt и + на дополнительной клавиатуре, отпустить, потом набрать шестнадцатеричный код символа, для цифр используя дополнительный блок.
Исходя из этого можно понять, что было не так с указанными выше строками, и как это поправить:
В этом примере крайняя скобка неправильно определялась как RTL и поэтому «уезжала» влево и разворачивалась. Достаточно добавить LRM после скобки, и все образуется.
В этих трех проблемах с размерами бумаги (внизу представлен размер Tabloid 11×17 inches) работает совокупность двух факторов. Во-первых, вместо символа умножения ‘×’ (U+00D7) используется строчная латинская «икс». Это не вызывало никаких проблем раньше, но здесь вызвало. По крайней мере для решения проблем с Win8 и Tabloid оказалось достаточным заменить ‘x’ на знак умножения. Столь странное «уезжание» ‘x’ от окружающих его цифр связано же с тем, что ширина (210) была определена как RTL (по скобке в случае с Win8 и по названию размера бумаги в случае с Tabloid), высота же в обоих случаях была признана одним LTR куском с ‘x’.
Ну и во-вторых, чтобы проблема поправилась и на Windows 7 (и в более ранних версиях), нужно также добавить RLM перед открывающей скобкой.
В результате получилось вот такое:
Rich Edit
Последняя проблема, с которой мы столкнулись, заключалась в том, что редактор ресурсов по умолчанию создает Rich Edit контрол версии 2.1. А в этой версии контрол плохо поддерживает арабский язык. В результате EULA на арабском (а это единственное использование Rich Edit в продукте) выглядело весьма криво. Ручное исправление “RichEdit20W” на “RichEdit50W” ситуацию исправило, но только на Windows 8. На младших версиях поправились некоторые, но далеко не все, косяки. Впрочем, Wordpad этих систем при открытии в нем файла EULA (а файл создавался в какой-то старшей версии Word) показывал столь же грустную картину. Единственное решение, которое мы придумали, – отредактировать этот файл в Wordpad в Windows XP, так чтобы он стал выглядеть прилично.
- Блог компании Content AI
- Разработка под Windows