1

我将Symbola 字体添加到我的手表应用程序中,并尝试在 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);
}
4

2 回答 2

1

文件说的论点text_layer_set_text

要设置到 TextLayer 上的新文本。这必须是一个以 null 结尾且有效的 UTF-8 字符串!

(注意感叹号)。“Unicode”不是有效的 C 字符串编码,但“UTF-8”是。将图标的 Unicode 值插入为 UTF-8 字符应该可以。

编辑

等等——您已经将字符 U+1F601 编码为 UTF-8。根据http://users.teilar.gr/~g1951d/Symbola.pdf ,它您字体中的有效字符。

于 2013-12-29T21:24:37.980 回答
1

您是否在字体资源清单中指定了 characterRegex 中的那些表情符号字符?

我还看到 fontgen.py 有一个补丁可以在此处包含 unicode 这可能会对您有所帮助。

https://github.com/fisakov/pebble-sdk-characterRegex

于 2014-03-19T09:39:38.890 回答