diff -cr dia-0.83-3/app/render_eps.c dia-0.83-4/app/render_eps.c
*** dia-0.83-3/app/render_eps.c	Tue Jan 25 22:41:35 2000
--- dia-0.83-4/app/render_eps.c	Wed Jan 26 19:01:48 2000
***************
*** 84,89 ****
--- 84,95 ----
  			const char *text,
  			Point *pos, Alignment alignment,
  			Color *color);
+ static void draw_mbstring(RendererEPS *renderer,
+ 			  const char *text,
+ 			  Point *pos, Alignment alignment,
+ 			  Color *color,
+ 			  Font *font,
+ 			  real height);
  static void draw_image(RendererEPS *renderer,
  		       Point *point,
  		       real width, real height,
***************
*** 121,126 ****
--- 127,133 ----
    (FillBezierFunc) fill_bezier,
  
    (DrawStringFunc) draw_string,
+   (DrawMBStringFunc) draw_mbstring,
  
    (DrawImageFunc) draw_image,
  };
***************
*** 1038,1043 ****
--- 1045,1109 ----
    }
    
    fprintf(renderer->file, " gs 1 -1 sc sh gr\n");
+ }
+ 
+ static void
+ draw_mbstring(RendererEPS *renderer,
+ 	      const char *text,
+ 	      Point *pos, Alignment alignment,
+ 	      Color *color,
+ 	      Font *font,
+ 	      real height)
+ {
+   Point _pos;
+   int j;
+   int s;
+   real pos_x;
+   char *buff;
+  
+   _pos = *pos;
+   buff = (char *)g_malloc(sizeof(char) * strlen(text) + 1);
+   for(j=0, s=0; j<strlen(text);j++,s++) {
+     if(s==0) {
+       buff[s] = text[j];
+     } else if (text[j-1] < 0 && text[j] < 0) {
+       /* both are 16bits char */
+       buff[s] = text[j];
+     } else if (text[j-1] > 0 && text[j] > 0) {
+       /* for ASCII char */
+       buff[s] = text[j];
+     } else {
+       /* 'text->line[i][j]' is a boundary between single and double chars */
+       if (text[j-1] > 0) {
+  	/* printing ASCII chars */
+  	set_font(renderer, font, height);
+       } else {
+  	/* printging 16bits chars */
+  	set_mbfont(renderer, font, height);
+       }
+       buff[s] = '\0';
+       draw_string(renderer,
+  		  buff,
+  		  &_pos, alignment,
+  		  color);
+       s = 0;
+       buff[s] = text[j];
+       _pos.x += font_string_width(buff, font, height);
+     }
+     if (text[j-1] > 0) {
+       /* printing ASCII chars */
+       set_font(renderer, font, height);
+     } else {
+       /* printging 16bits chars */
+       set_mbfont(renderer, font, height);
+     }
+   }
+   buff[s] = '\0';
+   draw_string(renderer,
+  	      buff,
+  	      &_pos, alignment,
+  	      color);
+   g_free(buff);
  }
  
  static void
Only in dia-0.83-3/app: render_eps.c~
diff -cr dia-0.83-3/app/render_gdk.c dia-0.83-4/app/render_gdk.c
*** dia-0.83-3/app/render_gdk.c	Mon Jan 24 19:16:08 2000
--- dia-0.83-4/app/render_gdk.c	Wed Jan 26 19:04:03 2000
***************
*** 80,85 ****
--- 80,91 ----
  			const char *text,
  			Point *pos, Alignment alignment,
  			Color *color);
+ static void draw_mbstring(RendererGdk *renderer,
+ 			  const char *text,
+ 			  Point *pos, Alignment alignment,
+ 			  Color *color,
+ 			  Font *font,
+ 			  real height);
  static void draw_image(RendererGdk *renderer,
  		       Point *point,
  		       real width, real height,
***************
*** 137,142 ****
--- 143,149 ----
    (FillBezierFunc) fill_bezier,
  
    (DrawStringFunc) draw_string,
+   (DrawMBStringFunc) draw_mbstring,
  
    (DrawImageFunc) draw_image,
  };
***************
*** 928,933 ****
--- 935,951 ----
    gdk_draw_string(renderer->pixmap,
  		  renderer->gdk_font, gc,
  		  x,y, text);
+ }
+ 
+ static void
+ draw_mbstring(RendererGdk *renderer,
+ 	      const char *text,
+ 	      Point *pos, Alignment alignment,
+ 	      Color *color,
+ 	      Font *font,
+ 	      real height)
+ {
+   draw_string(renderer, text, pos, alignment, color);
  }
  
  static void
diff -cr dia-0.83-3/app/render_gnomeprint.c dia-0.83-4/app/render_gnomeprint.c
*** dia-0.83-3/app/render_gnomeprint.c	Mon Jan 24 19:16:08 2000
--- dia-0.83-4/app/render_gnomeprint.c	Wed Jan 26 19:05:17 2000
***************
*** 88,93 ****
--- 88,99 ----
  			const char *text,
  			Point *pos, Alignment alignment,
  			Color *color);
+ static void draw_mbstring(RendererGPrint *renderer,
+ 			  const char *text,
+ 			  Point *pos, Alignment alignment,
+ 			  Color *color,
+ 			  Font *font,
+ 			  real height);
  static void draw_image(RendererGPrint *renderer,
  		       Point *point,
  		       real width, real height,
***************
*** 125,130 ****
--- 131,137 ----
    (FillBezierFunc) fill_bezier,
  
    (DrawStringFunc) draw_string,
+   (DrawMBStringFunc) draw_mbstring,
  
    (DrawImageFunc) draw_image,
  };
***************
*** 681,686 ****
--- 688,704 ----
    gnome_print_scale(renderer->ctx, 1, -1);
    gnome_print_show(renderer->ctx, text);
    gnome_print_grestore(renderer->ctx);
+ }
+ 
+ static void
+ draw_mbstring(RendererGPrint *renderer,
+ 	      const char *text,
+ 	      Point *pos, Alignment alignment,
+ 	      Color *color,
+ 	      Font *font,
+ 	      real height)
+ {
+   draw_string(renderer, text, pos, alignment, color);
  }
  
  static void
diff -cr dia-0.83-3/app/render_svg.c dia-0.83-4/app/render_svg.c
*** dia-0.83-3/app/render_svg.c	Mon Jan 24 19:16:09 2000
--- dia-0.83-4/app/render_svg.c	Wed Jan 26 19:07:10 2000
***************
*** 89,94 ****
--- 89,100 ----
  			const char *text,
  			Point *pos, Alignment alignment,
  			Color *colour);
+ static void draw_mbstring(RendererSVG *renderer,
+ 			  const char *text,
+ 			  Point *pos, Alignment alignment,
+ 			  Color *colour,
+ 			  Font *font,
+ 			  real height);
  static void draw_image(RendererSVG *renderer,
  		       Point *point,
  		       real width, real height,
***************
*** 126,131 ****
--- 132,138 ----
    (FillBezierFunc) fill_bezier,
  
    (DrawStringFunc) draw_string,
+   (DrawMBStringFunc) draw_mbstring,
  
    (DrawImageFunc) draw_image,
  };
***************
*** 751,756 ****
--- 758,774 ----
    xmlSetProp(node, "x", buf);
    g_snprintf(buf, sizeof(buf), "%g", pos->y);
    xmlSetProp(node, "y", buf);
+ }
+ 
+ static void
+ draw_mbstring(RendererSVG *renderer,
+ 	      const char *text,
+ 	      Point *pos, Alignment alignment,
+ 	      Color *colour,
+ 	      Font *fonr,
+ 	      real height)
+ {
+   draw_string(renderer, text, pos, alignment, colour);
  }
  
  static void
diff -cr dia-0.83-3/lib/font.c dia-0.83-4/lib/font.c
*** dia-0.83-3/lib/font.c	Tue Jan 25 22:05:20 2000
--- dia-0.83-4/lib/font.c	Wed Jan 26 20:01:33 2000
***************
*** 81,112 ****
  FontData font_data[] = {
    { "��ī",
      { "Times-Roman", "Ryumin-Light" },
!     { "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Times-Roman",
      { "Times-Roman", "Ryumin-Light" },
!     { "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    }, 
    { "Times-Italic",
      { "Times-Italic", "Ryumin-Light" },
!     { "-adobe-times-medium-i-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-i-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-times-medium-i-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-i-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    }, 
    { "Times-Bold",
      { "Times-Bold", "GothicBBB-Medium" },
!     { "-adobe-times-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-times-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    }, 
    { "Times-BoldItalic",
      { "Times-BoldItalic", "GothicBBB-Medium" },
!     { "-adobe-times-bold-i-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-i-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-times-bold-i-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-i-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    }, 
    { "AvantGarde-Book",
--- 81,112 ----
  FontData font_data[] = {
    { "��ī",
      { "Times-Roman", "Ryumin-Light" },
!     { "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Times-Roman",
      { "Times-Roman", "Ryumin-Light" },
!     { "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    }, 
    { "Times-Italic",
      { "Times-Italic", "Ryumin-Light" },
!     { "-adobe-times-medium-i-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-i-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-times-medium-i-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-i-normal-*-%d-*-*-*-*-*-*-*"
      }
    }, 
    { "Times-Bold",
      { "Times-Bold", "GothicBBB-Medium" },
!     { "-adobe-times-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-times-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    }, 
    { "Times-BoldItalic",
      { "Times-BoldItalic", "GothicBBB-Medium" },
!     { "-adobe-times-bold-i-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-i-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-times-bold-i-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-i-normal-*-%d-*-*-*-*-*-*-*"
      }
    }, 
    { "AvantGarde-Book",
***************
*** 159,232 ****
    },
    { "Courier",
      { "Courier", "Ryumin-Light" },
!     { "-adobe-courier-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-courier-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Courier-Oblique",
      { "Courier-Oblique", "Ryumin-Light" },
!     { "-adobe-courier-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-courier-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Courier-Bold",
      { "Courier-Bold", "GothicBBB-Medium" },
!     { "-adobe-courier-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-courier-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Courier-BoldOblique",
      { "Courier-BoldOblique", "GothicBBB-Medium" },
!     { "-adobe-courier-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-courier-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica",
      { "Helvetica", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-Oblique",
      { "Helvetica-Oblique", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-Bold",
      { "Helvetica-Bold", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-BoldOblique",
      { "Helvetica-BoldOblique", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-Narrow",
      { "Helvetica-Narrow", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-Narrow-Oblique",
      { "Helvetica-Narrow-Oblique", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-Narrow-Bold",
      { "Helvetica-Narrow-Bold", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "Helvetica-Narrow-BoldOblique",
      { "Helvetica-Narrow-BoldOblique", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0",
!       "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-jisx0208.1983-0"
      }
    },
    { "NewCenturySchoolbook-Roman",
--- 159,232 ----
    },
    { "Courier",
      { "Courier", "Ryumin-Light" },
!     { "-adobe-courier-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-courier-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Courier-Oblique",
      { "Courier-Oblique", "Ryumin-Light" },
!     { "-adobe-courier-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-courier-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Courier-Bold",
      { "Courier-Bold", "GothicBBB-Medium" },
!     { "-adobe-courier-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-courier-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Courier-BoldOblique",
      { "Courier-BoldOblique", "GothicBBB-Medium" },
!     { "-adobe-courier-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-courier-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica",
      { "Helvetica", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-Oblique",
      { "Helvetica-Oblique", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-Bold",
      { "Helvetica-Bold", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-BoldOblique",
      { "Helvetica-BoldOblique", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-Narrow",
      { "Helvetica-Narrow", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-Narrow-Oblique",
      { "Helvetica-Narrow-Oblique", "Ryumin-Light" },
!     { "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-medium-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-medium-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-Narrow-Bold",
      { "Helvetica-Narrow-Bold", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "Helvetica-Narrow-BoldOblique",
      { "Helvetica-Narrow-BoldOblique", "GothicBBB-Medium" },
!     { "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-bold-r-normal-*-%d-*-*-*-*-*-*-*",
!       "-adobe-helvetica-bold-o-normal-*-%d-*-*-*-*-*-*-*,-*-fixed-bold-r-normal-*-%d-*-*-*-*-*-*-*"
      }
    },
    { "NewCenturySchoolbook-Roman",
diff -cr dia-0.83-3/lib/render.h dia-0.83-4/lib/render.h
*** dia-0.83-3/lib/render.h	Mon Jan 24 19:16:09 2000
--- dia-0.83-4/lib/render.h	Wed Jan 26 18:59:25 2000
***************
*** 183,188 ****
--- 183,197 ----
  				Alignment alignment,
  				Color *color);
  
+ /* Print a MULTIBYTE string at pos, using the current font */
+ typedef void (*DrawMBStringFunc) (Renderer *renderer,
+ 				  const char *text,
+ 				  Point *pos,
+ 				  Alignment alignment,
+ 				  Color *color,
+ 				  Font *font,
+ 				  real height);
+ 
  /* Draw an image, given its bounding box */
  typedef void (*DrawImageFunc) (Renderer *renderer,
  			       Point *point,
***************
*** 281,286 ****
--- 290,296 ----
    
    /* Text: */
    DrawStringFunc    draw_string;
+   DrawMBStringFunc    draw_mbstring;
  
    /* Images: */
    DrawImageFunc     draw_image; /* Not really supported yet */
diff -cr dia-0.83-3/lib/text.c dia-0.83-4/lib/text.c
*** dia-0.83-3/lib/text.c	Tue Jan 25 22:23:38 2000
--- dia-0.83-4/lib/text.c	Wed Jan 26 19:31:36 2000
***************
*** 379,440 ****
  text_draw(Text *text, Renderer *renderer)
  {
    Point pos;
!   int i, j;
!   int s;
!   char *buff;
    
    pos = text->position;
  
    /* modified only this loop */
    for (i=0;i<text->numlines;i++) {
!     pos.x = text->position.x;
!     buff = (char *)g_malloc(sizeof(char) * strlen(text->line[i]) + 1);
!     for(j=0, s=0; j<strlen(text->line[i]);j++,s++) {
!       if(s==0) {
! 	buff[s] = text->line[i][j];
!       } else if (text->line[i][j-1] < 0 && text->line[i][j] < 0) {
! 	/* both are 16bits char */
! 	buff[s] = text->line[i][j];
!       } else if (text->line[i][j-1] > 0 && text->line[i][j] > 0) {
! 	/* for ASCII char */
! 	buff[s] = text->line[i][j];
!       } else {
! 	/* 'text->line[i][j]' is a boundary between single and double chars */
! 	if (text->line[i][j-1] > 0) {
! 	  /* printing ASCII chars */
! 	  renderer->ops->set_font(renderer, text->font, text->height);
! 	} else {
! 	  /* printging 16bits chars */
! 	  renderer->ops->set_mbfont(renderer, text->font, text->height);
! 	}
! 	buff[s] = '\0';
! 	renderer->ops->draw_string(renderer,
! 				   buff, /* text->line[i], */
! 				   &pos, text->alignment,
! 				   &text->color);
! 
! 	s = 0;
! 	buff[s] = text->line[i][j];
! 	pos.x += font_string_width(buff, text->font, text->height);
!       }
!     }
!     if (text->line[i][j-1] > 0) {
!       /* printing ASCII chars */
!       renderer->ops->set_font(renderer, text->font, text->height);
!     } else {
!       /* printging 16bits chars */
!       renderer->ops->set_mbfont(renderer, text->font, text->height);
!     }
!     buff[s] = '\0';
!     renderer->ops->draw_string(renderer,
! 			       buff, /* text->line[i], */
! 			       &pos, text->alignment,
! 			       &text->color);
!     s = 0;
!     buff[s] = text->line[i][j];
!     pos.x += font_string_width(buff, text->font, text->height);
!     pos.y += text->height;
!     g_free(buff);
    }
  
    if ((renderer->is_interactive) && (text->focus.has_focus)) {
--- 379,397 ----
  text_draw(Text *text, Renderer *renderer)
  {
    Point pos;
!   int i;
    
    pos = text->position;
  
    /* modified only this loop */
    for (i=0;i<text->numlines;i++) {
!      renderer->ops->draw_mbstring(renderer,
!  				 text->line[i],
!  				 &pos, text->alignment,
!  				 &text->color,
!  				 text->font,
!  				 text->height);
!       pos.y += text->height;
    }
  
    if ((renderer->is_interactive) && (text->focus.has_focus)) {
diff -cr dia-0.83-3/objects/UML/association.c dia-0.83-4/objects/UML/association.c
*** dia-0.83-3/objects/UML/association.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/association.c	Wed Jan 26 19:10:52 2000
***************
*** 279,291 ****
    }
  
    /* Name: */
!   renderer->ops->set_font(renderer, assoc_font, ASSOCIATION_FONTHEIGHT);
   
    if (assoc->name != NULL) {
      pos = assoc->text_pos;
!     renderer->ops->draw_string(renderer, assoc->name,
! 			       &pos, assoc->text_align,
! 			       &color_black);
    }
  
    /* Direction: */
--- 279,292 ----
    }
  
    /* Name: */
!   /*renderer->ops->set_font(renderer, assoc_font, ASSOCIATION_FONTHEIGHT);*/
   
    if (assoc->name != NULL) {
      pos = assoc->text_pos;
!     renderer->ops->draw_mbstring(renderer, assoc->name,
! 				 &pos, assoc->text_align,
! 				 &color_black,
! 				 assoc_font, ASSOCIATION_FONTHEIGHT);
    }
  
    /* Direction: */
***************
*** 324,338 ****
      pos = end->text_pos;
  
      if (end->role != NULL) {
!       renderer->ops->draw_string(renderer, end->role,
! 				 &pos, end->text_align,
! 				 &color_black);
        pos.y += ASSOCIATION_FONTHEIGHT;
      }
      if (end->multiplicity != NULL) {
!       renderer->ops->draw_string(renderer, end->multiplicity,
! 				 &pos, end->text_align,
! 				 &color_black);
      }
    }
  }
--- 325,341 ----
      pos = end->text_pos;
  
      if (end->role != NULL) {
!       renderer->ops->draw_mbstring(renderer, end->role,
! 				   &pos, end->text_align,
! 				   &color_black,
! 				   assoc_font, ASSOCIATION_FONTHEIGHT);
        pos.y += ASSOCIATION_FONTHEIGHT;
      }
      if (end->multiplicity != NULL) {
!       renderer->ops->draw_mbstring(renderer, end->multiplicity,
! 				   &pos, end->text_align,
! 				   &color_black,
! 				   assoc_font, ASSOCIATION_FONTHEIGHT);
      }
    }
  }
diff -cr dia-0.83-3/objects/UML/class.c dia-0.83-4/objects/UML/class.c
*** dia-0.83-3/objects/UML/class.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/class.c	Wed Jan 26 19:13:11 2000
***************
*** 154,164 ****
  
    if (umlclass->stereotype != NULL) {
      p.y += 0.1 + umlclass->font_ascent;
!     renderer->ops->set_font(renderer, font, umlclass->font_height);
!     renderer->ops->draw_string(renderer,
! 			       umlclass->stereotype_string,
! 			       &p, ALIGN_CENTER, 
! 			       &color_black);
    }
  
    /* name: */
--- 154,165 ----
  
    if (umlclass->stereotype != NULL) {
      p.y += 0.1 + umlclass->font_ascent;
!     /*renderer->ops->set_font(renderer, font, umlclass->font_height);*/
!     renderer->ops->draw_mbstring(renderer,
! 				 umlclass->stereotype_string,
! 				 &p, ALIGN_CENTER, 
! 				 &color_black,
! 				 font, umlclass->font_height);
    }
  
    /* name: */
***************
*** 169,179 ****
  
    p.y += umlclass->classname_font_height;
  
!   renderer->ops->set_font(renderer, font, umlclass->classname_font_height);
!   renderer->ops->draw_string(renderer,
! 			     umlclass->name,
! 			     &p, ALIGN_CENTER, 
! 			     &color_black);
    
    if (umlclass->visible_attributes) {
      p1.x = x;
--- 170,181 ----
  
    p.y += umlclass->classname_font_height;
  
!   /*renderer->ops->set_font(renderer, font, umlclass->classname_font_height);*/
!   renderer->ops->draw_mbstring(renderer,
! 			       umlclass->name,
! 			       &p, ALIGN_CENTER, 
! 			       &color_black,
! 			       font, umlclass->classname_font_height);
    
    if (umlclass->visible_attributes) {
      p1.x = x;
***************
*** 201,211 ****
  	else
  	  font = umlclass->normal_font;
  
! 	renderer->ops->set_font(renderer, font, umlclass->font_height);
! 	renderer->ops->draw_string(renderer,
! 				   umlclass->attributes_strings[i],
! 				   &p, ALIGN_LEFT, 
! 				   &color_black);
  	if (attr->class_scope) {
  	  p1 = p; 
  	  p1.y += umlclass->font_height*0.1;
--- 203,214 ----
  	else
  	  font = umlclass->normal_font;
  
! 	/*renderer->ops->set_font(renderer, font, umlclass->font_height);*/
! 	renderer->ops->draw_mbstring(renderer,
! 				     umlclass->attributes_strings[i],
! 				     &p, ALIGN_LEFT, 
! 				     &color_black,
! 				     font, umlclass->font_height);
  	if (attr->class_scope) {
  	  p1 = p; 
  	  p1.y += umlclass->font_height*0.1;
***************
*** 251,261 ****
  	else
  	  font = umlclass->normal_font;
  
! 	renderer->ops->set_font(renderer, font, umlclass->font_height);
! 	renderer->ops->draw_string(renderer,
! 				   umlclass->operations_strings[i],
! 				   &p, ALIGN_LEFT, 
! 				   &color_black);
  
  	if (op->class_scope) {
  	  p1 = p; 
--- 254,265 ----
  	else
  	  font = umlclass->normal_font;
  
! 	/*renderer->ops->set_font(renderer, font, umlclass->font_height);*/
! 	renderer->ops->draw_mbstring(renderer,
! 				     umlclass->operations_strings[i],
! 				     &p, ALIGN_LEFT, 
! 				     &color_black,
! 				     font, umlclass->font_height);
  
  	if (op->class_scope) {
  	  p1 = p; 
***************
*** 299,315 ****
      p.x = x + 0.3;
      p.y = y + 0.1 + font_ascent(umlclass->normal_font, umlclass->font_height);
  
!     renderer->ops->set_font(renderer, umlclass->normal_font,
! 			    umlclass->font_height);
      i = 0;
      list = umlclass->formal_params;
      while (list != NULL) {
        /*UMLFormalParameter *param = (UMLFormalParameter *)list->data;*/
  
!       renderer->ops->draw_string(renderer,
! 				 umlclass->templates_strings[i],
! 				 &p, ALIGN_LEFT, 
! 				 &color_black);
        
        p.y += umlclass->font_height;
  
--- 303,321 ----
      p.x = x + 0.3;
      p.y = y + 0.1 + font_ascent(umlclass->normal_font, umlclass->font_height);
  
!     /*renderer->ops->set_font(renderer, umlclass->normal_font,
!       umlclass->font_height);*/
      i = 0;
      list = umlclass->formal_params;
      while (list != NULL) {
        /*UMLFormalParameter *param = (UMLFormalParameter *)list->data;*/
  
!       renderer->ops->draw_mbstring(renderer,
! 				   umlclass->templates_strings[i],
! 				   &p, ALIGN_LEFT, 
! 				   &color_black,
! 				   umlclass->normal_font,
! 				   umlclass->font_height);
        
        p.y += umlclass->font_height;
  
diff -cr dia-0.83-3/objects/UML/constraint.c dia-0.83-4/objects/UML/constraint.c
*** dia-0.83-3/objects/UML/constraint.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/constraint.c	Wed Jan 26 19:13:51 2000
***************
*** 215,226 ****
  	     CONSTRAINT_ARROWLEN, CONSTRAINT_ARROWWIDTH, CONSTRAINT_WIDTH,
  	     &color_black, &color_white);
  
!   renderer->ops->set_font(renderer, constraint_font,
! 			  CONSTRAINT_FONTHEIGHT);
!   renderer->ops->draw_string(renderer,
! 			     constraint->text,
! 			     &constraint->text_pos, ALIGN_LEFT,
! 			     &color_black);
  }
  
  static Object *
--- 215,228 ----
  	     CONSTRAINT_ARROWLEN, CONSTRAINT_ARROWWIDTH, CONSTRAINT_WIDTH,
  	     &color_black, &color_white);
  
!   /*renderer->ops->set_font(renderer, constraint_font,
!     CONSTRAINT_FONTHEIGHT);*/
!   renderer->ops->draw_mbstring(renderer,
! 			       constraint->text,
! 			       &constraint->text_pos, ALIGN_LEFT,
! 			       &color_black,
! 			       constraint_font,
! 			       CONSTRAINT_FONTHEIGHT);
  }
  
  static Object *
diff -cr dia-0.83-3/objects/UML/dependency.c dia-0.83-4/objects/UML/dependency.c
*** dia-0.83-3/objects/UML/dependency.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/dependency.c	Wed Jan 26 19:14:43 2000
***************
*** 191,213 ****
  	       DEPENDENCY_ARROWLEN, DEPENDENCY_ARROWWIDTH, DEPENDENCY_WIDTH,
  	       &color_black, &color_white);
  
!   renderer->ops->set_font(renderer, dep_font, DEPENDENCY_FONTHEIGHT);
    pos = dep->text_pos;
    
    if (dep->stereotype != NULL) {
!     renderer->ops->draw_string(renderer,
! 			       dep->stereotype,
! 			       &pos, dep->text_align,
! 			       &color_black);
  
      pos.y += DEPENDENCY_FONTHEIGHT;
    }
    
    if (dep->name != NULL) {
!     renderer->ops->draw_string(renderer,
! 			       dep->name,
! 			       &pos, dep->text_align,
! 			       &color_black);
    }
    
  }
--- 191,215 ----
  	       DEPENDENCY_ARROWLEN, DEPENDENCY_ARROWWIDTH, DEPENDENCY_WIDTH,
  	       &color_black, &color_white);
  
!   /*renderer->ops->set_font(renderer, dep_font, DEPENDENCY_FONTHEIGHT);*/
    pos = dep->text_pos;
    
    if (dep->stereotype != NULL) {
!     renderer->ops->draw_mbstring(renderer,
! 				 dep->stereotype,
! 				 &pos, dep->text_align,
! 				 &color_black,
! 				 dep_font, DEPENDENCY_FONTHEIGHT);
  
      pos.y += DEPENDENCY_FONTHEIGHT;
    }
    
    if (dep->name != NULL) {
!     renderer->ops->draw_mbstring(renderer,
! 				 dep->name,
! 				 &pos, dep->text_align,
! 				 &color_black,
! 				 dep_font, DEPENDENCY_FONTHEIGHT);
    }
    
  }
diff -cr dia-0.83-3/objects/UML/generalization.c dia-0.83-4/objects/UML/generalization.c
*** dia-0.83-3/objects/UML/generalization.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/generalization.c	Wed Jan 26 19:15:17 2000
***************
*** 183,205 ****
  	     GENERALIZATION_WIDTH,
  	     &color_black, &color_white);
  
!   renderer->ops->set_font(renderer, genlz_font, GENERALIZATION_FONTHEIGHT);
    pos = genlz->text_pos;
    
    if (genlz->stereotype != NULL) {
!     renderer->ops->draw_string(renderer,
! 			       genlz->stereotype,
! 			       &pos, genlz->text_align,
! 			       &color_black);
  
      pos.y += GENERALIZATION_FONTHEIGHT;
    }
    
    if (genlz->name != NULL) {
!     renderer->ops->draw_string(renderer,
! 			       genlz->name,
! 			       &pos, genlz->text_align,
! 			       &color_black);
    }
    
  }
--- 183,207 ----
  	     GENERALIZATION_WIDTH,
  	     &color_black, &color_white);
  
!   /*renderer->ops->set_font(renderer, genlz_font, GENERALIZATION_FONTHEIGHT);*/
    pos = genlz->text_pos;
    
    if (genlz->stereotype != NULL) {
!     renderer->ops->draw_mbstring(renderer,
! 				 genlz->stereotype,
! 				 &pos, genlz->text_align,
! 				 &color_black,
! 				 genlz_font, GENERALIZATION_FONTHEIGHT);
  
      pos.y += GENERALIZATION_FONTHEIGHT;
    }
    
    if (genlz->name != NULL) {
!     renderer->ops->draw_mbstring(renderer,
! 				 genlz->name,
! 				 &pos, genlz->text_align,
! 				 &color_black,
! 				 genlz_font, GENERALIZATION_FONTHEIGHT);
    }
    
  }
diff -cr dia-0.83-3/objects/UML/implements.c dia-0.83-4/objects/UML/implements.c
*** dia-0.83-3/objects/UML/implements.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/implements.c	Wed Jan 26 19:15:46 2000
***************
*** 230,240 ****
  			      &color_black);
  
  
!   renderer->ops->set_font(renderer, implements_font, IMPLEMENTS_FONTHEIGHT);
!   renderer->ops->draw_string(renderer,
! 			     implements->text,
! 			     &implements->text_pos, ALIGN_LEFT,
! 			     &color_black);
  }
  
  static Object *
--- 230,241 ----
  			      &color_black);
  
  
!   /*renderer->ops->set_font(renderer, implements_font, IMPLEMENTS_FONTHEIGHT);*/
!   renderer->ops->draw_mbstring(renderer,
! 			       implements->text,
! 			       &implements->text_pos, ALIGN_LEFT,
! 			       &color_black,
! 			       implements_font, IMPLEMENTS_FONTHEIGHT);
  }
  
  static Object *
diff -cr dia-0.83-3/objects/UML/large_package.c dia-0.83-4/objects/UML/large_package.c
*** dia-0.83-3/objects/UML/large_package.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/large_package.c	Wed Jan 26 19:16:23 2000
***************
*** 205,223 ****
  			   &color_black);
  
  
!   renderer->ops->set_font(renderer, pkg->font, LARGEPACKAGE_FONTHEIGHT);
  
    p1.x = x + 0.1;
    p1.y = y - LARGEPACKAGE_FONTHEIGHT - font_descent(pkg->font, LARGEPACKAGE_FONTHEIGHT) - 0.1;
  
    if (pkg->stereotype) {
!     renderer->ops->draw_string(renderer, pkg->stereotype, &p1,
! 			       ALIGN_LEFT, &color_black);
    }
    p1.y += LARGEPACKAGE_FONTHEIGHT;
  
!   renderer->ops->draw_string(renderer, pkg->name, &p1,
! 			     ALIGN_LEFT, &color_black);
  
  
  }
--- 205,225 ----
  			   &color_black);
  
  
!   /*renderer->ops->set_font(renderer, pkg->font, LARGEPACKAGE_FONTHEIGHT);*/
  
    p1.x = x + 0.1;
    p1.y = y - LARGEPACKAGE_FONTHEIGHT - font_descent(pkg->font, LARGEPACKAGE_FONTHEIGHT) - 0.1;
  
    if (pkg->stereotype) {
!     renderer->ops->draw_mbstring(renderer, pkg->stereotype, &p1,
! 				 ALIGN_LEFT, &color_black,
! 				 pkg->font, LARGEPACKAGE_FONTHEIGHT);
    }
    p1.y += LARGEPACKAGE_FONTHEIGHT;
  
!   renderer->ops->draw_mbstring(renderer, pkg->name, &p1,
! 			       ALIGN_LEFT, &color_black,
! 			       pkg->font, LARGEPACKAGE_FONTHEIGHT);
  
  
  }
diff -cr dia-0.83-3/objects/UML/message.c dia-0.83-4/objects/UML/message.c
*** dia-0.83-3/objects/UML/message.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/message.c	Wed Jan 26 19:50:02 2000
***************
*** 277,284 ****
  	     MESSAGE_ARROWLEN, MESSAGE_ARROWWIDTH, MESSAGE_WIDTH,
  	     &color_black, &color_white);
  
!   renderer->ops->set_font(renderer, message_font,
! 			  MESSAGE_FONTHEIGHT);
  
    if (message->type==MESSAGE_CREATE) 
        mname = MESSAGE_CREATE_LABEL;
--- 277,284 ----
  	     MESSAGE_ARROWLEN, MESSAGE_ARROWWIDTH, MESSAGE_WIDTH,
  	     &color_black, &color_white);
  
!   /*renderer->ops->set_font(renderer, message_font,
!     MESSAGE_FONTHEIGHT);*/
  
    if (message->type==MESSAGE_CREATE) 
        mname = MESSAGE_CREATE_LABEL;
***************
*** 288,297 ****
        mname = message->text;
  
    if (mname) 
!       renderer->ops->draw_string(renderer,
  				 mname, /*message->text,*/
  				 &message->text_pos, ALIGN_CENTER,
! 				 &color_black);
  }
  
  static Object *
--- 288,299 ----
        mname = message->text;
  
    if (mname) 
!       renderer->ops->draw_mbstring(renderer,
  				 mname, /*message->text,*/
  				 &message->text_pos, ALIGN_CENTER,
! 				 &color_black,
! 				 message_font,
! 				 MESSAGE_FONTHEIGHT);
  }
  
  static Object *
diff -cr dia-0.83-3/objects/UML/object.c dia-0.83-4/objects/UML/object.c
*** dia-0.83-3/objects/UML/object.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/object.c	Wed Jan 26 19:17:56 2000
***************
*** 239,255 ****
    text_draw(ob->text, renderer);
  
    if (ob->stereotype != NULL) {
!       renderer->ops->draw_string(renderer,
! 				 ob->stereotype,
! 				 &ob->st_pos, ALIGN_CENTER,
! 				 &color_black);
    }
  
    if (ob->exstate != NULL) {
!       renderer->ops->draw_string(renderer,
! 				 ob->exstate,
! 				 &ob->ex_pos, ALIGN_CENTER,
! 				 &color_black);
    }
  
    /* Is there a better way to underline? */
--- 239,259 ----
    text_draw(ob->text, renderer);
  
    if (ob->stereotype != NULL) {
!       renderer->ops->draw_mbstring(renderer,
! 				   ob->stereotype,
! 				   &ob->st_pos, ALIGN_CENTER,
! 				   &color_black,
! 				   ob->text->font,
! 				   ob->text->height);
    }
  
    if (ob->exstate != NULL) {
!       renderer->ops->draw_mbstring(renderer,
! 				   ob->exstate,
! 				   &ob->ex_pos, ALIGN_CENTER,
! 				   &color_black,
! 				   ob->text->font,
! 				   ob->text->height);
    }
  
    /* Is there a better way to underline? */
diff -cr dia-0.83-3/objects/UML/realizes.c dia-0.83-4/objects/UML/realizes.c
*** dia-0.83-3/objects/UML/realizes.c	Fri Nov 12 09:30:24 1999
--- dia-0.83-4/objects/UML/realizes.c	Wed Jan 26 19:18:33 2000
***************
*** 186,208 ****
  	     REALIZES_TRIANGLESIZE, REALIZES_TRIANGLESIZE, REALIZES_WIDTH,
  	     &color_black, &color_white);
  
!   renderer->ops->set_font(renderer, realize_font, REALIZES_FONTHEIGHT);
    pos = realize->text_pos;
    
    if (realize->stereotype != NULL) {
!     renderer->ops->draw_string(renderer,
! 			       realize->stereotype,
! 			       &pos, realize->text_align,
! 			       &color_black);
  
      pos.y += REALIZES_FONTHEIGHT;
    }
    
    if (realize->name != NULL) {
!     renderer->ops->draw_string(renderer,
! 			       realize->name,
! 			       &pos, realize->text_align,
! 			       &color_black);
    }
    
  }
--- 186,210 ----
  	     REALIZES_TRIANGLESIZE, REALIZES_TRIANGLESIZE, REALIZES_WIDTH,
  	     &color_black, &color_white);
  
!   /*renderer->ops->set_font(renderer, realize_font, REALIZES_FONTHEIGHT);*/
    pos = realize->text_pos;
    
    if (realize->stereotype != NULL) {
!     renderer->ops->draw_mbstring(renderer,
! 				 realize->stereotype,
! 				 &pos, realize->text_align,
! 				 &color_black,
! 				 realize_font, REALIZES_FONTHEIGHT);
  
      pos.y += REALIZES_FONTHEIGHT;
    }
    
    if (realize->name != NULL) {
!     renderer->ops->draw_mbstring(renderer,
! 				 realize->name,
! 				 &pos, realize->text_align,
! 				 &color_black,
! 				 realize_font, REALIZES_FONTHEIGHT);
    }
    
  }
