On Fri Mar 20 15:00:21 2026 +0000, Nikolay Sivov wrote:
Sure, layers won't be accessible through cmap, but glyphs that are accessible will still work. We could reject anything that has COLRv1 data in it, like you did, but that might reject otherwise usable font. With COLRv0 the logic is simple - for IsColorFont() application should be using Translate*, if application is not aware, it can render as before. Since we don't support COLRv1, is it a problem to simply not report as a color font, and let it render as is? In practice, it was my impression that nothing is using COLRv0 except for Segoe UI on Windows, and COLRv1 is will always be preferred for newer fonts. Best way would be to test this particular font on older Windows builds without COLRv1 support, like Windows 8/10, and match that. Segoe UI Emoji is COLRv1 too on up to date Win11.
Well, that won't solve the practical problem which I am trying to solve shorter term. Most likely the games would not render emojis on Win8 / Win10 as well with this COLRv1 font present. While longer term the way forward is proper COLRv1 support and not matching old Windows behaviour? While working on that I had some experiments with translating COLRv1 representation into current COLRv0 (most of characters at least are the same layers with just color and no transparency, just sometimes have nested layers which can be translated; I are also gradients which can be poorly approximated with one color). I am not sure if it worth it, but that can be done rather simple to make the most of such font symbols just render until we have proper v1 support (which is quite some plumbing of course). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10388#note_133062