(ftfont_shape_by_flt): Use "combining" FLT for ASCII characters.
authorKenichi Handa <handa@m17n.org>
Tue, 9 Sep 2008 02:29:02 +0000 (02:29 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 9 Sep 2008 02:29:02 +0000 (02:29 +0000)
src/ChangeLog
src/ftfont.c

index 2121961..a4fbe0d 100644 (file)
@@ -1,5 +1,8 @@
 2008-09-09  Kenichi Handa  <handa@m17n.org>
 
+       * ftfont.c (ftfont_shape_by_flt): Use "combining" FLT for ASCII
+       characters.
+
        * composite.c (FORWARD_CHAR): Fix calculation
        of (POSITION).pos_byte.
 
index a6637fe..d6fabf8 100644 (file)
@@ -1813,6 +1813,7 @@ ftfont_shape_by_flt (lgstring, font, ft_face, otf)
   EMACS_UINT len = LGSTRING_GLYPH_LEN (lgstring);
   EMACS_UINT i;
   struct MFLTFontFT flt_font_ft;
+  MFLT *flt = NULL;
 
   if (! m17n_flt_initialized)
     {
@@ -1861,9 +1862,14 @@ ftfont_shape_by_flt (lgstring, font, ft_face, otf)
   flt_font_ft.font = font;
   flt_font_ft.ft_face = ft_face;
   flt_font_ft.otf = otf;
+  if (ASCII_CHAR_P (gstring.glyphs[0].c))
+    /* A little bit ad hoc.  Perhaps, shaper must get script and
+       language information, and select a proper flt for them
+       here.  */
+    flt = mflt_get (msymbol ("combining"));
   for (i = 0; i < 3; i++)
     {
-      int result = mflt_run (&gstring, 0, len, &flt_font_ft.flt_font, NULL);
+      int result = mflt_run (&gstring, 0, len, &flt_font_ft.flt_font, flt);
       if (result != -2)
        break;
       gstring.allocated += gstring.allocated;