Рендеринг определенного символа символов на iPhone - PullRequest
2 голосов
/ 04 августа 2009

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

प + ् + र = प्र

или

ਕ + ੍ + ਰ = ਕ੍ਰ

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

Ответы [ 3 ]

2 голосов
/ 06 августа 2009

Проблема не в том, что 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

1 голос
/ 04 августа 2009

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

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

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

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

1 голос
/ 04 августа 2009

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

  • Попробуйте ввести отдельные глифы в Notes и Mail и посмотреть, не являются ли они составными. Если нет, то вряд ли есть скрытый фрагмент кода, который делает это.

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

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

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

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

...