I've been trying to check whether or not I understand how the OpenType BASE table works. It doesn't seem to do what I expected.
I designed a font in Glyphs, with two glyphs, L and uni9053. For demonstration purposes I added a small horizontal line at the logical baseline (Y coordinate = 0). I then rendered the two glyphs together with hb-view.
Next I added a BASE table in Glyphs:
table BASE {
HorizAxis.BaseTagList ideo romn ;
HorizAxis.BaseScriptList
latn romn -110 0,
hani ideo -110 0;
} BASE;<p></p>
What I thought this would do is to specify a low ideographic baseline of -110 units (which is the bottom edge of the "road" radical) and a Latin baseline of 0. The text renderer should be aligning the kanji along the low ideographic baseline, and so the effect of adding the BASE table should be to ask the renderer to drop the kanji down relative to the Latin. It didn't; I got the same output as before. (I also tested in Japanese Adobe Illustrator CS6, and saw no difference in the output there either.) In fact, there didn't seem to be any change no matter what figures I put in the BASE table.
Am I expecting the wrong thing from the BASE table, and/or am I expecting the wrong thing in terms of client support? Do clients actually support multiple typographic baselines? Finally whose responsibility is it to implement the baseline alignment - shaper or layout application?
Comments
(I've added the two fonts - one with BASE, one without - to my test fonts page.)
This makes it sound like baseline alignment is an optional part of layout, but a client might decide to do something different instead anyway or perhaps nothing at all. That's not a great situation to be in if you are trying to ensure consistent layout, and I wonder if it actually makes BASE functionally useless.
To see the change, you may have to play with the glyph alignment settings, to set a non-Roman baseline to the runs.