Windows default font glyphs are rendered wrong on some systems
Christopher Schnick
crschnick at xpipe.io
Fri Dec 20 21:34:27 UTC 2024
I'm not a font wizard, the only a consistent thing about this issue is
that the glyph indices are always off by 2. The linked otf bug tracker
issue has that same issue, and that is using a completely different font.
If I had to debug this, I would probably think of something where some
rare condition is true for the affected systems where some part of the
code does a +1 on the glyph index to adjust for something but should
instead do a -1. And since that condition seems to be very rare, normal
testing doesn't catch that.
On 20/12/2024 22:24, Philip Race wrote:
> There's some hard-coding of names to files in WindowsFontMap.java
> Maybe that's part of it, but its very much a guess.
> It would be interesting to try a build which excludes using that pure
> "optimization"
>
> -phil.
>
>
> On 12/20/24 1:12 PM, Philip Race wrote:
>> That just looks like prism.verbose output
>> I see someone suggested prism.debugfonts but I don't see that any
>> results were ever provided.
>>
>> -phil.
>>
>>
>> On 12/20/24 1:08 PM, Christopher Schnick wrote:
>>>
>>> Hey Phil,
>>>
>>> the linked GitHub comment has debugfonts output hidden in the
>>> comment. It looks like this:
>>>
>>> Prism pipeline init order: d3d sw
>>> Using Double Precision Marlin Rasterizer
>>> Using dirty region optimizations
>>> Not using texture mask for primitives
>>> Not forcing power of 2 sizes for textures
>>> Using hardware CLAMP_TO_ZERO mode
>>> Opting in for HiDPI pixel scaling
>>> Prism pipeline name = com.sun.prism.d3d.D3DPipeline
>>> Loading D3D native library ...
>>> succeeded.
>>> D3DPipelineManager: Created D3D9Ex device
>>> Direct3D initialization succeeded
>>> (X) Got class = class com.sun.prism.d3d.D3DPipeline
>>> Initialized prism pipeline: com.sun.prism.d3d.D3DPipeline
>>> Maximum supported texture size: 16384
>>> Maximum texture size clamped to 4096
>>> OS Information:
>>> Windows version 10.0 build 22631
>>> D3D Driver Information:
>>> Intel(R) Iris(R) Xe Graphics
>>> \\.\DISPLAY1
>>> Driver igd10iumd64.dll, version 30.0.101.3118
>>> Pixel Shader version 3.0
>>> Device : ven_8086, dev_46A8, subsys_00631414
>>> Max Multisamples supported: 4
>>> vsync: true vpipe: true
>>> Loading FontFactory com.sun.javafx.font.directwrite.DWFactory
>>> Subpixel: enabled
>>> No match for name null in C:\WINDOWS\Fonts\segoeui.ttf
>>> No match for name null in C:\WINDOWS\Fonts\segoeuib.ttf
>>> new alphas with length = 16384
>>> new alphas with length = 20480
>>> new alphas with length = 61440
>>>
>>> The comment also contains information about the system and fonts.
>>>
>>> On 20/12/2024 22:02, Philip Race wrote:
>>>> Very odd. Possibilities :
>>>> - font mixup : the glyph ID is for a different font.
>>>> - cmap bug : the incorrect glyph ID is used for the codepoint.
>>>> - the font is a unicode variable font something goes wrong as a
>>>> result - I doubt this one as the IDs should be the same.
>>>> - something else :-)
>>>>
>>>> Is the D3D pipeline being used ?
>>>> What's the user locale as shown by windows ?
>>>>
>>>> To get some idea of what fonts are being used they could run with
>>>> -Dprism.debugfonts=true
>>>>
>>>> -phil.
>>>>
>>>>
>>>> On 12/20/24 12:48 PM, Christopher Schnick wrote:
>>>>>
>>>>> So as a follow-up to this, this is a general JavaFX issue and not
>>>>> related to a certain application. You can find references to this
>>>>> on reddit:
>>>>> https://www.reddit.com/r/JavaFX/comments/1hhu0d5/bugs_with_scene_builder_v_2400/
>>>>> and on GitHub with some verbose and debugfonts output:
>>>>> https://github.com/JabRef/jabref/issues/11755#issuecomment-2403606223
>>>>> . It also seems related to this issue:
>>>>> https://bugs.openjdk.org/browse/JDK-8242617
>>>>>
>>>>> On 04/12/2024 18:43, Christopher Schnick wrote:
>>>>>>
>>>>>> I'm not able to reproduce it, but some of my users are. If anyone
>>>>>> who knows the font renderer maybe wants additional information or
>>>>>> has some ideas on what the users can try to either fix or
>>>>>> diagnose the root cause, I can relay that request to them.
>>>>>>
>>>>>> I can ask them to try other JavaFX applications, but either way
>>>>>> how that goes, it doesn't show the cause.
>>>>>>
>>>>>> On 04/12/2024 18:37, Andy Goryachev wrote:
>>>>>>>
>>>>>>> I might suggest trying to run some other JavaFX application
>>>>>>> using the same setup. Or better yet, if you can come up with a
>>>>>>> short reproducer, please file a bug.
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>> -andy
>>>>>>>
>>>>>>> *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> on behalf of
>>>>>>> Andy Goryachev <andy.goryachev at oracle.com>
>>>>>>> *Date: *Wednesday, December 4, 2024 at 09:20
>>>>>>> *To: *Christopher Schnick <crschnick at xpipe.io>,
>>>>>>> openjfx-dev at openjdk.org <openjfx-dev at openjdk.org>
>>>>>>> *Subject: *Re: Windows default font glyphs are rendered wrong on
>>>>>>> some systems
>>>>>>>
>>>>>>> I've never seen this... what is the font that causes the issue?
>>>>>>>
>>>>>>> -andy
>>>>>>>
>>>>>>> *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> on behalf of
>>>>>>> Christopher Schnick <crschnick at xpipe.io>
>>>>>>> *Date: *Monday, November 25, 2024 at 02:44
>>>>>>> *To: *openjfx-dev at openjdk.org <openjfx-dev at openjdk.org>
>>>>>>> *Subject: *Windows default font glyphs are rendered wrong on
>>>>>>> some systems
>>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> for some of our users, the font glyphs of the default Windows
>>>>>>> font are wrong by an offset of +2. E.g. the letter D is rendered
>>>>>>> as F, the symbol - is rendered as /, and so on ... However, the
>>>>>>> glyph spacings and kernings are using the correct values for the
>>>>>>> original letter, only the actual glyph itself is wrong. This is
>>>>>>> happening on the latest 24-ea build on Windows 11, but also
>>>>>>> occurred on version 21 a while ago. I wasn't able to reproduce
>>>>>>> it myself, only some users were.
>>>>>>>
>>>>>>> This has happened now for multiple users of our application, so
>>>>>>> I figured to report it (Didn't find this in the bug tracker).
>>>>>>>
>>>>>>> Here is there issue, next to how it should look like:
>>>>>>>
>>>>>>> (It is in danish because the user played around with the
>>>>>>> language settings to troubleshoot)
>>>>>>>
>>>>>>> There was no explicit -fx-font set, so the application uses the
>>>>>>> default one. When the users change to using -fx-font: Roboto,
>>>>>>> which is bundled with our application, the glyphs are rendered
>>>>>>> normally. So this issue is specific to certain fonts.
>>>>>>>
>>>>>>> If there's any additional information required, I can relay that
>>>>>>> request to our affected users.
>>>>>>>
>>>>>>>
>>>>>>> Best
>>>>>>> Christopher Schnick
>>>>>>>
>>>>>>> (I resent this mail as it got stuck in the moderation queue for
>>>>>>> being too big due to me accidentally pasting the screenshot as a
>>>>>>> .bmp)
>>>>>>>
>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20241220/e8e3b6d0/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: s.png
Type: image/png
Size: 81374 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20241220/e8e3b6d0/s-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Ls6xRvPGaI1BL10B.png
Type: image/png
Size: 69609 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20241220/e8e3b6d0/Ls6xRvPGaI1BL10B-0001.png>
More information about the openjfx-dev
mailing list