Вопрос

В настоящее время я использую iPhone SDK для создания приложения, использующего индийские сценарии.Однако у iPhone возникают проблемы с отображением некоторых символов во многих индийских алфавитах.Например:

प + ् + र = प्र

или

ਕ + ੍ + ਰ = ਕ੍ਰ

Когда вы вводите это на Mac (или Windows), компьютер автоматически преобразует три символа в один глиф (однако в Юникоде он по-прежнему представлен в виде трех символов).Поскольку iPhone не поддерживает AAT (Apple Advanced Typography) или расширенные функции OpenType, он отображает символы как три отдельных символа, что во многих случаях становится нечитаемым.Я думаю, что должен быть способ жесткого кода в Objective-C, чтобы гарантировать, что каждый раз, когда три символа появляются в UILabel, вместо этого они должны отображать определенный глиф из шрифта Arial Unicode MS (встроенного).Я не против использовать для этого недокументированные API.

Это было полезно?

Решение

Проблема не в том, что iPhone поддерживает только определенные индийские шрифты или не поддерживает шрифты AAT.iPhone наверняка поддерживает таблицу AAT.Проблема в том, что правильный шрифт AAT, который вы используете, не включен!У вас может быть несколько отображаемых глифов, потому что они включены либо в arialuni.ttf, либо в Helvetica.ttf.Но у этих шрифтов нет таблиц OpenType или AAT.

Я могу подтвердить с помощью изображения то, что я утверждаю, у меня есть джейлбрейк iPhone, и вы можете проверить flickr.com/photos/41161441@N03/ на изображение для правильного рендеринга кхмерского языка, который является одним из самых сложных индийских сценариев.

Я объяснил проблему на форуме веб-сайта modmyi.com.http://www.modmyi.com/forums/general-iphone-chat/680094-indic-font-rendering-iphone-yes-working.html#post4897261

Другие советы

Начните с изучения того, что использует Apple, следующим образом:

  • Попробуйте ввести отдельные глифы как в «Заметках», так и в «Почте» и посмотрите, объединяются ли они.Если нет, то вряд ли существует скрытый фрагмент кода, который это делает.

  • Затем создайте составного персонажа на Mac и отправьте его по электронной почте на свой iPhone.Посмотрите, способна ли Mail вообще отображать различные составные символы.Повторите, разместив веб-страницу с составными символами и наблюдая за тем, что делает MobileSafari.Я сделал это для вас, просмотрев эту страницу в MobileSafari;он неправильно комбинирует символы.Это говорит нам о том, что WebKit на iPhone не может вам помочь (и значительно снижает вероятность того, что iPhone вообще сможет это сделать).

  • И наконец, почему вы считаете, что «Вечеринка» вообще доступна на iPhone?Вам когда-нибудь удавалось отобразить этот глиф на iPhone в каком-либо приложении?Вполне возможно, что такого определения глифа не существует, и в этом случае вы можете застрять, если не готовы написать свой собственный менеджер компоновки (что, вероятно, потребует создания совершенно нового текстового представления).Если вам удалось его где-то отобразить, то дальше вы можете перейти к выяснению того, как Apple его отображает.

Есть ли на iPhone индийская клавиатура?Мне не удалось его найти, а если нет, то крайне маловероятно, что у них есть значительная поддержка индийского языка, скрытая в частных методах.

Обязательно откройте Radars (bugreport.apple.com) на наличие глифов, которые неправильно нарисованы на iPhone.Вот как они знают, как это исправить.

Я работаю над приложениями для изучения языка.

На iPhone практически нет поддержки индийских сценариев.Вам придется написать собственную поддержку рендеринга текста и элементы, которые ее используют, или подождать, пока Apple ее реализует.

ОС iPhone не могла отображать арабские сценарии до версии 3.0, а OS X поддерживает только определенный текст на индийском языке с поддержкой рендеринга сторонних производителей.

Мое решение для поддержки сценариев, которые iPhone OS не может отображать, — использовать предварительно обработанные изображения.Возможно, вам это не поможет, но мы это делаем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top