[dev-context] composing characters in MKIV: adding "mark" feature
mojca.miklavec.lists at gmail.com
Wed May 25 10:57:24 CEST 2011
as a follow up to the topic I brought up again last week (and as it
was partially brought up on the tex-font mailing list as well), here
are some of my thoughts (for discussion).
When thinking a bit about it, it appears to me that the best approach
for fixing accent positioning would be to implement "mark"/"mkmk"
feature for both Type1 and OpenType fonts using lfg files.
The things that come to my mind and would have to be done are the following:
1.) with some configuration, but universal accross fonts: One might
have to copy a normal caron into combining caron (and copy all other
accents as well), to enable <c><combining caron> to work properly.
(Arthur would probably argue about normalization at this point, but
I'm also talking about combinations that don't exist in Unicode; maybe
<eogonek><combining caron> etc.)
2.) universal accross fonts: Let TeX determine "bottom marks" and "top
marks" for all letters (that is: eogonek and scedilla also need at
least the "top mark"). The code to calculate those values is already
It would be helpful to have both graphical output displaying those
marks on top of letters as well as an option to output those settings
into a file (to enable easy manual editing of values and loading them
3.1.) Allow editing the values that TeX returned (from point 2) and
3.2.) Allow shifting "top marks" separately on
lowercase/uppercase/smallcaps. Among those, allow exceptions for
single letters (like lowercase l in Lucida which is taller than
uppercase letters and requires special handling). Allow shifting
"bottom marks" and allow exceptions.
4.) Allow shifting both marks to left/right (I'm not sure about units,
but they may be the same units as used for bounding boxes; people who
want to fix that have to experiment anyway).
5.) Allow shifting positioning marks on accents. There is some
confusion since some accents come with their "natural bounding box",
while combining accents don't.
6.) Low priority: For fonts that do have mark/mkmk feature, allow
fixing mark positions on single letters and allow adding new marks on
letters that lack them.
7.) Very low priority: Allow "faking accents" (creating bottom
circumflex out of top circumflex).
8.) Lower priority, but might be kept in mind: this has to be done for
Latin, but other scripts (like Cyrillic) might want to have that
functionality on request as well. It makes little sense to add marks
on all glyphs, including Chinese etc. The autocomposing feature should
probably be switched off by default, but if one wants to switch it on
and if one wants to add positioning marks, it might make sense to "ask
the user" to which glyphs those marks have to be added.
I can try to come up with more precise specification, but to start
with: how would one add mark/mkmk features to lfg files? (I'm asking
for some minimal example of syntax which doesn't have to work.)
More information about the dev-context