On 5/9/2018 3:02 AM, Henri Menke wrote:
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.

(1) This lua font stuff was mostly written for demonstration purposes so anything done like should really use the mechanisms available in the macro package used

(2) If you use plain and want to play with the font interface you can better use the plain code that comes with context because that is what I can run here (this plain version has always been present btw).

(3) Examples coming from the font manual can use feaures only present in context (for instance because it uses other code present in context or because i didn't bother to make in generic).

(4) File lookup is macro package specific.

So, say that you have:

\font\mainfont="file:fonts-demo-rule.lua":original=texgyrepagellaregular;

\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

and then in that lua file

    if detail then
        name = name .. ":" .. detail
    end

watch how i replaced the * by : because only context has the * syntax while you use/want the xetex syntax

  mtxrun --script plain yourtexfile

should work gven that you made a format with

  mtxrun --script plain --make

(mtxrun --script font --reload --simple will make a plain database if needed)

It uses luatex-plain that ships with context as format (there's also a luatex-test file that shows some font stuff).

Fwiw, the latest version also supports font effects at the font level but one needs luatex 1.08 (which is the current garden version).

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?

___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________


--

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to