On Thu, Mar 12, 2020 at 06:43:39PM +0100, Hans Hagen wrote:
This seems inconsistant. Is there a reason why this would be required or could it be changed to handle height and depth consistently? It is (among some others) a known artifact that dates from the very early days when we played with alternative par builders and such. These offsets were introduced when we were messing around with arabic and had to handle marks and at the same time deal with tex's perspective on line dimensions (which it doesn't really have): prevdepth, maxdepth and such so this is (irr) why we handled the depth differently.
Because in the process more access to node lists at various stages was implemented one can indeed wonder if we need to keep this assymetrical approach (as we were never really bitten by it there was not real reason to change is, also because it can resuel in incompatible output.)
Anyway, what I can do is change it in luametatex so that for a longer period we can see if context users run into issues and complain about a change in output (i can then quickly revert to make it some option). After all, context users know that they are possible victims of testing.
Just changing something in luatex right away is no option given the demand for stability, and definitely not in code freeze time. When we don't run into problems we can then decide to do it in luatex too (assuming that complaints about different output don't backfire).
Another option is to introduce a parameter \characteroffsetmode:
0 = no compensation 1 = ht compensation (current and default) 2 = dp compensation 3 = ht and dp compensation
IMHO such a parameter sounds like a good idea. Another approcach I could think of would be to assign some unused bits in the glyph subtype to control this on a glyph-by-glyph basis. Especially that could help if there are some weird fonts which set up their glyphs in odd ways and would cause trouble if compensation is applied. Best regards, Marcel