Replacing a glyph with itself + other glyph

Roel Nieskens
Roel Nieskens Posts: 188
edited June 2019 in Font Technology
This works in Chrome and Edge:
<table><tbody><tr><td><MultipleSubst index="0" Format="1">
</td></tr></tbody></table><table><tbody><tr><td>  <Substitution in="g18" out="g10,g19"/>
</MultipleSubst></td></tr></tbody></table>

But this only works in Chrome:
<table><tbody><tr><td><MultipleSubst index="0" Format="1"></td></tr><tr></tr></tbody></table>
<table><tbody><tr><td>  <Substitution in="g18" out="g18,g19"/>
</td></tr><tr></tr></tbody></table></MultipleSubst>&nbsp;
I want g18 to be replaced by itself and a second glyph (g19 in the second example).

In Chrome this works, but Edge will not show the glyph if it's also the in glyph. This first example doesn't have the in glyph in the out sequence, and works as expected in both browsers.

I'm using GSUB Multiple Substitution Format 1. Should I be using something else, or is this a bug in either Chrome or Edge?
Tagged:

Comments

  • Wouldn't this cause infinite recursion?
  • No, it shouldn't because after replacing g18 with g18 g19 it will then process whichever glyph follows g19. A lookup won't process the same glyph twice.
  • But aren't lookups redone when something is changed? Or even just text is highlighted? I'm not sure, but it seems that way.
  • Nothing wrong with it, and it works in Windows, Firefox, Edge, etc.
  • Hrant, OpenType features may change output, but not input. When for example a selection is made, the glyph layout might need redrawing and thus recalculate what glyphs go out based on what goes in – but with the same input string, the end result will be the same.
  • @Erwin Denissen Indeed it does work, the reduced test case font at least. I must be doing something else wrong that causes the first glyph to be missing.

    Thanks for your input, everyone!