On 2/12/2016 12:05 PM, Ulrike Fischer wrote:
Am Thu, 11 Feb 2016 20:04:52 +0100 schrieb Hans Hagen:

On 2/11/2016 6:00 PM, Ulrike Fischer wrote:
Am Thu, 11 Feb 2016 14:53:11 +0100 schrieb Hans Hagen:

Is there in context code which offers something similar to
\XeTeXinterchartoks? That means can one declare (unicode)
blocks/classes of characters and tokens (e.g. font switches,
language switches etc) which should be inserted between character of
different blocks?

If yes, where is it?

No, because it's not the way context does things (or at least I never
needed it so I never bothered to look into writing it). I would probably
look into it when there was demand for some feature not supported yet.
Even then I'd probably not rely interpreting unicode characters but on
proper tagging because one never knows what the intended use/rendering
of some character at some point it.

Proper tagging is naturally always more reliable. But I can
understand that people who write e.g. a mix of chinese with some
english/ascii and need to switch fonts don't want to tag all the
time. That can get a bit tiring, also it is error prone.

(context users are advised to quit reading here)

I'm feeling like the wild girl who spoils the wellbehaved children
;-)

well, as the latin mixed in chinese text often looks quite horrible i
assume basemode will do so you can make a file

    crapfont.lua

This works fine in context but not with plain or latex in a current
texlive, I get a "metric data not found or bad" error. So it
problably uses either features not present in the generic fontloader
of luaotfload, or features of a newer luatex. How stable is the

i don't know ... you should ask PG how to access the raw table (maybe it's wrapped, i don't know what luaotfload does)

code? Will it still work in context in a year?

sure, it's rather basic code ... i just tested the plain version and i had to change a separator (context has a different specification interface)

    \font\crapa=lmroman12-regular:mode=base;liga=yes; at 12pt
    \font\crapb=lmsans12-regular:mode=base;liga=yes;  at 30pt

%\font\mine=file:luatex-fonts-demo-vf-4.lua:1=lmroman12-regular;2=lmsans12-regular+0x41-0x5A+0x30-0x39+0x21; at 12pt

\font\mine=file:luatex-fonts-demo-vf-4.lua:1=\fontid\crapa;2=\fontid\crapb+0x41-0x5A+0x30-0x39+0x21; at 12pt

with

    for k, v in ipairs(t) do
        local name, rest = string.match(v,"^(.-)%+(.*)$")

works ok (of course one need to be a bit careful not to overwrite shared tables so

   local c = chrs[u]

might become

  local c = table.copy(chrs[u])

(idem in the other branch) etc etc but it was just demo code anyway

But beside this I think it doesn't address the real problem. This is
obviously not a replacement for proper tagging as it simply wants to
avoid the need by using a better (fuller) font. But when you switch
from chinese to english, the font is only one of the things that
users probably want to do. Perhaps they want to changes spaces
(around punctuation), fixed names, hyphenations patterns, add some
pdf specials etc ...

one could use lua node list juggling for that .. that's the concept of luatex ... so one can have a mix of font and nodelist stuff ...

injecting stuff (at the user level) in the input stream in an uncontrolled way is messy anyway but if one really wants to do that, one can easily kick in a callback when reading the file and then add commands or whatever at unmarked script/language boundaries (after all it's mostly trying to make structure from non structure we're talking of)

and otherwise keep using xetex as there's nothing wrogn with doing that if it suits the user

luatexja has the ability to mix fonts (e.g.
http://tex.stackexchange.com/a/68252/2388), but I have no idea how
they do it (most documentation is in japan).

i have no time to look into it ... context can mix and mess anyway and it is already years ago that i did that kind of stuff

Hans

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

Reply via email to