ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen <j.hagen@xs4all.nl>
To: ntg-context@ntg.nl
Subject: Re: using lua fonts
Date: Wed, 9 May 2018 09:56:50 +0200	[thread overview]
Message-ID: <c0df870e-9779-1555-2190-14d7b087b0fd@xs4all.nl> (raw)
In-Reply-To: <47ab9ba1-2f4f-e1e5-3702-850fd1836105@gmail.com>

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	other threads:[~2018-05-09  7:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-03 18:26 Ulrike Fischer
2018-05-08  8:43 ` Hans Hagen
2018-05-08 14:01   ` Ulrike Fischer
2018-05-08 14:17     ` Hans Hagen
2018-05-08 14:46 ` Ulrike Fischer
2018-05-09  1:02 ` Henri Menke
2018-05-09  7:56   ` Hans Hagen [this message]
2018-05-09 10:40     ` Ulrike Fischer
2018-05-09 11:05       ` Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c0df870e-9779-1555-2190-14d7b087b0fd@xs4all.nl \
    --to=j.hagen@xs4all.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).