diff --git a/BUILD.gn b/BUILD.gn
index d07e57a..627595d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1286,6 +1286,7 @@
     "include/svg",
     "include/utils",
     "include/utils/mac",
+    "modules/skparagraph/include",
     "modules/skshaper/include",
     "modules/skottie/include",
   ]
diff --git a/modules/skparagraph/include/ParagraphBuilder.h b/modules/skparagraph/include/ParagraphBuilder.h
index 29c061d..1f1e0ed 100644
--- a/modules/skparagraph/include/ParagraphBuilder.h
+++ b/modules/skparagraph/include/ParagraphBuilder.h
@@ -16,7 +16,7 @@
 
 class ParagraphBuilder {
 public:
-    ParagraphBuilder(const ParagraphStyle& style, sk_sp<FontCollection> fontCollection) { }
+    ParagraphBuilder(const ParagraphStyle&, sk_sp<FontCollection>) { }
 
     virtual ~ParagraphBuilder() = default;
 
diff --git a/modules/skparagraph/include/TypefaceFontProvider.h b/modules/skparagraph/include/TypefaceFontProvider.h
index 727659d..3d4b82c 100644
--- a/modules/skparagraph/include/TypefaceFontProvider.h
+++ b/modules/skparagraph/include/TypefaceFontProvider.h
@@ -44,23 +44,21 @@
 
     SkFontStyleSet* onMatchFamily(const char familyName[]) const override;
 
-    SkFontStyleSet* onCreateStyleSet(int index) const override { return nullptr; }
-    SkTypeface* onMatchFamilyStyle(const char familyName[],
-                                   const SkFontStyle& style) const override {
+    SkFontStyleSet* onCreateStyleSet(int) const override { return nullptr; }
+    SkTypeface* onMatchFamilyStyle(const char[], const SkFontStyle&) const override {
         return nullptr;
     }
-    SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], const SkFontStyle& style,
-                                            const char* bcp47[], int bcp47Count,
-                                            SkUnichar character) const override {
+    SkTypeface* onMatchFamilyStyleCharacter(const char[], const SkFontStyle&,
+                                            const char*[], int,
+                                            SkUnichar) const override {
         return nullptr;
     }
-    SkTypeface* onMatchFaceStyle(const SkTypeface* tf, const SkFontStyle& style) const override {
+    SkTypeface* onMatchFaceStyle(const SkTypeface*, const SkFontStyle&) const override {
         return nullptr;
     }
 
-    sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int ttcIndex) const override { return nullptr; }
-    sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>,
-                                            int ttcIndex) const override {
+    sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int) const override { return nullptr; }
+    sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>, int) const override {
         return nullptr;
     }
     sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset>,
@@ -68,12 +66,11 @@
         return nullptr;
     }
     sk_sp<SkTypeface> onMakeFromFontData(std::unique_ptr<SkFontData>) const override;
-    sk_sp<SkTypeface> onMakeFromFile(const char path[], int ttcIndex) const override {
+    sk_sp<SkTypeface> onMakeFromFile(const char[], int) const override {
         return nullptr;
     }
 
-    sk_sp<SkTypeface> onLegacyMakeTypeface(const char familyName[],
-                                           SkFontStyle style) const override {
+    sk_sp<SkTypeface> onLegacyMakeTypeface(const char[], SkFontStyle) const override {
         return nullptr;
     }
 
