瀏覽代碼

LibWeb: Allow data: URLs with `font/` MIME type in @font-face CSS rules

Andreas Kling 2 年之前
父節點
當前提交
463355d1eb
共有 2 個文件被更改,包括 6 次插入3 次删除
  1. 5 3
      Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
  2. 1 0
      Userland/Libraries/LibWeb/CSS/Parser/Parser.h

+ 5 - 3
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -2341,7 +2341,10 @@ Optional<AK::URL> Parser::parse_url_function(ComponentValue const& component_val
                 if (data_url.data_mime_type().starts_with("image"sv, CaseSensitivity::CaseInsensitive))
                     return data_url;
                 break;
-
+            case AllowedDataUrlType::Font:
+                if (data_url.data_mime_type().starts_with("font"sv, CaseSensitivity::CaseInsensitive))
+                    return data_url;
+                break;
             default:
                 break;
             }
@@ -4820,9 +4823,8 @@ Vector<FontFace::Source> Parser::parse_font_face_src(TokenStream<ComponentValue>
         auto& first = source_tokens.next_token();
 
         // <url> [ format(<font-format>)]?
-        // FIXME: Allow data urls for fonts.
         // FIXME: Implement optional tech() function from CSS-Fonts-4.
-        if (auto maybe_url = parse_url_function(first); maybe_url.has_value()) {
+        if (auto maybe_url = parse_url_function(first, AllowedDataUrlType::Font); maybe_url.has_value()) {
             auto url = maybe_url.release_value();
             Optional<FlyString> format;
 

+ 1 - 0
Userland/Libraries/LibWeb/CSS/Parser/Parser.h

@@ -318,6 +318,7 @@ private:
     enum class AllowedDataUrlType {
         None,
         Image,
+        Font,
     };
     Optional<AK::URL> parse_url_function(ComponentValue const&, AllowedDataUrlType = AllowedDataUrlType::None);