RESOLVED FIXED 209591
[HarfBuzz] Not all CSS font features are applied
https://bugs.webkit.org/show_bug.cgi?id=209591
Summary [HarfBuzz] Not all CSS font features are applied
Carlos Garcia Campos
Reported 2020-03-26 03:47:39 PDT
Attachments
Patch (27.09 KB, patch)
2020-03-26 03:53 PDT, Carlos Garcia Campos
aperez: review-
aperez: commit-queue-
Patch (26.86 KB, patch)
2020-03-26 05:40 PDT, Carlos Garcia Campos
aperez: review+
Carlos Garcia Campos
Comment 1 2020-03-26 03:53:46 PDT
Adrian Perez
Comment 2 2020-03-26 04:54:33 PDT
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.
Carlos Garcia Campos
Comment 3 2020-03-26 05:40:11 PDT
Carlos Garcia Campos
Comment 4 2020-03-30 02:11:22 PDT
Radar WebKit Bug Importer
Comment 5 2020-03-30 02:12:16 PDT
Note You need to log in before you can comment on or make changes to this bug.