English 中文(简体)
如何将文本字符串转换为 iOS 中的一组聚线?
原标题:How to convert a text string into a set of polylines in iOS?

我有一个字符串,例如“哈罗世界”和字体名称,例如“Courier”。我需要获得代表此字符串的多线条阵列。这些多线条将在 OpenGL 场景中显示 。

我的意思是,我需要把每封信 转换成一个或一个以上的 2D 聚线。

在iOS(目标-C或C++)中,我如何做到这一点?

问题回答

您可以使用 Core Text 从文本和字体中获得路径。 有一种被称为 < code> CTFontCreatePathForGlyph 的核心文本方法, 将为您提供给定符号的路径。 使用该方法, 您就可以为您所有的 glyphs 获取路径 。

您应该查看 < a href=> http://www.codeproject.com/ articless// 109729/Low-level- text- rendering" rel=“ no following” > 这篇文章关于“ 低级别文本翻譯” 。 您也可以查看 < a href=" 的样本代码 http:// oleb. net/blog/2010/12/ animate- drawing- found- cgpath- with- chashadapelayer/" rel=“ nofol=nfollowing", 以查看如何获得文本路径( 使用核心动画绘制) 。

您仍然需要将路径转换为多边线( 因为路径可能包含弧和曲线, 而多边线只是点列表) 。

< a href=> "http://freetype.sourceforge.net/index2.html" rel="nofollow noreferrer" >FreeType 库 支持装入范围广泛的字体文件( TrueType, PostScript 等)。 FreeType 引擎可以装入字体, 并转换为位图, 但它也可以返回详细的字符信息 。

您可以使用 FT_ extline_Decompose 函数来选择 FT_ extline , 并将其分解成其组成线、 弧和曲线。 您只需在 FT_ extline_ Funcs 中提供一系列函数指针, 这些指针将在提纲处理过程中被引用。 这些函数由您定义, 您可以简单地将其转换为适合您最合适的格式( 例如多线) 。

API参考文献:

请注意,如果您正在制造不经常更改的大块文本,则在每个框中制作和填充一系列曲线的成本相当昂贵。通常的解决方案是选择点大小,将所有所需的晶体变成纹理,并使用纹理地图集将字符串变成四角。

在字体上的 OpenGL FAQ 中张贴了一些有用的信息, 虽然他们也谈到使用 FreeType 。 纹理地图集技术值得阅读 :





相关问题
List Contents of Directory in a UITableView

I am trying to list the contents of Ringtones directory in a TableView, however, I am only getting the last file in the directory in ALL cells, instead of file per cell. This is my code: - (...

iPhone NSUserDefaults persistance difficulty

In my app i have a bunch of data i store in the NSUserdefaults. This information consists of an NSObject (Object1) with NSStrings and NSNumbers and also 2 instances of yet another object (Object2). ...

Writing a masked image to disk as a PNG file

Basically I m downloading images off of a webserver and then caching them to the disk, but before I do so I want to mask them. I m using the masking code everyone seems to point at which can be found ...

Resize UIImage with aspect ratio?

I m using this code to resize an image on the iPhone: CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0); UIGraphicsBeginImageContext(screenRect.size); [value drawInRect:screenRect blendMode:...

Allowing interaction with a UIView under another UIView

Is there a simple way of allowing interaction with a button in a UIView that lies under another UIView - where there are no actual objects from the top UIView on top of the button? For instance, ...

热门标签