(run_stages): Call positioning only if
authorhanda <handa>
Thu, 6 Sep 2007 04:04:09 +0000 (04:04 +0000)
committerhanda <handa>
Thu, 6 Sep 2007 04:04:09 +0000 (04:04 +0000)
font->get_metric is non-NULL.
(CHECK_FLT_STAGES): Fix typo.
(mflt_get): New function.

src/m17n-flt.c

index f128e43..b6425ee 100644 (file)
@@ -1901,7 +1901,8 @@ run_stages (MFLTGlyphString *gstring, int from, int to,
              }
          }
 
-      positioning (ctx->font, ctx->out, 0, ctx->out->used);
+      if (ctx->font->get_metric)
+       positioning (ctx->font, ctx->out, 0, ctx->out->used);
 
       /* Handle combining.  */
       if (ctx->check_mask & CombiningCodeMask)
@@ -1986,7 +1987,7 @@ run_stages (MFLTGlyphString *gstring, int from, int to,
   return to;
 }
 
-#define CHECK_FLT_STAGES(flt) ((flt)->stages || load_flt (flt) < 0)
+#define CHECK_FLT_STAGES(flt) ((flt)->stages || load_flt (flt) == 0)
 
 \f
 /* Internal API */
@@ -2078,6 +2079,21 @@ m17n_fini_flt (void)
 #endif /* !FOR_DOXYGEN || DOXYGEN_INTERNAL_MODULE */
 
 MFLT *
+mflt_get (char *name)
+{
+  MSymbol sym = msymbol (name);
+  MFLT *flt;
+
+  if (! flt_list
+      && list_flt () < 0)
+    return NULL;
+  flt = mplist_get (flt_list, sym);
+  if (flt && ! CHECK_FLT_STAGES (flt))
+    return NULL;
+  return flt;
+}
+
+MFLT *
 mflt_find (MFLTGlyphString *gstring, int pos, MFLTFont *font)
 {
   MPlist *plist;