代码之家  ›  专栏  ›  技术社区  ›  user2233706

开罗在错误的方向上呈现阿拉伯语文本

  •  0
  • user2233706  · 技术社区  · 4 年前

    开罗将阿拉伯语文本从左向右呈现,而不是从右向左。此外,字符之间没有联系。这是我的代码:

    #include <cairo.h>
    
    int main (int argc, char *argv[])
    {
      cairo_t *c;
      cairo_surface_t *cs;
      cairo_font_face_t * ct;
    
      cs = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 500, 500);
      c = cairo_create (cs);
    
      cairo_select_font_face(c, "Arial",
          CAIRO_FONT_SLANT_NORMAL,
          CAIRO_FONT_WEIGHT_BOLD);
    
      cairo_set_font_size (c, 40);
    
      cairo_set_source_rgb (c, 255, 255, 255);
      cairo_move_to (c, 100, 100);
      cairo_show_text(c, "كيف الحال");
    
      cairo_surface_write_to_png (cs, "cairo.png");
    
      return 0;
    }
    

    下面是它的样子:

    enter image description here

    第一个字母“”显示为左侧的第一个字符,而它应该在右侧也应连接到“”。所有字符都单独显示,就像英语一样。

    1 回复  |  直到 4 年前
        1
  •  2
  •   user2233706    4 年前

    看起来是这样的 not possible with Cairo :

    名称中包含文本的函数形成cairo的玩具文本API。这个 玩具API采用UTF-8编码文本,其功能受到限制 呈现简单的从左到右的文本,没有高级功能。那个 例如,最复杂的文字,如希伯来语、阿拉伯语和 印度文字是毫无疑问的。