[dev-context] tex-text (XeTeX) & trep, tlig (LuaTeX)

Hans Hagen pragma at wxs.nl
Fri Dec 7 20:01:59 CET 2007

Mojca Miklavec wrote:

> In LuaTeX you define two "features":
> - trep (3 replacements)
> - tlig (8 ligatures)
> In XeTeX, these 11 and 4 others are combined in "mapping=tex-text".
> And I would like the ligatures to be the same on both engines, so I
> would like to clone the behavior from LuaTeX in XeTeX (once you decide
> what the default should be - from your reply I understand that you
> plan to change the behaviour) and split "mapping=tex-text" into more
> separate "mappings".

well, let'd assume that hardly anyone uses tlig, so then the 8 ligs
(well, not really ligs) can be kept, saves us some some headache; and we
just don't make it a default -)

> That's fine by me, I would agree. Only: what about apostrophe (')?
> (I'm, you're, ..)

shouldn't that one be left untouched?

> I'm not sure about it, but how is it with the apostrophe in
>    I'm, don't, ... ?

I don't wanna know -)

> I don't care too much about
>     " -> right double quote
> and
>     ` -> left single quote
> esp. the first one should better be left that way, and I never use `
> (and have no idea what it's used for except in mysql and TeX source
> code)

how about a vote on the list ...

>>> U+0021 U+0060; <>;U+00A1;  ; !` -> inverted exclam
>>> U+003F U+0060; <>;U+00BF;  ; ?` -> inverted question
>>>
>>> U+003C U+003C; <>;U+00AB;  ; << -> LEFT POINTING GUILLEMET
>>> U+003E U+003E; <>;U+00BB;  ; >> -> RIGHT POINTING GUILLEMET
>> let's get rid of it
>
> Fine by me.

real weird things ... the french should use proper utf chars but well ...

>> i'd like to let caps and such go away completely for mkiv so maybe we
>> end up with xetex defs versus luatex defs;
>
> So ... perhaps Caps support needs to be rewritten in XeTeX as well :)
> I still don't understand how to get "bold italic sans caps" for
> example (just as I don't know how to get bold/bold italic math).

i think that caps (in xetex) can best be done by just defining an extra
typeface and then switch typeface (fast too)

> I use LuaTeX because:
> - sometimes Lua is really handy and you have a marvellous database for
> Unicode well integrated :), nice to inspect fonts etc.
> I use XeTeX because:
> - LuaTeX does't (or at least didn't) always work as it should. XeTeX
> "saved my life" in May because of some dirty LuaTeX bugs stopped the
> show in the middle (I already had a working copy - final PDF, and
> after minor modifications it stopped working)

that is because mkiv parses the text and if it becomes too weird,
abusive, nonsence, offending it will enter a special mode

> - others keep asking questions (and since I suggested or approved
> quite some bugs in XeTeX recently, I feel responsible for helping the
> victims :)

sure, also, for some apps xetex is more convenient (faster, and many
docs re not that demanding so default feature handling can do the job well)

> - to show off with Zapfino - I don't have it as OpenType :-)

hm, you mean that you're using the apple font model ... now who was

> In any case: what I really love about ConTeXt is that [more-or-less]
> no change is needed to compile the same (simple) document with either
> engine (and compare the result or to switch quickly if support in one
> engine is buggy).

so we should keep that property

> When using lua that is no longer true, but still, same definitions and
> similar results with both engines would be nice. (Esp. if both engines
> will be merged in the future :)

by then i'm retired and you'll have to do the coding ...

both engines fill in a niche and do that well so no problem to support
both; eventually mkii will be the xetex thing and mkiv the luatex thing

>>> The problem is that "features=default" implies "script=latn", which is
>>> not always desired. A copy of mapping=tex-text comes from tlig & trep
>>> substitution.
>> we can fall back to dflt which in practice boils down to latn
>
> That's probably better.

>>> I assume that script=latn;language=dflt;+liga;+kern; is always on by
>>> default (were needed), so basically mapping=tex-text is the only thing
>>> that really needs to be added.
>> well, i'd prefer ... only -- and --- and make anything else up to the
>> user, which means, redefining default in cont-sys if needed
>>
>>> [Iwona-Bold.otf]:script=latn;language=dflt;+liga;+kern;mapping=tex-text;mapping=tex-text;
>> two mappings?
>
> I mean: the the font is called with
>     mapping=tex-text;mapping=tex-text;
> whis doesn't make so much sense.

no, but let's not waste too much tex processing on it, doesn't hurt i guess

> I can create two new mappings, so that "tlig=yes" would then be
> "mapping=tlig" and "trep=yes" would be "mapping=trep" instead of
> "mapping=tex-text".

yes, can be part of the context zip

> We only need to agree which features are where (and you need to remove
> ?` from beginner's manual). Spanish users probably have it on keyboard
> and "others" either don't need it or will find it somehow.

ah .. manual rewriting ...

> << and >> are not needed either in my opinion.
>
>>> Some (non-latin) fonts complain when one requests non-existing features.
>> in xetex you mean?
>
> Yes. Well, LuaTeX probably "complains" as well (as in report >> load
> otf: warning: Warning: Glyph 1423 is named fi which should mean it is
> mapped to
>  Unicode U+FB01, but Glyph 207 already has that encoding. etc.) -
> complaining is a good thing in general, it only means "please do not
> use latin script for non-latin fonts". And "features=default" should
> prbably not force latin. (Then it should at least be
> "features=default-latin" or somothing similar.)

luatex does not care because it does nothing with features, it loads the
file ...

and, mkiv nicely checks for the features supported, so if you ask for
mkmk in latin modern it will just ignore it (part of setting up the
processing sequences and caches), mkiv does not even bother you with a
message

>>> Also, it might be handy to be able to define
>>>     \definetypeface[basic][rm][Xserif][whatever][script=arab,language=...]
>>> (for now forget that one, interface needs to be extended once and properly).
>>>
>>>
>>>     \definefontsynonym[a][file:Iwona-Bold.otf][mapping=tex-text]
>>> doesn't work, so the only way seems to be
>>>     \definefontfeature[xetex][mapping=tex-text]
>>>     \definefontsynonym[a][file:Iwona-Bold.otf][xetex]
>>>
>>> I have tried to use
>>>     \definefontfeature[xetex][mapping=tex-text]
>>>     \definefontfeature[caps][+smcp]
>>>     \definefontsynonym[a][file:Iwona-Bold.otf][features={xetex,caps}]
>>> but that didn't work.
>> indeed, handling comma separated lists is too slow there .. ok, we can
>> do it for xetex and in luatex use lua for it ... or i could hash the
>> commalist itself ... needs a bit of thinking but eventually we need to
>> be able to combine features (this even more points into a separate
>> definition file for xetex)
>
> That's up to you. I don't know anything about internals here.

you can't fool me ..

-----------------------------------------------------------------