我将Symbola font添加到我的手表应用程序中,并尝试在Pebble上显示一些表情符号,但唉,没有骰子。
这是我的代码中的相关变量和函数...温和,我有点像C n00b。
这甚至是为C字符串格式化unicode的正确方法吗?我将冒号添加为分隔符。
static char emoji_chars[]=":\xF0\x9F\x98\x81:\xF0\x9F\x98\x93:";
void handle_init(AppContextRef ctx) {
(void)ctx;
window_init(&window, "Window Name");
window_stack_push(&window, true /* Animated */);
text_layer_init(&emoji_layer, GRect(30, 30, 150, 50));
text_layer_set_background_color(&emoji_layer, GColorWhite);
text_layer_set_text_color(&emoji_layer, GColorBlack);
text_layer_set_font(&emoji_layer, fonts_load_custom_font(resource_get_handle(RESOURCE_ID_SYMBOLA_24)));
text_layer_set_text(&emoji_layer, emoji_chars);
layer_add_child(&window.layer, &emoji_layer.layer);
}
void pbl_main(void *params) {
resource_init_current_app(&APP_RESOURCES);
PebbleAppHandlers handlers = {
.init_handler = &handle_init
};
app_event_loop(params, &handlers);
}
答案 0 :(得分:1)
documentation对text_layer_set_text
要设置到TextLayer上的新文本。这必须是以null结尾且有效的UTF-8字符串!
(请注意感叹号)。 “Unicode”不是有效的C字符串编码,但“UTF-8”是。将图标的Unicode值作为UTF-8字符插入应该有效。
修改强>
等待 - 您已将字符U + 1F601编码为UTF-8。根据{{3}}, 是您字体中的有效字符。
答案 1 :(得分:1)
您是否在字体资源清单中指定了characterRegex中的那些表情符号字符?
我也看到有一个fontgen.py补丁在这里包含unicode这可能会对你有帮助。