On Thu, 1 Jul 2021 22:21:52 GMT, Phil Race <p...@openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/com/sun/javafx/font/MacFontFinder.java 
>> line 83:
>> 
>>> 81:             Stream<Path> stream = 
>>> Files.list(Paths.get("/System/Library/Fonts"));
>>> 82:             stream.forEach(f -> 
>>> PrismFontFactory.getFontFactory().registerEmbeddedFont(f.toString()));
>>> 83:         } catch (IOException e) {
>> 
>> registerEmbeddedFont() is intended to be used for fonts embedded in an 
>> application not for system fonts. 
>> Also is there anywhere else we are hard-coding /System/Library/Fonts. Apple 
>> move things around.
>> Also as well as likely needing to use a different call to register, you 
>> should make sure that the API
>> is registering all the fonts in a collection.
>> Finally (I think) what happens if you print ? The font info needs to be 
>> passed over to J2D.
>
> Another thought .. after doing this do these "." fonts appear in the list of 
> fonts reported by
> javafx.scene.text.Font.getFontNames() ?
> 
> I suspect they really should not ..

They are in there. But with the current approach for CT glyph-parsing, I see no 
other way. The parsing is done in native code (e.g. 
OS.CTLineCreateWithAttributedString()) but we extract the required font from 
the returned runs, e.g. 
`String fontName = CTFontCopyAttributeDisplayName(actualFont);`
Next, the `fontName` is searched for, but if it is not in the "public" list of 
fonts, this fails. So if we don't make these dot fonts public, this approach 
doesn't work.

-------------

PR: https://git.openjdk.java.net/jfx/pull/547

Reply via email to