[NTG-context] using lua fonts

Henri Menke henrimenke at gmail.com
Wed May 9 03:02:22 CEST 2018


Dear list,

this is a follow-up on Ulrike's post, so I'm just hijacking the thread.

How can I use the Lua fonts in Plain?  It works fine if I just remove 
ConTeXt-specific actualtext bits but as soon as I add features to the 
font, the name resolution fails with something like

! Font 
\mainfont=file:fonts-demo-rule.lua:original=file:texgyrepagella-regular.
otf not loadable: metric data not found or bad.

MWE is below as always.

Cheers, Henri

----------- test.tex -----------

\input luaotfload.sty

\font\mainfont="file:fonts-demo-rule.lua":original=file:texgyrepagella-regular.otf
\mainfont

This code is stored in fonts-demo-rule.lua and we can load that font in 
the usual way,
by specifying a filename.

\bye

----------- fonts-demo-rule.lua -----------

return function(specification)
     local features = specification.features.normal
     local name = features.original or "dejavu-serif"
     local option = features.option -- we only support "line"
     local size = specification.size -- always set
     local detail = specification.detail -- e.g. default
     if detail then
         name = name .. "*" .. detail
     end
     local f, id = fonts.constructors.readanddefine(name,size)
     if f then
         f.properties.name = specification.name
         f.properties.virtualized = true
         f.fonts = {
             { id = id },
         }
         for s in string.gmatch("aeuioy",".") do
             local n = utf.byte(s)
             local c = f.characters[n]
             if c then
                 local w = c.width or 0
                 local h = c.height or 0
                 local d = c.depth or 0
                 if option == "line" then
                     f.characters[n].commands = {
                         { "rule", option == "line" and size/10, w },
                     }
                 else
                     f.characters[n].commands = {
                         { "down", d },
                         { "rule", h + d, w },
                     }
                 end
             else
                 -- probably a real bad font
             end
         end
     end
     return f
end

On 04/05/18 06:26, Ulrike Fischer wrote:
> I'm trying to run one of the examples of fonts-mkiv.pdf
> 
> I copied the code from 4.5 Lua fonts to a file
> "fonts-demo-rule.lua". This lua file is in the same directory as my
> test file.
> 
> Then I tried
> 
> \definefont
> [MyRuleFont]
> [file:fonts-demo-rule.lua*default sa 1]
> 
> \starttext
> 
> {\MyRuleFont So when we use it we get text }
> 
> \stoptext
> 
> but I get in the log
> 
> fonts > defining > forced type 'lua' of 'fonts-demo-rule' not found
> fonts > defining > font with asked name 'fonts-demo-rule' is not
> found using lookup 'file'
> fonts > defining > unknown font 'fonts-demo-rule', loading aborted
> fonts > defining > unable to define 'fonts-demo-rule.lua' as
> 'MyRuleFont--0'
> 
> The file itself is found (I can see its path later on). What is
> going on here?
> 


More information about the ntg-context mailing list