We need to implement https://www.w3.org/TR/css-fonts-3/#feature-precedence
Created attachment 394590 [details] Patch
Comment on attachment 394590 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=394590&action=review Logic looks good. There is one thing that I find hard to believe that it would be working, please check below ⬇️ > Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp:570 > + char buffer[5]; If it was me, I would probably have done instead: const auto& tag = fontFaceFeature.tag(); const char buffer[] = { tag[0], tag[1], tag[2], tag[3], '\0' }; FcPatternAddString(resultPattern.get(), FC_FONT_FEATURES, reinterpret_cast<const FcChar*>(buffer)); But in the end both are equivalent, so no big deal 😉️ > Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp:577 > + FcPatternAddString(resultPattern.get(), FC_FONT_FEATURES, reinterpret_cast<const FcChar8*>(&buffer)); Due to array-to-pointer decay with “&buffer” jere you are passing a “char**” so I do not know how this can possibly work correctly. We need to plainly pass “buffer” here. Using “FcPatternAddString(..., buffer)” might render the cast as unneeded, too (I don't remember whether “FcChar8” is exactly the same as “char”, though). > Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:94 > + FcPatternAddString(pattern.get(), FC_FONT_FEATURES, reinterpret_cast<const FcChar8*>(&buffer)); Same here.
Created attachment 394596 [details] Patch
Committed r259188: <https://trac.webkit.org/changeset/259188>
<rdar://problem/61046669>