>  More control of kerning and general spacing might be nice.

What properties, besides kerning, are you referring to?

Also, a question for the wider audience: is there a need to have caretBlinkRate 
property for each control, or a single global one would suffice?  In other 
words, are there use cases when two or more controls might need a different 
blink rate?

Thank you.

-andy


From: openjfx-dev <[email protected]> on behalf of Scott Palmer 
<[email protected]>
Date: Thursday, January 26, 2023 at 12:33
To: openjfx-dev <[email protected]>
Subject: Re: Q: missing APIs needed for implementation of a rich text control
[dupe of private message, now including the mailing list]

I've been using RichTextFX to make my own code editor/IDE.  I see that you have 
asked that project specifically on GitHub, excellent.
One thing that I wanted to do was to use a font like Fira Code that combines 
characters such as != or >= into a single glyph, but there are no APIs to 
request that JavaFX render those optional ligatures. Swing APIs automatically 
do.  In fact just implementing some basic font selection has been tedious.  
Getting the font family from a Font object and trying to use it in CSS to 
specify -fx-font-family simply doesn't work sometimes.  Trying to filter the 
list of available fonts to show only those that are fixed-width is tedious.  I 
tried to hack something by measuring a couple different characters from the 
font that would normally be different widths, but this is an unreliable hack. 
Allowing the user to choose a preferred font and then configuring components to 
use it via a CSS stylesheet is simply more difficult than it should be.
A few years ago I contributed the changes to make the tab-width configurable, 
which helped with my project a little bit.  Other APIs are needed to better 
control line spacing and measure font baseline offsets and that sort of thing.  
I see there is an issue for caretBlinkRate, what about changing the caret 
shape? E.g. block, underscore, vertical bar, etc.   Should the block be solid 
or an outline? Why is caretShape read-only? Why does it return an array of 
PathElements instead of simply a Shape which by default would be a Path?  More 
control of kerning and general spacing might be nice. I've wanted that in the 
past, not for a rich text control, but for doing video titles.  I can see how 
the two needs overlap though.  I recently asked here about rendering emojis.  
That's currently very unreliable and broken.  Getting something to work 
consistently cross-platform is not easy.  Sometimes emojis are rendered in 
color, other times not.  Mac renders color emojis in gray and at the wrong size 
(since  the sub-pixel rendering was turned off to match macOS).  On Windows the 
emojis are never in color.

Regards,

Scott

On Wed, Jan 25, 2023 at 10:41 PM Scott Palmer 
<[email protected]<mailto:[email protected]>> wrote:
I've been using RichTextFX to make my own code editor/IDE.  I see that you have 
asked that project specifically on GitHub, excellent.
One thing that I wanted to do was to use a font like Fira Code that combines 
characters such as != or >= into a single glyph, but there are no APIs to 
request that JavaFX render those optional ligatures. Swing APIs automatically 
do.  In fact just implementing some basic font selection has been tedious.  
Getting the font family from a Font object and trying to use it in CSS to 
specify -fx-font-family simply doesn't work sometimes.  Trying to filter the 
list of available fonts to show only those that are fixed-width is tedious.  I 
tried to hack something by measuring a couple different characters from the 
font that would normally be different widths, but this is an unreliable hack. 
Allowing the user to choose a preferred font and then configuring components to 
use it via a CSS stylesheet is simply more difficult than it should be.
A few years ago I contributed the changes to make the tab-width configurable, 
which helped with my project a little bit.  Other APIs are needed to better 
control line spacing and measure font baseline offsets and that sort of thing.  
I see there is an issue for caretBlinkRate, what about changing the caret 
shape? E.g. block, underscore, vertical bar, etc.   Should the block be solid 
or an outline? Why is caretShape read-only? Why does it return an array of 
PathElements instead of simply a Shape which by default would be a Path?  More 
control of kerning and general spacing might be nice. I've wanted that in the 
past, not for a rich text control, but for doing video title.  I can see how 
the two needs overlap though.  I recently asked here about rendering emojis.  
That's currently very unreliable and broken.  Getting something to work 
consistently cross-platform is not easy.  Sometimes emojis are rendered in 
color, other times not.  Mac renders color emojis in gray and at the wrong size 
(since  the sub-pixel rendering was turned off to match macOS).  On Windows the 
emojis are never in color.

Regards,

Scott

On Wed, Jan 25, 2023 at 5:38 PM Andy Goryachev 
<[email protected]<mailto:[email protected]>> wrote:
Dear colleagues:

I am trying to identify missing public APIs needed to support a rich text 
control.  There is a number of tickets created already against various parts of 
JavaFX, collected in https://bugs.openjdk.org/browse/JDK-8300569 , though I 
suspect this list may not be complete.

If anyone has any suggestions or requests related to the new APIs, I would be 
very interested to learn the context, the reason these APIs are needed, and 
whether a workaround exists.

Thank you in advance.

Cheers,
-andy

Reply via email to