opentypejs / opentype.js

Read and write OpenType fonts using JavaScript.
https://opentype.js.org/
MIT License
4.36k stars 466 forks source link

Opentype.js can only draw black text. #623

Open ILOVEPIE opened 8 months ago

ILOVEPIE commented 8 months ago

Expected Behavior

There should be a way to specify the color of the text being drawn.

Current Behavior

opentype.js is the Henry Ford of font rendering "Any [user] can have [their text] any color that [they want] so long as it is black."

Possible Solution

Allow a color to be selected in the draw call for Font and Glyph objects.

Context

My library has to manually draw the path to work around this, granted I have to do this anyways as I need to stroke the text too, but my point stands.

axkibe commented 5 months ago

My take on this is, maybe opentype.js shouldn't draw at all. Why duplicate API? Have opentype.js just make the path on the canvas an the caller can fill and stroke it.

ILOVEPIE commented 5 months ago

My take on this is, maybe opentype.js shouldn't draw at all. Why duplicate API? Have opentype.js just make the path on the canvas an the caller can fill and stroke it.

We could do it either way.

Shmacked commented 1 week ago

My take on this is, maybe opentype.js shouldn't draw at all. Why duplicate API? Have opentype.js just make the path on the canvas an the caller can fill and stroke it.

For me, I replaced the native text component for fabric.js with opentype.js drawing command. I had to rewrite the drawing command in order to be able to apply stroke and fill (and other effects, if I wanted) on it, since this isn't native to fabric.js, yet. I could convert them to paths, but I wanted the ability to to edit text and fonts.

My fix is not perfect, but it pretty dang close to getting accurate bounding boxes on the text with a given font.