美文网首页
CoreText学习探究

CoreText学习探究

作者: 夏天的风_song | 来源:发表于2017-04-06 18:12 被阅读0次

一、核心文本

Core Text是一种用于布置文字和处理字体的先进的低级技术。在Mac OS X v10.5和iOS 3.2中引入的Core Text API可从所有OS X和iOS环境访问。

重要提示: Core Text适用于必须在低级别进行文本布局和字体处理的开发人员,例如布局引擎的开发人员。
如果可能,您应该使用更高级别的框架开发应用程序,也就是说,在iOS中使用Text Kit或OS X中的Cocoa文本系统)。
核心文本是这些文本系统的基础技术,所以它们的速度和效率是共享的。此外,Text Kit 和Cocoa Kit提供丰富的文本编辑,功能齐全的页面布局引擎和其他基础架构,您的应用程序如果单独使用核心文本则需要提供。

1.png

二、概述

Core Text适用于需要与Core Graphics框架(Quartz)相关的低级文本处理技术的应用程序。
如果您直接使用Quartz并且需要绘制一些文本,请使用Core Text。
例如,如果您有自己的页面布局引擎 - 您有一些文本,并且您知道需要在视图中进行的位置 - 您可以使用Core Text生成字形并将它们相对定位,并具有所有的功能精细排版,如字距调整,连字,断线,连字符和对齐。

Core Text Lays Out Text(核心文本布局文本)

核心文本生成字形(从字符代码和字体数据),并在字形运行中将它们相对于彼此定位。它将字形运行成行,并将线组合成多行框架(如段落)。核心文本还提供字形和布局相关数据,如字形位置和线和帧的测量。它处理字符属性和段落样式,包括各种类型的选项卡样式和定位。

使用核心文本管理字体

Core Text字体API提供字体,字体集合,字体描述符和容易访问字体数据。它还支持多种主字体,字体变体,字体级联和字体链接。Core Text为Quartz提供了一种替代方法,用于将您自己的字体加载到当前进程中,即字体激活。

三、CoreText的优劣

CoreText.png

UIWebView也是复杂的文字排版的备选方案。对于排版,基于CoreText和基于UIWebView
相比,前者有如下好处:

  • CoreText 占用的内存更少,渲染速度快,UIWebView 占用的内存更多,渲染速度慢。
  • CoreText 在渲染界面前就可以精确地获得显示内容的高度(只要有了 CTFrame 即可),而 UIWebView 只有渲染出内容后,才能获得内容的高度(而且还需要用 javascript 代码来获取)
  • CoreText 的 CTFrame 可以在后台线程渲染,UIWebView 的内容只能在主线程(UI 线程)渲染。
  • 基于 CoreText 可以做更好的原生交互效果,交互效果可以更细腻。而 UIWebView 的交互效果都是用 javascript 来实现的,在交互效果上会有一些卡顿存在。例如,在 UIWebView 下,一个简单的按钮按下效果,都无法做到原生按钮的即时和细腻的按下效果。

当然,基于 CoreText 的排版方案也有一些劣势:

  • CoreText 渲染出来的内容不能像 UIWebView 那样方便地支持内容的复制。
  • 基于 CoreText 来排版需要自己处理很多复杂逻辑,例如需要自己处理图片与文字混排相关的逻辑,也需要自己实现链接点击操作的支持。
    Core Text中的所有单独功能都是线程安全的。字体对象(CTFont,CTFontDescriptor和关联对象)可以由多个操作,工作队列或线程同时使用。但是,布局对象(CTTypesetter,CTFramesetter,CTRun,CTLine,CTFrame和关联对象)应该在单个操作,工作队列或线程中使用。
    在业界,很多应用都采用了基于CoreText技术的排版方案,例如:新浪微博客户端,多看阅读客户端。

注意事项: Core Text中的所有单独功能都是线程安全的。字体对象(CTFont,CTFontDescriptor和关联对象)可以由多个操作,工作队列或线程同时使用。但是,布局对象(CTTypesetter,CTFramesetter,CTRun,CTLine,CTFrame和关联对象)应该在单个操作,工作队列或线程中使用。

相关文章

  • CoreText学习探究

    一、核心文本 Core Text是一种用于布置文字和处理字体的先进的低级技术。在Mac OS X v10.5和iO...

  • CoreText浅探究

    做了一个部分文字加圆角背景色的UILabel,用到了CoreText,稍微研究了一下,主要代码分享一下,供大家参考...

  • iOS中CoreText框架探究

    闲来无事想着自己搞个富文本的工具库,不至于每次遇见这些东西就用别人的第三方。自己研究研究也有助于自己对这方面的理解...

  • CoreText

    目录 1.CoreText框架概述 一、CoreText框架概述 1.CoreText框架图 2.Coretext...

  • CoreText 学习笔记(下)

    唐巧原博客地址:基于 CoreText 的排版引擎:进阶 | 唐巧的博客 前篇写了CoreText绘制纯文本的学习...

  • CoreText 学习总结

    === 需求 给出一段多行文本,要求给前面部分文字添加圆角边框(下面简称这个为标签),要求能够控制标签和文字之间的...

  • CoreText 学习1

    本文主要是用Swift重写了巧哥博客中的 Demo,博客的原始链接如下: 唐巧:基于 CoreText 的排版引擎...

  • CoreText使用学习

    CoreText 框架中最常用的几个类 CTFont CTFontCollection CTFontDescrip...

  • CoreText 学习2

    本文主要是用Swift重写了巧哥博客中的 Demo,博客的原始链接如下: 唐巧:基于 CoreText 的排版引擎...

  • UILabel获取每行的文本,英文略有误差

    需要使用 #import

网友评论

      本文标题:CoreText学习探究

      本文链接:https://www.haomeiwen.com/subject/crqxattx.html