Files
oak-gpui/crates
张小白 c0259a448d windows: Slightly improve font rendering quality (#12015)
Upper before this PR, lower after.

![Screenshot 2024-05-20
144852](https://github.com/zed-industries/zed/assets/14981363/88995482-3a98-41be-9c2c-6b781bef6ad2)

This PR manually applies a MSAA to the font atlas. Before this PR, the
font may seem aliased ( espeacially on low DPI monitors ), that's
because `DirectWrite` and `CoreText` ( on which currently `Zed` built
the whole text system ) uses different anti-aliasing strategy. The
different anti-aliasing approach used by `DirectWrite` and `CoreText`:

![Screenshot 2024-05-20
151114](https://github.com/zed-industries/zed/assets/14981363/21a2fc1e-48a2-4cff-a9d1-41602eff3658)

The upper is `VSCode` font rendering result, middle `macOS`, lower this
PR ( pic captured with same font face, same font size, same DPI, same
physical resolution, same editor theme, and same magnification rate ).

This PR brings a quality similiar to `CoreText`. What's more, from the
`VSCode` image, you can see how `DirectWrite` sub-pixel anti-aliasing is
performed on the edge of the glyph. Can we achieve the same rendering
quality? Currently, No. `Zed` use a grayscale image to render glyph, and
a sub-pixel anti-aliasing `DirectWrite` requires all RGB channels and
the foreground color of the rendering glyph, which `Zed` dose not
provide.

So, to achieve the quality of `VSCode` font rendering, the text system
of `Zed` needs much much more efforts to refactor the codes.


Release Notes:

- N/A
2024-05-26 16:41:55 -07:00
..
2024-05-10 15:50:20 -06:00
2024-05-26 16:30:09 -07:00
2024-05-23 15:50:59 +02:00
2024-04-23 13:31:21 -04:00
2024-05-26 16:30:09 -07:00
2024-03-28 18:32:11 +01:00
2024-04-11 15:36:35 -06:00
2024-05-23 15:50:59 +02:00
2024-05-22 14:36:15 +03:00
2024-04-30 23:31:59 -06:00
2024-05-10 15:50:20 -06:00
2024-05-10 15:50:20 -06:00
2024-03-11 10:45:57 +01:00
2024-03-26 16:10:09 -07:00
2024-05-09 21:08:49 -06:00
2024-05-23 15:50:59 +02:00
2024-05-26 16:30:09 -07:00
2024-05-22 14:36:15 +03:00
2024-05-23 15:50:59 +02:00
2024-05-23 15:50:59 +02:00
2024-04-15 14:21:52 +02:00
2024-05-26 16:30:09 -07:00
2024-05-03 12:50:42 -07:00
2024-05-26 16:30:09 -07:00