В iOS есть CoreText
framework.(предлагается на языке Си) Я думаю, что это идеально подходит для вас.Вот справочная документация.http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/CoreText_Programming/Introduction/Introduction.html
У Apple одна из самых сильных типографских технологий, как у Adobe.Насколько я знаю, их технологии не совместимы.(кроме шрифта и PDF) CoreText имеет большинство функций, аналогичных Adobe, но ведет себя немного по-другому.Поэтому вам нужно снова настроить все значения макета.
Я не уверен, что все перечисленные функции поддерживаются.
- межстрочный интервал,
- кернинг,
- разнообразные шрифты,
- макет встроенного объекта (как изображения),
- иetc
был поддержан в первом выпуске платформы CoreText для iOS.Я не уверен насчет других функций, таких как лигатура, двунаправленный поток.(потому что я не тестировал). А что касается выбора, я проверил, что соответствующая функция предлагается в других рамках, но я не использовал ее.
В первоначальном выпуске CoreText были некоторые проблемы.Я описал некоторые из них здесь: (1) Выравнивание текста по размеру по вертикали по центру вместо базовой линии с Core Text в iOS (2) Core Text: визуализация в нечетную форму
CoreText изначально является платформой Mac OS X.И он постепенно переносится на iOS.Я не использовал CoreText на Mac, но когда я проверял документ, у него было намного больше функций.Я ожидаю, что большинство функций будет перенесено.В настоящее время Apple активно портирует многие функции Mac.
Я использовал Flash (не всесторонний уровень в шрифтах), и я доволен работой Apple.Я верю, что вы не будете разочарованы этим.Как вы знаете, Apple является одним из новичков компьютерной типографии эпохи.(другой - Adobe:)
Фреймворк выглядит немного хардкорным, но его очень просто использовать, чем кажется.Он может нарисовать NSAttributedString
(объект rich-text) как есть, и все, что вам нужно сделать, это просто создать экземпляр NSAttributedString
и нарисовать его с CoreText.
Например, если вы правильно настроилиNSAttributedString
, этот код будет рисовать каждый форматированный текст в определенной области прямоугольника.
// In an UIView subclass.
- (void)drawRect:(CGRect)rect
{
NSAttributedString* AS = [self text]; // Assumes this property exist.
CGContextRef CTX = UIGraphicsGetCurrentContext();
CGMutablePathRef P = CGPathCreateMutable();
CGRect R = rect;
CGPathAddRect(P, NULL, R);
CTFramesetterRef FS = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)AS);
CTFrameRef F = CTFramesetterCreateFrame(FS, CFRangeMake(0, 0), P, NULL);
CTFrameDraw(F, CTX);
CFRelease(FS);
CGPathRelease(P);
Конечно, нарисованная графика будет перевернута, если вы не вызовете этот код где-нибудь.
[[self layer] setGeometryFlipped:YES];
И если вы находите альтернативу нативной типографской / макетной структуре, есть два варианта:
- HTML + CSS
- библиотека freetype
HTML с UIWebView
может быть одним.Посмотрите на CSS3 и позже.Есть довольно много функций, чем обычно ожидают люди.Тем не менее, HTML и UIWebView
намного тяжелее и медленнее, чем CoreText.Я мог бы использовать CoreText рисования в UITableViewCell
без каких-либо проблем с прокруткой анимации.
библиотека freetype - это библиотека низкоуровневых шрифтов.Он предлагает самый низкий уровень прямого доступа к данным шрифтов и средств рендеринга с сглаживанием.Поскольку это низкий уровень, вы должны реализовать логику компоновки самостоятельно.Я плохо знаю об этой библиотеке.
Я не знаю об Android.