0

我想在我的屏幕上打印一些文本,我真的需要使用 hello_font(它必须打印在 omxplayer 视频上方,它现在正在工作)。我通过这个显示 RSS 提要,但绘制字符的功能不适用于特殊字符(UTF8)。

我是法国人,我们的字母表包含很多,所以我想知道这个问题是否有任何解决方案。

我在 /opt/vc/src/hello_pi/hello_font/main.c 中使用简单的 main.c

我认为问题出在这里:

/*****************************************************************************/
int32_t graphics_resource_render_text_ext( GRAPHICS_RESOURCE_HANDLE res,
                                           const int32_t x,
                                           const int32_t y,
                                           const uint32_t width,
                                           const uint32_t height,
                                           const uint32_t fg_colour,
                                           const uint32_t bg_colour,
                                           const char *text,
                                           const uint32_t text_length,
                                           const uint32_t text_size )
{

   /*
   * FIXME: Not at all optimal - re-renders each time.
   * FIXME: Not UTF-8 safe
   * FIXME: much better caching (or any caching)
   */
   VCOS_STATUS_T rc = gx_priv_render_text(
      &display, res, 
      x, res->height-y-text_size, width, height, fg_colour, bg_colour,
      text, text_length, text_size);

   return (rc == VCOS_SUCCESS) ? 0 : -1;
}

所有文件都在这里: https ://github.com/adafruit/rpi-firmware/blob/master/vc/sdk/opt/vc/src/hello_pi/libs/

gx_priv_render_text 函数在 font.c 文件中。

也许通过使用主体使用的字符 (é:à:ç:è) 创建自定义 TTF 字体。

感谢

4

1 回答 1

0

好的,所以我刚刚创建了一个自定义 TTF 字体,我在 [0:127] ascii 范围内更改了一些未使用的字符,例如 'é' 替换 '{' ,然后我制作了一个脚本,将每个 'é' 替换为 '{ ' 在我的 RSS 源中。

此解决方案仅适用于少数字符,因为我必须删除其他字符

于 2018-07-30T16:44:47.190 回答