MSymbol Mlayouter;
 
+static MSymbol McatCf;
+
 static MPlist *flt_list;
 
 /* Command ID:
   Mcond = msymbol ("cond");
   Mrange = msymbol ("range");
   Mlayouter = msymbol ("layouter");
+  McatCf = msymbol ("Cf");
   flt_list = mplist ();
   return 0;
 }
       ctx.encoded[i] = (int) MGLYPH (gidx)->code;
       MGLYPH (gidx)->code = (unsigned) MGLYPH (gidx)->c;
     }
+  for (; MGLYPH (to)->type != GLYPH_ANCHOR; to++, i++)
+    {
+      MGlyph *g = MGLYPH (to);
+      unsigned code;
+
+      if (g->category != McatCf
+         && g->rface->rfont && g->rface->rfont->layouter != Mnil
+         && g->rface->rfont->layouter != layouter_name)
+       break;
+      code = mfont__encode_char (g->rface->rfont, g->c);
+      if (code == MCHAR_INVALID_CODE)
+       break;
+      g->code = g->c;
+      ctx.encoded[i] = (int) code;
+    }
+
   ctx.encoded[i++] = '\0';
 
   match_indices[0] = from;