[NTG-context] How to use fonts.handlers.otf.enhancers.patches?

Hans Hagen pragma at wxs.nl
Tue Feb 27 09:34:05 CET 2018


On 2/26/2018 11:54 PM, Henri Menke wrote:
> Dear list,
> 
> The EB Garamond font is lacking the ϵ glyph but it contains ε.  So naturally you
> want to remap ϵ to ε.  It cannot be done using font features because the the
> slot 0x03B5 (ϵ) is just missing, so substitution will not kick in.  I tried
> adapting the mechanism to add uppercase greek to Latin Modern Math from lm-
> math.lfg.  Unfortunately, my code is not working.  What am I doing wrong?
> 
> Cheers, Henri
> 
> ---
> 
> \startluacode
> local patches = fonts.handlers.otf.enhancers.patches
> 
> local function patch(data,filename)
>      local uni_to_ind = data.map.map
>      if not uni_to_ind[0x3F5] then
>          patches.report("add ε for ϵ")
>          uni_to_ind[0x3F5] = uni_to_ind[0x3B5]
>      end
> end
> 
> patches.register("after","missing glyphs","^ebgaramond*", patch)
> \stopluacode
> 
> \setupbodyfont[ebgaramond]
> 
> \starttext
> 
> ε % = 03B5
> ϵ % = 03F5
> 
> \stoptext
if you want to use the patch mechanism:

\startluacode
local function patch(data,filename)
     data.descriptions[utf.byte("ϵ")] = data.descriptions[utf.byte("ε")]
end

fonts.handlers.otf.enhancers.patches.register("after","missing 
glyphs","^ebgaramond*", patch)
\stopluacode

\setupbodyfont[ebgaramond]

\starttext

ϵ ε

\stoptext

or when you want to buse features:

\startluacode
     fonts.handlers.otf.addfeature {
         name    = "ccmp", -- or "ebhack"
         type    = "substitution",
         nocheck = true,
         data    = {
             ["ϵ"] = "ε",
         }
     }
\stopluacode

% \definefontfeature[default][default][ebhack=yes]

\setupbodyfont[ebgaramond]

\starttext

ϵ ε

\stoptext




-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list