Рендеринг определенного символа символа на iPhone

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

प + ् + र = प्र

or

ਕ + ੍ + ਰ = ਕ੍ਰ

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


person Kulpreet    schedule 04.08.2009    source источник


Ответы (3)


Проблема не в том, что iPhone поддерживает только определенные индийские шрифты или шрифты AAT. IPhone точно поддерживает таблицу AAT. Проблема в том, что правильный шрифт AAT, который вы используете, не включен !! U может отображать несколько глифов, потому что они включены либо в 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

person Community    schedule 06.08.2009
comment
Спасибо! Это действительно должно помочь. Как вы создали родную кхмерскую клавиатуру? Кстати ... Я использую Unicode Gurmukhi в своем приложении. Я попробую то, что вы сделали, и расскажу, как это происходит. Еще раз спасибо! - person Kulpreet; 06.08.2009
comment
Что касается клавиатуры, то вся заслуга принадлежит KENNY TM, который на самом деле обновляет отличный плагин iKeyEx (вы можете проверить это в блоге). networkpx.blogspot.com/2009/08/ Я создал только файл plist для кхмерской клавиатуры и следую его инструкциям, чтобы создать клавиатуру. - person ; 06.08.2009

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

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

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

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

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

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

person Rob Napier    schedule 04.08.2009
comment
Я нашел это: hackint0sh.org/forum/f9/39822.htm, И вот здесь у меня возникла идея использовать недокументированные API. Кажется, я не могу понять, что именно он делает и как может мне помочь, поскольку я относительно новичок в этом фреймворке. Что касается клавиатуры, я создал специальную клавиатуру для своего приложения и отправлял в Apple проблему рендеринга индийского языка с тех пор, как Apple начала поддерживать шрифты Unicode Indic в версии 2.0. -Спасибо - person Kulpreet; 04.08.2009
comment
Что вы хотите сделать, так это заглянуть в каталог шрифтов телефона (должен быть / System / Library / Fonts или / System / Library / Fonts / Cache), взять фактические файлы .ttf и бросить их в редактор шрифтов и посмотреть, не эти персонажи действительно там. Не доверяйте ttf-файлам симулятора. Вам нужно проверить реальное устройство. Вы можете написать код, чтобы читать этот каталог, распечатывать то, что он находит, копировать файлы в свой собственный каталог документов и загружать в Организатор. Или вы можете использовать взломанный телефон. Подозреваю, что на самом деле индийская поддержка не поддерживается. - person Rob Napier; 04.08.2009
comment
Итак, я вошел в систему iPhone и использовал FontForge, чтобы узнать, что глифов нет в файле Arial Unicode MS (arialuni.ttf). Кажется, что Apple хранит эти альтернативные глифы в отдельном файле для каждого языка (например, Devanagari.ttf), в котором есть альтернативные глифы. Эти файлы отсутствуют на iPhone. Это неутешительно. Так что я попытался вставить его в себя, но безуспешно. Что я могу сделать с моим заявлением? - person Kulpreet; 05.08.2009
comment
Я не знаю, есть ли решение помимо создания собственного менеджера по расположению. Для начала я бы начал с изучения того, как NSLayoutManager работает на Mac. Если вы найдете какое-либо приложение для iPhone с нужной компоновкой, это только начало. Вы также можете использовать решение на основе UIWebView, в котором вы заменяете составные символы изображениями. Из возможных решений это, вероятно, самое простое, но и наименее гибкое. - person Rob Napier; 05.08.2009

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

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

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

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

person Alastair Stuart    schedule 04.08.2009