On 3/4/2020 9:02 PM, Matthias Nagel wrote:
Dear Hans,

I am not quite sure how I shall interpret your response. Unfortunately, I am 
not an expert for traditional TeX, LuaTex, XeTeX nor the OpenType specs. I am 
only a user who observed a problem with kerning and is now caught between two 
stools: the LuaTeX maintainers and the font maintainers. My remarks are below 
your quotes:

i think that there are hardly any 'correct' math fonts out there (although i consider cambria to be quite ok and it's the standard)

On 3/4/2020 10.43AM, Hans Hagen wrote:
On 3/3/2020 9:43 PM, Matthias Nagel wrote:
as I am unsure what is the officially correct way to submit a potential
bug, I post it here and would like to draw your attention to this post,
because I do not know if the tracker is still in use.

http://tracker.luatex.org/view.php?id=1019

My apologies, if this is a double posting. Also, I already have posted
this problem to the Libertinus project as I initially thought this would
be a bug in the font, but the maintainer of Libertinus said it is an
issue with LuaTex.
w_j q^j

the w sticks out of its boundingbox, as does the j ... in traditional
tex font processing the italic correction is always added to the width
and removed in some cases, in opentype it's only added in some cases and
the real width is used (combined with staircase kerning for relative
positioning)

If I understand you correctly, you say that the specification how fonts are 
handled has changed for OpenType fonts in comparison to Type-1 fonts used by 
pdfTeX. And you say that LuaTex' way to handle things is in accordance with the 
OpenType specification. Is it correct to say then, that the bug is not in 
LuaTeX but in the font, although the font designer claim the opposite? In other 
words, should I again get in touch with the font maintainer and convince them 
to fix their font?

There are two code paths in luatex: (1) old school tex fonts, which does the italic correction juggling: add them always and then remove them sometimes depending on where chars are used, and (2) an open type route where italic corrections are only added in the few places that requires it. I decided (already long ago) for that split because any solution (also at the tex end) that tried to cope with the fact that fonts are inconsistent somehow has side effects. Anyway, in luatex one can actually (runtime) patch a font, so I decided just to wait ... So, in context, once I think that a font is stable (which means that its properties, including maybe or maybe not bugs, will not change) i'll add some such corrective operations in at the tex/lua end. Because math is pretty conservative and hardly changes that can work out on the long run. (Of course, instead, one can decide to turn bugs into features, change the engine, because after all that happens all the time.)

However, XeTeX also uses OpenType and the odd kerning does not appear in XeTeX. 
Does this imply that Libertinus and XeTeX both handle spacing though not in 
accordance with the specs, but handle spacing at least consistently with each 
other? Of course, that would be a very unlucky situation. In that case fixing 
the font in accordance with the OpenType specs and LuaTeX  would break the font 
for XeTeX.

I never looked into how xetex does it but I think that when its math was implemented there were hardly any opentype math fonts around. So, It might have settled on some mixed "old school tex rendering" and "at that time assumes opentype rendering" which then mostly meant "cambria with its math parameter system".

Out of curiosity: Given the assumption that XeTeX and LuaLaTeX handle kerning 
and spacing of OpenType fonts differently without any indication which of both 
is compliant to the OpenType specs, why then is it possible to have other 
OpenType fonts (e.g. Computer Modern Unicode, Tex Gyre) which are typeset 
correctly for both engines? This does not sound logical for me. If XeTeX and 
LuaLaTeX behave differently with respect to OpenType kerning/italic correction 
information, then one should observe this problem in many more cases.

They are different engines. In the danger of repeating myself (as this topic comes up every now and then), this is what the spec says:

\startitemize

    \startitem
{\em italic correction:} When a run of slanted characters is followed by a straight character (such as an operator or a delimiter), the italics
        correction of the last glyph is added to its advance width.

When positioning limits on an N-ary operator (e.g., integral sign), the horizontal position of the upper limit is moved to the right by half the italics correction, while the position of the lower limit is moved to the
        left by the same distance.

When positioning superscripts and subscripts, their default horizontal positions are also different by the amount of the italics correction of
        the preceding glyph.
    \stopitem

    \startitem
        {\em math kerning:} Set the default horizontal position for the
superscript as shifted relative to the position of the subscript by the
        italics correction of the base glyph.
    \stopitem

    \stopitemize

now, the distance between w and j: adding the ic to w would increase the
distance, and even if it were removed later on it would then be too far
apart ... so ... no robust solution for that kind of cases (and we would
start oscillating solutions depending on the bug-of-the-day: fix this,
breaks that, add another flag here and there ... well, that's something
for macro packages to do) ...

Well, in my naive view, everything should be fine if all components adhere to 
the specs. :-o

Is it possible to fix the problem on a macro level? If yes, that would be great 
and I would be deeply thankful, if you could you give me an example macro how 
to do it. I probably cannot wait with my manuscript until either the font, 
LuaTeX or XeTeX accepts the problem as „their” bug and fix it.

Sure, my experience is that (nearly) all can be fixed somehow in tex but when you're in a hurry: just use another font (maybe even traditional 8 bit tex fonts).

of course one can apply some "fix feature"
(which i probably would do in context if i'd use that font) that could
either implement a staircase kern, or fix the width

Could you enlighten me what a staircase kern is? Is it possible for me to 
introduce that by myself (whatever it is) or is this something the font 
maintainer has to do?
a profile with discrete steps that defines left or right side kerning, they can be visualized as staircases; so a character can kind of encode its shape and depending on where a next or previous character ends up (its height as well as baseline then matter) kerning can be fine tuned

hardly any font implements it ... and even if it does, often only partial but it's a nice mechanism

(fwiw: in my opinion the tex community lost the edge in math long ago and microsoft took it up and came up with an opentype spec + (unicode) font; they looked at tex of course and made some decisions, which we might like or not, but we had it coming and now we're stuck with the situation; but the good thing is that tex could and will always adapt)

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
_______________________________________________
dev-luatex mailing list
dev-luatex@ntg.nl
https://mailman.ntg.nl/mailman/listinfo/dev-luatex

Reply via email to