在iOS中,有CoreText
框架。 (用C語言提供)我認爲這非常適合你。 這裏是參考文件。 http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/CoreText_Programming/Introduction/Introduction.html
蘋果擁有最強的印刷技術爲如Adobe的一個。據我所知,他們的技術不兼容。 (除了字體和PDF)CoreText具有與Adobe的大多數功能類似的功能,但行爲略有不同。所以你必須再次調整所有佈局值。
我不確定您列出的所有功能是否受支持。
- 行間距,
- 字距調整,
- 各種字體,
- 嵌入對象(如圖片)的佈局,
- 和等
在CoreText框架的初始釋放支持爲iOS。我不確定其他功能,如結紮,雙向流動。 (因爲我沒有測試過)關於選擇,我檢查了其他框架中提供的相關功能,但我沒有使用它。
在CoreText的初始版本中存在一些問題。(1)Aligning multiple sized text vertical center instead of baseline with Core Text in iOS(2)Core Text: Render to an Odd Shape
CoreText最初是一個Mac OS X框架。它正逐漸被移植到iOS。我沒有在Mac上使用CoreText,但是當我查看文檔時,它有更多的功能。我預計大多數功能將被移植。蘋果目前正積極地移植許多Mac功能。
我已經使用Flash(字體中沒有深入的級別),我對Apple的框架感到滿意。我相信你不會失望的。如你所知,蘋果是電腦印刷時代的開創者之一。 (另一個是Adobe :)
該框架看起來有點硬核,但它很容易使用比看起來。它可以按原樣繪製NSAttributedString
(富文本對象),並且您只需製作一個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要重並且慢很多。我可以在UITableViewCell
中使用CoreText繪圖,而不需要在滾動動畫上掙扎。
freetype庫是極低級別的字體庫。它提供了最低級別的直接訪問字體數據和渲染設施的抗鋸齒功能。由於它是低級別的,你應該自己實現佈局邏輯。我不太瞭解這個圖書館。
我不瞭解Android。