为什么我的unicode角色看起来与我的期望不同?

时间:2014-01-04 20:25:54

标签: ios uifont

我正在向棋盘添加棋子,我正在使用他们的unicode角色。但是,我希望它们看起来像wikipedia中的这些:

wikipedia unicode chess pieces

但是他们正在这样显示:

my unicode chess pieces

我用来显示这些代码的代码如下:

- (void)drawRect:(CGRect)rect
{
    NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
    textStyle.alignment = NSTextAlignmentCenter;

    NSDictionary *attrs =
    @{ NSForegroundColorAttributeName : [UIColor blackColor],
       NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue" size:_squareSize],
       NSParagraphStyleAttributeName:textStyle
       };

    [[self getStringForValue:_squareValue] drawInRect:rect withAttributes:attrs];

}

- (NSString*)getStringForValue:(int)value
{
    NSString* piece;

    switch (_squareValue) {
            // white pieces
        case 1:
            piece = @"\u2659";
            break;

        case 2:
            piece = @"\u2658";
            break;

        case 3:
            piece = @"\u2654";
            break;

        case 5:
            piece = @"\u2657";
            break;

        case 6:
            piece = @"\u2656";
            break;

        case 7:
            piece = @"\u2655";
            break;

            // black pieces
        case 9:
            piece = @"\u265F";
            break;

        case 10:
            piece = @"\u265E";
            break;

        case 11:
            piece = @"\u265A";
            break;

        case 13:
            piece = @"\u265D";
            break;

        case 14:
            piece = @"\u265C";
            break;

        case 15:
            piece = @"\u265B";
            break;

        default:
            piece = @"";
            break;
    }
    return piece;
}

为什么这些作品与维基百科不同?这是字体吗?如果是这样,我应该使用哪种字体?我尝试了几种字体,但每次字符看起来都一样。

2 个答案:

答案 0 :(得分:7)

Unicode标准未指定字符的呈现方式。从中看 OS X上的字符查看器,您期望的是“Arial Unicode MS”:

enter image description here

你得到的是“Menlo Bold”:

enter image description here

根据iOS 7: Font list,应用可以 下载“Arial Unicode MS”。所以你可以从Mac上获取该字体 并将其作为字体资源添加到您的应用程序。

答案 1 :(得分:2)

Unicode字符仅确定字符应表示的内容。然后字体实现unicode字符。每种字体都会以不同方式执行。

如果需要,请尝试不同的字体,但我建议您弄清楚如何在程序中使用图像。这是唯一控制它看起来完美的方式。