显示来自 Entypo 字体的 5 位基本 unicode 字符
Posted
技术标签:
【中文标题】显示来自 Entypo 字体的 5 位基本 unicode 字符【英文标题】:Display 5-digit base unicode character from the Entypo font 【发布时间】:2014-08-04 07:40:39 【问题描述】:我在我的 iPhone 应用程序中使用了 Entypo 字体,但它只适用于某些字符。我无法使用五位 unicode 值显示图标。
我在网上找到了一些信息,表明这是由于 ios(以及其他语言)支持的 UTF 编码,并且 5 位 unicode 值应该分成两个值。
但我没有找到明确的操作说明或代码示例。
我显示 Entypo 符号的代码是这样的:
myLabel.text = [NSString stringWithUTF8String:"\u25B6"];
myLabel.font = [UIFont fontWithName:@"Entypo" size:200];
如果我将 unicode 值替换为 Entypo 字体中的图标叶“\u1F342”,则会显示无效字符。
如果您已经遇到过这个问题,也许您可以帮我节省时间。
非常感谢
【问题讨论】:
【参考方案1】:如果您查看unicode page for that character,您会看到它的UTF-8 编码是0xF0 0x9F 0x8D 0x82
- 这就是您应该使用的:
myLabel.text = [NSString stringWithUTF8String:"\uf0\u9f\u8d\u82"];
注意:完全未经测试。
【讨论】:
感谢您的帮助。我终于找到了另一种避免在另一个网站上搜索 UTF-8 编码的方法。【参考方案2】:经过多次搜索,我终于找到了一种在不同情况下都易于使用的解决方案:符号编码最多 4 位和 4 位以上。
我定义了一个NSString类如下:
#import "NSString+Extension.h"
@implementation NSString (Extension)
/**
* Convert a UTF8 symbol to a string which can directly be used as text in a label view for instance, for which the right font has been specified.
*
* The method can be used for both cases
* . the symbol is defined as a const char with a maximum of 4 digits. In this case the first parameter must be 0 and the second is used. Example: NSString *symbolString = [NSString symbolStringfromUnicode:0 orChar:"\uE766"]
* . the symbol is defined as an integer with hexadecimal notation. It can be have either less or more than 4 digits. In this case, only the first parameter is used. Example : NSString *prefixSymbol = [NSString symbolStringfromUnicode:0x1F464 orChar:nil];
*
* @param symbolUnicode symbol to convert defined as int
* @param symbolChar symbol to convert defined as const char *
*
*/
+ (NSString *)symbolStringfromUnicode:(int)symbolUnicode orChar:(const char *)symbolChar
NSString *symbolString;
if (symbolUnicode == 0)
symbolString = [NSString stringWithUTF8String:symbolChar];
else
int unicode = symbolUnicode;
symbolString = [[NSString alloc] initWithBytes:&unicode length:sizeof(unicode) encoding:NSUTF32LittleEndianStringEncoding];
return symbolString;
@end
【讨论】:
以上是关于显示来自 Entypo 字体的 5 位基本 unicode 字符的主要内容,如果未能解决你的问题,请参考以下文章