显示来自 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 字符的主要内容,如果未能解决你的问题,请参考以下文章

08.uni-app自定义扩展图标

uni-app 引入字体

css entypo.css

逐浪字体大师的UNI转码之Excel将十六进制转换成十进制的方法

uni.showModal里的盒子,和字体大小怎么改?

uni-app引入字体图标