0

我想在 UITextView 中设置斜体字体样式,但斜体字体在 iOS 7 上不适用于中文/日文/韩文。有人可以帮忙吗?

4

3 回答 3

9

因为iOS上没有斜体中文字体,所以你需要使用仿射变换来倾斜正常的中文字体。

下面的代码使 15° 倾斜Heiti SC Medium

CGAffineTransform matrix = CGAffineTransformMake(1, 0, tanf(15 * (CGFloat)M_PI / 180), 1, 0, 0);
UIFontDescriptor *desc = [UIFontDescriptor fontDescriptorWithName:@"Heiti SC Medium" matrix:matrix];
textView.font = [UIFont fontWithDescriptor:desc size:17];

实际效果:

在此处输入图像描述

于 2014-01-10T00:38:40.553 回答
5

我不是在解决你的问题,而是提醒你,这种“程序化斜体”的可读性真的很差。

对于 CJK 文本,表达强调(或引用)的正确方法是使用另一种样式(通常是衬线字体)。对于简体中文,如果您的普通文本使用黑体(iOS 默认),请使用松体、方松或开体而不是斜体来强调。我对韩语和日语不是很熟悉,但他们使用类似的方法。

以下是 iOS 7 的字体列表:http://support.apple.com/kb/HT5878?viewlocale=en_US&locale=en_US 日文 Mincho 字体“Hiragino Mincho ProN”可直接使用。默认不安装额外的中文字体。您需要先下载。有关如何安装其他系统提供的字体,请参阅此示例:https ://github.com/fdstevex/FDSFontDownloader/ 。

我知道这有点复杂,但这就是我们做斜体的方式。

于 2014-01-10T01:43:02.213 回答
0

同意@an0,但通过这种方式进行转换更便于阅读和理解

CGAffineTransform CGAffineTransformMakeSkew (CGFloat degree) {
    CGAffineTransform t = CGAffineTransformIdentity;
    t.c = (degree * M_PI / 180.0f);
    return t;
}
于 2014-03-21T08:45:41.703 回答