typemytype / GlyphConstruction

MIT License
70 stars 11 forks source link

Kerning in horizontal stacking mode #18

Closed arialcrime closed 6 years ago

arialcrime commented 6 years ago

I apologize in advance for maybe opening a can of worms. Would it be possible to also consider the kerning between glyphs too when they get stacked horizontally? Is this already possible somehow?

typemytype commented 6 years ago

mmm, that could be a nice requirement, I guess the is possible. I checking this out...

yarmola commented 6 years ago

Kerning should not be applied for base glyphs combination at all times. If you have first glyph flipped vertically, you probably don't want to apply kerning (like in A-flipped, V combination).

Better implementation would be to use alternative character to separate base glyphs which should join with kerning. Maybe '\'?

twardoch commented 6 years ago

In FLVI, we’ve decided that & will not do kerning but &\ will do kerning. I think it makes sense to differentiate the two for backward-compatibility reasons.

SoA_V = A &\ V will make a left-to-right ligature using kerning while A_V = A & V will just add the advance widths.

typemytype commented 6 years ago

will take a look when back from holidays 😎☀️

typemytype commented 6 years ago

and it would have been nice to notify and discus this 'dialect' &\ here first...

twardoch commented 6 years ago

@typemytype Yeah, sorry about that. I won’t mention it in our docs now, so let’s say we won’t officially support it yet. Let’s talk about it here first.

Overall, this is a side-effect of the fact that we’re now actually “mainstreaming” the Glyph Construction syntax in FontLab VI (yay!), i.e. making it first-class citizen, while the old FLS5 dialect is relegated to “legacy”.

We’re just about to push out v6.0.8 that will support the “extended glyph recipe syntax” (based on Glyph Construction) in the Generate Glyphs dialog and in auto glyphs. We’ve fixed a few bugs in our implementation, and we’ve discovered https://github.com/typemytype/GlyphConstruction/issues/19 and https://github.com/typemytype/GlyphConstruction/issues/21

We will probably have a handful of small points to discuss with you (for example, it’d be useful to come up with a notation of ligature stacking in the RTL direction as well as, possibly, in TTB and BTT vertical typesetting directions). But let’s table that for a moment.

I’m also working on an improved and more detailed documentation of the GC syntax (with more examples and more explanations) for our purposes, and I’ll happily rework it and submit it back here so RoboFont users can benefit as well!

Thanks for developing GC, it’s super-useful! :)

twardoch commented 6 years ago

Ps. @typemytype there is also an open question of, when components are flipped or transformed via the transformation matrix, what exactly should happen to the anchors and other placement locations. Especially if the anchors from the base glyphs are inherited into the resulting glyph. We’ll file a few issues here so we can discuss.

typemytype commented 6 years ago

@twardoch please make separate issues for RTL and TTB (top to bottom)


kerning wise: I like the \ prefix before a mark element to announce that it should be kerned

<destGlyphName> = <glyphName> & \ <glyphName>
ffi = f & \ f & \ i

the default behaviour of & should only use the advance width and not kerning

typemytype commented 6 years ago

this is added in https://github.com/typemytype/GlyphConstruction/commit/41cffcf6b1742e5aa6f1b5b43aa81a30d335721f and https://github.com/typemytype/GlyphConstruction/commit/5b4af7ce29c852b27b1060664bc5c3e0d100f455