Italic Font在iOS 7上不适用于中文/日文/韩文

时间:2014-01-09 01:17:38

标签: ios fonts ios7 cjk italic

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

3 个答案:

答案 0 :(得分:8)

由于iOS上没有斜体样式的中文字体,因此您需要使用affine transformation来斜接普通样式的中文字体。

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

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];

真实效果:

enter image description here

答案 1 :(得分:5)

我不是在解决你的问题,而是提醒你这种“程序化斜体字体”的可读性非常糟糕。

对于CJK文本,表达强调(或引用)的正确方法是使用另一种样式(通常是serif字体)。对于简体中文,如果普通文本使用Heiti(默认为iOS),请使用Songti,Fangsong或Kaiti而不是倾斜。我对韩语和日语不太熟悉,但他们使用类似的方法。

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

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

答案 2 :(得分:0)

同意@ an0但这样做变换更适合阅读和理解

CGAffineTransform CGAffineTransformMakeSkew (CGFloat degree) {
    CGAffineTransform t = CGAffineTransformIdentity;
    t.c = (degree * M_PI / 180.0f);
    return t;
}