It took a while... but finally some work in progress

Would be kind of vital to the question of determining whether ligature support is widely available, no?

One easy way to find out: comment the “using namespace yup;”, see if you get the same results, and let your IDE resolve the Font reference .. ? (Then again, I can do my own experiments with JUCE/yup and find out for myself.. so ignore me if its not of any further interest..)

That is all yup code

1 Like

You should be able to make juce to enable “dlig” on harfbuzz by asking the juce team to do it :rofl: unless you want to live with a fork

You need a yup branch for it to work seamlessly. If you want to know what you have to do in order to enable special font features in harfbuzz i suggest you give a look at https://github.com/rive-app/rive-runtime/blob/main/src/text/font_hb.cpp

FWIW we’re currently working on a feature that’ll let you set OpenType features on Font instances, so rendering discertionary ligatures should be possible without making invasive changes to JUCE. The work’s currently in review, so hopefully it’ll be out before too long.

4 Likes

@kunitoki - thanks for the details.

@reuk - awesome, I will checkout JUCE 8 develop some time soon and give it a bit of attention .. as a longtime Chartwell user (in other apps/frameworks) I look forward to seeing how this weird trick (discrete ligatures) can be applied to making really interesting user interfaces ..

:partying_face:

Does that also include variable fonts?

Hello ! Continuing the tradition, there is some preliminary SVG support ongoing, when you don’t need the full power of Rive artboards and need something simpler

Widgets are starting to take shape too! buttons, toggles, popup labels, text editors

And a justifiable popup menu with scrollable content and mouse + keyboard navigation!

Also i’ve been working on a more neon glowing oscilloscope

All is also coming with lot of fixes, improved rendering performance, easy vsync rendering (as easy as calling repaint from the Component::refreshDisplay(double elapsedFrameSeconds) virtual method, everything else is just handled internally), dirty rect redrawing with opaque component optimisations (if your topmost opaque component contains the current frame dirty rect it won’t render other Components below it) and more API improvements all around.

:partying_face:

9 Likes

Some more progress, eye and ear candy :smiley:

Enjoy !

7 Likes