将 NSNumber 格式化为上标或下标 unicode 字符

Format an NSNumber in to superscript or subscript unicode characters

Unicode包括上标字符,例如“⁰¹²³⁴⁵⁶⁷⁸⁹”和下标:“₀₁₂₃₄₅₅₆₇₈₉”。我想将数字格式化为上标或下标数字——我相信在 UILabelUITextField 中使用应该没问题。

具体来说,我不想使用 NSAttributedString

谢谢。

我在 NSString 上添加了一个类别,但在使用之前阅读了巨大的警告

-(NSString*) asSuperscript
{
    return [self tranformWithMap:
            @{
              @"0": @"⁰",
              @"1": @"¹",
              @"2": @"²",
              @"3": @"³",
              @"4": @"⁴",
              @"5": @"⁵",
              @"6": @"⁶",
              @"7": @"⁷",
              @"8": @"⁸",
              @"9": @"⁹"
              }];
}

-(NSString*) tranformWithMap: (NSDictionary *) map
{
    NSString *output = self;

    for (NSString *from in map.allKeys)
    {
        output = [output stringByReplacingOccurrencesOfString: from withString: map[from]];
    }

    return output;
}

上面的实现效率低得惊人,但可以处理短字符串——嘿,计算机速度很快,对吧?

然而,在iOS,我需要这个的地方,系统字体的上标字符看起来很糟糕。特别是“123”的字符没有垂直排列和“0456789”,它们都在上面!