Dear Hans & Wolfgang,

I resolved some of the minor issues.  But the main question still stands.  Is it possible to add an OTF feature to the math font?  In the very simple case, I want to change any sequence like "1.2" to "1/2".  My feature (see below) works for text fonts but not in math mode.

Thanks,
MHB

On Tue, Aug 2, 2016 at 3:54 PM, Mohammad Hossein Bateni <bateni@gmail.com> wrote:
Could the problem be because math fonts use mode=base instead of mode=node?  Or is it because in math fonts, the digits and/or full-stop have different codes?
—MHB

On Mon, Aug 1, 2016 at 9:46 AM, Mohammad Hossein Bateni <bateni@gmail.com> wrote:
Dear list,

I want to add a customized font feature to the math font, to automatically change the decimal point (unicode 0x2E) to the Arabic/Farsi version (unicode 0x66B).  This will go well with the mapping from Latin digits to Farsi digits (done in a sample with mathdigits fallback).

For instance, I want to code in $123.45$ and get a result like ۱۲۳٫۴۵.  However, I do not want to simply map 0x2E to 0x66B, because then "full stop" outside a number will also change.  In particular, I'd like to have the mapping only when full-stop is preceded and succeeded by a digit.  This will, among other things, leave the end-of-equation periods unchanged.

Here is how I tried to achieve it.


\startluacode
digits = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 }
-- 0x66B instead of 0x2F gives an error!
replacements = { [0x002E] = { 0x2F } }
fonts.handlers.otf.addfeature {
  name = "mpf",
  type = "chainsubstitution",
  lookups = { {
    type = "multiple",
    data = replacements,
  } },
  data = {
    rules = {
      {
        current = { { 0x002E } },
        after   = { digits },
        before  = { digits },
        lookups = { 1 },
      }
    }
  }
}
\stopluacode

\definefontfeature[mathperiod][mpf=yes]

\resetfontfallback [mathdigits]
%\definefontfallback[mathdigits][dejavusansmono][digitsextendedarabicindic][check=yes,force=yes,offset=digitsnormal]                                                        
\definefontsynonym [MathRoman][name:modern][features={math\mathsizesuffix,mathperiod},goodies=lm-math,fallbacks=mathdigits]

\starttext
$123.45.$

123.45.

\addff{mathperiod}
123.45.
\stoptext