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?—MHBOn 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