foliojs / fontkit

An advanced font engine for Node and the browser
1.44k stars 210 forks source link

Feature Request: expose getKerning(left, right) to users #301

Closed Typogram closed 10 months ago

Typogram commented 1 year ago

My use case need a function like getKerningValue from OpenType.js

Font.getKerningValue(leftGlyph, rightGlyph)

I found that in KernProcessor.js, there is already an function called getKerning I wish it can get exposed to users to get kerning value directly like what OpenType.js does with getKerningValue With the existing code already there, it should be a low hanging fruit to imcrease developer experience! What do you think?

devongovett commented 1 year ago

Why can't you use the existing public API for layout? This is much better because it works across multiple font formats including legacy kerning and opentype positioning.

Typogram commented 1 year ago

I agree the font.layout() API is pretty solid. I needed the kerning because I am migrating Typogram from opentype.js to fontkit, and I already wrote my own layout logic dependent on getKerningValue of OpenType.js So having this API would make my developer experience much better, and require less code rewrite to migrate from OpenType.js to fontkit.

I also find the requested API helpful for debugging font. eg. to see if it has correct kerning values. One of the reasons I migrate is because of this bug of OpenType.js, where it doesn't read kerning data correctly for certain fonts. I tested with fontkit and it can read kerning data correctly, but the only way I found out is by looking at the rendition, I couldn't just output the kerning data reading directly with fontkit. Codepen: https://codepen.io/wendyz/pen/YzOKWwY?editors=1011