博客
关于我
CoreText(一):基本用法
阅读量:528 次
发布时间:2019-03-08

本文共 1607 字,大约阅读时间需要 5 分钟。

核文本(Core Text)框架概述

核文本框架(Core Text)为iOS和macOS应用程序提供了高效、灵活的文本排版功能。它专门与核图形(Core Graphics)框架配合使用,主要用于在UIView的drawRect方法中进行绘制操作。

核文本框架简介

核文本框架是苹果公司开发的用于处理和展示文本内容的框架,适合在绘图引擎中对文本进行高效绘制。与普通文本处理框架不同,核文本框架更注重新现文本、字体风格以及文本排版参数等方面的多样性,能够满足开发者对文本视觉呈现的复杂要求。

常用类

核文本框架涉及多个重要类,包括:

  • CFAttributedStringRef:用来存储要绘制的文字字符及其相关属性的指针。
  • CTFramesetterRef:通过CFAttributedStringRef创建CTFrame对象的指针,用于生成并绘制复杂的文字效果。
  • CTFrame:文本的主要绘制对象,包含多行文本,能够进行单独绘制或从中获取行文本传输(CTLine)。
  • CTLine:单行文本对象,提供行高(ascent)、行间距(leading)等信息。
  • CTRun:文本的字形块,每个CTRun包含一组具有相同格式属性(如字体、颜色)的字形。
  • 字体与字形

  • 字体(Font):一系列具有相同大小、样式和粗细的字母集合。注意,粗体和斜体通常需要不同的字体。
  • 字面(Face):一个字体集合内包含不同字号的字体,每个字面平行线高度和笔画力度可能有所不同。
  • 字体家族(Font Family):包含多个字体的集合,如Franklin Gothic、Franklin Heavy等。
  • 磅值(Weight):用来描述字体的粗细,有细、书、粗、极粗等等级。
  • 样式(Style):包括直体(Roman)、斜体(Oblique)、手写体(Calligraphic script)等。
  • x高度(X Height):小写字母的平均高度,以x轴为基准,基线的下方高度。
  • 上伸部分(Ascent):小写字母顶部的高度,通常为正值。
  • 下伸部分(Descent):基线以下的最低部分,通常为负值。
  • 基线(Baseline):所有字母的底部与基线对齐的线。
  • 线段(Stroke):构成字形的线条,可以加粗或模糊调整。
  • 衬线(Serif):帮助字符更易读的水平线,比如字体上的横线和上下线。
  • 无衬线字体(Sans Serif):不使用衬线装饰,结构简单。
  • 方形字体(SquareFont):画面效果介于无衬线字和衬线字之间。
  • 仿写字体(Calligraphic Script):模仿手写字体,如Murray Hill或Fraktur字体。
  • 装饰性字体(Decorative Fonts):如绘画字体,用于特定装饰用途。
  • 连写字体(Ligatures):多个字符合并为一个单一的字形,如 fi、fl。
  • 字符与字形

    字符是信息的基本单位,而字形是字符的图形表现形式。逻辑性字符与字形之间并非一一对应,同一字符在不同字体、样式和大小下会呈现出不同的字形。字形度量参数(Glyph Metrics)包括:

  • 边界框(BoundingBox):最小包围框。
  • 上伸部分(Ascent):字形顶部的距离。
  • 下伸部分(Descent):字形底部的距离。
  • 行距(Line Gap):上下两行的间距。
  • 字距(Kerning):字与字之间的间距,为跨行距之外的自动调整。
  • 原点(Origin):基线左侧的点,左上角定义为零点。
  • 坐标系

    在MacOS系统中,坐标系的原点通常位于左下角,而iOS system中UIView的坐标系原点位于左上角。Core Text的绘制与Core Graphic的绘制引擎保持一致,原点用左下角为基准。因此,在使用Core Text进行绘制时,由于屏幕绘图引擎原点在左上角,需要对当前上下文进行翻转处理:

  • 获取当前上下文。
  • 翻转坐标系。
  • 转载地址:http://gsmnz.baihongyu.com/

    你可能感兴趣的文章
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NIO三大组件基础知识
    查看>>
    NIO与零拷贝和AIO
    查看>>