什么是CoreText相当于AppKit的NSObliquenessAttributeName?

uli*_*ess 4 cocoa drawing italic core-text ios

我正在使用CoreText在Mac/iOS跨平台代码中绘制一些文本.我可能正在使用操作系统中没有安装真正"Italic"版本的字体供所有用户使用,但是他们需要知道文本是斜体的.

使用AppKit的NSAttributedString -drawAtPoint :,我可以使用NSObliquenessAttributeName使文本倾斜(因此看起来斜体 - 好吧,倾斜).CoreText似乎没有此属性的等效项.至少我在CTStringAttributes.h中找不到任何东西(并不是说在CoreText发布几年之后还有任何文档).

有谁知道如何在iOS上使用CoreText获取倾斜文本?

ala*_*air 8

我尝试使用CTFontCreateWithName()剪切矩阵的仿射变换参数.例如

CGAffineTransform matrix = { 1, 0, 0.5, 1, 0, 0 };
CTFontRef myFont = CTFontCreateWithName(CFSTR("Helvetica"), 48, &matrix);
Run Code Online (Sandbox Code Playgroud)

这将产生相当极端的偏差(假设我做对了),但你明白了.

更新:

事实上,文档似乎暗示这是做事的正确方法.


Max*_*ann 1

将没有斜体特征的字体显示为斜体通常是一个坏主意。但是,我可以理解,在某些情况下无论如何都必须执行此操作。

我现在想到的唯一解决方案是创建带有剪切字体矩阵的自定义字体:

CGAffineTransform matrix = CGAffineTransformMake(1, tan(degreesToRadians(0)), tan(degreesToRadians(20)), 1, 0, 0);  
CTFontRef myfont = CTFontCreateWithName(CFSTR("Helvetica"), 48, &matrix);
Run Code Online (Sandbox Code Playgroud)

您必须使用矩阵并查看什么会带来最佳结果。(请注意,这是我的头脑和互联网的虚假代码混合。)