diff --git a/ofl/abeezee/METADATA.pb b/ofl/abeezee/METADATA.pb
index c40a01884094b00f7645cca0cae8af91af9dd1d4..d9cfc946241d78a4713e47a53b674cbb7ac3e21f 100644
--- a/ofl/abeezee/METADATA.pb
+++ b/ofl/abeezee/METADATA.pb
@@ -24,3 +24,19 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/abeezee"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/ABeeZee-Regular.ttf"
+    dest_file: "ABeeZee-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ABeeZee-Italic.ttf"
+    dest_file: "ABeeZee-Italic.ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/abeezee/upstream.yaml b/ofl/abeezee/upstream.yaml
deleted file mode 100644
index 040c1ef28646455ebc81285dfa76f079a74f01ab..0000000000000000000000000000000000000000
--- a/ofl/abeezee/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-repository_url: https://github.com/googlefonts/abeezee
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/ABeeZee-Regular.ttf: ABeeZee-Regular.ttf
-  fonts/ttf/ABeeZee-Italic.ttf: ABeeZee-Italic.ttf
diff --git a/ofl/aboreto/METADATA.pb b/ofl/aboreto/METADATA.pb
index 1b0a6414807d2851f338298b4aa94528df3ee01f..3c6504baa01f5462d384880e410bd5cbd433d2b3 100644
--- a/ofl/aboreto/METADATA.pb
+++ b/ofl/aboreto/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/domija/Aboreto"
   commit: "07795db7fb5cf9029f1bac1ae0b130bbae6c5feb"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Aboreto-Regular.ttf"
+    dest_file: "Aboreto-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/aboreto/upstream.yaml b/ofl/aboreto/upstream.yaml
deleted file mode 100644
index c57fd3ba2c7431ff1490ae6a7c1b85e088eb960e..0000000000000000000000000000000000000000
--- a/ofl/aboreto/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Aboreto-Regular.ttf: Aboreto-Regular.ttf
-archive:
diff --git a/ofl/abyssinicasil/METADATA.pb b/ofl/abyssinicasil/METADATA.pb
index 800a4299463540d3cd8098a8a63820e5b49a005d..c84cc93ca03aae51aeb64c547aab891b808af9b8 100644
--- a/ofl/abyssinicasil/METADATA.pb
+++ b/ofl/abyssinicasil/METADATA.pb
@@ -19,5 +19,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-abyssinica"
   archive_url: "https://github.com/silnrsi/font-abyssinica/releases/download/v2.200/AbyssinicaSIL-2.200.zip"
+  files {
+    source_file: "AbyssinicaSIL-2.200/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "AbyssinicaSIL-2.200/AbyssinicaSIL-Regular.ttf"
+    dest_file: "AbyssinicaSIL-Regular.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Ethi"
diff --git a/ofl/abyssinicasil/upstream.yaml b/ofl/abyssinicasil/upstream.yaml
deleted file mode 100644
index 85665ed99ac3bf45d77e43e63386143d08a700c7..0000000000000000000000000000000000000000
--- a/ofl/abyssinicasil/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/silnrsi/font-abyssinica/releases/download/v2.200/AbyssinicaSIL-2.200.zip
-branch: master
-files:
-  AbyssinicaSIL-2.200/OFL.txt: OFL.txt
-  AbyssinicaSIL-2.200/AbyssinicaSIL-Regular.ttf: AbyssinicaSIL-Regular.ttf
diff --git a/ofl/adlamdisplay/METADATA.pb b/ofl/adlamdisplay/METADATA.pb
index dc5a2ad9177c87f007d1ceba524d812cb859fab1..0e541969faeb845b089b55dae5467bd0a9af0b7d 100644
--- a/ofl/adlamdisplay/METADATA.pb
+++ b/ofl/adlamdisplay/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/microsoft/ADLaM-Display"
   commit: "879176243e9f7161a8aefdab8c36a4a7318ebe15"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/ADLaMDisplay-Regular.ttf"
+    dest_file: "ADLaMDisplay-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Adlm"
diff --git a/ofl/adlamdisplay/upstream.yaml b/ofl/adlamdisplay/upstream.yaml
deleted file mode 100644
index 62afa242da82c6fa89f770a561bc643089ea2880..0000000000000000000000000000000000000000
--- a/ofl/adlamdisplay/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/ADLaMDisplay-Regular.ttf: ADLaMDisplay-Regular.ttf
-archive:
diff --git a/ofl/adventpro/METADATA.pb b/ofl/adventpro/METADATA.pb
index 262329e4a25e9207f117805d045518878d0b45bf..f2581ba62699f84e7e8930c07a9ef00ccab37981 100644
--- a/ofl/adventpro/METADATA.pb
+++ b/ofl/adventpro/METADATA.pb
@@ -40,6 +40,23 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Advent"
   commit: "d206a139ee9045993fbd1e530b93f28f8bf4e3b1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/split/AdventPro[wdth,wght].ttf"
+    dest_file: "AdventPro[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/split/AdventPro-Italic[wdth,wght].ttf"
+    dest_file: "AdventPro-Italic[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/adventpro/upstream.yaml b/ofl/adventpro/upstream.yaml
deleted file mode 100644
index 8693c8a9b1b10bdcae955ea81eae241a012d022c..0000000000000000000000000000000000000000
--- a/ofl/adventpro/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/split/AdventPro[wdth,wght].ttf: AdventPro[wdth,wght].ttf
-  fonts/variable/split/AdventPro-Italic[wdth,wght].ttf: AdventPro-Italic[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/afacad/METADATA.pb b/ofl/afacad/METADATA.pb
index 7704a4ccbe67a33688fe1e9275cecbc1764819e9..49c2ddbed9c6500107d53f44813c4475dc9b70b1 100644
--- a/ofl/afacad/METADATA.pb
+++ b/ofl/afacad/METADATA.pb
@@ -36,5 +36,18 @@ axes {
 source {
   repository_url: "https://github.com/Dicotype/Afacad"
   commit: "d7e973f5d3f17f54662ed9a18b130dcbf7a0e709"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Afacad[wght].ttf"
+    dest_file: "Afacad[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Afacad-Italic[wght].ttf"
+    dest_file: "Afacad-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/afacad/upstream.yaml b/ofl/afacad/upstream.yaml
deleted file mode 100644
index f8d079b5393f6e52e66ad75aa7b08ada6c40d994..0000000000000000000000000000000000000000
--- a/ofl/afacad/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Afacad[wght].ttf: Afacad[wght].ttf
-  fonts/variable/Afacad-Italic[wght].ttf: Afacad-Italic[wght].ttf
-archive:
diff --git a/ofl/agbalumo/METADATA.pb b/ofl/agbalumo/METADATA.pb
index 1700a1865e4da5eb8c927d37e2f90e0800bbae1b..fe06fc91d581082990b41892f0dab6145ca9c787 100644
--- a/ofl/agbalumo/METADATA.pb
+++ b/ofl/agbalumo/METADATA.pb
@@ -18,7 +18,20 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
 source {
-  repository_url: "https://github.com/SorkinType/Agbalumo.git"
+  repository_url: "https://github.com/SorkinType/Agbalumo"
   commit: "c6c381d3704ef794dde69b80489d0cde36fb6f9b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Agbalumo-Regular.ttf"
+    dest_file: "Agbalumo-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/agbalumo/upstream.yaml b/ofl/agbalumo/upstream.yaml
deleted file mode 100644
index 806c0db1f24f639790124b73ef3036cfe8947da3..0000000000000000000000000000000000000000
--- a/ofl/agbalumo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Agbalumo-Regular.ttf: Agbalumo-Regular.ttf
diff --git a/ofl/agdasima/METADATA.pb b/ofl/agdasima/METADATA.pb
index 590b41133bf58b1ca36baad3d4a702667a72ea8c..86f71984234b5350aa9afb0f25f3f33432e8eb43 100644
--- a/ofl/agdasima/METADATA.pb
+++ b/ofl/agdasima/METADATA.pb
@@ -27,6 +27,23 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/docrepair-fonts/agdasima-fonts"
   commit: "c971400d774dfd6d28e7a8e34aedc3b3dfdce6f9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Agdasima-Regular.ttf"
+    dest_file: "Agdasima-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Agdasima-Bold.ttf"
+    dest_file: "Agdasima-Bold.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/agdasima/upstream.yaml b/ofl/agdasima/upstream.yaml
deleted file mode 100644
index 01443726c9c3eb42f447f75edb8bc76b20f7c5f5..0000000000000000000000000000000000000000
--- a/ofl/agdasima/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Agdasima-Regular.ttf: Agdasima-Regular.ttf
-  fonts/ttf/Agdasima-Bold.ttf: Agdasima-Bold.ttf
-archive:
diff --git a/ofl/akatab/METADATA.pb b/ofl/akatab/METADATA.pb
index 7cdf040829aa64ebe62e381643cda05e3143ea13..0bc8995d209988a49254aefe6bbae10bc5b3a447 100644
--- a/ofl/akatab/METADATA.pb
+++ b/ofl/akatab/METADATA.pb
@@ -64,8 +64,36 @@ subsets: "tifinagh"
 source {
   repository_url: "https://github.com/silnrsi/font-akatab"
   archive_url: "https://github.com/silnrsi/font-akatab/releases/download/v3.000/Akatab-3.000.zip"
+  files {
+    source_file: "Akatab-3.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Akatab-3.000/Akatab-Regular.ttf"
+    dest_file: "Akatab-Regular.ttf"
+  }
+  files {
+    source_file: "Akatab-3.000/Akatab-Medium.ttf"
+    dest_file: "Akatab-Medium.ttf"
+  }
+  files {
+    source_file: "Akatab-3.000/Akatab-SemiBold.ttf"
+    dest_file: "Akatab-SemiBold.ttf"
+  }
+  files {
+    source_file: "Akatab-3.000/Akatab-Bold.ttf"
+    dest_file: "Akatab-Bold.ttf"
+  }
+  files {
+    source_file: "Akatab-3.000/Akatab-ExtraBold.ttf"
+    dest_file: "Akatab-ExtraBold.ttf"
+  }
+  files {
+    source_file: "Akatab-3.000/Akatab-Black.ttf"
+    dest_file: "Akatab-Black.ttf"
+  }
+  branch: "master"
 }
-primary_script: "Tfng"
 sample_text {
   masthead_full: "ⵎⴸⴰⵏ ⴸⴸⵓⵏⵜ ⵜⵉⵓⵉⵏ ⵍⵍⵓⵍⵍⵉⵏ ⵓⵍⴰⵏ ⵙ ⵍⵆⵈ."
   masthead_partial: "ⵎⴸⴰⵏ ⴸⴸⵓⵏⵜ ⵜⵉⵓⵉⵏ ⵍⵍⵓⵍⵍⵉⵏ ⵓⵍⴰⵏ ⵙ ⵍⵆⵈ."
@@ -75,3 +103,4 @@ sample_text {
   poster_md: "ⵎⴸⴰⵏ ⴸⴸⵓⵏⵜ ⵜⵉⵓⵉⵏ ⵍⵍⵓⵍⵍⵉⵏ ⵓⵍⴰⵏ ⵙ ⵍⵆⵈ."
   poster_lg: "ⵎⴸⴰⵏ ⴸⴸⵓⵏⵜ ⵜⵉⵓⵉⵏ ⵍⵍⵓⵍⵍⵉⵏ ⵓⵍⴰⵏ ⵙ ⵍⵆⵈ."
 }
+primary_script: "Tfng"
diff --git a/ofl/akatab/upstream.yaml b/ofl/akatab/upstream.yaml
deleted file mode 100644
index 3dfa3221efb953dc00668da70f0abcecaae34e86..0000000000000000000000000000000000000000
--- a/ofl/akatab/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-archive: https://github.com/silnrsi/font-akatab/releases/download/v3.000/Akatab-3.000.zip
-branch: master
-files:
-  Akatab-3.000/OFL.txt: OFL.txt
-  Akatab-3.000/Akatab-Regular.ttf: Akatab-Regular.ttf
-  Akatab-3.000/Akatab-Medium.ttf: Akatab-Medium.ttf
-  Akatab-3.000/Akatab-SemiBold.ttf: Akatab-SemiBold.ttf
-  Akatab-3.000/Akatab-Bold.ttf: Akatab-Bold.ttf
-  Akatab-3.000/Akatab-ExtraBold.ttf: Akatab-ExtraBold.ttf
-  Akatab-3.000/Akatab-Black.ttf: Akatab-Black.ttf
diff --git a/ofl/akayakanadaka/METADATA.pb b/ofl/akayakanadaka/METADATA.pb
index 4b4d189cda4705c0fff8cf1645a364e76a474166..6a89c21f4bd5cd558b3c22b96ec07c2b3d922ca0 100644
--- a/ofl/akayakanadaka/METADATA.pb
+++ b/ofl/akayakanadaka/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "kannada"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/vaishnavimurthy/Akaya-Kanadaka"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "TTF/AkayaKanadaka-Regular.ttf"
+    dest_file: "AkayaKanadaka-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/akayakanadaka/upstream.yaml b/ofl/akayakanadaka/upstream.yaml
deleted file mode 100644
index 22681e40dc648f54c58a82450c6832d831647fcd..0000000000000000000000000000000000000000
--- a/ofl/akayakanadaka/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  TTF/AkayaKanadaka-Regular.ttf: AkayaKanadaka-Regular.ttf
-repository_url: https://github.com/vaishnavimurthy/Akaya-Kanadaka.git
diff --git a/ofl/akayatelivigala/METADATA.pb b/ofl/akayatelivigala/METADATA.pb
index d8b9a1283c0186864d56b0308abd6df8012822a2..e8f367a9358a0c9159862643d74b83140baf2d95 100644
--- a/ofl/akayatelivigala/METADATA.pb
+++ b/ofl/akayatelivigala/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "telugu"
+source {
+  repository_url: "https://github.com/vaishnavimurthy/Akaya-Telivigala"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "TTF/AkayaTelivigala-Regular.ttf"
+    dest_file: "AkayaTelivigala-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/akayatelivigala/upstream.yaml b/ofl/akayatelivigala/upstream.yaml
deleted file mode 100644
index 2a26156dd5d1ca6f05b2e5927667416b29ec2667..0000000000000000000000000000000000000000
--- a/ofl/akayatelivigala/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  TTF/AkayaTelivigala-Regular.ttf: AkayaTelivigala-Regular.ttf
-repository_url: https://github.com/vaishnavimurthy/Akaya-Telivigala.git
diff --git a/ofl/akshar/METADATA.pb b/ofl/akshar/METADATA.pb
index 7c319c5b0edf3b868ec1d7ff7923fe70e4d0bc23..4296940356673bd80be17e81d0b184044c01f873 100644
--- a/ofl/akshar/METADATA.pb
+++ b/ofl/akshar/METADATA.pb
@@ -24,4 +24,17 @@ axes {
 source {
   repository_url: "https://github.com/tallchai/akshar-type"
   commit: "0c6de5ef9cef264b3b3f958e772b3a371f92d083"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Akshar[wght].ttf"
+    dest_file: "Akshar[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/akshar/upstream.yaml b/ofl/akshar/upstream.yaml
deleted file mode 100644
index 66271c79ea6149acdad4f05960d14a5c420a5dfd..0000000000000000000000000000000000000000
--- a/ofl/akshar/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Akshar[wght].ttf: Akshar[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/alatsi/METADATA.pb b/ofl/alatsi/METADATA.pb
index 5b232ee3821d48c707ea340a09a5dec21e790301..7aa54a8e973a1af15410f921236e5552fcfdb4e2 100644
--- a/ofl/alatsi/METADATA.pb
+++ b/ofl/alatsi/METADATA.pb
@@ -20,4 +20,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Alatsi/"
   commit: "d6b4c8127bbd4bb13f9abf0f77504d8bae3269fd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Alatsi-Regular.ttf"
+    dest_file: "Alatsi-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/alatsi/upstream.yaml b/ofl/alatsi/upstream.yaml
deleted file mode 100644
index b2638d434a9822eeee42fb81139271541f4cb6e7..0000000000000000000000000000000000000000
--- a/ofl/alatsi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Alatsi-Regular.ttf: Alatsi-Regular.ttf
-archive:
diff --git a/ofl/albertsans/METADATA.pb b/ofl/albertsans/METADATA.pb
index 267da8a5eef0a97b1406d076fbdb108ac66f7f16..79d9fb123eb4b2fd1d70b013ab9b2094b1164588 100644
--- a/ofl/albertsans/METADATA.pb
+++ b/ofl/albertsans/METADATA.pb
@@ -32,4 +32,17 @@ axes {
 source {
   repository_url: "https://github.com/usted/Albert-Sans"
   commit: "929c7d5058afd06870d1dd4ebc3a0ee98bb77420"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/AlbertSans[wght].ttf"
+    dest_file: "AlbertSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/AlbertSans-Italic[wght].ttf"
+    dest_file: "AlbertSans-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/albertsans/upstream.yaml b/ofl/albertsans/upstream.yaml
deleted file mode 100644
index 200b896e106462658507c305876d50e166284e81..0000000000000000000000000000000000000000
--- a/ofl/albertsans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/AlbertSans[wght].ttf: AlbertSans[wght].ttf
-  fonts/variable/AlbertSans-Italic[wght].ttf: AlbertSans-Italic[wght].ttf
-archive:
diff --git a/ofl/alegreya/METADATA.pb b/ofl/alegreya/METADATA.pb
index e4b1ff4a0dc38127af794c35d2f339292b50fcc2..78b3456312c62644fe064d17aac9feaa50461e37 100644
--- a/ofl/alegreya/METADATA.pb
+++ b/ofl/alegreya/METADATA.pb
@@ -21,9 +21,6 @@ fonts {
   full_name: "Alegreya Italic"
   copyright: "Copyright 2011 The Alegreya Project Authors (https://github.com/huertatipografica/Alegreya)"
 }
-source {
-  repository_url: "https://github.com/huertatipografica/Alegreya"
-}
 subsets: "cyrillic"
 subsets: "cyrillic-ext"
 subsets: "greek"
@@ -37,4 +34,20 @@ axes {
   min_value: 400.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/TypeNetwork/Alegreya"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Alegreya[wght].ttf"
+    dest_file: "Alegreya[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Alegreya-Italic[wght].ttf"
+    dest_file: "Alegreya-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 minisite_url: "https://huertatipografica.com/en/fonts/alegreya-ht-pro"
diff --git a/ofl/alegreya/upstream.yaml b/ofl/alegreya/upstream.yaml
deleted file mode 100644
index 4440a3458d1b668ed499ff66e604d9f12f50263e..0000000000000000000000000000000000000000
--- a/ofl/alegreya/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Alegreya[wght].ttf: Alegreya[wght].ttf
-  fonts/variable/Alegreya-Italic[wght].ttf: Alegreya-Italic[wght].ttf
-repository_url: https://github.com/TypeNetwork/Alegreya
diff --git a/ofl/aleo/METADATA.pb b/ofl/aleo/METADATA.pb
index 291043163d77c4e8b2aa3d5d97e2a76d0db126e9..c8db81b52232e1177ecdba51a40fb8f2a1a0da0e 100644
--- a/ofl/aleo/METADATA.pb
+++ b/ofl/aleo/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/AlessioLaiso/aleo"
   commit: "ce875e48d9983031648e87f38b7a269f4fbf5eb5"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Aleo[wght].ttf"
+    dest_file: "Aleo[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Aleo-Italic[wght].ttf"
+    dest_file: "Aleo-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SLAB_SERIF"
diff --git a/ofl/aleo/upstream.yaml b/ofl/aleo/upstream.yaml
deleted file mode 100644
index 6730362c23f21f79f5b5eac500def632dd50a12f..0000000000000000000000000000000000000000
--- a/ofl/aleo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Aleo[wght].ttf: Aleo[wght].ttf
-  fonts/variable/Aleo-Italic[wght].ttf: Aleo-Italic[wght].ttf
-archive:
diff --git a/ofl/alexandria/METADATA.pb b/ofl/alexandria/METADATA.pb
index aac208818edd8125e4b2345858cf99cde1fdf39a..86c4e5d9042b2d7fcb4b3844e527b16bea0a9a61 100644
--- a/ofl/alexandria/METADATA.pb
+++ b/ofl/alexandria/METADATA.pb
@@ -25,5 +25,18 @@ axes {
 source {
   repository_url: "https://github.com/Gue3bara/Alexandria"
   commit: "cee89798e4b38c8df61477a646aa9c111314e6ae"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Alexandria[wght].ttf"
+    dest_file: "Alexandria[wght].ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/alexandria/upstream.yaml b/ofl/alexandria/upstream.yaml
deleted file mode 100644
index 19a9a471541e559af1da6eac6a9f0717619fd345..0000000000000000000000000000000000000000
--- a/ofl/alexandria/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  fonts/variable/Alexandria[wght].ttf: Alexandria[wght].ttf
-archive:
diff --git a/ofl/alexbrush/METADATA.pb b/ofl/alexbrush/METADATA.pb
index 84cc676b001754a90c2b687f1e75719a6cff7e09..a63a31cf1b6be9fe960f4a4dd7afe0f628169627 100644
--- a/ofl/alexbrush/METADATA.pb
+++ b/ofl/alexbrush/METADATA.pb
@@ -19,4 +19,9 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/alex-brush"
   commit: "1a50bd10383f6c5416f5b4806a9368fd2009ea8c"
+  files {
+    source_file: "fonts/ttf/AlexBrush-Regular.ttf"
+    dest_file: "AlexBrush-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/alexbrush/upstream.yaml b/ofl/alexbrush/upstream.yaml
deleted file mode 100644
index fc337dd30beaaf0f7f40d6dc7b11ce9f7af5e579..0000000000000000000000000000000000000000
--- a/ofl/alexbrush/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: main
-files:
-  fonts/ttf/AlexBrush-Regular.ttf: AlexBrush-Regular.ttf
-archive:
diff --git a/ofl/alice/METADATA.pb b/ofl/alice/METADATA.pb
index 08855836e2eafc23e6059753dc4fe11516392d5e..272f4211ab1d9f458f0d27dc026b9f06e3dc13c5 100644
--- a/ofl/alice/METADATA.pb
+++ b/ofl/alice/METADATA.pb
@@ -17,3 +17,15 @@ subsets: "cyrillic-ext"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/cyrealtype/Alice"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Alice-Regular.ttf"
+    dest_file: "Alice-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/alice/upstream.yaml b/ofl/alice/upstream.yaml
deleted file mode 100644
index 32755c8514a88b7a870338ea94096d4a04f04201..0000000000000000000000000000000000000000
--- a/ofl/alice/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Alice-Regular.ttf: Alice-Regular.ttf
-repository_url: https://github.com/cyrealtype/Alice
diff --git a/ofl/alike/METADATA.pb b/ofl/alike/METADATA.pb
index e8608c7b5f667c666192365b6db51ea0233513c5..1d381cdf18dd30802212437192fa85e2f7b340cf 100644
--- a/ofl/alike/METADATA.pb
+++ b/ofl/alike/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/cyrealtype/Alike"
   commit: "2de9216949bad46e02460fcb9e455be87d75462d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Alike-Regular.ttf"
+    dest_file: "Alike-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
diff --git a/ofl/alike/upstream.yaml b/ofl/alike/upstream.yaml
deleted file mode 100644
index a7030d633d72bce7dc5f84cdfadabf6410dcba28..0000000000000000000000000000000000000000
--- a/ofl/alike/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Alike-Regular.ttf: Alike-Regular.ttf
-archive:
diff --git a/ofl/alikeangular/METADATA.pb b/ofl/alikeangular/METADATA.pb
index a165f0ea5f1313090ac387a4e1624dedc78a6a5f..a38966f5c3a3eb88f29f0d7dcc7e68eade1770b2 100644
--- a/ofl/alikeangular/METADATA.pb
+++ b/ofl/alikeangular/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/cyrealtype/Alike-Angular"
   commit: "20765691758ef999907b9a20950d4f57f62de1d1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/AlikeAngular-Regular.ttf"
+    dest_file: "AlikeAngular-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/alikeangular/upstream.yaml b/ofl/alikeangular/upstream.yaml
deleted file mode 100644
index ce84c85a814735144656e00918c0d8f4ec1b05dc..0000000000000000000000000000000000000000
--- a/ofl/alikeangular/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/AlikeAngular-Regular.ttf: AlikeAngular-Regular.ttf
-archive:
diff --git a/ofl/alkalami/METADATA.pb b/ofl/alkalami/METADATA.pb
index 09e901e14e007ac3751635f60aca852edb1faed9..dd76b2a6ca8a416f6f6b2a5cd320879bb532179d 100644
--- a/ofl/alkalami/METADATA.pb
+++ b/ofl/alkalami/METADATA.pb
@@ -19,5 +19,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-alkalami"
   archive_url: "https://github.com/silnrsi/font-alkalami/releases/download/v3.000/Alkalami-3.000.zip"
+  files {
+    source_file: "Alkalami-3.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Alkalami-3.000/Alkalami-Regular.ttf"
+    dest_file: "Alkalami-Regular.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/alkalami/upstream.yaml b/ofl/alkalami/upstream.yaml
deleted file mode 100644
index 88a32de6637e1bbf15ad0d17ebd328cbf1b2a4e7..0000000000000000000000000000000000000000
--- a/ofl/alkalami/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/silnrsi/font-alkalami/releases/download/v3.000/Alkalami-3.000.zip
-branch: master
-files:
-  Alkalami-3.000/OFL.txt: OFL.txt
-  Alkalami-3.000/Alkalami-Regular.ttf: Alkalami-Regular.ttf
diff --git a/ofl/alkatra/METADATA.pb b/ofl/alkatra/METADATA.pb
index 1b6d539803cfd46614256f09be28d805307c5f53..e5d10e35a07a075cbd3e2f41e817a8e1428384ab 100644
--- a/ofl/alkatra/METADATA.pb
+++ b/ofl/alkatra/METADATA.pb
@@ -26,4 +26,17 @@ axes {
 source {
   repository_url: "https://github.com/suman51284/Alkatra"
   commit: "0192cbf706f1dc560534c73153fd0e566323b31e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Alkatra[wght].ttf"
+    dest_file: "Alkatra[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
diff --git a/ofl/alkatra/upstream.yaml b/ofl/alkatra/upstream.yaml
deleted file mode 100644
index ee64f63467bd11fdef5cb1ec82aa0ece7ce4a51b..0000000000000000000000000000000000000000
--- a/ofl/alkatra/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Alkatra[wght].ttf: Alkatra[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/allison/METADATA.pb b/ofl/allison/METADATA.pb
index 5715e69bf993ff33d89b87de8c5acbc69cad01e3..b6041ca1cb36e9a24cec4d1f40fcc3e94b5468eb 100644
--- a/ofl/allison/METADATA.pb
+++ b/ofl/allison/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/allison"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Allison-Regular.ttf"
+    dest_file: "Allison-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/allison/upstream.yaml b/ofl/allison/upstream.yaml
deleted file mode 100644
index 3bcfa2b3c5098889905aab86474676256a414021..0000000000000000000000000000000000000000
--- a/ofl/allison/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Allison-Regular.ttf: Allison-Regular.ttf
-repository_url: https://github.com/googlefonts/allison
diff --git a/ofl/allura/METADATA.pb b/ofl/allura/METADATA.pb
index 0780f261478fb8fee23f7ffe7c22e0b23511d6fc..9faea1955514336a38cb2ad97552adb4a7f2394b 100644
--- a/ofl/allura/METADATA.pb
+++ b/ofl/allura/METADATA.pb
@@ -19,6 +19,11 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/allura"
   commit: "38a78b41510a10b1129c50fa5177b642bd2b4a19"
+  files {
+    source_file: "fonts/ttf/Allura-Regular.ttf"
+    dest_file: "Allura-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/allura/upstream.yaml b/ofl/allura/upstream.yaml
deleted file mode 100644
index 249f297d524963969e01eb3e5c50ce465735dc90..0000000000000000000000000000000000000000
--- a/ofl/allura/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: main
-files:
-  fonts/ttf/Allura-Regular.ttf: Allura-Regular.ttf
-archive:
diff --git a/ofl/alumnisans/METADATA.pb b/ofl/alumnisans/METADATA.pb
index 2ec29a7515d413fd96234b473c855af49efb2cb0..925e12e7387616c7c292fe0e7f450b06cc4562f0 100644
--- a/ofl/alumnisans/METADATA.pb
+++ b/ofl/alumnisans/METADATA.pb
@@ -32,5 +32,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/alumni"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/AlumniSans[wght].ttf"
+    dest_file: "AlumniSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/AlumniSans-Italic[wght].ttf"
+    dest_file: "AlumniSans-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/alumnisans/upstream.yaml b/ofl/alumnisans/upstream.yaml
deleted file mode 100644
index 87d0cc0555c8c438d6feeff517a50026382a26e2..0000000000000000000000000000000000000000
--- a/ofl/alumnisans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/AlumniSans[wght].ttf: AlumniSans[wght].ttf
-  fonts/variable/AlumniSans-Italic[wght].ttf: AlumniSans-Italic[wght].ttf
-repository_url: https://github.com/googlefonts/alumni
diff --git a/ofl/alumnisanscollegiateone/METADATA.pb b/ofl/alumnisanscollegiateone/METADATA.pb
index aba84600b3a20cd0f8fcac4429146e2e4d4b7ed6..a69a1925856f08556b1071e06e45fbb8209f11e3 100644
--- a/ofl/alumnisanscollegiateone/METADATA.pb
+++ b/ofl/alumnisanscollegiateone/METADATA.pb
@@ -30,6 +30,23 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/alumni-sans-collegiate"
   commit: "9dc96be1ead732fb1677c88632665e0bbf2e4ee2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/AlumniSansCollegiateOne-Regular.ttf"
+    dest_file: "AlumniSansCollegiateOne-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AlumniSansCollegiateOne-Italic.ttf"
+    dest_file: "AlumniSansCollegiateOne-Italic.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/alumnisanscollegiateone/upstream.yaml b/ofl/alumnisanscollegiateone/upstream.yaml
deleted file mode 100644
index 4e5a72110795e121f45402b71724d1dff4a1443e..0000000000000000000000000000000000000000
--- a/ofl/alumnisanscollegiateone/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/AlumniSansCollegiateOne-Regular.ttf: AlumniSansCollegiateOne-Regular.ttf
-  fonts/ttf/AlumniSansCollegiateOne-Italic.ttf: AlumniSansCollegiateOne-Italic.ttf
-archive:
diff --git a/ofl/alumnisansinlineone/METADATA.pb b/ofl/alumnisansinlineone/METADATA.pb
index a13b61fc81fd61fd9fb053c38ded4ca07ed8ad5c..eb2f4cd1273bcdec1cc3ef4ef69406f705b116b7 100644
--- a/ofl/alumnisansinlineone/METADATA.pb
+++ b/ofl/alumnisansinlineone/METADATA.pb
@@ -29,6 +29,23 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/alumni-sans-inline"
   commit: "81ea544e0ce487475c75df9545cd3df946c7ba26"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/AlumniSansInlineOne-Regular.ttf"
+    dest_file: "AlumniSansInlineOne-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AlumniSansInlineOne-Italic.ttf"
+    dest_file: "AlumniSansInlineOne-Italic.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/alumnisansinlineone/upstream.yaml b/ofl/alumnisansinlineone/upstream.yaml
deleted file mode 100644
index 3b775ee4b4121eceeff3c0c97df9386d3111cede..0000000000000000000000000000000000000000
--- a/ofl/alumnisansinlineone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/AlumniSansInlineOne-Regular.ttf: AlumniSansInlineOne-Regular.ttf
-  fonts/ttf/AlumniSansInlineOne-Italic.ttf: AlumniSansInlineOne-Italic.ttf
diff --git a/ofl/alumnisanspinstripe/METADATA.pb b/ofl/alumnisanspinstripe/METADATA.pb
index 7cb67c2db6a8387dd104aa1bd51d5e7410d6c257..3a518edc4bf56f4da33607057eef059388f3f24b 100644
--- a/ofl/alumnisanspinstripe/METADATA.pb
+++ b/ofl/alumnisanspinstripe/METADATA.pb
@@ -31,6 +31,23 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/alumni-sans-pinstripe"
   commit: "26cf834f2eca219b017478be9ea1387c78756e78"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/AlumniSansPinstripe-Regular.ttf"
+    dest_file: "AlumniSansPinstripe-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AlumniSansPinstripe-Italic.ttf"
+    dest_file: "AlumniSansPinstripe-Italic.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/alumnisanspinstripe/upstream.yaml b/ofl/alumnisanspinstripe/upstream.yaml
deleted file mode 100644
index 997e127f6a6a1ba38f2f4131b68c0364c77c5ceb..0000000000000000000000000000000000000000
--- a/ofl/alumnisanspinstripe/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/AlumniSansPinstripe-Regular.ttf: AlumniSansPinstripe-Regular.ttf
-  fonts/ttf/AlumniSansPinstripe-Italic.ttf: AlumniSansPinstripe-Italic.ttf
diff --git a/ofl/amiriquran/METADATA.pb b/ofl/amiriquran/METADATA.pb
index 1422646925733a1f1d7b81e0e376dc6833a89181..203d511d4b2b9868d4c213e094ad0997613af8f8 100644
--- a/ofl/amiriquran/METADATA.pb
+++ b/ofl/amiriquran/METADATA.pb
@@ -15,8 +15,17 @@ fonts {
 subsets: "arabic"
 subsets: "latin"
 subsets: "menu"
-primary_script: "Arab"
 source {
   repository_url: "https://github.com/aliftype/amiri"
   commit: "066b49c136a42ef75f9317187e1b3d3a630032cb"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "gf_fonts/AmiriQuran-Regular.ttf"
+    dest_file: "AmiriQuran-Regular.ttf"
+  }
+  branch: "main"
 }
+primary_script: "Arab"
diff --git a/ofl/amiriquran/upstream.yaml b/ofl/amiriquran/upstream.yaml
deleted file mode 100644
index 59b210c1e787c1131ee06dee97b17ebf7f109e80..0000000000000000000000000000000000000000
--- a/ofl/amiriquran/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive:
-branch: main
-build: python3 -m venv venv && source venv/bin/activate  && pip install -r requirements.txt
-  && python fix-gf.py
-files:
-  OFL.txt: OFL.txt
-  gf_fonts/AmiriQuran-Regular.ttf: AmiriQuran-Regular.ttf
diff --git a/ofl/andadapro/METADATA.pb b/ofl/andadapro/METADATA.pb
index 61096aaa310e1c0dfb0697994debb432db2063e5..d267c7cab9c8822dbfe0e225fee8f8c29461f4b4 100644
--- a/ofl/andadapro/METADATA.pb
+++ b/ofl/andadapro/METADATA.pb
@@ -30,4 +30,20 @@ axes {
   min_value: 400.0
   max_value: 840.0
 }
+source {
+  repository_url: "https://github.com/huertatipografica/Andada-Pro"
+  files {
+    source_file: "fonts/variable/AndadaPro[wght].ttf"
+    dest_file: "AndadaPro[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/AndadaPro-Italic[wght].ttf"
+    dest_file: "AndadaPro-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 minisite_url: "https://huertatipografica.com/en/fonts/andada-ht-pro"
diff --git a/ofl/andadapro/upstream.yaml b/ofl/andadapro/upstream.yaml
deleted file mode 100644
index 6bb8a742a0e5b05d73d1159edc2a6d6ad32a7fc8..0000000000000000000000000000000000000000
--- a/ofl/andadapro/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/AndadaPro[wght].ttf: AndadaPro[wght].ttf
-  fonts/variable/AndadaPro-Italic[wght].ttf: AndadaPro-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/huertatipografica/Andada-Pro
diff --git a/ofl/andika/METADATA.pb b/ofl/andika/METADATA.pb
index cbedf7d7469e1a7a9432992772f2845c9caecd61..8aff2af98043943354982db8468b7a4e2455a93e 100644
--- a/ofl/andika/METADATA.pb
+++ b/ofl/andika/METADATA.pb
@@ -48,4 +48,25 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/silnrsi/font-andika"
   archive_url: "https://github.com/silnrsi/font-andika/releases/download/v6.101/Andika-6.101.zip"
+  files {
+    source_file: "Andika-6.101/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Andika-6.101/Andika-Regular.ttf"
+    dest_file: "Andika-Regular.ttf"
+  }
+  files {
+    source_file: "Andika-6.101/Andika-Italic.ttf"
+    dest_file: "Andika-Italic.ttf"
+  }
+  files {
+    source_file: "Andika-6.101/Andika-Bold.ttf"
+    dest_file: "Andika-Bold.ttf"
+  }
+  files {
+    source_file: "Andika-6.101/Andika-BoldItalic.ttf"
+    dest_file: "Andika-BoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/andika/upstream.yaml b/ofl/andika/upstream.yaml
deleted file mode 100644
index 084373703ae4663e319d1a62e18a6284d5429cfa..0000000000000000000000000000000000000000
--- a/ofl/andika/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-andika/releases/download/v6.101/Andika-6.101.zip
-branch: master
-files:
-  Andika-6.101/OFL.txt: OFL.txt
-  Andika-6.101/Andika-Regular.ttf: Andika-Regular.ttf
-  Andika-6.101/Andika-Italic.ttf: Andika-Italic.ttf
-  Andika-6.101/Andika-Bold.ttf: Andika-Bold.ttf
-  Andika-6.101/Andika-BoldItalic.ttf: Andika-BoldItalic.ttf
diff --git a/ofl/anekbangla/METADATA.pb b/ofl/anekbangla/METADATA.pb
index c2c9a9354950a34accd532d80191a84c960d1ba9..772934e9f96a758759b8246d6e0117ec7dc81313 100644
--- a/ofl/anekbangla/METADATA.pb
+++ b/ofl/anekbangla/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekBangla/variable/AnekBangla[wdth,wght].ttf"
+    dest_file: "AnekBangla[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekbangla/upstream.yaml b/ofl/anekbangla/upstream.yaml
deleted file mode 100644
index f99e33f29c77d4a04647f537318e77c95908e3b4..0000000000000000000000000000000000000000
--- a/ofl/anekbangla/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekBangla/variable/AnekBangla[wdth,wght].ttf: AnekBangla[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anekdevanagari/METADATA.pb b/ofl/anekdevanagari/METADATA.pb
index b811762d42af001f432eac1a7c141be772a0ac4d..50e540afefba864e6bf49ea7f8942ff3fb6c9951 100644
--- a/ofl/anekdevanagari/METADATA.pb
+++ b/ofl/anekdevanagari/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekDevanagari/variable/AnekDevanagari[wdth,wght].ttf"
+    dest_file: "AnekDevanagari[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekdevanagari/upstream.yaml b/ofl/anekdevanagari/upstream.yaml
deleted file mode 100644
index 1a433d0c4f4880ce416805a7c0fa7eef951fb063..0000000000000000000000000000000000000000
--- a/ofl/anekdevanagari/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekDevanagari/variable/AnekDevanagari[wdth,wght].ttf: AnekDevanagari[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anekgujarati/METADATA.pb b/ofl/anekgujarati/METADATA.pb
index 5cbdf78c1931a442a85cb6dd8c524431b0fb47c8..be8dc6a893288046cf2dd4c1fd646e9177ff2b96 100644
--- a/ofl/anekgujarati/METADATA.pb
+++ b/ofl/anekgujarati/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekGujarati/variable/AnekGujarati[wdth,wght].ttf"
+    dest_file: "AnekGujarati[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekgujarati/upstream.yaml b/ofl/anekgujarati/upstream.yaml
deleted file mode 100644
index 081b679d13be1615ebb99b7a27a553a60ebcfae2..0000000000000000000000000000000000000000
--- a/ofl/anekgujarati/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekGujarati/variable/AnekGujarati[wdth,wght].ttf: AnekGujarati[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anekgurmukhi/METADATA.pb b/ofl/anekgurmukhi/METADATA.pb
index 8aab765280950448fbcd1da333401d235041757b..8b5b42a69997bb7c94b8c883cf12f5fd04447096 100644
--- a/ofl/anekgurmukhi/METADATA.pb
+++ b/ofl/anekgurmukhi/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekGurmukhi/variable/AnekGurmukhi[wdth,wght].ttf"
+    dest_file: "AnekGurmukhi[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekgurmukhi/upstream.yaml b/ofl/anekgurmukhi/upstream.yaml
deleted file mode 100644
index 9ad759d7a28f9dd697d7b740d8e691a372282bc3..0000000000000000000000000000000000000000
--- a/ofl/anekgurmukhi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekGurmukhi/variable/AnekGurmukhi[wdth,wght].ttf: AnekGurmukhi[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anekkannada/METADATA.pb b/ofl/anekkannada/METADATA.pb
index 52ec09cd6e602922aa4e543f2b248dafbbdbf332..043c98313aae46328046d27569f8cf91c8d2f66c 100644
--- a/ofl/anekkannada/METADATA.pb
+++ b/ofl/anekkannada/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekKannada/variable/AnekKannada[wdth,wght].ttf"
+    dest_file: "AnekKannada[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekkannada/upstream.yaml b/ofl/anekkannada/upstream.yaml
deleted file mode 100644
index 4f52fff4459cd862ddf3ddfaee69ed0c320789fd..0000000000000000000000000000000000000000
--- a/ofl/anekkannada/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekKannada/variable/AnekKannada[wdth,wght].ttf: AnekKannada[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/aneklatin/METADATA.pb b/ofl/aneklatin/METADATA.pb
index d3d32f09b422fdfd3df00fcde7ef4bfe305ee3e8..1adda11e9612ddc8aec97cf60844493818a3c903 100644
--- a/ofl/aneklatin/METADATA.pb
+++ b/ofl/aneklatin/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekLatin/variable/AnekLatin[wdth,wght].ttf"
+    dest_file: "AnekLatin[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/aneklatin/upstream.yaml b/ofl/aneklatin/upstream.yaml
deleted file mode 100644
index 3bf6249369408a8b04ade9d76b55adb81c1c5fac..0000000000000000000000000000000000000000
--- a/ofl/aneklatin/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekLatin/variable/AnekLatin[wdth,wght].ttf: AnekLatin[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anekmalayalam/METADATA.pb b/ofl/anekmalayalam/METADATA.pb
index ca24fa5f9d6b6aaf8357acb6800e479a7f82d05b..6ab10b5174ee7796c80e99e6c5f0b108cd574219 100644
--- a/ofl/anekmalayalam/METADATA.pb
+++ b/ofl/anekmalayalam/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekMalayalam/variable/AnekMalayalam[wdth,wght].ttf"
+    dest_file: "AnekMalayalam[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekmalayalam/upstream.yaml b/ofl/anekmalayalam/upstream.yaml
deleted file mode 100644
index 6d6b876031125a2645d42e0edea0c18c8462e90d..0000000000000000000000000000000000000000
--- a/ofl/anekmalayalam/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekMalayalam/variable/AnekMalayalam[wdth,wght].ttf: AnekMalayalam[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anekodia/METADATA.pb b/ofl/anekodia/METADATA.pb
index b6b52a9a8f224bb22da5698468857cec9b794170..a18b85db4fc3c5f0d51db7f9974fce8825e85042 100644
--- a/ofl/anekodia/METADATA.pb
+++ b/ofl/anekodia/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekOdia/variable/AnekOdia[wdth,wght].ttf"
+    dest_file: "AnekOdia[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anekodia/upstream.yaml b/ofl/anekodia/upstream.yaml
deleted file mode 100644
index 19af2a19cf68933dbd2365be55e400d685cbc063..0000000000000000000000000000000000000000
--- a/ofl/anekodia/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekOdia/variable/AnekOdia[wdth,wght].ttf: AnekOdia[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anektamil/METADATA.pb b/ofl/anektamil/METADATA.pb
index 782951bce00c032cb53e1bd53d2255b778aebdd3..81815d99a614b6e0bc1fad84205428cfd9eae2bd 100644
--- a/ofl/anektamil/METADATA.pb
+++ b/ofl/anektamil/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekTamil/variable/AnekTamil[wdth,wght].ttf"
+    dest_file: "AnekTamil[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anektamil/upstream.yaml b/ofl/anektamil/upstream.yaml
deleted file mode 100644
index 8b9fe513fc8ca57d2378ca29a616bf535a73bd5f..0000000000000000000000000000000000000000
--- a/ofl/anektamil/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekTamil/variable/AnekTamil[wdth,wght].ttf: AnekTamil[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/anektelugu/METADATA.pb b/ofl/anektelugu/METADATA.pb
index cad3d8ecb5848635de6d78b67c377a1c01f55a75..b89092201f2c26031378eb290356110505fd9386 100644
--- a/ofl/anektelugu/METADATA.pb
+++ b/ofl/anektelugu/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Anek"
   commit: "34074c6b406f4112e20c7ad10254a6e954d0324b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/AnekTelugu/variable/AnekTelugu[wdth,wght].ttf"
+    dest_file: "AnekTelugu[wdth,wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/anektelugu/upstream.yaml b/ofl/anektelugu/upstream.yaml
deleted file mode 100644
index 6092c596ac91053491cb00bc832a64b7abddbfae..0000000000000000000000000000000000000000
--- a/ofl/anektelugu/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/AnekTelugu/variable/AnekTelugu[wdth,wght].ttf: AnekTelugu[wdth,wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/angkor/METADATA.pb b/ofl/angkor/METADATA.pb
index 84f1f3c5f7bc8a7816f65a08dd31d1544a87dfbe..a45fa666c845d7b1efe9cb0a4437f6133f298d7b 100644
--- a/ofl/angkor/METADATA.pb
+++ b/ofl/angkor/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Angkor"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Angkor-Regular.ttf"
+    dest_file: "Angkor-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/angkor/upstream.yaml b/ofl/angkor/upstream.yaml
deleted file mode 100644
index 8ada34fa5c098978ba510785c8f65abfb5cebef0..0000000000000000000000000000000000000000
--- a/ofl/angkor/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Angkor-Regular.ttf: Angkor-Regular.ttf
-repository_url: https://github.com/danhhong/Angkor.git
diff --git a/ofl/annapurnasil/METADATA.pb b/ofl/annapurnasil/METADATA.pb
index ee62db6cfd42d48635846ec02a928ff080bfa660..a1a4c2e2573c997b5df874eaa83020276e818198 100644
--- a/ofl/annapurnasil/METADATA.pb
+++ b/ofl/annapurnasil/METADATA.pb
@@ -30,5 +30,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/silnrsi/font-annapurna"
   archive_url: "https://github.com/silnrsi/font-annapurna/releases/download/v2.000/AnnapurnaSIL-2.000.zip"
+  files {
+    source_file: "AnnapurnaSIL-2.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "AnnapurnaSIL-2.000/AnnapurnaSIL-Regular.ttf"
+    dest_file: "AnnapurnaSIL-Regular.ttf"
+  }
+  files {
+    source_file: "AnnapurnaSIL-2.000/AnnapurnaSIL-Bold.ttf"
+    dest_file: "AnnapurnaSIL-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Deva"
diff --git a/ofl/annapurnasil/upstream.yaml b/ofl/annapurnasil/upstream.yaml
deleted file mode 100644
index a1bd38a615ac22a6762ed29755690c049e2f8e95..0000000000000000000000000000000000000000
--- a/ofl/annapurnasil/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/silnrsi/font-annapurna/releases/download/v2.000/AnnapurnaSIL-2.000.zip
-branch: master
-files:
-  AnnapurnaSIL-2.000/OFL.txt: OFL.txt
-  AnnapurnaSIL-2.000/AnnapurnaSIL-Regular.ttf: AnnapurnaSIL-Regular.ttf
-  AnnapurnaSIL-2.000/AnnapurnaSIL-Bold.ttf: AnnapurnaSIL-Bold.ttf
diff --git a/ofl/anta/METADATA.pb b/ofl/anta/METADATA.pb
index 31057b62e56465a83772a41ae73a68900a9cac52..56b1058be68cb25ae8f4502d7fa8fdb9f00237e5 100644
--- a/ofl/anta/METADATA.pb
+++ b/ofl/anta/METADATA.pb
@@ -20,4 +20,17 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/Typedesigners/Anta-Regular"
   commit: "7ef14d1901946d317cb3bc136a895ff6c74c246c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Anta-Regular.ttf"
+    dest_file: "Anta-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/anta/upstream.yaml b/ofl/anta/upstream.yaml
deleted file mode 100644
index 76419d70bdeadbf7a4c13e00d3f27914d3f87cfb..0000000000000000000000000000000000000000
--- a/ofl/anta/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Anta-Regular.ttf: Anta-Regular.ttf
diff --git a/ofl/anton/METADATA.pb b/ofl/anton/METADATA.pb
index d9a912672015f2a7334047c3c8798585928c1f92..040b1243a34e75525a4d37b10563a291da66bd4e 100644
--- a/ofl/anton/METADATA.pb
+++ b/ofl/anton/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/AntonFont"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/Anton-Regular.ttf"
+    dest_file: "Anton-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/anton/upstream.yaml b/ofl/anton/upstream.yaml
deleted file mode 100644
index 6899a382f40f103408a852ef7726a3b2af7a4819..0000000000000000000000000000000000000000
--- a/ofl/anton/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/Anton-Regular.ttf: Anton-Regular.ttf
-repository_url: https://github.com/googlefonts/AntonFont
diff --git a/ofl/antonio/METADATA.pb b/ofl/antonio/METADATA.pb
index 0f72a62f18f9e01f4df215e135307766dc3e3678..38c2bbd25dd9c9ecd6c2ee5c4e8aaefecf7e24ae 100644
--- a/ofl/antonio/METADATA.pb
+++ b/ofl/antonio/METADATA.pb
@@ -20,5 +20,21 @@ axes {
   min_value: 100.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/antonioFont"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/VF/Antonio[wght].ttf"
+    dest_file: "Antonio[wght].ttf"
+  }
+  branch: "main"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/antonio/upstream.yaml b/ofl/antonio/upstream.yaml
deleted file mode 100644
index cb8673e44df2b1a8a96bcc6d2636de54f2ebb0f0..0000000000000000000000000000000000000000
--- a/ofl/antonio/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/VF/Antonio[wght].ttf: Antonio[wght].ttf
-repository_url: https://github.com/googlefonts/antonioFont
diff --git a/ofl/anuphan/METADATA.pb b/ofl/anuphan/METADATA.pb
index 7c639f7ffda2c096ea7b72dc35b192c60d1aa78b..ce3f11c5425ed294475593fe6f53c6d28484e9ae 100644
--- a/ofl/anuphan/METADATA.pb
+++ b/ofl/anuphan/METADATA.pb
@@ -26,5 +26,18 @@ axes {
 source {
   repository_url: "https://github.com/cadsondemak/Anuphan"
   commit: "1d795ec6bd23806049aa4bf8cfe01c2f609402a9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Fonts/variable/Anuphan[wght].ttf"
+    dest_file: "Anuphan[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 primary_script: "Thai"
diff --git a/ofl/anuphan/upstream.yaml b/ofl/anuphan/upstream.yaml
deleted file mode 100644
index 620d3dad8dbe838dd72a49d5801880f890660c17..0000000000000000000000000000000000000000
--- a/ofl/anuphan/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Fonts/variable/Anuphan[wght].ttf: Anuphan[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/anybody/METADATA.pb b/ofl/anybody/METADATA.pb
index 737d0aa4786cd16dd441e234f12ffc07b5d0dd4e..44ae29f15bd5eb27b65729a29d51251a90d8a1ce 100644
--- a/ofl/anybody/METADATA.pb
+++ b/ofl/anybody/METADATA.pb
@@ -39,6 +39,19 @@ axes {
 source {
   repository_url: "https://github.com/Etcetera-Type-Co/Anybody"
   commit: "fe7b55cf9d1563348ad95ac8e05f43b81a420c31"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Anybody[wdth,wght].ttf"
+    dest_file: "Anybody[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Anybody-Italic[wdth,wght].ttf"
+    dest_file: "Anybody-Italic[wdth,wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/anybody/upstream.yaml b/ofl/anybody/upstream.yaml
deleted file mode 100644
index 09146586fcc7419a216e861375bdc2ab70e90e6d..0000000000000000000000000000000000000000
--- a/ofl/anybody/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Anybody[wdth,wght].ttf: Anybody[wdth,wght].ttf
-  fonts/variable/Anybody-Italic[wdth,wght].ttf: Anybody-Italic[wdth,wght].ttf
diff --git a/ofl/aoboshione/METADATA.pb b/ofl/aoboshione/METADATA.pb
index 1d676f9d32c02d0a8fb9fc47dec0512c730b23e0..5d1f0ca7e436700eaa0569aaeb17b3f589feada4 100644
--- a/ofl/aoboshione/METADATA.pb
+++ b/ofl/aoboshione/METADATA.pb
@@ -16,6 +16,22 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/matsuba723/Aoboshi"
+  files {
+    source_file: "fonts/ttf/AoboshiOne-Regular.ttf"
+    dest_file: "AoboshiOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/aoboshione/upstream.yaml b/ofl/aoboshione/upstream.yaml
deleted file mode 100644
index 0461631b53d930f2ad5bdc1e6eac40116b1e5557..0000000000000000000000000000000000000000
--- a/ofl/aoboshione/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/AoboshiOne-Regular.ttf: AoboshiOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/matsuba723/Aoboshi.git
diff --git a/ofl/archivo/METADATA.pb b/ofl/archivo/METADATA.pb
index 600102d8df97a95c89298dc16ce607c11d017ca1..ad1a5d73a63de5b056934b13ede4d23c321e3903 100644
--- a/ofl/archivo/METADATA.pb
+++ b/ofl/archivo/METADATA.pb
@@ -35,3 +35,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/Omnibus-Type/Archivo"
+  files {
+    source_file: "fonts/variable/Archivo[wdth,wght].ttf"
+    dest_file: "Archivo[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Archivo-Italic[wdth,wght].ttf"
+    dest_file: "Archivo-Italic[wdth,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/archivo/upstream.yaml b/ofl/archivo/upstream.yaml
deleted file mode 100644
index db7716b2e3fae8d695cf6e9625ebac99338e7eb9..0000000000000000000000000000000000000000
--- a/ofl/archivo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/Archivo[wdth,wght].ttf: Archivo[wdth,wght].ttf
-  fonts/variable/Archivo-Italic[wdth,wght].ttf: Archivo-Italic[wdth,wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Omnibus-Type/Archivo
diff --git a/ofl/archivonarrow/METADATA.pb b/ofl/archivonarrow/METADATA.pb
index cf8b9f61c83ae02c8be11787672ac51622c31166..d4f2782e9ffca9a69a1a13bcc0d0a91cc3142c63 100644
--- a/ofl/archivonarrow/METADATA.pb
+++ b/ofl/archivonarrow/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/Omnibus-Type/ArchivoNarrow"
   commit: "9793ec77b6682a26bc7a6ed523ca65cc3cb90aec"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/ArchivoNarrow[wght].ttf"
+    dest_file: "ArchivoNarrow[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/ArchivoNarrow-Italic[wght].ttf"
+    dest_file: "ArchivoNarrow-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/archivonarrow/upstream.yaml b/ofl/archivonarrow/upstream.yaml
deleted file mode 100644
index 5e01c196023dc472a22a8a9f6aaf913919c684d5..0000000000000000000000000000000000000000
--- a/ofl/archivonarrow/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/ArchivoNarrow[wght].ttf: ArchivoNarrow[wght].ttf
-  fonts/variable/ArchivoNarrow-Italic[wght].ttf: ArchivoNarrow-Italic[wght].ttf
-archive:
diff --git a/ofl/arefruqaaink/METADATA.pb b/ofl/arefruqaaink/METADATA.pb
index 28831cf57ab2e6c6a1f7ff7360b12900a1be8d78..7a77f27c41b79c86748c091aa1ff9f4b71315520 100644
--- a/ofl/arefruqaaink/METADATA.pb
+++ b/ofl/arefruqaaink/METADATA.pb
@@ -28,6 +28,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/aliftype/aref-ruqaa"
   archive_url: "https://github.com/aliftype/aref-ruqaa/releases/download/v1.005/ArefRuqaa-1.005.zip"
+  files {
+    source_file: "ArefRuqaa-1.005/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ArefRuqaa-1.005/ttf/ArefRuqaaInk-Regular.ttf"
+    dest_file: "ArefRuqaaInk-Regular.ttf"
+  }
+  files {
+    source_file: "ArefRuqaa-1.005/ttf/ArefRuqaaInk-Bold.ttf"
+    dest_file: "ArefRuqaaInk-Bold.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Arab"
 stroke: "SERIF"
diff --git a/ofl/arefruqaaink/upstream.yaml b/ofl/arefruqaaink/upstream.yaml
deleted file mode 100644
index ee176660dad1bd4e9840f3e400e41081c3b99c6c..0000000000000000000000000000000000000000
--- a/ofl/arefruqaaink/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-archive: https://github.com/aliftype/aref-ruqaa/releases/download/v1.005/ArefRuqaa-1.005.zip
-files:
-  ArefRuqaa-1.005/OFL.txt: OFL.txt
-  ArefRuqaa-1.005/ttf/ArefRuqaaInk-Regular.ttf: ArefRuqaaInk-Regular.ttf
-  ArefRuqaa-1.005/ttf/ArefRuqaaInk-Bold.ttf: ArefRuqaaInk-Bold.ttf
diff --git a/ofl/areyouserious/METADATA.pb b/ofl/areyouserious/METADATA.pb
index e77eaf3dc86dd50b98c490a63dfc91c194a46aa8..6de329651beaef233304f48f5976a69c04dc17bb 100644
--- a/ofl/areyouserious/METADATA.pb
+++ b/ofl/areyouserious/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/are-you-serious"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/AreYouSerious-Regular.ttf"
+    dest_file: "AreYouSerious-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/areyouserious/upstream.yaml b/ofl/areyouserious/upstream.yaml
deleted file mode 100644
index 2e7a4da2556917fed33d6fa6d42048c12ecb7279..0000000000000000000000000000000000000000
--- a/ofl/areyouserious/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/AreYouSerious-Regular.ttf: AreYouSerious-Regular.ttf
-repository_url: https://github.com/googlefonts/are-you-serious
diff --git a/ofl/arima/METADATA.pb b/ofl/arima/METADATA.pb
index 7600f6fbe81863b11cfec5a63b30c577d4016175..c3e7eaab36e5a7fb61ce92b68f20294e3167cbe5 100644
--- a/ofl/arima/METADATA.pb
+++ b/ofl/arima/METADATA.pb
@@ -28,4 +28,17 @@ axes {
 source {
   repository_url: "https://github.com/NDISCOVER/Arima-Font"
   commit: "c5fd72960f129076fbf3759d6d777cedcbceb468"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Arima[wght].ttf"
+    dest_file: "Arima[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
diff --git a/ofl/arima/upstream.yaml b/ofl/arima/upstream.yaml
deleted file mode 100644
index e698c67d8f63ac38a8c0a5e83678bc148080ed3f..0000000000000000000000000000000000000000
--- a/ofl/arima/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Arima[wght].ttf: Arima[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/arizonia/METADATA.pb b/ofl/arizonia/METADATA.pb
index 6522fa3cea52227829d571ffd3cd78a52fa40913..ac727af518cbd397dbaa35bf4bf560d7fe611e56 100644
--- a/ofl/arizonia/METADATA.pb
+++ b/ofl/arizonia/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/arizonia"
   commit: "e135e3351c17de6f0f12066e98d7af9abe1cd76e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Arizonia-Regular.ttf"
+    dest_file: "Arizonia-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/arizonia/upstream.yaml b/ofl/arizonia/upstream.yaml
deleted file mode 100644
index 5714a62fe5feb028fd9ff87971b8e35527d21a16..0000000000000000000000000000000000000000
--- a/ofl/arizonia/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Arizonia-Regular.ttf: Arizonia-Regular.ttf
diff --git a/ofl/aronesans/METADATA.pb b/ofl/aronesans/METADATA.pb
index e86e97e09c19599e66d4d908da18e7ee8224d953..b39c15e82b04a44df916d6dd007053bc9e83e7ae 100644
--- a/ofl/aronesans/METADATA.pb
+++ b/ofl/aronesans/METADATA.pb
@@ -29,5 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/niteeshy/ar-one-sans"
   commit: "a463b112ca9393f1904765e0f32891b849eb9cf1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/AROneSans[ARRR,wght].ttf"
+    dest_file: "AROneSans[ARRR,wght].ttf"
+  }
+  branch: "main"
 }
-
diff --git a/ofl/aronesans/upstream.yaml b/ofl/aronesans/upstream.yaml
deleted file mode 100644
index e5828bc78167c647872727a10ff777804a2d1460..0000000000000000000000000000000000000000
--- a/ofl/aronesans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/AROneSans[ARRR,wght].ttf: AROneSans[ARRR,wght].ttf
diff --git a/ofl/artifika/METADATA.pb b/ofl/artifika/METADATA.pb
index a3e071fd52c4a5f0abde926c3cffa3b8ea138fcd..a5d53689b10626dac1ae6eeaf10a4eef2f37b587 100644
--- a/ofl/artifika/METADATA.pb
+++ b/ofl/artifika/METADATA.pb
@@ -17,4 +17,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/cyrealtype/Artifika"
   commit: "50137a4bf13c4918f78d4b566d14ae3dde703456"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Artifika-Regular.ttf"
+    dest_file: "Artifika-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/artifika/upstream.yaml b/ofl/artifika/upstream.yaml
deleted file mode 100644
index 09c2e5c98584e9af7bfcf9e6664ed07e637d9845..0000000000000000000000000000000000000000
--- a/ofl/artifika/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Artifika-Regular.ttf: Artifika-Regular.ttf
-archive:
diff --git a/ofl/asap/METADATA.pb b/ofl/asap/METADATA.pb
index edc7eb291acd24e4a30111b6059a12d9b6e6631a..cce07b7fb444dbb4c3f30c2583d7f35b9d96d88e 100644
--- a/ofl/asap/METADATA.pb
+++ b/ofl/asap/METADATA.pb
@@ -38,4 +38,17 @@ axes {
 source {
   repository_url: "https://github.com/Omnibus-Type/Asap"
   commit: "927ab390d4ece9eaa70a3b16a6124baa9192e34c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Asap[wdth,wght].ttf"
+    dest_file: "Asap[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Asap-Italic[wdth,wght].ttf"
+    dest_file: "Asap-Italic[wdth,wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/asap/upstream.yaml b/ofl/asap/upstream.yaml
deleted file mode 100644
index a3ca45524cab3cf0614db13bcd4c60f72b4cba10..0000000000000000000000000000000000000000
--- a/ofl/asap/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Asap[wdth,wght].ttf: Asap[wdth,wght].ttf
-  fonts/variable/Asap-Italic[wdth,wght].ttf: Asap-Italic[wdth,wght].ttf
-archive:
diff --git a/ofl/asapcondensed/METADATA.pb b/ofl/asapcondensed/METADATA.pb
index 82bfc10785afaeac518e7dd324051856d458679b..6fd1cea2b2680c3f9e362b84b38c931679e7c499 100644
--- a/ofl/asapcondensed/METADATA.pb
+++ b/ofl/asapcondensed/METADATA.pb
@@ -154,4 +154,73 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/Omnibus-Type/Asap"
   commit: "927ab390d4ece9eaa70a3b16a6124baa9192e34c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-Black.ttf"
+    dest_file: "AsapCondensed-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-BlackItalic.ttf"
+    dest_file: "AsapCondensed-BlackItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-Bold.ttf"
+    dest_file: "AsapCondensed-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-BoldItalic.ttf"
+    dest_file: "AsapCondensed-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-ExtraBold.ttf"
+    dest_file: "AsapCondensed-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-ExtraBoldItalic.ttf"
+    dest_file: "AsapCondensed-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-ExtraLight.ttf"
+    dest_file: "AsapCondensed-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-ExtraLightItalic.ttf"
+    dest_file: "AsapCondensed-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-Light.ttf"
+    dest_file: "AsapCondensed-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-LightItalic.ttf"
+    dest_file: "AsapCondensed-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-Medium.ttf"
+    dest_file: "AsapCondensed-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-MediumItalic.ttf"
+    dest_file: "AsapCondensed-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-Regular.ttf"
+    dest_file: "AsapCondensed-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-Italic.ttf"
+    dest_file: "AsapCondensed-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-SemiBold.ttf"
+    dest_file: "AsapCondensed-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AsapCondensed-SemiBoldItalic.ttf"
+    dest_file: "AsapCondensed-SemiBoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/asapcondensed/upstream.yaml b/ofl/asapcondensed/upstream.yaml
deleted file mode 100644
index d2b76be7ee13a88171a2c6aaeb440f11866dc876..0000000000000000000000000000000000000000
--- a/ofl/asapcondensed/upstream.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/AsapCondensed-Black.ttf: AsapCondensed-Black.ttf
-  fonts/ttf/AsapCondensed-BlackItalic.ttf: AsapCondensed-BlackItalic.ttf
-  fonts/ttf/AsapCondensed-Bold.ttf: AsapCondensed-Bold.ttf
-  fonts/ttf/AsapCondensed-BoldItalic.ttf: AsapCondensed-BoldItalic.ttf
-  fonts/ttf/AsapCondensed-ExtraBold.ttf: AsapCondensed-ExtraBold.ttf
-  fonts/ttf/AsapCondensed-ExtraBoldItalic.ttf: AsapCondensed-ExtraBoldItalic.ttf
-  fonts/ttf/AsapCondensed-ExtraLight.ttf: AsapCondensed-ExtraLight.ttf
-  fonts/ttf/AsapCondensed-ExtraLightItalic.ttf: AsapCondensed-ExtraLightItalic.ttf
-  fonts/ttf/AsapCondensed-Light.ttf: AsapCondensed-Light.ttf
-  fonts/ttf/AsapCondensed-LightItalic.ttf: AsapCondensed-LightItalic.ttf
-  fonts/ttf/AsapCondensed-Medium.ttf: AsapCondensed-Medium.ttf
-  fonts/ttf/AsapCondensed-MediumItalic.ttf: AsapCondensed-MediumItalic.ttf
-  fonts/ttf/AsapCondensed-Regular.ttf: AsapCondensed-Regular.ttf
-  fonts/ttf/AsapCondensed-Italic.ttf: AsapCondensed-Italic.ttf
-  fonts/ttf/AsapCondensed-SemiBold.ttf: AsapCondensed-SemiBold.ttf
-  fonts/ttf/AsapCondensed-SemiBoldItalic.ttf: AsapCondensed-SemiBoldItalic.ttf
-archive:
diff --git a/ofl/asset/METADATA.pb b/ofl/asset/METADATA.pb
index 44941c7d131b101b6dc526d25d457cb238d5ad3a..f4ed2fb148954f637467a98447ec669a64cef679 100644
--- a/ofl/asset/METADATA.pb
+++ b/ofl/asset/METADATA.pb
@@ -21,6 +21,19 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/SorkinType/Asset"
   commit: "8b65aa032ccd4cd76c6e1e6e28bad4601210c8fe"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Asset-Regular.ttf"
+    dest_file: "Asset-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/asset/upstream.yaml b/ofl/asset/upstream.yaml
deleted file mode 100644
index 128a5d349eab890d9170e300527d313d2217c104..0000000000000000000000000000000000000000
--- a/ofl/asset/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Asset-Regular.ttf: Asset-Regular.ttf
-archive:
diff --git a/ofl/assistant/METADATA.pb b/ofl/assistant/METADATA.pb
index 89d0b5a92edc135523f9163a0bbadb9a1d5ca72b..9268f5fde4169482bb40666ee73d926e46af88e2 100644
--- a/ofl/assistant/METADATA.pb
+++ b/ofl/assistant/METADATA.pb
@@ -21,3 +21,39 @@ axes {
   min_value: 200.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/TypeNetwork/Assistant"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Assistant[wght].ttf"
+    dest_file: "Assistant[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Assistant-Bold.ttf"
+    dest_file: "static/Assistant-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Assistant-ExtraBold.ttf"
+    dest_file: "static/Assistant-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Assistant-ExtraLight.ttf"
+    dest_file: "static/Assistant-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Assistant-Light.ttf"
+    dest_file: "static/Assistant-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Assistant-Regular.ttf"
+    dest_file: "static/Assistant-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Assistant-SemiBold.ttf"
+    dest_file: "static/Assistant-SemiBold.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/assistant/upstream.yaml b/ofl/assistant/upstream.yaml
deleted file mode 100644
index c3c3bbd2d16ac4b29df742ebf093266387dad958..0000000000000000000000000000000000000000
--- a/ofl/assistant/upstream.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Assistant[wght].ttf: Assistant[wght].ttf
-  fonts/ttf/Assistant-Bold.ttf: static/Assistant-Bold.ttf
-  fonts/ttf/Assistant-ExtraBold.ttf: static/Assistant-ExtraBold.ttf
-  fonts/ttf/Assistant-ExtraLight.ttf: static/Assistant-ExtraLight.ttf
-  fonts/ttf/Assistant-Light.ttf: static/Assistant-Light.ttf
-  fonts/ttf/Assistant-Regular.ttf: static/Assistant-Regular.ttf
-  fonts/ttf/Assistant-SemiBold.ttf: static/Assistant-SemiBold.ttf
-repository_url: https://github.com/TypeNetwork/Assistant
diff --git a/ofl/atkinsonhyperlegible/METADATA.pb b/ofl/atkinsonhyperlegible/METADATA.pb
index e50fc39405200d00b126c9eed6108da3b925f749..bdbaa9c50f9069d273f32f3357c1991ac0e7cd3d 100644
--- a/ofl/atkinsonhyperlegible/METADATA.pb
+++ b/ofl/atkinsonhyperlegible/METADATA.pb
@@ -42,3 +42,31 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/atkinson-hyperlegible"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/AtkinsonHyperlegible-Regular.ttf"
+    dest_file: "AtkinsonHyperlegible-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AtkinsonHyperlegible-Bold.ttf"
+    dest_file: "AtkinsonHyperlegible-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AtkinsonHyperlegible-Italic.ttf"
+    dest_file: "AtkinsonHyperlegible-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/AtkinsonHyperlegible-BoldItalic.ttf"
+    dest_file: "AtkinsonHyperlegible-BoldItalic.ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/atkinsonhyperlegible/upstream.yaml b/ofl/atkinsonhyperlegible/upstream.yaml
deleted file mode 100644
index 929e78c4d044434b23c6d20bc8143d1c8cbe37e2..0000000000000000000000000000000000000000
--- a/ofl/atkinsonhyperlegible/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/AtkinsonHyperlegible-Regular.ttf: AtkinsonHyperlegible-Regular.ttf
-  fonts/ttf/AtkinsonHyperlegible-Bold.ttf: AtkinsonHyperlegible-Bold.ttf
-  fonts/ttf/AtkinsonHyperlegible-Italic.ttf: AtkinsonHyperlegible-Italic.ttf
-  fonts/ttf/AtkinsonHyperlegible-BoldItalic.ttf: AtkinsonHyperlegible-BoldItalic.ttf
-repository_url: https://github.com/googlefonts/atkinson-hyperlegible
diff --git a/ofl/aubrey/METADATA.pb b/ofl/aubrey/METADATA.pb
index 218c57eca9e5fbe663004e03d984751978498a86..8a0353b333f0beb82b86a43a575aeb23c6c955aa 100644
--- a/ofl/aubrey/METADATA.pb
+++ b/ofl/aubrey/METADATA.pb
@@ -14,3 +14,19 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/cyrealtype/Aubrey"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_US.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TTF/Aubrey-Regular.ttf"
+    dest_file: "Aubrey-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/aubrey/upstream.yaml b/ofl/aubrey/upstream.yaml
deleted file mode 100644
index f12eff921531ba93bc06d65ff3fc6d55c782e7c7..0000000000000000000000000000000000000000
--- a/ofl/aubrey/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_US.html: DESCRIPTION.en_us.html
-  fonts/TTF/Aubrey-Regular.ttf: Aubrey-Regular.ttf
-repository_url: https://github.com/cyrealtype/Aubrey
diff --git a/ofl/average/METADATA.pb b/ofl/average/METADATA.pb
index 573670b57e9441faf1142c3068617319533dd6d7..14aa800e08f087658f8b2ac2a6020ff970d45ff7 100644
--- a/ofl/average/METADATA.pb
+++ b/ofl/average/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/average"
   commit: "6583341221fb0625ba1b9c3ee2a7490d57df951f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Average-Regular.ttf"
+    dest_file: "Average-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/average/upstream.yaml b/ofl/average/upstream.yaml
deleted file mode 100644
index 33d0d5f293e1723abd874fe2f972d44faa0e5847..0000000000000000000000000000000000000000
--- a/ofl/average/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Average-Regular.ttf: Average-Regular.ttf
-archive:
diff --git a/ofl/azeretmono/METADATA.pb b/ofl/azeretmono/METADATA.pb
index 4b86d3ea57bcbbede3f8fca7ecceaddb6cc4deff..9a69f337485f1afa7ec00f2782ff3973f642de8e 100644
--- a/ofl/azeretmono/METADATA.pb
+++ b/ofl/azeretmono/METADATA.pb
@@ -29,3 +29,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/displaay/Azeret"
+  files {
+    source_file: "fonts/variable/AzeretMono[wght].ttf"
+    dest_file: "AzeretMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/AzeretMono-Italic[wght].ttf"
+    dest_file: "AzeretMono-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/azeretmono/upstream.yaml b/ofl/azeretmono/upstream.yaml
deleted file mode 100644
index 8d4598703479e7fea6b09fd85b13af3a39f5b1c6..0000000000000000000000000000000000000000
--- a/ofl/azeretmono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/variable/AzeretMono[wght].ttf: AzeretMono[wght].ttf
-  fonts/variable/AzeretMono-Italic[wght].ttf: AzeretMono-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/displaay/Azeret
diff --git a/ofl/babylonica/METADATA.pb b/ofl/babylonica/METADATA.pb
index f650406bdcbbc3e93e04ca53b2ce15a83e049454..64ebacd181780688ae2f1b7d0824542ecf5aa3ef 100644
--- a/ofl/babylonica/METADATA.pb
+++ b/ofl/babylonica/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/babylonica"
   commit: "7b1c733f74a11604a711e87f840010e0746cfcd1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Babylonica-Regular.ttf"
+    dest_file: "Babylonica-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/babylonica/upstream.yaml b/ofl/babylonica/upstream.yaml
deleted file mode 100644
index 2499c3ae88f6a1262d5c6a2c790de2cccc7e52b7..0000000000000000000000000000000000000000
--- a/ofl/babylonica/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Babylonica-Regular.ttf: Babylonica-Regular.ttf
diff --git a/ofl/bacasimeantique/METADATA.pb b/ofl/bacasimeantique/METADATA.pb
index c6af977aff283fb15ae873beed80461d88310bcd..a60d547c8d77c4fe891f71a8a801b192a80dd340 100644
--- a/ofl/bacasimeantique/METADATA.pb
+++ b/ofl/bacasimeantique/METADATA.pb
@@ -18,4 +18,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/docrepair-fonts/bacasime-antique-fonts"
   commit: "673db74ee28486bb370847e062a97a5f94cec2e0"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BacasimeAntique-Regular.ttf"
+    dest_file: "BacasimeAntique-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/bacasimeantique/upstream.yaml b/ofl/bacasimeantique/upstream.yaml
deleted file mode 100644
index e8f7bfda982f54952ab33f4170ebc47e112faf0f..0000000000000000000000000000000000000000
--- a/ofl/bacasimeantique/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BacasimeAntique-Regular.ttf: BacasimeAntique-Regular.ttf
-archive:
diff --git a/ofl/bagelfatone/METADATA.pb b/ofl/bagelfatone/METADATA.pb
index b4714fe935765dc2d43a113bd34a8f332bc81cf3..3ce98487957358aa73d44be2bb20d671651161b7 100644
--- a/ofl/bagelfatone/METADATA.pb
+++ b/ofl/bagelfatone/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/JAMO-TYPEFACE/BagelFat"
   commit: "5ff1333d3384611f499419a844e2b3006dc7cacd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/BagelFatOne-Regular.ttf"
+    dest_file: "BagelFatOne-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Kore"
diff --git a/ofl/bagelfatone/upstream.yaml b/ofl/bagelfatone/upstream.yaml
deleted file mode 100644
index 9754d6accd5a3f66bb6ae30a9fd2f3f886c88e85..0000000000000000000000000000000000000000
--- a/ofl/bagelfatone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/BagelFatOne-Regular.ttf: BagelFatOne-Regular.ttf
-archive:
diff --git a/ofl/bakbakone/METADATA.pb b/ofl/bakbakone/METADATA.pb
index e7847bfc0be573a9a99fd4c63ef580a1aeb2e6dc..ffb5898f7069c94435c956cd3dfef54e9e507f3b 100644
--- a/ofl/bakbakone/METADATA.pb
+++ b/ofl/bakbakone/METADATA.pb
@@ -16,5 +16,17 @@ subsets: "devanagari"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/bakbak"
+  files {
+    source_file: "fonts/ttf/BakbakOne-Regular.ttf"
+    dest_file: "BakbakOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bakbakone/upstream.yaml b/ofl/bakbakone/upstream.yaml
deleted file mode 100644
index 5e5bc8e82e2b09f290c543f243fcef20d1422bc3..0000000000000000000000000000000000000000
--- a/ofl/bakbakone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/ttf/BakbakOne-Regular.ttf: BakbakOne-Regular.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/bakbak.git
diff --git a/ofl/baloo2/METADATA.pb b/ofl/baloo2/METADATA.pb
index d9f48372562b2c62342e82546e09ccdfb2edbb78..007c1aa6d9a5bec99d512c0d290a6e3b72e5cb57 100644
--- a/ofl/baloo2/METADATA.pb
+++ b/ofl/baloo2/METADATA.pb
@@ -22,6 +22,22 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Baloo2[wght].ttf"
+    dest_file: "Baloo2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Deva"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/baloo2/upstream.yaml b/ofl/baloo2/upstream.yaml
deleted file mode 100644
index ca2963b974217e1bbdde26743a07f4a17ab10c9b..0000000000000000000000000000000000000000
--- a/ofl/baloo2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Baloo2[wght].ttf: Baloo2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/baloobhai2/METADATA.pb b/ofl/baloobhai2/METADATA.pb
index 2b1c638cda2d4bb58fe08a915db56b19a730435c..62711e09b1dadfef869f33c8e92b206057c46a18 100644
--- a/ofl/baloobhai2/METADATA.pb
+++ b/ofl/baloobhai2/METADATA.pb
@@ -22,6 +22,22 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooBhai2[wght].ttf"
+    dest_file: "BalooBhai2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Gujr"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/baloobhai2/upstream.yaml b/ofl/baloobhai2/upstream.yaml
deleted file mode 100644
index c32df32fbb6328be0c6d89af3728685ca245acbf..0000000000000000000000000000000000000000
--- a/ofl/baloobhai2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooBhai2[wght].ttf: BalooBhai2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/baloobhaijaan2/METADATA.pb b/ofl/baloobhaijaan2/METADATA.pb
index 89766307914c9326b10d513a36f7269b725f84f6..55d6124a1e5bc60c38ea7bd27ef0b6cf90bee096 100644
--- a/ofl/baloobhaijaan2/METADATA.pb
+++ b/ofl/baloobhaijaan2/METADATA.pb
@@ -25,6 +25,19 @@ axes {
 source {
   repository_url: "https://github.com/EkType/Baloo2-Variable"
   commit: "da4090c1dd5798a3e72d7138e379ee1f94d6349c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooBhaijaan2[wght].ttf"
+    dest_file: "BalooBhaijaan2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
 stroke: "SANS_SERIF"
diff --git a/ofl/baloobhaijaan2/upstream.yaml b/ofl/baloobhaijaan2/upstream.yaml
deleted file mode 100644
index 8aeb9971de2621d0d8a1d4400f7312fcf6105085..0000000000000000000000000000000000000000
--- a/ofl/baloobhaijaan2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooBhaijaan2[wght].ttf: BalooBhaijaan2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/baloobhaina2/METADATA.pb b/ofl/baloobhaina2/METADATA.pb
index 57e3ac2e9c605b0c280678c135ef9a858d461989..d3b361c9a938a22e3a50d2639bf497f851e56e9c 100644
--- a/ofl/baloobhaina2/METADATA.pb
+++ b/ofl/baloobhaina2/METADATA.pb
@@ -22,6 +22,22 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooBhaina2[wght].ttf"
+    dest_file: "BalooBhaina2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Orya"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/baloobhaina2/upstream.yaml b/ofl/baloobhaina2/upstream.yaml
deleted file mode 100644
index 3b1a6537e35fa341c22f2c17a2edc1c345bbd3cf..0000000000000000000000000000000000000000
--- a/ofl/baloobhaina2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooBhaina2[wght].ttf: BalooBhaina2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/baloochettan2/METADATA.pb b/ofl/baloochettan2/METADATA.pb
index 225f5fe0b36f24cb989507049658a9cae1ab993c..d3e2ce7c2dea3ad25d76f45d02f6180a6ec0ed78 100644
--- a/ofl/baloochettan2/METADATA.pb
+++ b/ofl/baloochettan2/METADATA.pb
@@ -22,6 +22,22 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooChettan2[wght].ttf"
+    dest_file: "BalooChettan2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Mlym"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/baloochettan2/upstream.yaml b/ofl/baloochettan2/upstream.yaml
deleted file mode 100644
index afd133c37626b967a319f1358a752f1b69b32016..0000000000000000000000000000000000000000
--- a/ofl/baloochettan2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooChettan2[wght].ttf: BalooChettan2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/balooda2/METADATA.pb b/ofl/balooda2/METADATA.pb
index 1f147f40f53ed6b3f1030cd22f4e8da64c15a2f2..556e9868f9589985b23f976417f1491e02378a15 100644
--- a/ofl/balooda2/METADATA.pb
+++ b/ofl/balooda2/METADATA.pb
@@ -22,6 +22,22 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooDa2[wght].ttf"
+    dest_file: "BalooDa2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Beng"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/balooda2/upstream.yaml b/ofl/balooda2/upstream.yaml
deleted file mode 100644
index b5b166f57bf254c90ae30ad4355e0ce80f78122c..0000000000000000000000000000000000000000
--- a/ofl/balooda2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooDa2[wght].ttf: BalooDa2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/baloopaaji2/METADATA.pb b/ofl/baloopaaji2/METADATA.pb
index 52684e7c3742b00e82355bc7e15ddb329034d212..da5c2245828d8b82797bf14e7c919822ce6723c4 100644
--- a/ofl/baloopaaji2/METADATA.pb
+++ b/ofl/baloopaaji2/METADATA.pb
@@ -22,6 +22,22 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooPaaji2[wght].ttf"
+    dest_file: "BalooPaaji2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Guru"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/baloopaaji2/upstream.yaml b/ofl/baloopaaji2/upstream.yaml
deleted file mode 100644
index bddd9e0d435b2467ea9a13b15a1e4e119c7b9256..0000000000000000000000000000000000000000
--- a/ofl/baloopaaji2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooPaaji2[wght].ttf: BalooPaaji2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/balootamma2/METADATA.pb b/ofl/balootamma2/METADATA.pb
index 8279d700fa6830ebfeef3210bd6718e7754dcdde..2ddfa632020e14fe1944f704f8c02272d02231bf 100644
--- a/ofl/balootamma2/METADATA.pb
+++ b/ofl/balootamma2/METADATA.pb
@@ -22,4 +22,20 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooTamma2[wght].ttf"
+    dest_file: "BalooTamma2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Knda"
diff --git a/ofl/balootamma2/upstream.yaml b/ofl/balootamma2/upstream.yaml
deleted file mode 100644
index f9a499428ac44f38b1aad090a72b1e3decf7c912..0000000000000000000000000000000000000000
--- a/ofl/balootamma2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooTamma2[wght].ttf: BalooTamma2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/balootammudu2/METADATA.pb b/ofl/balootammudu2/METADATA.pb
index 44ea08dae5a26c8151e6688db076e5db1bb38823..2c91b4255ebf26db3b186c65ab7bf6e4fb05f31a 100644
--- a/ofl/balootammudu2/METADATA.pb
+++ b/ofl/balootammudu2/METADATA.pb
@@ -22,4 +22,20 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooTammudu2[wght].ttf"
+    dest_file: "BalooTammudu2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Telu"
diff --git a/ofl/balootammudu2/upstream.yaml b/ofl/balootammudu2/upstream.yaml
deleted file mode 100644
index d4d42c2d972fec8bea49d470fd4daa6260e578a1..0000000000000000000000000000000000000000
--- a/ofl/balootammudu2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooTammudu2[wght].ttf: BalooTammudu2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/baloothambi2/METADATA.pb b/ofl/baloothambi2/METADATA.pb
index 66cef3ef7e831906a20e5139d91e16f57ecc159d..820afc2c7d69fe678e298551a0615fdb155242a2 100644
--- a/ofl/baloothambi2/METADATA.pb
+++ b/ofl/baloothambi2/METADATA.pb
@@ -22,4 +22,20 @@ axes {
   min_value: 400.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/EkType/Baloo2-Variable"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BalooThambi2[wght].ttf"
+    dest_file: "BalooThambi2[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 primary_script: "Taml"
diff --git a/ofl/baloothambi2/upstream.yaml b/ofl/baloothambi2/upstream.yaml
deleted file mode 100644
index a930752fa8d930e091526af1a964c93ad77031c0..0000000000000000000000000000000000000000
--- a/ofl/baloothambi2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BalooThambi2[wght].ttf: BalooThambi2[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/EkType/Baloo2-Variable
diff --git a/ofl/balsamiqsans/METADATA.pb b/ofl/balsamiqsans/METADATA.pb
index b4f11c181998ea27791306791fefec9802490378..171b146254a127c29f2eb732680ff16c2debdb6a 100644
--- a/ofl/balsamiqsans/METADATA.pb
+++ b/ofl/balsamiqsans/METADATA.pb
@@ -47,6 +47,23 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/balsamiq/balsamiqsans"
   archive_url: "https://github.com/balsamiq/balsamiqsans/releases/download/1.020/balsamiqsans-fonts.zip"
+  files {
+    source_file: "balsamiqsans-fonts/fonts/ttf/BalsamiqSans-Bold.ttf"
+    dest_file: "BalsamiqSans-Bold.ttf"
+  }
+  files {
+    source_file: "balsamiqsans-fonts/fonts/ttf/BalsamiqSans-BoldItalic.ttf"
+    dest_file: "BalsamiqSans-BoldItalic.ttf"
+  }
+  files {
+    source_file: "balsamiqsans-fonts/fonts/ttf/BalsamiqSans-Italic.ttf"
+    dest_file: "BalsamiqSans-Italic.ttf"
+  }
+  files {
+    source_file: "balsamiqsans-fonts/fonts/ttf/BalsamiqSans-Regular.ttf"
+    dest_file: "BalsamiqSans-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/balsamiqsans/upstream.yaml b/ofl/balsamiqsans/upstream.yaml
deleted file mode 100644
index c34da3ddb9ad7118ba34b8203b29330b0e1a0fa1..0000000000000000000000000000000000000000
--- a/ofl/balsamiqsans/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/balsamiq/balsamiqsans/releases/download/1.020/balsamiqsans-fonts.zip
-branch: main
-files:
-  balsamiqsans-fonts/fonts/ttf/BalsamiqSans-Bold.ttf: BalsamiqSans-Bold.ttf
-  balsamiqsans-fonts/fonts/ttf/BalsamiqSans-BoldItalic.ttf: BalsamiqSans-BoldItalic.ttf
-  balsamiqsans-fonts/fonts/ttf/BalsamiqSans-Italic.ttf: BalsamiqSans-Italic.ttf
-  balsamiqsans-fonts/fonts/ttf/BalsamiqSans-Regular.ttf: BalsamiqSans-Regular.ttf
diff --git a/ofl/bangers/METADATA.pb b/ofl/bangers/METADATA.pb
index 23f30fb135b35606eca77cf647472a0bbbcd39d3..6114dc6044d76c9259463e8ff295090c5a9b39c2 100644
--- a/ofl/bangers/METADATA.pb
+++ b/ofl/bangers/METADATA.pb
@@ -19,4 +19,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/bangers"
   commit: "7b1747307aeb617957a216213de28b14d3281d9d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Bangers-Regular.ttf"
+    dest_file: "Bangers-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/bangers/upstream.yaml b/ofl/bangers/upstream.yaml
deleted file mode 100644
index 66db44075362213c4f0a7ac962e350b5a4fc12d5..0000000000000000000000000000000000000000
--- a/ofl/bangers/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Bangers-Regular.ttf: Bangers-Regular.ttf
-archive:
diff --git a/ofl/baskervville/METADATA.pb b/ofl/baskervville/METADATA.pb
index 7bebe7d5880f22cf004bc567f03754312e896816..89e21b49ad36c0ec4168a07ce8ff330e82515562 100644
--- a/ofl/baskervville/METADATA.pb
+++ b/ofl/baskervville/METADATA.pb
@@ -27,4 +27,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/anrt-type/ANRT-Baskervville"
   commit: "11a43fe1ef8b4c23aff9f24c218412d15cca54fd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Baskervville-Regular.ttf"
+    dest_file: "Baskervville-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Baskervville-Italic.ttf"
+    dest_file: "Baskervville-Italic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/baskervville/upstream.yaml b/ofl/baskervville/upstream.yaml
deleted file mode 100644
index 546a55fc7588346bcfa00615fab74c8ffb7c8686..0000000000000000000000000000000000000000
--- a/ofl/baskervville/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Baskervville-Regular.ttf: Baskervville-Regular.ttf
-  fonts/ttf/Baskervville-Italic.ttf: Baskervville-Italic.ttf
diff --git a/ofl/battambang/METADATA.pb b/ofl/battambang/METADATA.pb
index 6c00ac52048273a723ba45d4e985c61ef67c08b6..ce7ad5ecbf16f4a8122fad4d427486660960d8cd 100644
--- a/ofl/battambang/METADATA.pb
+++ b/ofl/battambang/METADATA.pb
@@ -51,3 +51,31 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Battambang"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Battambang-Thin.ttf"
+    dest_file: "Battambang-Thin.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Battambang-Light.ttf"
+    dest_file: "Battambang-Light.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Battambang-Regular.ttf"
+    dest_file: "Battambang-Regular.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Battambang-Bold.ttf"
+    dest_file: "Battambang-Bold.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Battambang-Black.ttf"
+    dest_file: "Battambang-Black.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/battambang/upstream.yaml b/ofl/battambang/upstream.yaml
deleted file mode 100644
index 615b81e53e00c413501cf1d04264d64cae68dbb7..0000000000000000000000000000000000000000
--- a/ofl/battambang/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Battambang-Thin.ttf: Battambang-Thin.ttf
-  Release/ttf/Battambang-Light.ttf: Battambang-Light.ttf
-  Release/ttf/Battambang-Regular.ttf: Battambang-Regular.ttf
-  Release/ttf/Battambang-Bold.ttf: Battambang-Bold.ttf
-  Release/ttf/Battambang-Black.ttf: Battambang-Black.ttf
-repository_url: https://github.com/danhhong/Battambang.git
diff --git a/ofl/bayon/METADATA.pb b/ofl/bayon/METADATA.pb
index 3f210856731ca7929ac8a5b0153fabffaf33d7ac..0bfada552174d0f78d64165296ccc3b13ae22b07 100644
--- a/ofl/bayon/METADATA.pb
+++ b/ofl/bayon/METADATA.pb
@@ -15,6 +15,18 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Bayon"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Bayon-Regular.ttf"
+    dest_file: "Bayon-Regular.ttf"
+  }
+  branch: "master"
+}
+primary_script: "Khmr"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
-primary_script: "Khmr"
\ No newline at end of file
diff --git a/ofl/bayon/upstream.yaml b/ofl/bayon/upstream.yaml
deleted file mode 100644
index d53cacba875bd7f3ec79a02310be236f1648f406..0000000000000000000000000000000000000000
--- a/ofl/bayon/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Bayon-Regular.ttf: Bayon-Regular.ttf
-repository_url: https://github.com/danhhong/Bayon.git
diff --git a/ofl/beaurivage/METADATA.pb b/ofl/beaurivage/METADATA.pb
index 859ff9399c65e79ce68052104de71f1878fc9164..0f556beb6f11f4ab6de161cda8fe9664043568a5 100644
--- a/ofl/beaurivage/METADATA.pb
+++ b/ofl/beaurivage/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/beau-rivage"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BeauRivage-Regular.ttf"
+    dest_file: "BeauRivage-Regular.ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/beaurivage/upstream.yaml b/ofl/beaurivage/upstream.yaml
deleted file mode 100644
index 9ec4bd60ae6978428558ad7c79545ffeaece2cf3..0000000000000000000000000000000000000000
--- a/ofl/beaurivage/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BeauRivage-Regular.ttf: BeauRivage-Regular.ttf
-repository_url: https://github.com/googlefonts/beau-rivage
diff --git a/ofl/belanosima/METADATA.pb b/ofl/belanosima/METADATA.pb
index 26119e13b32bcf793bc1deb17f4ba78b98e54955..1f80fab2dc7a1d991ecf838cf853e0972aaaf869 100644
--- a/ofl/belanosima/METADATA.pb
+++ b/ofl/belanosima/METADATA.pb
@@ -37,6 +37,27 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/docrepair-fonts/belanosima-fonts"
   commit: "b772e9b7c44f32e17230f255fac9cac4bfaaa07f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Belanosima-Regular.ttf"
+    dest_file: "Belanosima-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Belanosima-SemiBold.ttf"
+    dest_file: "Belanosima-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Belanosima-Bold.ttf"
+    dest_file: "Belanosima-Bold.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/belanosima/upstream.yaml b/ofl/belanosima/upstream.yaml
deleted file mode 100644
index 272788007051fe3cd489b034498f24dd35f9e2ac..0000000000000000000000000000000000000000
--- a/ofl/belanosima/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Belanosima-Regular.ttf: Belanosima-Regular.ttf
-  fonts/ttf/Belanosima-SemiBold.ttf: Belanosima-SemiBold.ttf
-  fonts/ttf/Belanosima-Bold.ttf: Belanosima-Bold.ttf
-archive:
diff --git a/ofl/belleza/METADATA.pb b/ofl/belleza/METADATA.pb
index 536f2bf33da48b3601a425a0817a30aba5a77fca..f4ad970d990dd221b32ffc8e0b73f4a6ad12a8a3 100644
--- a/ofl/belleza/METADATA.pb
+++ b/ofl/belleza/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/belleza"
   commit: "af3974fe84e2cfd236455a14d2c708264b692167"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Belleza-Regular.ttf"
+    dest_file: "Belleza-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/belleza/upstream.yaml b/ofl/belleza/upstream.yaml
deleted file mode 100644
index 8a09055bd3499d9d41d1c9f1048616d111f22684..0000000000000000000000000000000000000000
--- a/ofl/belleza/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Belleza-Regular.ttf: Belleza-Regular.ttf
-archive:
diff --git a/ofl/benne/METADATA.pb b/ofl/benne/METADATA.pb
index 228bd6fde0a1891a70d1d1e46cab3f48338b65f4..8a11509622b1275ad68297b6a32a6533aa98ba01 100644
--- a/ofl/benne/METADATA.pb
+++ b/ofl/benne/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "kannada"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/Benne"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "TTF/Benne-Regular.ttf"
+    dest_file: "Benne-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/benne/upstream.yaml b/ofl/benne/upstream.yaml
deleted file mode 100644
index 9e9fc5941cab05406b5c3dd659679c439928fba4..0000000000000000000000000000000000000000
--- a/ofl/benne/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  TTF/Benne-Regular.ttf: Benne-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/Benne.git
diff --git a/ofl/besley/METADATA.pb b/ofl/besley/METADATA.pb
index a1997ef4f8a2f7188687221f4c4c30b9d78c32d5..78e8d62d3496d743b88fd76c2977b46b687fde1a 100644
--- a/ofl/besley/METADATA.pb
+++ b/ofl/besley/METADATA.pb
@@ -29,5 +29,21 @@ axes {
   min_value: 400.0
   max_value: 900.0
 }
-stroke: "SLAB_SERIF"
+source {
+  repository_url: "https://github.com/indestructible-type/Besley"
+  files {
+    source_file: "fonts/variable/Besley[wght].ttf"
+    dest_file: "Besley[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Besley-Italic[wght].ttf"
+    dest_file: "Besley-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 minisite_url: "https://indestructibletype.com/Besley.html"
+stroke: "SLAB_SERIF"
diff --git a/ofl/besley/upstream.yaml b/ofl/besley/upstream.yaml
deleted file mode 100644
index 9ad4788e2278db15d2108e121ea27e2eb30bbdab..0000000000000000000000000000000000000000
--- a/ofl/besley/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/Besley[wght].ttf: Besley[wght].ttf
-  fonts/variable/Besley-Italic[wght].ttf: Besley-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/indestructible-type/Besley
diff --git a/ofl/bevan/METADATA.pb b/ofl/bevan/METADATA.pb
index d915d9e8853857a46a1c094577f0903ad4eac867..9d6adb0a757163cf442e82083928b0104ff1cf76 100644
--- a/ofl/bevan/METADATA.pb
+++ b/ofl/bevan/METADATA.pb
@@ -25,5 +25,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/BevanFont"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Bevan-Regular.ttf"
+    dest_file: "Bevan-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Bevan-Italic.ttf"
+    dest_file: "Bevan-Italic.ttf"
+  }
+  branch: "main"
+}
 stroke: "SLAB_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bevan/upstream.yaml b/ofl/bevan/upstream.yaml
deleted file mode 100644
index d85dbb9128278f2f89f099adf6090486b9222a94..0000000000000000000000000000000000000000
--- a/ofl/bevan/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Bevan-Regular.ttf: Bevan-Regular.ttf
-  fonts/ttf/Bevan-Italic.ttf: Bevan-Italic.ttf
-repository_url: https://github.com/googlefonts/BevanFont
diff --git a/ofl/bevietnampro/METADATA.pb b/ofl/bevietnampro/METADATA.pb
index a866ea91c862edd4e661624e3de54d75892d49dc..c1ba9cd3e74cb6bce58cef719f525ff3597c95dd 100644
--- a/ofl/bevietnampro/METADATA.pb
+++ b/ofl/bevietnampro/METADATA.pb
@@ -169,3 +169,83 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/bettergui/BeVietnamPro"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Black.ttf"
+    dest_file: "BeVietnamPro-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-BlackItalic.ttf"
+    dest_file: "BeVietnamPro-BlackItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Bold.ttf"
+    dest_file: "BeVietnamPro-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-BoldItalic.ttf"
+    dest_file: "BeVietnamPro-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-ExtraBold.ttf"
+    dest_file: "BeVietnamPro-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-ExtraBoldItalic.ttf"
+    dest_file: "BeVietnamPro-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-ExtraLight.ttf"
+    dest_file: "BeVietnamPro-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-ExtraLightItalic.ttf"
+    dest_file: "BeVietnamPro-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Italic.ttf"
+    dest_file: "BeVietnamPro-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Light.ttf"
+    dest_file: "BeVietnamPro-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-LightItalic.ttf"
+    dest_file: "BeVietnamPro-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Medium.ttf"
+    dest_file: "BeVietnamPro-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-MediumItalic.ttf"
+    dest_file: "BeVietnamPro-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Regular.ttf"
+    dest_file: "BeVietnamPro-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-SemiBold.ttf"
+    dest_file: "BeVietnamPro-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-SemiBoldItalic.ttf"
+    dest_file: "BeVietnamPro-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-Thin.ttf"
+    dest_file: "BeVietnamPro-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BeVietnamPro-ThinItalic.ttf"
+    dest_file: "BeVietnamPro-ThinItalic.ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/bevietnampro/upstream.yaml b/ofl/bevietnampro/upstream.yaml
deleted file mode 100644
index 8110382f716c4285823b29db005ad83a9432d9a6..0000000000000000000000000000000000000000
--- a/ofl/bevietnampro/upstream.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/BeVietnamPro-Black.ttf: BeVietnamPro-Black.ttf
-  fonts/ttf/BeVietnamPro-BlackItalic.ttf: BeVietnamPro-BlackItalic.ttf
-  fonts/ttf/BeVietnamPro-Bold.ttf: BeVietnamPro-Bold.ttf
-  fonts/ttf/BeVietnamPro-BoldItalic.ttf: BeVietnamPro-BoldItalic.ttf
-  fonts/ttf/BeVietnamPro-ExtraBold.ttf: BeVietnamPro-ExtraBold.ttf
-  fonts/ttf/BeVietnamPro-ExtraBoldItalic.ttf: BeVietnamPro-ExtraBoldItalic.ttf
-  fonts/ttf/BeVietnamPro-ExtraLight.ttf: BeVietnamPro-ExtraLight.ttf
-  fonts/ttf/BeVietnamPro-ExtraLightItalic.ttf: BeVietnamPro-ExtraLightItalic.ttf
-  fonts/ttf/BeVietnamPro-Italic.ttf: BeVietnamPro-Italic.ttf
-  fonts/ttf/BeVietnamPro-Light.ttf: BeVietnamPro-Light.ttf
-  fonts/ttf/BeVietnamPro-LightItalic.ttf: BeVietnamPro-LightItalic.ttf
-  fonts/ttf/BeVietnamPro-Medium.ttf: BeVietnamPro-Medium.ttf
-  fonts/ttf/BeVietnamPro-MediumItalic.ttf: BeVietnamPro-MediumItalic.ttf
-  fonts/ttf/BeVietnamPro-Regular.ttf: BeVietnamPro-Regular.ttf
-  fonts/ttf/BeVietnamPro-SemiBold.ttf: BeVietnamPro-SemiBold.ttf
-  fonts/ttf/BeVietnamPro-SemiBoldItalic.ttf: BeVietnamPro-SemiBoldItalic.ttf
-  fonts/ttf/BeVietnamPro-Thin.ttf: BeVietnamPro-Thin.ttf
-  fonts/ttf/BeVietnamPro-ThinItalic.ttf: BeVietnamPro-ThinItalic.ttf
-repository_url: https://github.com/bettergui/BeVietnamPro
diff --git a/ofl/bhutukaexpandedone/METADATA.pb b/ofl/bhutukaexpandedone/METADATA.pb
index 56afe607a52f453eb90047585e4b0498c8d59f32..55da4630da75d742c0515bee84d10929d6801d92 100644
--- a/ofl/bhutukaexpandedone/METADATA.pb
+++ b/ofl/bhutukaexpandedone/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "gurmukhi"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/erinmclaughlin/BhuTuka-Extended-One"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BhuTukaExpandedOne-Regular.ttf"
+    dest_file: "BhuTukaExpandedOne-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SLAB_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bhutukaexpandedone/upstream.yaml b/ofl/bhutukaexpandedone/upstream.yaml
deleted file mode 100644
index 688357196b75da0e34ce7913eda96affd37c1e83..0000000000000000000000000000000000000000
--- a/ofl/bhutukaexpandedone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BhuTukaExpandedOne-Regular.ttf: BhuTukaExpandedOne-Regular.ttf
-repository_url: https://github.com/erinmclaughlin/BhuTuka-Extended-One
diff --git a/ofl/bigshouldersdisplay/METADATA.pb b/ofl/bigshouldersdisplay/METADATA.pb
index 4a09cf211a77cdad45a2b741bbc555f6b48eb07c..9dd291103f2447c27ed5a7ce4bedd3b5f98c0c6d 100644
--- a/ofl/bigshouldersdisplay/METADATA.pb
+++ b/ofl/bigshouldersdisplay/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/xotypeco/big_shoulders"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Big-Shoulders/fonts/variable/display/BigShouldersDisplay[wght].ttf"
+    dest_file: "BigShouldersDisplay[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bigshouldersdisplay/upstream.yaml b/ofl/bigshouldersdisplay/upstream.yaml
deleted file mode 100644
index 5b2b5bd2ca748ececaa744f07ca6e02685a619d8..0000000000000000000000000000000000000000
--- a/ofl/bigshouldersdisplay/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Big-Shoulders/fonts/variable/display/BigShouldersDisplay[wght].ttf: BigShouldersDisplay[wght].ttf
-repository_url: https://github.com/xotypeco/big_shoulders
diff --git a/ofl/bigshouldersinlinedisplay/METADATA.pb b/ofl/bigshouldersinlinedisplay/METADATA.pb
index 1435909be611b3cf8c9e2db738cdb79596282f8d..1908ad651aef3f4c1774a1852e68f6a2a882e702 100644
--- a/ofl/bigshouldersinlinedisplay/METADATA.pb
+++ b/ofl/bigshouldersinlinedisplay/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/xotypeco/big_shoulders"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Big-Shoulders-Inline/fonts/variable/display/BigShouldersInlineDisplay[wght].ttf"
+    dest_file: "BigShouldersInlineDisplay[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bigshouldersinlinedisplay/upstream.yaml b/ofl/bigshouldersinlinedisplay/upstream.yaml
deleted file mode 100644
index 63842bc37179b331a20455b89eb908993788fe1b..0000000000000000000000000000000000000000
--- a/ofl/bigshouldersinlinedisplay/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Big-Shoulders-Inline/fonts/variable/display/BigShouldersInlineDisplay[wght].ttf: BigShouldersInlineDisplay[wght].ttf
-repository_url: https://github.com/xotypeco/big_shoulders
diff --git a/ofl/bigshouldersinlinetext/METADATA.pb b/ofl/bigshouldersinlinetext/METADATA.pb
index 8a74c470f3cf9108ca7b39b3aa712a31f2cbeb86..1f3a973c8eb7ca76965df6e271712ecbe7c88112 100644
--- a/ofl/bigshouldersinlinetext/METADATA.pb
+++ b/ofl/bigshouldersinlinetext/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/xotypeco/big_shoulders"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Big-Shoulders-Inline/fonts/variable/text/BigShouldersInlineText[wght].ttf"
+    dest_file: "BigShouldersInlineText[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bigshouldersinlinetext/upstream.yaml b/ofl/bigshouldersinlinetext/upstream.yaml
deleted file mode 100644
index 678b8993dffbb630f0d1e00825a4216e6b446e49..0000000000000000000000000000000000000000
--- a/ofl/bigshouldersinlinetext/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Big-Shoulders-Inline/fonts/variable/text/BigShouldersInlineText[wght].ttf: BigShouldersInlineText[wght].ttf
-repository_url: https://github.com/xotypeco/big_shoulders
diff --git a/ofl/bigshouldersstencildisplay/METADATA.pb b/ofl/bigshouldersstencildisplay/METADATA.pb
index daf3f5aefdc561be4c19b9586e1f6445da038b17..d4c389572fe858fc2e5061dd206847827fdb48f0 100644
--- a/ofl/bigshouldersstencildisplay/METADATA.pb
+++ b/ofl/bigshouldersstencildisplay/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/xotypeco/big_shoulders"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Big-Shoulders-Stencil/fonts/variable/display/BigShouldersStencilDisplay[wght].ttf"
+    dest_file: "BigShouldersStencilDisplay[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bigshouldersstencildisplay/upstream.yaml b/ofl/bigshouldersstencildisplay/upstream.yaml
deleted file mode 100644
index 44cceced446f2e6d7f04617863e54edefda1a729..0000000000000000000000000000000000000000
--- a/ofl/bigshouldersstencildisplay/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Big-Shoulders-Stencil/fonts/variable/display/BigShouldersStencilDisplay[wght].ttf: BigShouldersStencilDisplay[wght].ttf
-repository_url: https://github.com/xotypeco/big_shoulders
diff --git a/ofl/bigshouldersstenciltext/METADATA.pb b/ofl/bigshouldersstenciltext/METADATA.pb
index b1fd763182e4683b2bc0b88416036a125df6b85e..7411f830ee228315366be20d98011d9b820303a9 100644
--- a/ofl/bigshouldersstenciltext/METADATA.pb
+++ b/ofl/bigshouldersstenciltext/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/xotypeco/big_shoulders"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Big-Shoulders-Stencil/fonts/variable/text/BigShouldersStencilText[wght].ttf"
+    dest_file: "BigShouldersStencilText[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bigshouldersstenciltext/upstream.yaml b/ofl/bigshouldersstenciltext/upstream.yaml
deleted file mode 100644
index 3dc4df319d00831cd417b0c548bd34f100096e17..0000000000000000000000000000000000000000
--- a/ofl/bigshouldersstenciltext/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Big-Shoulders-Stencil/fonts/variable/text/BigShouldersStencilText[wght].ttf: BigShouldersStencilText[wght].ttf
-repository_url: https://github.com/xotypeco/big_shoulders
diff --git a/ofl/bigshoulderstext/METADATA.pb b/ofl/bigshoulderstext/METADATA.pb
index 256425805de337e83277e7fa92a4c8d28d58816d..fbf3ec00a47a53fdcfb25f7f631375550ca95281 100644
--- a/ofl/bigshoulderstext/METADATA.pb
+++ b/ofl/bigshoulderstext/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/xotypeco/big_shoulders"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Big-Shoulders/fonts/variable/text/BigShouldersText[wght].ttf"
+    dest_file: "BigShouldersText[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/bigshoulderstext/upstream.yaml b/ofl/bigshoulderstext/upstream.yaml
deleted file mode 100644
index f23c8d8b145bf23149d6c7d97a697dbb34b81d68..0000000000000000000000000000000000000000
--- a/ofl/bigshoulderstext/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Big-Shoulders/fonts/variable/text/BigShouldersText[wght].ttf: BigShouldersText[wght].ttf
-repository_url: https://github.com/xotypeco/big_shoulders
diff --git a/ofl/bilbo/METADATA.pb b/ofl/bilbo/METADATA.pb
index 05bfd2db92cde38d0ff1ea62784bc24962d64169..a371eb3aeb3df4ba841b27602900ad416c17d28f 100644
--- a/ofl/bilbo/METADATA.pb
+++ b/ofl/bilbo/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/bilbo"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Bilbo-Regular.ttf"
+    dest_file: "Bilbo-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/bilbo/upstream.yaml b/ofl/bilbo/upstream.yaml
deleted file mode 100644
index c5e4ab350eaf73fe8d2ba503901b1edd573ff271..0000000000000000000000000000000000000000
--- a/ofl/bilbo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Bilbo-Regular.ttf: Bilbo-Regular.ttf
-repository_url: https://github.com/googlefonts/bilbo
diff --git a/ofl/biorhyme/METADATA.pb b/ofl/biorhyme/METADATA.pb
index a678de11515e81d64be4e269c4f93d86162a7137..b3509620bc073899fd8840c54ae55267a2f82e63 100644
--- a/ofl/biorhyme/METADATA.pb
+++ b/ofl/biorhyme/METADATA.pb
@@ -28,5 +28,14 @@ axes {
 source {
   repository_url: "https://github.com/aoifemooney/makingbiorhyme"
   commit: "b3c0488559ad7c42e11b71e65d255344faff63b9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BioRhyme[wdth,wght].ttf"
+    dest_file: "BioRhyme[wdth,wght].ttf"
+  }
+  branch: "gh-pages"
 }
 stroke: "SLAB_SERIF"
diff --git a/ofl/biorhyme/upstream.yaml b/ofl/biorhyme/upstream.yaml
deleted file mode 100644
index acf837bf04591a83ffd1d0f39b3a501b92c43ae2..0000000000000000000000000000000000000000
--- a/ofl/biorhyme/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: gh-pages
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BioRhyme[wdth,wght].ttf: BioRhyme[wdth,wght].ttf
-archive:
diff --git a/ofl/birthstone/METADATA.pb b/ofl/birthstone/METADATA.pb
index 68914c97374b0589cc910d3a8dc27a4b9fbcfcde..b54c1e2f40f86e6a2ba137bb0491e9fdb8eb089e 100644
--- a/ofl/birthstone/METADATA.pb
+++ b/ofl/birthstone/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/birthstone"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Birthstone-Regular.ttf"
+    dest_file: "Birthstone-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/birthstone/upstream.yaml b/ofl/birthstone/upstream.yaml
deleted file mode 100644
index 0aee23e74abd67bc7fe580f5de5503b7404baa1a..0000000000000000000000000000000000000000
--- a/ofl/birthstone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Birthstone-Regular.ttf: Birthstone-Regular.ttf
-repository_url: https://github.com/googlefonts/birthstone
diff --git a/ofl/birthstonebounce/METADATA.pb b/ofl/birthstonebounce/METADATA.pb
index bda7160d963898f697c51567e8d7612ecd584c5d..6d6507a35b67da95787c24c5f5cd6e335048729b 100644
--- a/ofl/birthstonebounce/METADATA.pb
+++ b/ofl/birthstonebounce/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/birthstone-bounce"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BirthstoneBounce-Regular.ttf"
+    dest_file: "BirthstoneBounce-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BirthstoneBounce-Medium.ttf"
+    dest_file: "BirthstoneBounce-Medium.ttf"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/birthstonebounce/upstream.yaml b/ofl/birthstonebounce/upstream.yaml
deleted file mode 100644
index 7bddac114e28ad69a7becbdd72d108dc59a7ebc1..0000000000000000000000000000000000000000
--- a/ofl/birthstonebounce/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BirthstoneBounce-Regular.ttf: BirthstoneBounce-Regular.ttf
-  fonts/ttf/BirthstoneBounce-Medium.ttf: BirthstoneBounce-Medium.ttf
-repository_url: https://github.com/googlefonts/birthstone-bounce
diff --git a/ofl/bitter/METADATA.pb b/ofl/bitter/METADATA.pb
index 851fbdfbc238c3174847bf7653bdb85186140f23..e50b0145ce275bd6a97628fdf68d9bab490005a2 100644
--- a/ofl/bitter/METADATA.pb
+++ b/ofl/bitter/METADATA.pb
@@ -32,3 +32,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/solmatas/BitterPro"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Bitter[wght].ttf"
+    dest_file: "Bitter[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Bitter-Italic[wght].ttf"
+    dest_file: "Bitter-Italic[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/bitter/upstream.yaml b/ofl/bitter/upstream.yaml
deleted file mode 100644
index e2d066aaeefc4ec2d12120a5a4bf394f1ba6f784..0000000000000000000000000000000000000000
--- a/ofl/bitter/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Bitter[wght].ttf: Bitter[wght].ttf
-  fonts/variable/Bitter-Italic[wght].ttf: Bitter-Italic[wght].ttf
-repository_url: https://github.com/solmatas/BitterPro
diff --git a/ofl/bizudgothic/METADATA.pb b/ofl/bizudgothic/METADATA.pb
index f26adbb0c8d819544a15c2e6125a2af03cc2671c..05a1e9df70d733434017f2a07312e772b18eb154 100644
--- a/ofl/bizudgothic/METADATA.pb
+++ b/ofl/bizudgothic/METADATA.pb
@@ -30,5 +30,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/morisawa-biz-ud-gothic"
   commit: "38953aa0afd6937b9caa899e18f4550db7298d69"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/BIZUDGothic-Regular.ttf"
+    dest_file: "BIZUDGothic-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BIZUDGothic-Bold.ttf"
+    dest_file: "BIZUDGothic-Bold.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Jpan"
diff --git a/ofl/bizudgothic/upstream.yaml b/ofl/bizudgothic/upstream.yaml
deleted file mode 100644
index e01b1bfdf47a90afe2fe60ab3b218645cafa18ca..0000000000000000000000000000000000000000
--- a/ofl/bizudgothic/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/BIZUDGothic-Regular.ttf: BIZUDGothic-Regular.ttf
-  fonts/ttf/BIZUDGothic-Bold.ttf: BIZUDGothic-Bold.ttf
diff --git a/ofl/bizudmincho/METADATA.pb b/ofl/bizudmincho/METADATA.pb
index 8337aafbc764c7ba2e0b4b8519ccfd3470882661..6f19b795f986a716b0581048738afe67f5b92b12 100644
--- a/ofl/bizudmincho/METADATA.pb
+++ b/ofl/bizudmincho/METADATA.pb
@@ -28,7 +28,16 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/googlefonts/morisawa-biz-ud-mincho.git"
+  repository_url: "https://github.com/googlefonts/morisawa-biz-ud-mincho"
   commit: "c30a6221b1f3d09afae9137ffe73c7cbec649947"
+  files {
+    source_file: "fonts/ttf/BIZUDMincho-Regular.ttf"
+    dest_file: "BIZUDMincho-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BIZUDMincho-Bold.ttf"
+    dest_file: "BIZUDMincho-Bold.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Jpan"
diff --git a/ofl/bizudmincho/upstream.yaml b/ofl/bizudmincho/upstream.yaml
deleted file mode 100644
index 54873c4069ff13ad5d0a1c4d4a435c06fdc2785e..0000000000000000000000000000000000000000
--- a/ofl/bizudmincho/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  fonts/ttf/BIZUDMincho-Regular.ttf: BIZUDMincho-Regular.ttf
-  fonts/ttf/BIZUDMincho-Bold.ttf: BIZUDMincho-Bold.ttf
diff --git a/ofl/bizudpgothic/METADATA.pb b/ofl/bizudpgothic/METADATA.pb
index 6e85ac3acbeb9d6fafc37035e10e3a3d3cdebce3..6dc99d88959ef27fcae837870077aab82db7ac9c 100644
--- a/ofl/bizudpgothic/METADATA.pb
+++ b/ofl/bizudpgothic/METADATA.pb
@@ -30,5 +30,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/morisawa-biz-ud-gothic"
   commit: "18934af56b9c003ca58c54bffbf226848cb11032"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/BIZUDPGothic-Regular.ttf"
+    dest_file: "BIZUDPGothic-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BIZUDPGothic-Bold.ttf"
+    dest_file: "BIZUDPGothic-Bold.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Jpan"
diff --git a/ofl/bizudpgothic/upstream.yaml b/ofl/bizudpgothic/upstream.yaml
deleted file mode 100644
index 1ab7112c54d9d91d0410d7adb806c7f088a0009b..0000000000000000000000000000000000000000
--- a/ofl/bizudpgothic/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/BIZUDPGothic-Regular.ttf: BIZUDPGothic-Regular.ttf
-  fonts/ttf/BIZUDPGothic-Bold.ttf: BIZUDPGothic-Bold.ttf
diff --git a/ofl/bizudpmincho/METADATA.pb b/ofl/bizudpmincho/METADATA.pb
index 18a81cb5f9bee00f98733b9c8e30d4e4988f0aff..c03c491874e43b052e7d0816f4f17a0baab25ce8 100644
--- a/ofl/bizudpmincho/METADATA.pb
+++ b/ofl/bizudpmincho/METADATA.pb
@@ -28,7 +28,16 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/googlefonts/morisawa-biz-ud-mincho.git"
+  repository_url: "https://github.com/googlefonts/morisawa-biz-ud-mincho"
   commit: "c30a6221b1f3d09afae9137ffe73c7cbec649947"
+  files {
+    source_file: "fonts/ttf/BIZUDPMincho-Regular.ttf"
+    dest_file: "BIZUDPMincho-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BIZUDPMincho-Bold.ttf"
+    dest_file: "BIZUDPMincho-Bold.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Jpan"
diff --git a/ofl/bizudpmincho/upstream.yaml b/ofl/bizudpmincho/upstream.yaml
deleted file mode 100644
index 1130d6be13b51399776130c52feb2a5ad198a8c3..0000000000000000000000000000000000000000
--- a/ofl/bizudpmincho/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  fonts/ttf/BIZUDPMincho-Regular.ttf: BIZUDPMincho-Regular.ttf
-  fonts/ttf/BIZUDPMincho-Bold.ttf: BIZUDPMincho-Bold.ttf
diff --git a/ofl/blackopsone/METADATA.pb b/ofl/blackopsone/METADATA.pb
index 4366f0396c4215f7dbf9d4f1222b57d5680ae8c3..eccc953f13fac6248fe0d91da2a1d711da647653 100644
--- a/ofl/blackopsone/METADATA.pb
+++ b/ofl/blackopsone/METADATA.pb
@@ -20,4 +20,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Black-Ops"
   commit: "c955bed3517ad3d8606a8b0105d27538309fb70d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/BlackOpsOne-Regular.ttf"
+    dest_file: "BlackOpsOne-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/blackopsone/upstream.yaml b/ofl/blackopsone/upstream.yaml
deleted file mode 100644
index 606ddf949710ebe59159101d886fb23bf5972e2f..0000000000000000000000000000000000000000
--- a/ofl/blackopsone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/BlackOpsOne-Regular.ttf: BlackOpsOne-Regular.ttf
-archive:
diff --git a/ofl/blaka/METADATA.pb b/ofl/blaka/METADATA.pb
index 216952233aa1d67519bc4ebbe46b74d358f92a50..0fe9fa1dcce7ea50f6e38011397735df13489d45 100644
--- a/ofl/blaka/METADATA.pb
+++ b/ofl/blaka/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/Gue3bara/Blaka"
   commit: "7f264eee862d3e94c2cb6a728c6429c2f3b9adc3"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/regular/ttf/Blaka-Regular.ttf"
+    dest_file: "Blaka-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/blaka/upstream.yaml b/ofl/blaka/upstream.yaml
deleted file mode 100644
index b628584d817a8498cd40ed499499988c8a61a407..0000000000000000000000000000000000000000
--- a/ofl/blaka/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/regular/ttf/Blaka-Regular.ttf: Blaka-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/blakahollow/METADATA.pb b/ofl/blakahollow/METADATA.pb
index bce47ab88d35e790f4ddb1904c5e40b1b9267105..d700f451796da31875d7bbba8158c026c0d69edd 100644
--- a/ofl/blakahollow/METADATA.pb
+++ b/ofl/blakahollow/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/Gue3bara/Blaka"
   commit: "7f264eee862d3e94c2cb6a728c6429c2f3b9adc3"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/hollow/ttf/BlakaHollow-Regular.ttf"
+    dest_file: "BlakaHollow-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/blakahollow/upstream.yaml b/ofl/blakahollow/upstream.yaml
deleted file mode 100644
index c0dd1afc83f3e633de2ee2dd37cb7c3d804931ef..0000000000000000000000000000000000000000
--- a/ofl/blakahollow/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/hollow/ttf/BlakaHollow-Regular.ttf: BlakaHollow-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/blakaink/METADATA.pb b/ofl/blakaink/METADATA.pb
index e26377c5107e5833d2c21f3aa926b3bf941f6af9..5cfd617662caa304ccd6bc7c1e1181ba19308f6b 100644
--- a/ofl/blakaink/METADATA.pb
+++ b/ofl/blakaink/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/Gue3bara/Blaka"
   commit: "7f264eee862d3e94c2cb6a728c6429c2f3b9adc3"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ink/ttf/BlakaInk-Regular.ttf"
+    dest_file: "BlakaInk-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/blakaink/upstream.yaml b/ofl/blakaink/upstream.yaml
deleted file mode 100644
index beda956a6a4f97a27cfe3b2c60ea46d7387e7c2e..0000000000000000000000000000000000000000
--- a/ofl/blakaink/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ink/ttf/BlakaInk-Regular.ttf: BlakaInk-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/bodonimoda/METADATA.pb b/ofl/bodonimoda/METADATA.pb
index 67f79c714bf5edf865ea00baee81a430206df768..f833d1741cbe70a550a6ffbc3147e3c1924efa4d 100644
--- a/ofl/bodonimoda/METADATA.pb
+++ b/ofl/bodonimoda/METADATA.pb
@@ -43,5 +43,18 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/indestructible-type/Bodoni"
   commit: "30ce6cdc354ef179a3b72ba0f0e71826e599348c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BodoniModa[opsz,wght].ttf"
+    dest_file: "BodoniModa[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/BodoniModa-Italic[opsz,wght].ttf"
+    dest_file: "BodoniModa-Italic[opsz,wght].ttf"
+  }
+  branch: "master"
 }
-stroke:"SERIF"
+stroke: "SERIF"
diff --git a/ofl/bodonimoda/upstream.yaml b/ofl/bodonimoda/upstream.yaml
deleted file mode 100644
index 8e3b3111e3453d3e44109e614937eea4e448f013..0000000000000000000000000000000000000000
--- a/ofl/bodonimoda/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BodoniModa[opsz,wght].ttf: BodoniModa[opsz,wght].ttf
-  fonts/variable/BodoniModa-Italic[opsz,wght].ttf: BodoniModa-Italic[opsz,wght].ttf
-archive:
diff --git a/ofl/bokor/METADATA.pb b/ofl/bokor/METADATA.pb
index 35fe050aff75aa207b92047f4ccf3e421ac95354..f3870f7ca30287af7137e182d72c34cfc23c5531 100644
--- a/ofl/bokor/METADATA.pb
+++ b/ofl/bokor/METADATA.pb
@@ -15,3 +15,15 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Bokor"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Bokor-Regular.ttf"
+    dest_file: "Bokor-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/bokor/upstream.yaml b/ofl/bokor/upstream.yaml
deleted file mode 100644
index c5e3b22c6dfad4c82ebb83d28ea2cb6fdba626b1..0000000000000000000000000000000000000000
--- a/ofl/bokor/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Bokor-Regular.ttf: Bokor-Regular.ttf
-repository_url: https://github.com/danhhong/Bokor.git
diff --git a/ofl/bonanova/METADATA.pb b/ofl/bonanova/METADATA.pb
index 818c1f00d5d87b9f760ec6e030f7623b397d92bd..4de479dd765d4ff8dccf5b2b310ee2a8ef85ecc2 100644
--- a/ofl/bonanova/METADATA.pb
+++ b/ofl/bonanova/METADATA.pb
@@ -38,4 +38,24 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/kosmynkab/Bona-Nova"
+  files {
+    source_file: "fonts/ttf/BonaNova-Regular.ttf"
+    dest_file: "BonaNova-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BonaNova-Bold.ttf"
+    dest_file: "BonaNova-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/BonaNova-Italic.ttf"
+    dest_file: "BonaNova-Italic.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 minisite_url: "http://bonanova.wtf/"
diff --git a/ofl/bonanova/upstream.yaml b/ofl/bonanova/upstream.yaml
deleted file mode 100644
index 04f8d7dfb34031f30e04f12c6e3ab0a775c03a93..0000000000000000000000000000000000000000
--- a/ofl/bonanova/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  fonts/ttf/BonaNova-Regular.ttf: BonaNova-Regular.ttf
-  fonts/ttf/BonaNova-Bold.ttf: BonaNova-Bold.ttf
-  fonts/ttf/BonaNova-Italic.ttf: BonaNova-Italic.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/kosmynkab/Bona-Nova
diff --git a/ofl/bonheurroyale/METADATA.pb b/ofl/bonheurroyale/METADATA.pb
index e251782bebd293c367a2dabfb7dc9394aad2a651..3e2ad35694c35ef71b56670d60af4a4dc4c1bf8c 100644
--- a/ofl/bonheurroyale/METADATA.pb
+++ b/ofl/bonheurroyale/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/bonheur-royale"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BonheurRoyale-Regular.ttf"
+    dest_file: "BonheurRoyale-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/bonheurroyale/upstream.yaml b/ofl/bonheurroyale/upstream.yaml
deleted file mode 100644
index 43d472d317a2bde1b944e4943ac3a3c1a67cc467..0000000000000000000000000000000000000000
--- a/ofl/bonheurroyale/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BonheurRoyale-Regular.ttf: BonheurRoyale-Regular.ttf
-repository_url: https://github.com/googlefonts/bonheur-royale
diff --git a/ofl/borel/METADATA.pb b/ofl/borel/METADATA.pb
index c9f4055b2651c50bb54827cde2b1c2276f530d57..b573e4d0fb71350673c972a781cf8eb88b3cf691 100644
--- a/ofl/borel/METADATA.pb
+++ b/ofl/borel/METADATA.pb
@@ -21,6 +21,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/RosaWagner/Borel"
   commit: "dd3d42ca23056f23889e31cde0af0081da3d847d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Borel/fonts/ttf/Borel-Regular.ttf"
+    dest_file: "Borel-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "HANDWRITING"
diff --git a/ofl/borel/upstream.yaml b/ofl/borel/upstream.yaml
deleted file mode 100644
index e6db63f73bcef05c6d7ea59553c2fa94fff1cedf..0000000000000000000000000000000000000000
--- a/ofl/borel/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  Borel/fonts/ttf/Borel-Regular.ttf: Borel-Regular.ttf
diff --git a/ofl/braahone/METADATA.pb b/ofl/braahone/METADATA.pb
index 843d37cc40dc9c945098060c580003056576b9ae..e6c964497de6c62fda8afd852af16e92c213a6c2 100644
--- a/ofl/braahone/METADATA.pb
+++ b/ofl/braahone/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/artandtype/Braah"
   commit: "2b7ba2ea006af5a55313158531b6f0b71eca5ff8"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/BraahOne-Regular.ttf"
+    dest_file: "BraahOne-Regular.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Guru"
 stroke: "SANS_SERIF"
diff --git a/ofl/braahone/upstream.yaml b/ofl/braahone/upstream.yaml
deleted file mode 100644
index 5b4bcf87a11cbb47f6e6c8f241440bcaaaac19ca..0000000000000000000000000000000000000000
--- a/ofl/braahone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/BraahOne-Regular.ttf: BraahOne-Regular.ttf
-archive:
diff --git a/ofl/brawler/METADATA.pb b/ofl/brawler/METADATA.pb
index ebe1781e61423001cf0d8d8548ae63538b369d59..e7bea996855c4188050bc8b0eca147c4bc49723a 100644
--- a/ofl/brawler/METADATA.pb
+++ b/ofl/brawler/METADATA.pb
@@ -23,3 +23,23 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/cyrealtype/Brawler"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TTF/Brawler-Regular.ttf"
+    dest_file: "Brawler-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TTF/Brawler-Bold.ttf"
+    dest_file: "Brawler-Bold.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/brawler/upstream.yaml b/ofl/brawler/upstream.yaml
deleted file mode 100644
index 9936f364cbef70975f37aff61723e07aadf4a6a8..0000000000000000000000000000000000000000
--- a/ofl/brawler/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TTF/Brawler-Regular.ttf: Brawler-Regular.ttf
-  fonts/TTF/Brawler-Bold.ttf: Brawler-Bold.ttf
-repository_url: https://github.com/cyrealtype/Brawler
diff --git a/ofl/bricolagegrotesque/METADATA.pb b/ofl/bricolagegrotesque/METADATA.pb
index fb1d347e3393eec6f9391e332e9272b50bea7606..269277c8ef8338a5054f76fdbb483c08f9fafbed 100644
--- a/ofl/bricolagegrotesque/METADATA.pb
+++ b/ofl/bricolagegrotesque/METADATA.pb
@@ -35,6 +35,15 @@ axes {
 source {
   repository_url: "https://github.com/ateliertriay/bricolage"
   commit: "84745e5b96261ae5f8c6c856e262fe78d1d6efdd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/BricolageGrotesque[opsz,wdth,wght].ttf"
+    dest_file: "BricolageGrotesque[opsz,wdth,wght].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://ateliertriay.github.io/bricolage"
 stroke: "SANS_SERIF"
diff --git a/ofl/bricolagegrotesque/upstream.yaml b/ofl/bricolagegrotesque/upstream.yaml
deleted file mode 100644
index ddd239a3c10130821dc6e684c2acd205684df2d9..0000000000000000000000000000000000000000
--- a/ofl/bricolagegrotesque/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/BricolageGrotesque[opsz,wdth,wght].ttf: BricolageGrotesque[opsz,wdth,wght].ttf
-archive:
diff --git a/ofl/brunoace/METADATA.pb b/ofl/brunoace/METADATA.pb
index 68dbeca9ed90c9bfb34c87ad31f6ec1804e65ce7..4de5faa390b967c8473a9d64ec10c3cb2b61f750 100644
--- a/ofl/brunoace/METADATA.pb
+++ b/ofl/brunoace/METADATA.pb
@@ -18,6 +18,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/Bruno-ace"
   commit: "4eb5f7fc38a1548b353b4ee03b1f7043b48ae181"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BrunoAce-Regular.ttf"
+    dest_file: "BrunoAce-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/brunoace/upstream.yaml b/ofl/brunoace/upstream.yaml
deleted file mode 100644
index d6f8f797be36a315b93d28e6c815e4c20219e4fa..0000000000000000000000000000000000000000
--- a/ofl/brunoace/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BrunoAce-Regular.ttf: BrunoAce-Regular.ttf
-archive:
diff --git a/ofl/brunoacesc/METADATA.pb b/ofl/brunoacesc/METADATA.pb
index 94cfb98a21181910ddff92974b34da4f6246c6e2..e1414fd632907d98e05f93b8634f0d0256c62807 100644
--- a/ofl/brunoacesc/METADATA.pb
+++ b/ofl/brunoacesc/METADATA.pb
@@ -18,6 +18,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/Bruno-ace"
   commit: "4eb5f7fc38a1548b353b4ee03b1f7043b48ae181"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/BrunoAceSC-Regular.ttf"
+    dest_file: "BrunoAceSC-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/brunoacesc/upstream.yaml b/ofl/brunoacesc/upstream.yaml
deleted file mode 100644
index 67225c65f338ed8f420b3454a4e7822149520140..0000000000000000000000000000000000000000
--- a/ofl/brunoacesc/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/BrunoAceSC-Regular.ttf: BrunoAceSC-Regular.ttf
-archive:
diff --git a/ofl/brygada1918/METADATA.pb b/ofl/brygada1918/METADATA.pb
index 498dfb92cea8ecb231281d2597b3ff63a0a2e811..9d54eccdc4fa8b3ef25ebb78db6df0f45c4f1341 100644
--- a/ofl/brygada1918/METADATA.pb
+++ b/ofl/brygada1918/METADATA.pb
@@ -33,4 +33,20 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/kosmynkab/Brygada-1918"
+  files {
+    source_file: "fonts/variable/Brygada1918[wght].ttf"
+    dest_file: "Brygada1918[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Brygada1918-Italic[wght].ttf"
+    dest_file: "Brygada1918-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 minisite_url: "https://brygada1918.eu/"
diff --git a/ofl/brygada1918/upstream.yaml b/ofl/brygada1918/upstream.yaml
deleted file mode 100644
index 5a0be2e8706cb4ec85d9dd7c6ec8d3e0f699862a..0000000000000000000000000000000000000000
--- a/ofl/brygada1918/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/variable/Brygada1918[wght].ttf: Brygada1918[wght].ttf
-  fonts/variable/Brygada1918-Italic[wght].ttf: Brygada1918-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/kosmynkab/Brygada-1918
diff --git a/ofl/cairo/METADATA.pb b/ofl/cairo/METADATA.pb
index d3a49ae5647f5159ba78fa46dc9291c166644c89..80010611474b19236831bd3754a76ff83c2a2b76 100644
--- a/ofl/cairo/METADATA.pb
+++ b/ofl/cairo/METADATA.pb
@@ -30,5 +30,14 @@ axes {
 source {
   repository_url: "https://github.com/Gue3bara/Cairo"
   commit: "73d16933c6a0f341c27a69e401da83dcb0d53114"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/Cairo/variable/Cairo[slnt,wght].ttf"
+    dest_file: "Cairo[slnt,wght].ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/cairo/upstream.yaml b/ofl/cairo/upstream.yaml
deleted file mode 100644
index 3fbdb7fab80a75dfdd1ff7cf563b75acc259aca7..0000000000000000000000000000000000000000
--- a/ofl/cairo/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/Cairo/variable/Cairo[slnt,wght].ttf: Cairo[slnt,wght].ttf
-archive:
diff --git a/ofl/cairoplay/METADATA.pb b/ofl/cairoplay/METADATA.pb
index c6d894e75945f5ed665383d0f51fe1955e847aa1..488391e04dc86cd91117861b9e7a11887f31d879 100644
--- a/ofl/cairoplay/METADATA.pb
+++ b/ofl/cairoplay/METADATA.pb
@@ -30,5 +30,14 @@ axes {
 source {
   repository_url: "https://github.com/Gue3bara/Cairo"
   commit: "73d16933c6a0f341c27a69e401da83dcb0d53114"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/CairoPlay/variable/CairoPlay[slnt,wght].ttf"
+    dest_file: "CairoPlay[slnt,wght].ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/cairoplay/upstream.yaml b/ofl/cairoplay/upstream.yaml
deleted file mode 100644
index 4414f760e715a501a7fe3f859e5a662852a60796..0000000000000000000000000000000000000000
--- a/ofl/cairoplay/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/CairoPlay/variable/CairoPlay[slnt,wght].ttf: CairoPlay[slnt,wght].ttf
-archive:
diff --git a/ofl/calistoga/METADATA.pb b/ofl/calistoga/METADATA.pb
index 27ea40eb65bf938ff8166cb6103a00ba61ac3b50..ed1cb58a707e3cbf10af61637da77de1bf31a244 100644
--- a/ofl/calistoga/METADATA.pb
+++ b/ofl/calistoga/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Calistoga"
   commit: "29e91526013f0d5b53862fee3c5ce6c108394812"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Calistoga-Regular.ttf"
+    dest_file: "Calistoga-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/calistoga/upstream.yaml b/ofl/calistoga/upstream.yaml
deleted file mode 100644
index a11af677e9f1729fc0db8bb7902acc9e9abae8e3..0000000000000000000000000000000000000000
--- a/ofl/calistoga/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Calistoga-Regular.ttf: Calistoga-Regular.ttf
-archive:
diff --git a/ofl/caprasimo/METADATA.pb b/ofl/caprasimo/METADATA.pb
index b8b89fc986c553c59483c1fda261e0c4598b457f..3b24d11bb0c36c144f8f4c406d65e4d952882276 100644
--- a/ofl/caprasimo/METADATA.pb
+++ b/ofl/caprasimo/METADATA.pb
@@ -18,6 +18,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/docrepair-fonts/caprasimo-fonts"
   commit: "9f11e8fd4e8a4bdf069612a275a40103c5337ccf"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Caprasimo-Regular.ttf"
+    dest_file: "Caprasimo-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/caprasimo/upstream.yaml b/ofl/caprasimo/upstream.yaml
deleted file mode 100644
index 0d8d312f9e0b57d189c3c1fa0c289e023c87f440..0000000000000000000000000000000000000000
--- a/ofl/caprasimo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Caprasimo-Regular.ttf: Caprasimo-Regular.ttf
-archive:
diff --git a/ofl/caramel/METADATA.pb b/ofl/caramel/METADATA.pb
index cb59aa72a2773b3dced6422a00bff387963d4ec6..027301f1b5a1c9ea22355e21f651da7f34fd17eb 100644
--- a/ofl/caramel/METADATA.pb
+++ b/ofl/caramel/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/caramel"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Caramel-Regular.ttf"
+    dest_file: "Caramel-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/caramel/upstream.yaml b/ofl/caramel/upstream.yaml
deleted file mode 100644
index b599484b82eb6c0e410cc4f27670e6d0aea83684..0000000000000000000000000000000000000000
--- a/ofl/caramel/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Caramel-Regular.ttf: Caramel-Regular.ttf
-repository_url: https://github.com/googlefonts/caramel
diff --git a/ofl/carattere/METADATA.pb b/ofl/carattere/METADATA.pb
index 11cee667cc0c3b53f4c704d21ab41d61b19928be..030da784845f119b307b476e8f86cf174f34d26d 100644
--- a/ofl/carattere/METADATA.pb
+++ b/ofl/carattere/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/carattere"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Carattere-Regular.ttf"
+    dest_file: "Carattere-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/carattere/upstream.yaml b/ofl/carattere/upstream.yaml
deleted file mode 100644
index 0cf936740e96ca8406f74d49a02ff3a76be1780b..0000000000000000000000000000000000000000
--- a/ofl/carattere/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Carattere-Regular.ttf: Carattere-Regular.ttf
-repository_url: https://github.com/googlefonts/carattere
diff --git a/ofl/carlito/METADATA.pb b/ofl/carlito/METADATA.pb
index 8340bf23564d45006572259dd1b99712d6099eca..babeffc666c3ad89e53de3efb2def263483fc791 100644
--- a/ofl/carlito/METADATA.pb
+++ b/ofl/carlito/METADATA.pb
@@ -50,4 +50,25 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/carlito"
   commit: "3a810cab78ebd6e2e4eed42af9e8453c4f9b850a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Carlito-Regular.ttf"
+    dest_file: "Carlito-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Carlito-Bold.ttf"
+    dest_file: "Carlito-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Carlito-BoldItalic.ttf"
+    dest_file: "Carlito-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Carlito-Italic.ttf"
+    dest_file: "Carlito-Italic.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/carlito/upstream.yaml b/ofl/carlito/upstream.yaml
deleted file mode 100644
index 058b077070ac2108620352852a31ac17306d7872..0000000000000000000000000000000000000000
--- a/ofl/carlito/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Carlito-Regular.ttf: Carlito-Regular.ttf
-  fonts/ttf/Carlito-Bold.ttf: Carlito-Bold.ttf
-  fonts/ttf/Carlito-BoldItalic.ttf: Carlito-BoldItalic.ttf
-  fonts/ttf/Carlito-Italic.ttf: Carlito-Italic.ttf
-archive:
diff --git a/ofl/castoro/METADATA.pb b/ofl/castoro/METADATA.pb
index c890a102747b59be6abf4a73a7f1d5c8c341fa32..d1ff71f2a389d70f80de4616103bc337ad42adf3 100644
--- a/ofl/castoro/METADATA.pb
+++ b/ofl/castoro/METADATA.pb
@@ -27,4 +27,21 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Castoro"
   commit: "58a386a96e522b6d47c566175c7ee799d4c8d14f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/Castoro/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/Castoro/TTF/Castoro-Regular.ttf"
+    dest_file: "Castoro-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/Castoro/TTF/Castoro-Italic.ttf"
+    dest_file: "Castoro-Italic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/castoro/upstream.yaml b/ofl/castoro/upstream.yaml
deleted file mode 100644
index 278f2de7094110647ec48517430210c724c8fd94..0000000000000000000000000000000000000000
--- a/ofl/castoro/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  docs/descriptions/Castoro/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/Castoro/TTF/Castoro-Regular.ttf: Castoro-Regular.ttf
-  fonts/Castoro/TTF/Castoro-Italic.ttf: Castoro-Italic.ttf
-archive:
diff --git a/ofl/castorotitling/METADATA.pb b/ofl/castorotitling/METADATA.pb
index 3d93591d5d552224c4fc7c593dcedd4d6970c120..413f228d8fd1e4259ce2e9c9476c57f086c6efbe 100644
--- a/ofl/castorotitling/METADATA.pb
+++ b/ofl/castorotitling/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Castoro"
   commit: "58a386a96e522b6d47c566175c7ee799d4c8d14f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/CastoroTitling/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/CastoroTitling/TTF/CastoroTitling-Regular.ttf"
+    dest_file: "CastoroTitling-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/castorotitling/upstream.yaml b/ofl/castorotitling/upstream.yaml
deleted file mode 100644
index f8cef9c3c1ba8960c173d35fafc71cc327974db4..0000000000000000000000000000000000000000
--- a/ofl/castorotitling/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  docs/descriptions/CastoroTitling/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/CastoroTitling/TTF/CastoroTitling-Regular.ttf: CastoroTitling-Regular.ttf
-archive:
diff --git a/ofl/caveat/METADATA.pb b/ofl/caveat/METADATA.pb
index e8ceef2bf8af0d8e175c721b5c3c58f85180535a..6749839ba25daa8260c281832ff1a016b4bede98 100644
--- a/ofl/caveat/METADATA.pb
+++ b/ofl/caveat/METADATA.pb
@@ -22,3 +22,23 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/caveat"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Caveat[wght].ttf"
+    dest_file: "Caveat[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Caveat-Regular.ttf"
+    dest_file: "static/Caveat-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Caveat-Bold.ttf"
+    dest_file: "static/Caveat-Bold.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/caveat/upstream.yaml b/ofl/caveat/upstream.yaml
deleted file mode 100644
index 25493e7a41320590e1c9337d811a3a88706ab91f..0000000000000000000000000000000000000000
--- a/ofl/caveat/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Caveat[wght].ttf: Caveat[wght].ttf
-  fonts/ttf/Caveat-Regular.ttf: static/Caveat-Regular.ttf
-  fonts/ttf/Caveat-Bold.ttf: static/Caveat-Bold.ttf
-repository_url: https://github.com/googlefonts/caveat
diff --git a/ofl/changa/METADATA.pb b/ofl/changa/METADATA.pb
index 82b561404f100e28442bced4c5ab35c0941ba029..694cd5efdcf58296d21b8c588ceb09eaee6235ff 100644
--- a/ofl/changa/METADATA.pb
+++ b/ofl/changa/METADATA.pb
@@ -21,5 +21,17 @@ axes {
   min_value: 200.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/changa-vf"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Changa[wght].ttf"
+    dest_file: "Changa[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/changa/upstream.yaml b/ofl/changa/upstream.yaml
deleted file mode 100644
index 92901ae824a2ae6fc11388e9e26f37998972ed54..0000000000000000000000000000000000000000
--- a/ofl/changa/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Changa[wght].ttf: Changa[wght].ttf
-repository_url: https://github.com/googlefonts/changa-vf
diff --git a/ofl/charissil/METADATA.pb b/ofl/charissil/METADATA.pb
index 0314ae620d83fd21d9ae74b3c709b48197ecde35..02d66b79203b761feb4721c9b04b0ba31e262d0e 100644
--- a/ofl/charissil/METADATA.pb
+++ b/ofl/charissil/METADATA.pb
@@ -48,4 +48,25 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/silnrsi/font-charis"
   archive_url: "https://github.com/silnrsi/font-charis/releases/download/v6.101/CharisSIL-6.101.zip"
+  files {
+    source_file: "CharisSIL-6.101/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "CharisSIL-6.101/CharisSIL-Regular.ttf"
+    dest_file: "CharisSIL-Regular.ttf"
+  }
+  files {
+    source_file: "CharisSIL-6.101/CharisSIL-Italic.ttf"
+    dest_file: "CharisSIL-Italic.ttf"
+  }
+  files {
+    source_file: "CharisSIL-6.101/CharisSIL-Bold.ttf"
+    dest_file: "CharisSIL-Bold.ttf"
+  }
+  files {
+    source_file: "CharisSIL-6.101/CharisSIL-BoldItalic.ttf"
+    dest_file: "CharisSIL-BoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/charissil/upstream.yaml b/ofl/charissil/upstream.yaml
deleted file mode 100644
index 41f1aa7459016f46d192d3670ee4bb055f1126fe..0000000000000000000000000000000000000000
--- a/ofl/charissil/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-charis/releases/download/v6.101/CharisSIL-6.101.zip
-branch: master
-files:
-  CharisSIL-6.101/OFL.txt: OFL.txt
-  CharisSIL-6.101/CharisSIL-Regular.ttf: CharisSIL-Regular.ttf
-  CharisSIL-6.101/CharisSIL-Italic.ttf: CharisSIL-Italic.ttf
-  CharisSIL-6.101/CharisSIL-Bold.ttf: CharisSIL-Bold.ttf
-  CharisSIL-6.101/CharisSIL-BoldItalic.ttf: CharisSIL-BoldItalic.ttf
diff --git a/ofl/cherish/METADATA.pb b/ofl/cherish/METADATA.pb
index fedb0d6ad5d5d325a99e2e9ca98f03e1be4646cc..9a6ac11fdb6f8901caafe6dce9e712510b44f4fe 100644
--- a/ofl/cherish/METADATA.pb
+++ b/ofl/cherish/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/cherish"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Cherish-Regular.ttf"
+    dest_file: "Cherish-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/cherish/upstream.yaml b/ofl/cherish/upstream.yaml
deleted file mode 100644
index d9ec42ada21c87d2bbd5c2a4852fe7e3943d9c07..0000000000000000000000000000000000000000
--- a/ofl/cherish/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Cherish-Regular.ttf: Cherish-Regular.ttf
-repository_url: https://github.com/googlefonts/cherish
diff --git a/ofl/cherrybombone/METADATA.pb b/ofl/cherrybombone/METADATA.pb
index 16b4241450216256e155f7881aaa0c1016abf31c..35796f48d3bdb218a8d9ac68abfed9fb3fe65465 100644
--- a/ofl/cherrybombone/METADATA.pb
+++ b/ofl/cherrybombone/METADATA.pb
@@ -17,6 +17,22 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/satsuyako/CherryBomb"
+  files {
+    source_file: "fonts/ttf/CherryBombOne-Regular.ttf"
+    dest_file: "CherryBombOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "ver3.00"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/cherrybombone/upstream.yaml b/ofl/cherrybombone/upstream.yaml
deleted file mode 100644
index 0e24620fe1cffc605e7238f8adea28cb0dffb668..0000000000000000000000000000000000000000
--- a/ofl/cherrybombone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: ver3.00
-files:
-  fonts/ttf/CherryBombOne-Regular.ttf: CherryBombOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/satsuyako/CherryBomb.git
diff --git a/ofl/chilanka/METADATA.pb b/ofl/chilanka/METADATA.pb
index 44cbb099c5f5b5079efecc09220789e69f80682f..e33235e121c5470a6cc5b7f93a2bc9bd99a3b4ba 100644
--- a/ofl/chilanka/METADATA.pb
+++ b/ofl/chilanka/METADATA.pb
@@ -17,6 +17,15 @@ subsets: "latin-ext"
 subsets: "malayalam"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/smc/Chilanka.git"
+  repository_url: "https://github.com/smc/Chilanka"
   commit: "bbc2c94ae7af008975c81e509911b609444b3902"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "build/Chilanka-Regular.ttf"
+    dest_file: "Chilanka-Regular.ttf"
+  }
+  branch: "tags/Version1.6"
 }
diff --git a/ofl/chilanka/upstream.yaml b/ofl/chilanka/upstream.yaml
deleted file mode 100644
index 2bc6947574f47b228ba54ee24c2d1f6c8794a05c..0000000000000000000000000000000000000000
--- a/ofl/chilanka/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: tags/Version1.6
-build: mkdir -p build; python3 -m venv build/venv; source build/venv/bin/activate;
-  pip install -r requirements.txt; make ttf
-files:
-  OFL.txt: OFL.txt
-  build/Chilanka-Regular.ttf: Chilanka-Regular.ttf
-archive:
diff --git a/ofl/chivo/METADATA.pb b/ofl/chivo/METADATA.pb
index 61eb6dc78f6fc7d4a5cd3594f32dae77094a224b..afea4ef2b75b546f8439d746986945cc400373c2 100644
--- a/ofl/chivo/METADATA.pb
+++ b/ofl/chivo/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/Omnibus-Type/Chivo"
   commit: "d98623c96068cd02fbe9f22982d4b0504be8b851"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/Chivo/variable/Chivo[wght].ttf"
+    dest_file: "Chivo[wght].ttf"
+  }
+  files {
+    source_file: "fonts/Chivo/variable/Chivo-Italic[wght].ttf"
+    dest_file: "Chivo-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/chivo/upstream.yaml b/ofl/chivo/upstream.yaml
deleted file mode 100644
index f18d971a69e46b6f03e2dd99a48d29e0f7db45d4..0000000000000000000000000000000000000000
--- a/ofl/chivo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/Chivo/variable/Chivo[wght].ttf: Chivo[wght].ttf
-  fonts/Chivo/variable/Chivo-Italic[wght].ttf: Chivo-Italic[wght].ttf
-archive:
diff --git a/ofl/chivomono/METADATA.pb b/ofl/chivomono/METADATA.pb
index ac3fb95923ca5da36a4a12af7b3b08faa2f9b98a..d8678b3e1d9d157f8b29049d3615e2c23760c5f6 100644
--- a/ofl/chivomono/METADATA.pb
+++ b/ofl/chivomono/METADATA.pb
@@ -34,6 +34,19 @@ axes {
 source {
   repository_url: "https://github.com/Omnibus-Type/Chivo"
   commit: "dc61c468d79781eb5183426e88e844af16cdc3e5"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/Chivo Mono/variable/ChivoMono[wght].ttf"
+    dest_file: "ChivoMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/Chivo Mono/variable/ChivoMono-Italic[wght].ttf"
+    dest_file: "ChivoMono-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "MONOSPACE"
diff --git a/ofl/chivomono/upstream.yaml b/ofl/chivomono/upstream.yaml
deleted file mode 100644
index f579f7d8ed34cb0c166b01245e1e8d3c4d230529..0000000000000000000000000000000000000000
--- a/ofl/chivomono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/Chivo Mono/variable/ChivoMono[wght].ttf: ChivoMono[wght].ttf
-  fonts/Chivo Mono/variable/ChivoMono-Italic[wght].ttf: ChivoMono-Italic[wght].ttf
-archive:
diff --git a/ofl/chokokutai/METADATA.pb b/ofl/chokokutai/METADATA.pb
index 963c67d1f116179af8f98668f9f17d27293a206f..7d0adfc8110f1cd1915249e434eec7e6f19743aa 100644
--- a/ofl/chokokutai/METADATA.pb
+++ b/ofl/chokokutai/METADATA.pb
@@ -17,6 +17,22 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/go108go/Chokokutai"
+  files {
+    source_file: "fonts/ttf/Chokokutai-Regular.ttf"
+    dest_file: "Chokokutai-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/chokokutai/upstream.yaml b/ofl/chokokutai/upstream.yaml
deleted file mode 100644
index 9672d3708478dc21b9b85caa341193cdbad05901..0000000000000000000000000000000000000000
--- a/ofl/chokokutai/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Chokokutai-Regular.ttf: Chokokutai-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/go108go/Chokokutai.git
diff --git a/ofl/climatecrisis/METADATA.pb b/ofl/climatecrisis/METADATA.pb
index 7720dc621c0c5081c87a3a2759220bb560e246bf..2b5cfe02e3d6a3b0eefaf51c75f0e73e37fce5b1 100644
--- a/ofl/climatecrisis/METADATA.pb
+++ b/ofl/climatecrisis/METADATA.pb
@@ -27,6 +27,15 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/dancoull/ClimateCrisis"
   commit: "e0398e2d7e84a9f08cf7ec67bb463e4e2bb35431"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/ClimateCrisis[YEAR].ttf"
+    dest_file: "ClimateCrisis[YEAR].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://kampanjat.hs.fi/climatefont"
 stroke: "SANS_SERIF"
diff --git a/ofl/climatecrisis/upstream.yaml b/ofl/climatecrisis/upstream.yaml
deleted file mode 100644
index 09896f4ab20a3ee548f12309bc1858a578db985e..0000000000000000000000000000000000000000
--- a/ofl/climatecrisis/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/ClimateCrisis[YEAR].ttf: ClimateCrisis[YEAR].ttf
-archive:
diff --git a/ofl/comforter/METADATA.pb b/ofl/comforter/METADATA.pb
index eb4d4e30267325fa943a4fdba2c49ba4f63f3d4c..415b665b6b96050ce93489c16888e5e91d732c6e 100644
--- a/ofl/comforter/METADATA.pb
+++ b/ofl/comforter/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/comforter"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Comforter-Regular.ttf"
+    dest_file: "Comforter-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/comforter/upstream.yaml b/ofl/comforter/upstream.yaml
deleted file mode 100644
index de640937acaa926d705b958e20e2205e9fb99b5d..0000000000000000000000000000000000000000
--- a/ofl/comforter/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Comforter-Regular.ttf: Comforter-Regular.ttf
-repository_url: https://github.com/googlefonts/comforter
diff --git a/ofl/comforterbrush/METADATA.pb b/ofl/comforterbrush/METADATA.pb
index 4f5e27331117741285fbd765a7d5ff8583f72439..0a7c5643f22e8fc787afc642df70f25a1e168fab 100644
--- a/ofl/comforterbrush/METADATA.pb
+++ b/ofl/comforterbrush/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/comforter-brush"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/ComforterBrush-Regular.ttf"
+    dest_file: "ComforterBrush-Regular.ttf"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/comforterbrush/upstream.yaml b/ofl/comforterbrush/upstream.yaml
deleted file mode 100644
index e7aec11ae489575970b87020b2a48eaeceacfb77..0000000000000000000000000000000000000000
--- a/ofl/comforterbrush/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/ComforterBrush-Regular.ttf: ComforterBrush-Regular.ttf
-repository_url: https://github.com/googlefonts/comforter-brush
diff --git a/ofl/comme/METADATA.pb b/ofl/comme/METADATA.pb
index 9339e9c97a21184d5a544579cb75f972c4b22f91..5e905f720591b5e0796d8f526928e00395a83167 100644
--- a/ofl/comme/METADATA.pb
+++ b/ofl/comme/METADATA.pb
@@ -23,4 +23,13 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/comme"
   commit: "45a6e22afc31eb55a46c9b4da4a25ed374886ebf"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Comme[wght].ttf"
+    dest_file: "Comme[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/comme/upstream.yaml b/ofl/comme/upstream.yaml
deleted file mode 100644
index f575fd7ec80f0ca7a106d84eb80bf5f7a8d063ef..0000000000000000000000000000000000000000
--- a/ofl/comme/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Comme[wght].ttf: Comme[wght].ttf
-archive:
diff --git a/ofl/commissioner/METADATA.pb b/ofl/commissioner/METADATA.pb
index 00b3d1c7496aa02741b0950415d253705b3e6f78..5d71261acc64226099c425d8f5352bbabd7455e7 100644
--- a/ofl/commissioner/METADATA.pb
+++ b/ofl/commissioner/METADATA.pb
@@ -42,4 +42,13 @@ axes {
 source {
   repository_url: "https://github.com/m4rc1e/Commissioner"
   commit: "9bf35952a56ff7ba7d7fa1b0380e4bf2a63fcc35"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Commissioner[FLAR,VOLM,slnt,wght].ttf"
+    dest_file: "Commissioner[FLAR,VOLM,slnt,wght].ttf"
+  }
+  branch: "flair-rename"
 }
diff --git a/ofl/commissioner/upstream.yaml b/ofl/commissioner/upstream.yaml
deleted file mode 100644
index f498e66358c56fd80a1c1272740408c00589267b..0000000000000000000000000000000000000000
--- a/ofl/commissioner/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: flair-rename
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Commissioner[FLAR,VOLM,slnt,wght].ttf: Commissioner[FLAR,VOLM,slnt,wght].ttf
diff --git a/ofl/corinthia/METADATA.pb b/ofl/corinthia/METADATA.pb
index ec00e4e6a62ace1342aeb6294f48fa1f1a51905e..98b1c25bc5c8092050271ec4c66e611447d7fcd8 100644
--- a/ofl/corinthia/METADATA.pb
+++ b/ofl/corinthia/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/corinthia"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Corinthia-Regular.ttf"
+    dest_file: "Corinthia-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Corinthia-Bold.ttf"
+    dest_file: "Corinthia-Bold.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/corinthia/upstream.yaml b/ofl/corinthia/upstream.yaml
deleted file mode 100644
index 2031db85e84575e643fa4d2711f6b061b6cf9eca..0000000000000000000000000000000000000000
--- a/ofl/corinthia/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Corinthia-Regular.ttf: Corinthia-Regular.ttf
-  fonts/ttf/Corinthia-Bold.ttf: Corinthia-Bold.ttf
-repository_url: https://github.com/googlefonts/corinthia
diff --git a/ofl/cormorant/METADATA.pb b/ofl/cormorant/METADATA.pb
index c03f4c00e9eeb5cfafa46b65edca0c99115d1809..132b7a3a96b5869dd09290220725513840c2541e 100644
--- a/ofl/cormorant/METADATA.pb
+++ b/ofl/cormorant/METADATA.pb
@@ -35,4 +35,17 @@ axes {
 source {
   repository_url: "https://github.com/CatharsisFonts/Cormorant"
   commit: "cc1bfb51ce6568cb3abf9199ab718d543f6fa189"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Cormorant-Italic[wght].ttf"
+    dest_file: "Cormorant-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Cormorant[wght].ttf"
+    dest_file: "Cormorant[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/cormorant/upstream.yaml b/ofl/cormorant/upstream.yaml
deleted file mode 100644
index ca26ac1134a63caf8fa57aa0b255ed7268580ed6..0000000000000000000000000000000000000000
--- a/ofl/cormorant/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Cormorant-Italic[wght].ttf: Cormorant-Italic[wght].ttf
-  fonts/variable/Cormorant[wght].ttf: Cormorant[wght].ttf
diff --git a/ofl/cormorantgaramond/METADATA.pb b/ofl/cormorantgaramond/METADATA.pb
index a9eb56c9fd3f101f94a4693a323407b02432c35c..3f8f9395b06bcd28f83e2534ba47ed40d65a26b1 100644
--- a/ofl/cormorantgaramond/METADATA.pb
+++ b/ofl/cormorantgaramond/METADATA.pb
@@ -102,4 +102,49 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/CatharsisFonts/Cormorant"
   commit: "cc1bfb51ce6568cb3abf9199ab718d543f6fa189"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-Bold.ttf"
+    dest_file: "CormorantGaramond-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-BoldItalic.ttf"
+    dest_file: "CormorantGaramond-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-Italic.ttf"
+    dest_file: "CormorantGaramond-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-Light.ttf"
+    dest_file: "CormorantGaramond-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-LightItalic.ttf"
+    dest_file: "CormorantGaramond-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-Medium.ttf"
+    dest_file: "CormorantGaramond-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-MediumItalic.ttf"
+    dest_file: "CormorantGaramond-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-Regular.ttf"
+    dest_file: "CormorantGaramond-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-SemiBold.ttf"
+    dest_file: "CormorantGaramond-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantGaramond-SemiBoldItalic.ttf"
+    dest_file: "CormorantGaramond-SemiBoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/cormorantgaramond/upstream.yaml b/ofl/cormorantgaramond/upstream.yaml
deleted file mode 100644
index 4f8de88163e3e63aebf06b66697f2180b3e14827..0000000000000000000000000000000000000000
--- a/ofl/cormorantgaramond/upstream.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/CormorantGaramond-Bold.ttf: CormorantGaramond-Bold.ttf
-  fonts/ttf/CormorantGaramond-BoldItalic.ttf: CormorantGaramond-BoldItalic.ttf
-  fonts/ttf/CormorantGaramond-Italic.ttf: CormorantGaramond-Italic.ttf
-  fonts/ttf/CormorantGaramond-Light.ttf: CormorantGaramond-Light.ttf
-  fonts/ttf/CormorantGaramond-LightItalic.ttf: CormorantGaramond-LightItalic.ttf
-  fonts/ttf/CormorantGaramond-Medium.ttf: CormorantGaramond-Medium.ttf
-  fonts/ttf/CormorantGaramond-MediumItalic.ttf: CormorantGaramond-MediumItalic.ttf
-  fonts/ttf/CormorantGaramond-Regular.ttf: CormorantGaramond-Regular.ttf
-  fonts/ttf/CormorantGaramond-SemiBold.ttf: CormorantGaramond-SemiBold.ttf
-  fonts/ttf/CormorantGaramond-SemiBoldItalic.ttf: CormorantGaramond-SemiBoldItalic.ttf
diff --git a/ofl/cormorantinfant/METADATA.pb b/ofl/cormorantinfant/METADATA.pb
index f96cdd9f2dd1b64b37c1425ba60d66e73cf88609..3c47255be2acf237213288ffcf2e5383a1c2e04a 100644
--- a/ofl/cormorantinfant/METADATA.pb
+++ b/ofl/cormorantinfant/METADATA.pb
@@ -102,4 +102,49 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/CatharsisFonts/Cormorant"
   commit: "cc1bfb51ce6568cb3abf9199ab718d543f6fa189"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-Bold.ttf"
+    dest_file: "CormorantInfant-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-BoldItalic.ttf"
+    dest_file: "CormorantInfant-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-Italic.ttf"
+    dest_file: "CormorantInfant-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-Light.ttf"
+    dest_file: "CormorantInfant-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-LightItalic.ttf"
+    dest_file: "CormorantInfant-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-Medium.ttf"
+    dest_file: "CormorantInfant-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-MediumItalic.ttf"
+    dest_file: "CormorantInfant-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-Regular.ttf"
+    dest_file: "CormorantInfant-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-SemiBold.ttf"
+    dest_file: "CormorantInfant-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantInfant-SemiBoldItalic.ttf"
+    dest_file: "CormorantInfant-SemiBoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/cormorantinfant/upstream.yaml b/ofl/cormorantinfant/upstream.yaml
deleted file mode 100644
index 6d94b5f2b8d5807b7e29679a55f2d8d6fc66000e..0000000000000000000000000000000000000000
--- a/ofl/cormorantinfant/upstream.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/CormorantInfant-Bold.ttf: CormorantInfant-Bold.ttf
-  fonts/ttf/CormorantInfant-BoldItalic.ttf: CormorantInfant-BoldItalic.ttf
-  fonts/ttf/CormorantInfant-Italic.ttf: CormorantInfant-Italic.ttf
-  fonts/ttf/CormorantInfant-Light.ttf: CormorantInfant-Light.ttf
-  fonts/ttf/CormorantInfant-LightItalic.ttf: CormorantInfant-LightItalic.ttf
-  fonts/ttf/CormorantInfant-Medium.ttf: CormorantInfant-Medium.ttf
-  fonts/ttf/CormorantInfant-MediumItalic.ttf: CormorantInfant-MediumItalic.ttf
-  fonts/ttf/CormorantInfant-Regular.ttf: CormorantInfant-Regular.ttf
-  fonts/ttf/CormorantInfant-SemiBold.ttf: CormorantInfant-SemiBold.ttf
-  fonts/ttf/CormorantInfant-SemiBoldItalic.ttf: CormorantInfant-SemiBoldItalic.ttf
diff --git a/ofl/cormorantsc/METADATA.pb b/ofl/cormorantsc/METADATA.pb
index 8f011c1a037bf04e14807a41a205887bf88c8b2a..06c69acd384e3f6b41c898e9cf8514588acbb0e0 100644
--- a/ofl/cormorantsc/METADATA.pb
+++ b/ofl/cormorantsc/METADATA.pb
@@ -57,4 +57,29 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/CatharsisFonts/Cormorant"
   commit: "cc1bfb51ce6568cb3abf9199ab718d543f6fa189"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantSC-Bold.ttf"
+    dest_file: "CormorantSC-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantSC-Light.ttf"
+    dest_file: "CormorantSC-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantSC-Medium.ttf"
+    dest_file: "CormorantSC-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantSC-Regular.ttf"
+    dest_file: "CormorantSC-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantSC-SemiBold.ttf"
+    dest_file: "CormorantSC-SemiBold.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/cormorantsc/upstream.yaml b/ofl/cormorantsc/upstream.yaml
deleted file mode 100644
index 42bec62d62f0674ecc40a1b61c5870b2fe85ab51..0000000000000000000000000000000000000000
--- a/ofl/cormorantsc/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/CormorantSC-Bold.ttf: CormorantSC-Bold.ttf
-  fonts/ttf/CormorantSC-Light.ttf: CormorantSC-Light.ttf
-  fonts/ttf/CormorantSC-Medium.ttf: CormorantSC-Medium.ttf
-  fonts/ttf/CormorantSC-Regular.ttf: CormorantSC-Regular.ttf
-  fonts/ttf/CormorantSC-SemiBold.ttf: CormorantSC-SemiBold.ttf
diff --git a/ofl/cormorantunicase/METADATA.pb b/ofl/cormorantunicase/METADATA.pb
index a7e02ecc8ffd3112f045ac1068347ce923fb10f3..23bf3bfdfe353e7a84333f1cf4068778d121a6d3 100644
--- a/ofl/cormorantunicase/METADATA.pb
+++ b/ofl/cormorantunicase/METADATA.pb
@@ -57,4 +57,29 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/CatharsisFonts/Cormorant"
   commit: "cc1bfb51ce6568cb3abf9199ab718d543f6fa189"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantUnicase-Bold.ttf"
+    dest_file: "CormorantUnicase-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantUnicase-Light.ttf"
+    dest_file: "CormorantUnicase-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantUnicase-Medium.ttf"
+    dest_file: "CormorantUnicase-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantUnicase-Regular.ttf"
+    dest_file: "CormorantUnicase-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CormorantUnicase-SemiBold.ttf"
+    dest_file: "CormorantUnicase-SemiBold.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/cormorantunicase/upstream.yaml b/ofl/cormorantunicase/upstream.yaml
deleted file mode 100644
index 2656d42cffc4ff038b46fc06757e18d4a9649b0f..0000000000000000000000000000000000000000
--- a/ofl/cormorantunicase/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/CormorantUnicase-Bold.ttf: CormorantUnicase-Bold.ttf
-  fonts/ttf/CormorantUnicase-Light.ttf: CormorantUnicase-Light.ttf
-  fonts/ttf/CormorantUnicase-Medium.ttf: CormorantUnicase-Medium.ttf
-  fonts/ttf/CormorantUnicase-Regular.ttf: CormorantUnicase-Regular.ttf
-  fonts/ttf/CormorantUnicase-SemiBold.ttf: CormorantUnicase-SemiBold.ttf
diff --git a/ofl/crimsontext/METADATA.pb b/ofl/crimsontext/METADATA.pb
index ac79dd0e5d79f874182b52a1f2792a764b1256fc..a8a7622e88b17901ba80454a8587845bf1475dd4 100644
--- a/ofl/crimsontext/METADATA.pb
+++ b/ofl/crimsontext/METADATA.pb
@@ -64,4 +64,33 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/Crimson"
   commit: "4f1458ae64c6c0d9c5fdfbf5095c7fabe0fa063f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/CrimsonText-Bold.ttf"
+    dest_file: "CrimsonText-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CrimsonText-BoldItalic.ttf"
+    dest_file: "CrimsonText-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CrimsonText-Italic.ttf"
+    dest_file: "CrimsonText-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CrimsonText-Regular.ttf"
+    dest_file: "CrimsonText-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CrimsonText-SemiBold.ttf"
+    dest_file: "CrimsonText-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/CrimsonText-SemiBoldItalic.ttf"
+    dest_file: "CrimsonText-SemiBoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/crimsontext/upstream.yaml b/ofl/crimsontext/upstream.yaml
deleted file mode 100644
index b6d23421438d3a3a0263700d4d365e8109afa177..0000000000000000000000000000000000000000
--- a/ofl/crimsontext/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/CrimsonText-Bold.ttf: CrimsonText-Bold.ttf
-  fonts/ttf/CrimsonText-BoldItalic.ttf: CrimsonText-BoldItalic.ttf
-  fonts/ttf/CrimsonText-Italic.ttf: CrimsonText-Italic.ttf
-  fonts/ttf/CrimsonText-Regular.ttf: CrimsonText-Regular.ttf
-  fonts/ttf/CrimsonText-SemiBold.ttf: CrimsonText-SemiBold.ttf
-  fonts/ttf/CrimsonText-SemiBoldItalic.ttf: CrimsonText-SemiBoldItalic.ttf
diff --git a/ofl/cuprum/METADATA.pb b/ofl/cuprum/METADATA.pb
index 9d26cac37e0dfa93d72d33e016c02d9c8f0a18a8..124efb811aa53f4af2b65b0fd94a0f3f68e2008b 100644
--- a/ofl/cuprum/METADATA.pb
+++ b/ofl/cuprum/METADATA.pb
@@ -32,3 +32,35 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/alexeiva/cuprum"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Cuprum-Italic[wght].ttf"
+    dest_file: "Cuprum-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Cuprum[wght].ttf"
+    dest_file: "Cuprum[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Cuprum-Regular.ttf"
+    dest_file: "static/Cuprum-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Cuprum-Bold.ttf"
+    dest_file: "static/Cuprum-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Cuprum-Italic.ttf"
+    dest_file: "static/Cuprum-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Cuprum-BoldItalic.ttf"
+    dest_file: "static/Cuprum-BoldItalic.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/cuprum/upstream.yaml b/ofl/cuprum/upstream.yaml
deleted file mode 100644
index 3abccb31ec7ba8e256c265139b56d18b116b5f9f..0000000000000000000000000000000000000000
--- a/ofl/cuprum/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Cuprum-Italic[wght].ttf: Cuprum-Italic[wght].ttf
-  fonts/variable/Cuprum[wght].ttf: Cuprum[wght].ttf
-  fonts/ttf/Cuprum-Regular.ttf: static/Cuprum-Regular.ttf
-  fonts/ttf/Cuprum-Bold.ttf: static/Cuprum-Bold.ttf
-  fonts/ttf/Cuprum-Italic.ttf: static/Cuprum-Italic.ttf
-  fonts/ttf/Cuprum-BoldItalic.ttf: static/Cuprum-BoldItalic.ttf
-repository_url: https://github.com/alexeiva/cuprum
diff --git a/ofl/daibannasil/METADATA.pb b/ofl/daibannasil/METADATA.pb
index f88099b4013730fdfb1b9ca1996fdb09b06715cf..092c8c4c7a57563c7afb1c6e995f47c02c3535da 100644
--- a/ofl/daibannasil/METADATA.pb
+++ b/ofl/daibannasil/METADATA.pb
@@ -100,5 +100,50 @@ subsets: "new-tai-lue"
 source {
   repository_url: "https://github.com/silnrsi/font-daibannasil"
   archive_url: "https://github.com/silnrsi/font-daibannasil/releases/download/v4.000/DaiBannaSIL-4.000.zip"
+  files {
+    source_file: "DaiBannaSIL-4.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-Light.ttf"
+    dest_file: "DaiBannaSIL-Light.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-LightItalic.ttf"
+    dest_file: "DaiBannaSIL-LightItalic.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-Regular.ttf"
+    dest_file: "DaiBannaSIL-Regular.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-Italic.ttf"
+    dest_file: "DaiBannaSIL-Italic.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-Medium.ttf"
+    dest_file: "DaiBannaSIL-Medium.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-MediumItalic.ttf"
+    dest_file: "DaiBannaSIL-MediumItalic.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-SemiBold.ttf"
+    dest_file: "DaiBannaSIL-SemiBold.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-SemiBoldItalic.ttf"
+    dest_file: "DaiBannaSIL-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-Bold.ttf"
+    dest_file: "DaiBannaSIL-Bold.ttf"
+  }
+  files {
+    source_file: "DaiBannaSIL-4.000/DaiBannaSIL-BoldItalic.ttf"
+    dest_file: "DaiBannaSIL-BoldItalic.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Talu"
diff --git a/ofl/daibannasil/upstream.yaml b/ofl/daibannasil/upstream.yaml
deleted file mode 100644
index e01f0b78f2054c519b9dc5ad69ba6ce432926231..0000000000000000000000000000000000000000
--- a/ofl/daibannasil/upstream.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-archive: https://github.com/silnrsi/font-daibannasil/releases/download/v4.000/DaiBannaSIL-4.000.zip
-branch: master
-files:
-  DaiBannaSIL-4.000/OFL.txt: OFL.txt
-  DaiBannaSIL-4.000/DaiBannaSIL-Light.ttf: DaiBannaSIL-Light.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-LightItalic.ttf: DaiBannaSIL-LightItalic.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-Regular.ttf: DaiBannaSIL-Regular.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-Italic.ttf: DaiBannaSIL-Italic.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-Medium.ttf: DaiBannaSIL-Medium.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-MediumItalic.ttf: DaiBannaSIL-MediumItalic.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-SemiBold.ttf: DaiBannaSIL-SemiBold.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-SemiBoldItalic.ttf: DaiBannaSIL-SemiBoldItalic.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-Bold.ttf: DaiBannaSIL-Bold.ttf
-  DaiBannaSIL-4.000/DaiBannaSIL-BoldItalic.ttf: DaiBannaSIL-BoldItalic.ttf
diff --git a/ofl/dancingscript/METADATA.pb b/ofl/dancingscript/METADATA.pb
index bcdd017bea1232de015b53ff7b7c08f51c903b3a..550a9d976256c8ae63babd4f5144397587a13dd2 100644
--- a/ofl/dancingscript/METADATA.pb
+++ b/ofl/dancingscript/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/DancingScript"
+  files {
+    source_file: "fonts/variable/DancingScript[wght].ttf"
+    dest_file: "DancingScript[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/dancingscript/upstream.yaml b/ofl/dancingscript/upstream.yaml
deleted file mode 100644
index b2ee525a12ce8f355359feb92e0d1d9d862cb7bb..0000000000000000000000000000000000000000
--- a/ofl/dancingscript/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/DancingScript[wght].ttf: DancingScript[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/DancingScript
diff --git a/ofl/danfo/METADATA.pb b/ofl/danfo/METADATA.pb
index 4fd334f88fdfdc8ae8af2d2fda119bdd04366d4a..b1876a9314e85ef56f69ccc35d2c0d01f11862b5 100644
--- a/ofl/danfo/METADATA.pb
+++ b/ofl/danfo/METADATA.pb
@@ -24,6 +24,15 @@ axes {
 source {
   repository_url: "https://github.com/Afrotype/danfo"
   commit: "a66fc9ded8f42ad2d39b91c9cd8a1960737ad02a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Danfo[ELSH].ttf"
+    dest_file: "Danfo[ELSH].ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/danfo/upstream.yaml b/ofl/danfo/upstream.yaml
deleted file mode 100644
index 0c42051bd94d3c4bda4661db861767163f3da740..0000000000000000000000000000000000000000
--- a/ofl/danfo/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Danfo[ELSH].ttf: Danfo[ELSH].ttf
-archive:
diff --git a/ofl/dangrek/METADATA.pb b/ofl/dangrek/METADATA.pb
index af52d17049773abd6d6403d7c6a498ba4e19f3bd..9ba8e9279d177c863270b8fc160fb3219292d6ef 100644
--- a/ofl/dangrek/METADATA.pb
+++ b/ofl/dangrek/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Dangrek"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Dangrek-Regular.ttf"
+    dest_file: "Dangrek-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/dangrek/upstream.yaml b/ofl/dangrek/upstream.yaml
deleted file mode 100644
index a1651c7364cc9fce852ad5424ffbc2062ace4e9f..0000000000000000000000000000000000000000
--- a/ofl/dangrek/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Dangrek-Regular.ttf: Dangrek-Regular.ttf
-repository_url: https://github.com/danhhong/Dangrek.git
diff --git a/ofl/darkergrotesque/METADATA.pb b/ofl/darkergrotesque/METADATA.pb
index b1a0006717242aecd999eda089addad670848b3e..82d311ea264f191a030291e0a6f9127c78c1ddfe 100644
--- a/ofl/darkergrotesque/METADATA.pb
+++ b/ofl/darkergrotesque/METADATA.pb
@@ -24,4 +24,13 @@ axes {
 source {
   repository_url: "https://github.com/bettergui/DarkerGrotesque"
   commit: "a5c3584b44ab3a7d272565662139ee07bb72e8e8"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/DarkerGrotesque[wght].ttf"
+    dest_file: "DarkerGrotesque[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/darkergrotesque/upstream.yaml b/ofl/darkergrotesque/upstream.yaml
deleted file mode 100644
index d79e8432d1b7d4ef2bca00471e7b8e07705af423..0000000000000000000000000000000000000000
--- a/ofl/darkergrotesque/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/DarkerGrotesque[wght].ttf: DarkerGrotesque[wght].ttf
-archive:
diff --git a/ofl/darumadropone/METADATA.pb b/ofl/darumadropone/METADATA.pb
index dba7a756d6ffcf0bfffdf7f179c440f6fabe4cce..675464d045b2e7ecc535663712b69ce384077bea 100644
--- a/ofl/darumadropone/METADATA.pb
+++ b/ofl/darumadropone/METADATA.pb
@@ -16,8 +16,24 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
-languages: "ja_Kana"
-languages: "ja_Hira"
+source {
+  repository_url: "https://github.com/ManiackersDesign/darumadrop"
+  files {
+    source_file: "fonts/ttf/DarumadropOne-Regular.ttf"
+    dest_file: "DarumadropOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/darumadropone/upstream.yaml b/ofl/darumadropone/upstream.yaml
deleted file mode 100644
index 979e6979abe46330688dfa5e848a559c90cf0595..0000000000000000000000000000000000000000
--- a/ofl/darumadropone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/DarumadropOne-Regular.ttf: DarumadropOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/ManiackersDesign/darumadrop.git
diff --git a/ofl/davidlibre/METADATA.pb b/ofl/davidlibre/METADATA.pb
index f738209a6d627e2c2ce264a4d5cf2d385498573c..5af0f2448007067f604f0f37342396d6a186d804 100644
--- a/ofl/davidlibre/METADATA.pb
+++ b/ofl/davidlibre/METADATA.pb
@@ -40,5 +40,22 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/meirsadan/david-libre"
   commit: "15496c1be77e35f3fa3d0df14a2c2c6f9adfd297"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/DavidLibre-Regular.ttf"
+    dest_file: "DavidLibre-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/DavidLibre-Medium.ttf"
+    dest_file: "DavidLibre-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/DavidLibre-Bold.ttf"
+    dest_file: "DavidLibre-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Hebr"
diff --git a/ofl/davidlibre/upstream.yaml b/ofl/davidlibre/upstream.yaml
deleted file mode 100644
index 0d86fb6f2e9986c93b6375eb3753dbbfc4c24fb5..0000000000000000000000000000000000000000
--- a/ofl/davidlibre/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/DavidLibre-Regular.ttf: DavidLibre-Regular.ttf
-  fonts/ttf/DavidLibre-Medium.ttf: DavidLibre-Medium.ttf
-  fonts/ttf/DavidLibre-Bold.ttf: DavidLibre-Bold.ttf
diff --git a/ofl/delagothicone/METADATA.pb b/ofl/delagothicone/METADATA.pb
index f92c5a57a40e25d008cc309dfaf1c3f1bacb1fb3..05e6d97239e18c5379775accda7e7177cc0afb81 100644
--- a/ofl/delagothicone/METADATA.pb
+++ b/ofl/delagothicone/METADATA.pb
@@ -19,5 +19,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/syakuzen/DelaGothic"
+  files {
+    source_file: "fonts/ttf/DelaGothicOne-Regular.ttf"
+    dest_file: "DelaGothicOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/delagothicone/upstream.yaml b/ofl/delagothicone/upstream.yaml
deleted file mode 100644
index e9b76609cb20a057dbe1e7caf1be2b2880dda6a0..0000000000000000000000000000000000000000
--- a/ofl/delagothicone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/DelaGothicOne-Regular.ttf: DelaGothicOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/syakuzen/DelaGothic.git
diff --git a/ofl/delicioushandrawn/METADATA.pb b/ofl/delicioushandrawn/METADATA.pb
index 59ac711ead045519958500a4c12a6074eb2077f4..297d55f6c6d15f9703ce9a26427bb031a8f1aee7 100644
--- a/ofl/delicioushandrawn/METADATA.pb
+++ b/ofl/delicioushandrawn/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/alphArtype/Delicious-Handrawn"
   commit: "0a9b42f98d6f2ee40563a406b1cdd9bb5a58fe57"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/DeliciousHandrawn-Regular.ttf"
+    dest_file: "DeliciousHandrawn-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/delicioushandrawn/upstream.yaml b/ofl/delicioushandrawn/upstream.yaml
deleted file mode 100644
index 011818561de7a4a60ef798f9ba7e7409df4ac40e..0000000000000000000000000000000000000000
--- a/ofl/delicioushandrawn/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/DeliciousHandrawn-Regular.ttf: DeliciousHandrawn-Regular.ttf
-archive:
diff --git a/ofl/denkone/METADATA.pb b/ofl/denkone/METADATA.pb
index 44eec0d20a9b16f87c742dc2a91c7d128c1a97c0..3b96a549192723a421e0fa7ec69c6acb7597669d 100644
--- a/ofl/denkone/METADATA.pb
+++ b/ofl/denkone/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Denk-One"
   commit: "95da30b8aa7bd5fb3045afb2fe054bf1b2e4e029"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/DenkOne-Regular.ttf"
+    dest_file: "DenkOne-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/denkone/upstream.yaml b/ofl/denkone/upstream.yaml
deleted file mode 100644
index 0d052a3434134342e7a3ff2b19470f76ac97c8a6..0000000000000000000000000000000000000000
--- a/ofl/denkone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/DenkOne-Regular.ttf: DenkOne-Regular.ttf
-archive:
diff --git a/ofl/diphylleia/METADATA.pb b/ofl/diphylleia/METADATA.pb
index 01afb44a3a3cfe36b9e4eb2e5021cbff6fb46ef5..50c78e72c364219d103bb6686e7c3889f426de5a 100644
--- a/ofl/diphylleia/METADATA.pb
+++ b/ofl/diphylleia/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/JAMO-TYPEFACE/Diphylleia"
   commit: "d481ed1f2dc17d2457f9788351a1d4e886cdc221"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/Diphylleia-Regular.ttf"
+    dest_file: "Diphylleia-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Kore"
diff --git a/ofl/diphylleia/upstream.yaml b/ofl/diphylleia/upstream.yaml
deleted file mode 100644
index 9d399ab2d800feda126f9f07541e936d9e416709..0000000000000000000000000000000000000000
--- a/ofl/diphylleia/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/Diphylleia-Regular.ttf: Diphylleia-Regular.ttf
-archive:
diff --git a/ofl/diplomata/METADATA.pb b/ofl/diplomata/METADATA.pb
index e4d8b53fd284a50fc62aaf19d274cf2e3448f0ed..bbfc8adb869a80ad742074cf6b7f5fcf026577f4 100644
--- a/ofl/diplomata/METADATA.pb
+++ b/ofl/diplomata/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/diplomata"
   commit: "32dc35e6b420631acc10808e1f92f74e3048e81d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/diplomata/ttf/Diplomata-Regular.ttf"
+    dest_file: "Diplomata-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/diplomata/upstream.yaml b/ofl/diplomata/upstream.yaml
deleted file mode 100644
index a8c81907af85994a074b896974a6d15c5023f4aa..0000000000000000000000000000000000000000
--- a/ofl/diplomata/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/diplomata/ttf/Diplomata-Regular.ttf: Diplomata-Regular.ttf
-archive:
diff --git a/ofl/diplomatasc/METADATA.pb b/ofl/diplomatasc/METADATA.pb
index fbeefd1adb5e46ef7ae7ed5d8396a471dd47266e..1bf048c8237f6199b5b7e0b5908dcb556d13ca28 100644
--- a/ofl/diplomatasc/METADATA.pb
+++ b/ofl/diplomatasc/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/diplomata"
   commit: "32dc35e6b420631acc10808e1f92f74e3048e81d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/diplomatasc/ttf/DiplomataSC-Regular.ttf"
+    dest_file: "DiplomataSC-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/diplomatasc/upstream.yaml b/ofl/diplomatasc/upstream.yaml
deleted file mode 100644
index d58cc2e4c609790103ab7c281d76d9584d9b1943..0000000000000000000000000000000000000000
--- a/ofl/diplomatasc/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/diplomatasc/ttf/DiplomataSC-Regular.ttf: DiplomataSC-Regular.ttf
-archive:
diff --git a/ofl/dmsans/METADATA.pb b/ofl/dmsans/METADATA.pb
index 2944c934bacdea70c88154b4da704c9208bcd718..bc40f78c6b8e917312c2321248cdcbec55cb7796 100644
--- a/ofl/dmsans/METADATA.pb
+++ b/ofl/dmsans/METADATA.pb
@@ -37,4 +37,17 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/dm-fonts"
   commit: "d0520ba03bd780f5dccb3024854463d44f699b78"
+  files {
+    source_file: "Sans/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Sans/fonts/variable/DMSans[opsz,wght].ttf"
+    dest_file: "DMSans[opsz,wght].ttf"
+  }
+  files {
+    source_file: "Sans/fonts/variable/DMSans-Italic[opsz,wght].ttf"
+    dest_file: "DMSans-Italic[opsz,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/dmsans/upstream.yaml b/ofl/dmsans/upstream.yaml
deleted file mode 100644
index 9af9629bae35601390d445f1c0bd2500912f7e1f..0000000000000000000000000000000000000000
--- a/ofl/dmsans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  Sans/OFL.txt: OFL.txt
-  Sans/fonts/variable/DMSans[opsz,wght].ttf: DMSans[opsz,wght].ttf
-  Sans/fonts/variable/DMSans-Italic[opsz,wght].ttf: DMSans-Italic[opsz,wght].ttf
-archive:
diff --git a/ofl/dongle/METADATA.pb b/ofl/dongle/METADATA.pb
index 96059a0bf7d415952fe742c2277ae81a915dc3c5..60fcdebe0ac91537c0e943acf010fd223bb7214c 100644
--- a/ofl/dongle/METADATA.pb
+++ b/ofl/dongle/METADATA.pb
@@ -35,5 +35,29 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/yangheeryu/Dongle"
+  files {
+    source_file: "fonts/ttf/Dongle-Light.ttf"
+    dest_file: "Dongle-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Dongle-Regular.ttf"
+    dest_file: "Dongle-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Dongle-Bold.ttf"
+    dest_file: "Dongle-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/dongle/upstream.yaml b/ofl/dongle/upstream.yaml
deleted file mode 100644
index cbc0056ddfdab633ab4b1008df304c217647176b..0000000000000000000000000000000000000000
--- a/ofl/dongle/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Dongle-Light.ttf: Dongle-Light.ttf
-  fonts/ttf/Dongle-Regular.ttf: Dongle-Regular.ttf
-  fonts/ttf/Dongle-Bold.ttf: Dongle-Bold.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/yangheeryu/Dongle.git
diff --git a/ofl/dosis/METADATA.pb b/ofl/dosis/METADATA.pb
index 09d8ac3a3f025f8c70443f3c3d6d9245a919bbd3..ed0832c74ff3d87eb01583817358979175d1cc51 100644
--- a/ofl/dosis/METADATA.pb
+++ b/ofl/dosis/METADATA.pb
@@ -21,5 +21,17 @@ axes {
   min_value: 200.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/dosis-vf"
+  files {
+    source_file: "fonts/variable/Dosis[wght].ttf"
+    dest_file: "Dosis[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/dosis/upstream.yaml b/ofl/dosis/upstream.yaml
deleted file mode 100644
index 7c1ae0f89b0517b0ecb0aeef426a5bcc5c9f3ee5..0000000000000000000000000000000000000000
--- a/ofl/dosis/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/Dosis[wght].ttf: Dosis[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/dosis-vf
diff --git a/ofl/dotgothic16/METADATA.pb b/ofl/dotgothic16/METADATA.pb
index 577348249570ca850df16ccb78ff2b1ca6db4808..5086808d9e83b4702da4cf1bd0d131961914ba32 100644
--- a/ofl/dotgothic16/METADATA.pb
+++ b/ofl/dotgothic16/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/DotGothic16"
+  files {
+    source_file: "fonts/ttf/DotGothic16-Regular.ttf"
+    dest_file: "DotGothic16-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/dotgothic16/upstream.yaml b/ofl/dotgothic16/upstream.yaml
deleted file mode 100644
index ffa90a65bd1941ce2b5082c318bc1137124a7f04..0000000000000000000000000000000000000000
--- a/ofl/dotgothic16/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/DotGothic16-Regular.ttf: DotGothic16-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/DotGothic16.git
diff --git a/ofl/dynapuff/METADATA.pb b/ofl/dynapuff/METADATA.pb
index 66e13e877ba7c7ad01991c0f4345fd216adce57b..5a31daece0bd8a6937d2996fe0196b344672b84f 100644
--- a/ofl/dynapuff/METADATA.pb
+++ b/ofl/dynapuff/METADATA.pb
@@ -29,4 +29,13 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/dynapuff"
   commit: "d1b4a98067a23e7ffbcf5b3665a887241983857b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/DynaPuff[wdth,wght].ttf"
+    dest_file: "DynaPuff[wdth,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/dynapuff/upstream.yaml b/ofl/dynapuff/upstream.yaml
deleted file mode 100644
index 3f2421be44c2e6c8a5e36ef901483f0d0eeaca57..0000000000000000000000000000000000000000
--- a/ofl/dynapuff/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/DynaPuff[wdth,wght].ttf: DynaPuff[wdth,wght].ttf
-archive:
diff --git a/ofl/eczar/METADATA.pb b/ofl/eczar/METADATA.pb
index e2ae4b502fc0be54f16fab9b2cbdff00f23c6d21..1194d56dd595eacbcc9dc7b32e7b06ad42483407 100644
--- a/ofl/eczar/METADATA.pb
+++ b/ofl/eczar/METADATA.pb
@@ -26,4 +26,17 @@ axes {
 source {
   repository_url: "https://github.com/rosettatype/eczar"
   commit: "f248ec9c0c5e3a9442d22824cc1cba6c713725d5"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "release/variable/Eczar[wght].ttf"
+    dest_file: "Eczar[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
diff --git a/ofl/eczar/upstream.yaml b/ofl/eczar/upstream.yaml
deleted file mode 100644
index 163629d8fba4c4ee3d1107ba3018f09fcfac2937..0000000000000000000000000000000000000000
--- a/ofl/eczar/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  release/variable/Eczar[wght].ttf: Eczar[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/edunswactfoundation/METADATA.pb b/ofl/edunswactfoundation/METADATA.pb
index 03d938039433d5c2e6260a937268afb16a211617..5dad3cddae3020f750bd7e755ef509bea3f69524 100644
--- a/ofl/edunswactfoundation/METADATA.pb
+++ b/ofl/edunswactfoundation/METADATA.pb
@@ -22,4 +22,13 @@ axes {
 source {
   repository_url: "https://github.com/MezMerrit/AU-School-Handwriting-Fonts"
   commit: "0dbdee65c92d10e24e5d634719054f4f96b69133"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NSW-ACT-School-Fonts/fonts/variable/EduNSWACTFoundation[wght].ttf"
+    dest_file: "EduNSWACTFoundation[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/edunswactfoundation/upstream.yaml b/ofl/edunswactfoundation/upstream.yaml
deleted file mode 100644
index 562f105a3e3f99d5a4513b4eb8fc3cba159fda79..0000000000000000000000000000000000000000
--- a/ofl/edunswactfoundation/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NSW-ACT-School-Fonts/fonts/variable/EduNSWACTFoundation[wght].ttf: EduNSWACTFoundation[wght].ttf
diff --git a/ofl/eduqldbeginner/METADATA.pb b/ofl/eduqldbeginner/METADATA.pb
index 6f123b1c16dcd0dce2b0a33a6942beacf081c9bf..208ef4012c85f1e289b7c19a417d2f99f7efce94 100644
--- a/ofl/eduqldbeginner/METADATA.pb
+++ b/ofl/eduqldbeginner/METADATA.pb
@@ -22,4 +22,13 @@ axes {
 source {
   repository_url: "https://github.com/MezMerrit/AU-School-Handwriting-Fonts"
   commit: "0dbdee65c92d10e24e5d634719054f4f96b69133"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "QLD-School-Fonts/fonts/variable/EduQLDBeginner[wght].ttf"
+    dest_file: "EduQLDBeginner[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/eduqldbeginner/upstream.yaml b/ofl/eduqldbeginner/upstream.yaml
deleted file mode 100644
index f47921652c3f832fd6263bd0a7d0184c00c4ef01..0000000000000000000000000000000000000000
--- a/ofl/eduqldbeginner/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  QLD-School-Fonts/fonts/variable/EduQLDBeginner[wght].ttf: EduQLDBeginner[wght].ttf
diff --git a/ofl/edusabeginner/METADATA.pb b/ofl/edusabeginner/METADATA.pb
index 67ade8f4773b7045e7221893c83a257b1fcb09a2..7890ded614ab527148b2199740967c3e4f6a720d 100644
--- a/ofl/edusabeginner/METADATA.pb
+++ b/ofl/edusabeginner/METADATA.pb
@@ -22,4 +22,13 @@ axes {
 source {
   repository_url: "https://github.com/MezMerrit/AU-School-Handwriting-Fonts"
   commit: "0dbdee65c92d10e24e5d634719054f4f96b69133"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "SA-School-Fonts/fonts/variable/EduSABeginner[wght].ttf"
+    dest_file: "EduSABeginner[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/edusabeginner/upstream.yaml b/ofl/edusabeginner/upstream.yaml
deleted file mode 100644
index 387ff3d4b980d1cc5fbd33f62e020d0f1235d893..0000000000000000000000000000000000000000
--- a/ofl/edusabeginner/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  SA-School-Fonts/fonts/variable/EduSABeginner[wght].ttf: EduSABeginner[wght].ttf
diff --git a/ofl/edutasbeginner/METADATA.pb b/ofl/edutasbeginner/METADATA.pb
index ac14916ca96670754ad86724e33b14b50bc15443..74b4daecd640c9bf6167ff297166b02dcd995de7 100644
--- a/ofl/edutasbeginner/METADATA.pb
+++ b/ofl/edutasbeginner/METADATA.pb
@@ -22,4 +22,13 @@ axes {
 source {
   repository_url: "https://github.com/MezMerrit/AU-School-Handwriting-Fonts"
   commit: "0dbdee65c92d10e24e5d634719054f4f96b69133"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "TAS-School-Fonts/fonts/variable/EduTASBeginner[wght].ttf"
+    dest_file: "EduTASBeginner[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/edutasbeginner/upstream.yaml b/ofl/edutasbeginner/upstream.yaml
deleted file mode 100644
index c2b1bb7488ddcb6c9e3753ec577981c6a8fe2a19..0000000000000000000000000000000000000000
--- a/ofl/edutasbeginner/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  TAS-School-Fonts/fonts/variable/EduTASBeginner[wght].ttf: EduTASBeginner[wght].ttf
diff --git a/ofl/eduvicwantbeginner/METADATA.pb b/ofl/eduvicwantbeginner/METADATA.pb
index 830242aacd4291ac4cbb60db00574cb552dd39a6..ab7799107bffce7d48ef2064f031028911ed9a74 100644
--- a/ofl/eduvicwantbeginner/METADATA.pb
+++ b/ofl/eduvicwantbeginner/METADATA.pb
@@ -22,4 +22,13 @@ axes {
 source {
   repository_url: "https://github.com/MezMerrit/AU-School-Handwriting-Fonts"
   commit: "0dbdee65c92d10e24e5d634719054f4f96b69133"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "VIC-WA-NT-School-fonts/fonts/variable/EduVICWANTBeginner[wght].ttf"
+    dest_file: "EduVICWANTBeginner[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/eduvicwantbeginner/upstream.yaml b/ofl/eduvicwantbeginner/upstream.yaml
deleted file mode 100644
index 48ca6c9f497968539702847697911456f2f993f4..0000000000000000000000000000000000000000
--- a/ofl/eduvicwantbeginner/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  VIC-WA-NT-School-fonts/fonts/variable/EduVICWANTBeginner[wght].ttf: EduVICWANTBeginner[wght].ttf
diff --git a/ofl/elmessiri/METADATA.pb b/ofl/elmessiri/METADATA.pb
index e10740d683392ae65a2b1226ca1664e953bac90f..0c37e5f6f22ebf426ff8163a9e31e750c758cec7 100644
--- a/ofl/elmessiri/METADATA.pb
+++ b/ofl/elmessiri/METADATA.pb
@@ -17,9 +17,21 @@ subsets: "cyrillic"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
-primary_script: "Arab"
 axes {
   tag: "wght"
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/Gue3bara/El-Messiri"
+  files {
+    source_file: "fonts/variable/ElMessiri[wght].ttf"
+    dest_file: "ElMessiri[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
+primary_script: "Arab"
diff --git a/ofl/elmessiri/upstream.yaml b/ofl/elmessiri/upstream.yaml
deleted file mode 100644
index 418038bcb77f4ae4d23098a34a6439dc394fe22f..0000000000000000000000000000000000000000
--- a/ofl/elmessiri/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/ElMessiri[wght].ttf: ElMessiri[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Gue3bara/El-Messiri
diff --git a/ofl/ephesis/METADATA.pb b/ofl/ephesis/METADATA.pb
index 1da6c9cc77ba709032dfccf1125f253fbfbb8d6e..c2f25827ca5b598ee1d50732f981a662ad2dde2c 100644
--- a/ofl/ephesis/METADATA.pb
+++ b/ofl/ephesis/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/ephesis"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Ephesis-Regular.ttf"
+    dest_file: "Ephesis-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/ephesis/upstream.yaml b/ofl/ephesis/upstream.yaml
deleted file mode 100644
index bb49a06948653d44cbfd572ac848d15403e9a6de..0000000000000000000000000000000000000000
--- a/ofl/ephesis/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Ephesis-Regular.ttf: Ephesis-Regular.ttf
-repository_url: https://github.com/googlefonts/ephesis
diff --git a/ofl/estonia/METADATA.pb b/ofl/estonia/METADATA.pb
index f781c134f79e206c27abb35380a15ab5ee55f835..709cde79a5a58fbb248d02710335d5e87c746153 100644
--- a/ofl/estonia/METADATA.pb
+++ b/ofl/estonia/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/estonia"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Estonia-Regular.ttf"
+    dest_file: "Estonia-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/estonia/upstream.yaml b/ofl/estonia/upstream.yaml
deleted file mode 100644
index 23846784872351ee74aa1e12a67d5aef4c365e39..0000000000000000000000000000000000000000
--- a/ofl/estonia/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Estonia-Regular.ttf: Estonia-Regular.ttf
-repository_url: https://github.com/googlefonts/estonia
diff --git a/ofl/exo2/METADATA.pb b/ofl/exo2/METADATA.pb
index 6ef4189c00537f7c496ce3bf1bac7d74a71d9844..0ca828b9593c121d73dc93417d6cfc292075e2fc 100644
--- a/ofl/exo2/METADATA.pb
+++ b/ofl/exo2/METADATA.pb
@@ -35,4 +35,17 @@ axes {
 source {
   repository_url: "https://github.com/NDISCOVER/Exo-2.0"
   commit: "182060cd38adf3cde0d22add3f8009d30bd48cde"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Exo2[wght].ttf"
+    dest_file: "Exo2[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Exo2-Italic[wght].ttf"
+    dest_file: "Exo2-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/exo2/upstream.yaml b/ofl/exo2/upstream.yaml
deleted file mode 100644
index 12263e4ca878c18f477280da3e7b2a7d74072c47..0000000000000000000000000000000000000000
--- a/ofl/exo2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Exo2[wght].ttf: Exo2[wght].ttf
-  fonts/variable/Exo2-Italic[wght].ttf: Exo2-Italic[wght].ttf
-archive:
diff --git a/ofl/expletussans/METADATA.pb b/ofl/expletussans/METADATA.pb
index f5b4d77bf87a151dd9f06bbf02f8fc72f020c4e8..47605dcce17cefab9a190d7b23e8e026b5ef3240 100644
--- a/ofl/expletussans/METADATA.pb
+++ b/ofl/expletussans/METADATA.pb
@@ -29,5 +29,21 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/Expletus-Sans"
+  files {
+    source_file: "fonts/variable/ExpletusSans[wght].ttf"
+    dest_file: "ExpletusSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/ExpletusSans-Italic[wght].ttf"
+    dest_file: "ExpletusSans-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/expletussans/upstream.yaml b/ofl/expletussans/upstream.yaml
deleted file mode 100644
index af70ea0298cfd560af9e99dfa89b65fedbf1455c..0000000000000000000000000000000000000000
--- a/ofl/expletussans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/ExpletusSans[wght].ttf: ExpletusSans[wght].ttf
-  fonts/variable/ExpletusSans-Italic[wght].ttf: ExpletusSans-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/Expletus-Sans
diff --git a/ofl/explora/METADATA.pb b/ofl/explora/METADATA.pb
index 0536584a3f74991f1dcf1808f4b8bb08bd842c58..250caa66153328abbe62e9b95c4c269aa2f2c736 100644
--- a/ofl/explora/METADATA.pb
+++ b/ofl/explora/METADATA.pb
@@ -17,5 +17,17 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/explora"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Explora-Regular.ttf"
+    dest_file: "Explora-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/explora/upstream.yaml b/ofl/explora/upstream.yaml
deleted file mode 100644
index 86e99c61415e33bad8f707328b68df17259d94af..0000000000000000000000000000000000000000
--- a/ofl/explora/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Explora-Regular.ttf: Explora-Regular.ttf
-repository_url: https://github.com/googlefonts/explora
diff --git a/ofl/familjengrotesk/METADATA.pb b/ofl/familjengrotesk/METADATA.pb
index d18ae1a0041feb9bf4c5b006badd2b4c4da6408d..a66d8df5a3c21e3286d287e5131e71d1a6db263b 100644
--- a/ofl/familjengrotesk/METADATA.pb
+++ b/ofl/familjengrotesk/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/Familjen-Sthlm/Familjen-Grotesk"
   commit: "3db181c2b39766045aff4a99663f515d3247512a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/FamiljenGrotesk[wght].ttf"
+    dest_file: "FamiljenGrotesk[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/FamiljenGrotesk-Italic[wght].ttf"
+    dest_file: "FamiljenGrotesk-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/familjengrotesk/upstream.yaml b/ofl/familjengrotesk/upstream.yaml
deleted file mode 100644
index 6815a4826689d90ff9c083bba176462155d602f8..0000000000000000000000000000000000000000
--- a/ofl/familjengrotesk/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/FamiljenGrotesk[wght].ttf: FamiljenGrotesk[wght].ttf
-  fonts/variable/FamiljenGrotesk-Italic[wght].ttf: FamiljenGrotesk-Italic[wght].ttf
-archive:
diff --git a/ofl/fasterone/METADATA.pb b/ofl/fasterone/METADATA.pb
index 7326d7c723b0e54c793a3dc299f275b8b6ce9dac..65f1b61974b1d98882820f05d35da83e402b68fd 100644
--- a/ofl/fasterone/METADATA.pb
+++ b/ofl/fasterone/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/faster"
   commit: "c1eb445af08bcc5ce66380f65e56d9d3135cca3c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/FasterOne-Regular.ttf"
+    dest_file: "FasterOne-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/fasterone/upstream.yaml b/ofl/fasterone/upstream.yaml
deleted file mode 100644
index 6cbaa9d56de4fcaac3d1812848976ce3a55ac56c..0000000000000000000000000000000000000000
--- a/ofl/fasterone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/FasterOne-Regular.ttf: FasterOne-Regular.ttf
-archive:
diff --git a/ofl/fasthand/METADATA.pb b/ofl/fasthand/METADATA.pb
index 732cbf4535b4c3fd096231efa8d5064b939ed2f9..63ef8064c5db794642aaafe68ab634597a2c5864 100644
--- a/ofl/fasthand/METADATA.pb
+++ b/ofl/fasthand/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Fasthand"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Fasthand-Regular.ttf"
+    dest_file: "Fasthand-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/fasthand/upstream.yaml b/ofl/fasthand/upstream.yaml
deleted file mode 100644
index bba92d2e38a616715e3f59feeba806b07e98d7cf..0000000000000000000000000000000000000000
--- a/ofl/fasthand/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Fasthand-Regular.ttf: Fasthand-Regular.ttf
-repository_url: https://github.com/danhhong/Fasthand.git
diff --git a/ofl/faunaone/METADATA.pb b/ofl/faunaone/METADATA.pb
index f22decc4b2f826db9072a1df55eca7e6d9115379..03db9f7b5a7ba7174a053f11271aa2d219c6d351 100644
--- a/ofl/faunaone/METADATA.pb
+++ b/ofl/faunaone/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/fauna-one"
   commit: "ed89976413a322f9d84aae5d97c17cfe5cf0d95d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/FaunaOne-Regular.ttf"
+    dest_file: "FaunaOne-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/faunaone/upstream.yaml b/ofl/faunaone/upstream.yaml
deleted file mode 100644
index 7674e2f7e88183ca5995b5cb732f88df28679daa..0000000000000000000000000000000000000000
--- a/ofl/faunaone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/FaunaOne-Regular.ttf: FaunaOne-Regular.ttf
-archive:
diff --git a/ofl/faustina/METADATA.pb b/ofl/faustina/METADATA.pb
index 188d651e85b209bd373c0f11156f41e9465041c3..7edb4438f7c516ea6a61338000c7a64a9096d649 100644
--- a/ofl/faustina/METADATA.pb
+++ b/ofl/faustina/METADATA.pb
@@ -30,3 +30,15 @@ axes {
   min_value: 300.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/Omnibus-Type/Faustina"
+  files {
+    source_file: "fonts/variable/Faustina[wght].ttf"
+    dest_file: "Faustina[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Faustina-Italic[wght].ttf"
+    dest_file: "Faustina-Italic[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/faustina/upstream.yaml b/ofl/faustina/upstream.yaml
deleted file mode 100644
index 2ee6401654cc785ce8c8032429d3e045391b16c7..0000000000000000000000000000000000000000
--- a/ofl/faustina/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/Faustina[wght].ttf: Faustina[wght].ttf
-  fonts/variable/Faustina-Italic[wght].ttf: Faustina-Italic[wght].ttf
-repository_url: https://github.com/Omnibus-Type/Faustina
diff --git a/ofl/festive/METADATA.pb b/ofl/festive/METADATA.pb
index f5e3cf90ba1278ab90a0f2f9ab988c01d1d61853..6fd3bba2047ff950b52eedc55ec6d3d7f88c70a5 100644
--- a/ofl/festive/METADATA.pb
+++ b/ofl/festive/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/festive"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Festive-Regular.ttf"
+    dest_file: "Festive-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/festive/upstream.yaml b/ofl/festive/upstream.yaml
deleted file mode 100644
index ecb0de0ee6f5c3b2e6a9ffea431302cabb504d6e..0000000000000000000000000000000000000000
--- a/ofl/festive/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Festive-Regular.ttf: Festive-Regular.ttf
-repository_url: https://github.com/googlefonts/festive
diff --git a/ofl/figtree/METADATA.pb b/ofl/figtree/METADATA.pb
index 035d11f48a3ab23a9831bf9d9546f4d97269dacc..22ee33683273b8552ca947bb1c2f47184c73aad2 100644
--- a/ofl/figtree/METADATA.pb
+++ b/ofl/figtree/METADATA.pb
@@ -32,5 +32,18 @@ axes {
 source {
   repository_url: "https://github.com/erikdkennedy/figtree"
   commit: "efdedb2a9337b5baa897771e91ac9203f99e2084"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Figtree[wght].ttf"
+    dest_file: "Figtree[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Figtree-Italic[wght].ttf"
+    dest_file: "Figtree-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 minisite_url: "https://www.erikdkennedy.com/projects/figtree.html"
diff --git a/ofl/figtree/upstream.yaml b/ofl/figtree/upstream.yaml
deleted file mode 100644
index cc3b83a9f771c88672edd72e2b23712b86acd671..0000000000000000000000000000000000000000
--- a/ofl/figtree/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Figtree[wght].ttf: Figtree[wght].ttf
-  fonts/variable/Figtree-Italic[wght].ttf: Figtree-Italic[wght].ttf
diff --git a/ofl/finlandica/METADATA.pb b/ofl/finlandica/METADATA.pb
index 9653f2cf22d554ffeb062f945aafa8b4ca1b59d7..a5d448ac1870e624e40871a8d06d93d5b7f01607 100644
--- a/ofl/finlandica/METADATA.pb
+++ b/ofl/finlandica/METADATA.pb
@@ -34,4 +34,17 @@ axes {
 source {
   repository_url: "https://github.com/HelsinkiTypeStudio/Finlandica"
   commit: "f18a892e62bdcd80839549c04e3572e2bdca435e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Finlandica[wght].ttf"
+    dest_file: "Finlandica[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Finlandica-Italic[wght].ttf"
+    dest_file: "Finlandica-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/finlandica/upstream.yaml b/ofl/finlandica/upstream.yaml
deleted file mode 100644
index 87bd692fa5923afbb4ba009b8b06137159488a08..0000000000000000000000000000000000000000
--- a/ofl/finlandica/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Finlandica[wght].ttf: Finlandica[wght].ttf
-  fonts/variable/Finlandica-Italic[wght].ttf: Finlandica-Italic[wght].ttf
-archive:
diff --git a/ofl/fjallaone/METADATA.pb b/ofl/fjallaone/METADATA.pb
index dd1099772b4f0cce3c774ba259c8f5ffc93091f8..112a16c1a584e2ed9e093ce725203458e332150e 100644
--- a/ofl/fjallaone/METADATA.pb
+++ b/ofl/fjallaone/METADATA.pb
@@ -20,4 +20,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/FjallaOne"
   commit: "e5fcc44bb44b8a84debd0cc070bad1360cc91761"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/FjallaOne-Regular.ttf"
+    dest_file: "FjallaOne-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/fjallaone/upstream.yaml b/ofl/fjallaone/upstream.yaml
deleted file mode 100644
index c214521e455af47342c81164968c393336bc8507..0000000000000000000000000000000000000000
--- a/ofl/fjallaone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/FjallaOne-Regular.ttf: FjallaOne-Regular.ttf
-archive:
diff --git a/ofl/fleurdeleah/METADATA.pb b/ofl/fleurdeleah/METADATA.pb
index 533c75e54617bcf576edd55f21be4115d6eae45e..353ed156b8f0d07eeb63678759c708b6441bec8d 100644
--- a/ofl/fleurdeleah/METADATA.pb
+++ b/ofl/fleurdeleah/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/fleurdeleah"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/FleurDeLeah-Regular.ttf"
+    dest_file: "FleurDeLeah-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/fleurdeleah/upstream.yaml b/ofl/fleurdeleah/upstream.yaml
deleted file mode 100644
index 64e603c804d8f1a813c503170685b059aab66310..0000000000000000000000000000000000000000
--- a/ofl/fleurdeleah/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/FleurDeLeah-Regular.ttf: FleurDeLeah-Regular.ttf
-repository_url: https://github.com/googlefonts/fleurdeleah
diff --git a/ofl/flowblock/METADATA.pb b/ofl/flowblock/METADATA.pb
index 08a171d4c444f61cb814f7234e38d8211e9ccc0b..f5253aaa08471e6d48284aa7c526756aac1c4048 100644
--- a/ofl/flowblock/METADATA.pb
+++ b/ofl/flowblock/METADATA.pb
@@ -18,5 +18,17 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/HYPD/flow-typeface"
+  files {
+    source_file: "Block/fonts/ttf/FlowBlock-Regular.ttf"
+    dest_file: "FlowBlock-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/flowblock/upstream.yaml b/ofl/flowblock/upstream.yaml
deleted file mode 100644
index a575c6f4e7f6716e5c6abd33062d55422e6a540d..0000000000000000000000000000000000000000
--- a/ofl/flowblock/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  Block/fonts/ttf/FlowBlock-Regular.ttf: FlowBlock-Regular.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/HYPD/flow-typeface
diff --git a/ofl/flowcircular/METADATA.pb b/ofl/flowcircular/METADATA.pb
index 96fbcd9fa9af0f2a83cbe1240440379aeb4f4a4a..5741c501da59621bd64e06a1f2150dcd02371631 100644
--- a/ofl/flowcircular/METADATA.pb
+++ b/ofl/flowcircular/METADATA.pb
@@ -18,5 +18,17 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/HYPD/flow-typeface"
+  files {
+    source_file: "Circular/fonts/ttf/FlowCircular-Regular.ttf"
+    dest_file: "FlowCircular-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/flowcircular/upstream.yaml b/ofl/flowcircular/upstream.yaml
deleted file mode 100644
index b8c8c8e8b09be3c7d6c24806c466ebb60b8631dd..0000000000000000000000000000000000000000
--- a/ofl/flowcircular/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  Circular/fonts/ttf/FlowCircular-Regular.ttf: FlowCircular-Regular.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/HYPD/flow-typeface
diff --git a/ofl/flowrounded/METADATA.pb b/ofl/flowrounded/METADATA.pb
index 6531732ef00e7bc616f12a7ac12b7bff38878d20..4d69e12c65540444d64700f8d49ebc76e4487e99 100644
--- a/ofl/flowrounded/METADATA.pb
+++ b/ofl/flowrounded/METADATA.pb
@@ -18,5 +18,17 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/HYPD/flow-typeface"
+  files {
+    source_file: "Rounded/fonts/ttf/FlowRounded-Regular.ttf"
+    dest_file: "FlowRounded-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/flowrounded/upstream.yaml b/ofl/flowrounded/upstream.yaml
deleted file mode 100644
index 5c1e259f3399b3fbc069eecb7cb0e59dc70befc2..0000000000000000000000000000000000000000
--- a/ofl/flowrounded/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  Rounded/fonts/ttf/FlowRounded-Regular.ttf: FlowRounded-Regular.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/HYPD/flow-typeface
diff --git a/ofl/foldit/METADATA.pb b/ofl/foldit/METADATA.pb
index daf57f9f98f05663b40d2f4d032d4e3cfca3f49e..54858e1264f17535bd0eb726bb5acb57db047068 100644
--- a/ofl/foldit/METADATA.pb
+++ b/ofl/foldit/METADATA.pb
@@ -24,6 +24,11 @@ axes {
 source {
   repository_url: "https://github.com/SophiaDesign/Foldit"
   archive_url: "https://github.com/SophiaDesign/Foldit/releases/download/1.003/Foldit-fonts.zip"
+  files {
+    source_file: "Foldit-fonts/fonts/variable/Foldit[wght].ttf"
+    dest_file: "Foldit[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/foldit/upstream.yaml b/ofl/foldit/upstream.yaml
deleted file mode 100644
index 2c08eb732ab4a978f0843869d16a72d1ba861d59..0000000000000000000000000000000000000000
--- a/ofl/foldit/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-archive: https://github.com/SophiaDesign/Foldit/releases/download/1.003/Foldit-fonts.zip
-branch: main
-files:
-  Foldit-fonts/fonts/variable/Foldit[wght].ttf: Foldit[wght].ttf
diff --git a/ofl/frankruhllibre/METADATA.pb b/ofl/frankruhllibre/METADATA.pb
index 120944fbe88cfe9b8f0c961fb4a4fb6163a15ae2..c10f1e3e24cb5bdcd6f104a163983149716d773a 100644
--- a/ofl/frankruhllibre/METADATA.pb
+++ b/ofl/frankruhllibre/METADATA.pb
@@ -24,5 +24,14 @@ axes {
 source {
   repository_url: "https://github.com/fontef/frankruhllibre"
   commit: "2372d1998e51dc011f86554c0d23f1ccf44afddf"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/FrankRuhlLibre[wght].ttf"
+    dest_file: "FrankRuhlLibre[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
diff --git a/ofl/frankruhllibre/upstream.yaml b/ofl/frankruhllibre/upstream.yaml
deleted file mode 100644
index 0df61e4d9930824e414bcc24837a6777a73b41b9..0000000000000000000000000000000000000000
--- a/ofl/frankruhllibre/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/FrankRuhlLibre[wght].ttf: FrankRuhlLibre[wght].ttf
-archive:
diff --git a/ofl/fredoka/METADATA.pb b/ofl/fredoka/METADATA.pb
index fe244c101a890d295fefaa667a4d2aec2cbc6dad..a3124769e6e9e105922ff3b1b6207f63d7908dac 100644
--- a/ofl/fredoka/METADATA.pb
+++ b/ofl/fredoka/METADATA.pb
@@ -29,4 +29,13 @@ axes {
 source {
   repository_url: "https://github.com/hafontia-zz/Fredoka-One"
   commit: "35c584ff23450c9bcdf8819706e12fcdeefe1712"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Fredoka[wdth,wght].ttf"
+    dest_file: "Fredoka[wdth,wght].ttf"
+  }
+  branch: "gh-pages"
 }
diff --git a/ofl/fredoka/upstream.yaml b/ofl/fredoka/upstream.yaml
deleted file mode 100644
index 017f6878b9a4cfaa4efd5a7fbc2c5a5908056b74..0000000000000000000000000000000000000000
--- a/ofl/fredoka/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: gh-pages
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Fredoka[wdth,wght].ttf: Fredoka[wdth,wght].ttf
diff --git a/ofl/freehand/METADATA.pb b/ofl/freehand/METADATA.pb
index 55622ca6181bf1b0e56d1676a1aa22519279f897..25bff85a99abfcb49314fd476787dc406f12ea92 100644
--- a/ofl/freehand/METADATA.pb
+++ b/ofl/freehand/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Freehand"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Freehand-Regular.ttf"
+    dest_file: "Freehand-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/freehand/upstream.yaml b/ofl/freehand/upstream.yaml
deleted file mode 100644
index 4dc4a7478d4dc1e2d0ef858017dd12045d19d043..0000000000000000000000000000000000000000
--- a/ofl/freehand/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Freehand-Regular.ttf: Freehand-Regular.ttf
-repository_url: https://github.com/danhhong/Freehand.git
diff --git a/ofl/fruktur/METADATA.pb b/ofl/fruktur/METADATA.pb
index 2ed48db803094f7a4907b17b5d5d1d9dadb19af9..c4a5065cd0714cb3111eda8cebe4c2668424b175 100644
--- a/ofl/fruktur/METADATA.pb
+++ b/ofl/fruktur/METADATA.pb
@@ -29,4 +29,17 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Fruktur"
   commit: "a2277f91aebc0e5e70062bdd7f17f15d2a787cd2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Fruktur-Regular.ttf"
+    dest_file: "Fruktur-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Fruktur-Italic.ttf"
+    dest_file: "Fruktur-Italic.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/fruktur/upstream.yaml b/ofl/fruktur/upstream.yaml
deleted file mode 100644
index 6b4a40aa20cd68e5142d6c52568c608376c62a1c..0000000000000000000000000000000000000000
--- a/ofl/fruktur/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Fruktur-Regular.ttf: Fruktur-Regular.ttf
-  fonts/ttf/Fruktur-Italic.ttf: Fruktur-Italic.ttf
-archive:
diff --git a/ofl/fuggles/METADATA.pb b/ofl/fuggles/METADATA.pb
index f57630a4f10c1ffbf9d2a6db5bf002701a06aa2c..5fd9278bd9ceda68d4432bd4a96606429687a3c8 100644
--- a/ofl/fuggles/METADATA.pb
+++ b/ofl/fuggles/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/fuggles"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Fuggles-Regular.ttf"
+    dest_file: "Fuggles-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/fuggles/upstream.yaml b/ofl/fuggles/upstream.yaml
deleted file mode 100644
index b2fa93f75ebd8b65d93a8ddd8d1c2ba9fe1b5fa5..0000000000000000000000000000000000000000
--- a/ofl/fuggles/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Fuggles-Regular.ttf: Fuggles-Regular.ttf
-repository_url: https://github.com/googlefonts/fuggles
diff --git a/ofl/fuzzybubbles/METADATA.pb b/ofl/fuzzybubbles/METADATA.pb
index 8a5aee523b691c0a55b06319bffc0585177983e5..dd9727135abe17b125c5cff6bb2c3f8c811b2647 100644
--- a/ofl/fuzzybubbles/METADATA.pb
+++ b/ofl/fuzzybubbles/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/fuzzy-bubbles"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/FuzzyBubbles-Regular.ttf"
+    dest_file: "FuzzyBubbles-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/FuzzyBubbles-Bold.ttf"
+    dest_file: "FuzzyBubbles-Bold.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/fuzzybubbles/upstream.yaml b/ofl/fuzzybubbles/upstream.yaml
deleted file mode 100644
index 3b59d078120607dc4d174dd124de9a81b1bf1af2..0000000000000000000000000000000000000000
--- a/ofl/fuzzybubbles/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/FuzzyBubbles-Regular.ttf: FuzzyBubbles-Regular.ttf
-  fonts/ttf/FuzzyBubbles-Bold.ttf: FuzzyBubbles-Bold.ttf
-repository_url: https://github.com/googlefonts/fuzzy-bubbles
diff --git a/ofl/gabarito/METADATA.pb b/ofl/gabarito/METADATA.pb
index 2fb3a57411cd187a2cb56183b4f9c90ed9dff68c..263330ff837395e8c21bcc3dc10ffc852725caf5 100644
--- a/ofl/gabarito/METADATA.pb
+++ b/ofl/gabarito/METADATA.pb
@@ -23,5 +23,14 @@ axes {
 source {
   repository_url: "https://github.com/naipefoundry/gabarito"
   commit: "1f3fb39d6449eefa880543f109f33ede0cd4064f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Gabarito[wght].ttf"
+    dest_file: "Gabarito[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/gabarito/upstream.yaml b/ofl/gabarito/upstream.yaml
deleted file mode 100644
index 6699942827160afa61a4ea53b38099860b4e9746..0000000000000000000000000000000000000000
--- a/ofl/gabarito/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Gabarito[wght].ttf: Gabarito[wght].ttf
-archive:
diff --git a/ofl/gabriela/METADATA.pb b/ofl/gabriela/METADATA.pb
index 5779c5a3db95f3350ce854f63a0db6dfdc221316..e273ecb7ce45ff281ab0b194c51758424f4e1ee8 100644
--- a/ofl/gabriela/METADATA.pb
+++ b/ofl/gabriela/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/Gabriela"
   commit: "961e4fb89c38cbe8ddcc3c9268c42d94c834d5da"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Gabriela-Regular.ttf"
+    dest_file: "Gabriela-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/gabriela/upstream.yaml b/ofl/gabriela/upstream.yaml
deleted file mode 100644
index 15b0397b33db6572039848bcd4c6fa2f7ba49a20..0000000000000000000000000000000000000000
--- a/ofl/gabriela/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Gabriela-Regular.ttf: Gabriela-Regular.ttf
-archive:
diff --git a/ofl/gajrajone/METADATA.pb b/ofl/gajrajone/METADATA.pb
index 00eda651c2f46484c0ed675c7b1625217436932a..d39b01f8822ad815d8e1679afb0ea7f30f17044c 100644
--- a/ofl/gajrajone/METADATA.pb
+++ b/ofl/gajrajone/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/xconsau/GajrajOne"
   commit: "5768aa3d4522b402ead302e5bb8697e965da694f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/GajrajOne-Regular.ttf"
+    dest_file: "GajrajOne-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 primary_script: "Deva"
 stroke: "SANS_SERIF"
diff --git a/ofl/gajrajone/upstream.yaml b/ofl/gajrajone/upstream.yaml
deleted file mode 100644
index 2ee86528791927b4a6a0e34418fb3faf60c162d3..0000000000000000000000000000000000000000
--- a/ofl/gajrajone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/GajrajOne-Regular.ttf: GajrajOne-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/gantari/METADATA.pb b/ofl/gantari/METADATA.pb
index 9c0f9cc86e642d26d8d27e2403220acad4db337b..0a0484159656913bd3e7197a9cc63e5da9e73e7c 100644
--- a/ofl/gantari/METADATA.pb
+++ b/ofl/gantari/METADATA.pb
@@ -32,4 +32,17 @@ axes {
 source {
   repository_url: "https://github.com/Lafontype/Gantari"
   commit: "5115aa79532c3b442fa22f94507e611ed369e2ba"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Gantari[wght].ttf"
+    dest_file: "Gantari[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Gantari-Italic[wght].ttf"
+    dest_file: "Gantari-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/gantari/upstream.yaml b/ofl/gantari/upstream.yaml
deleted file mode 100644
index ed92da12f013868a8427bcf653d8d6466f87602b..0000000000000000000000000000000000000000
--- a/ofl/gantari/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Gantari[wght].ttf: Gantari[wght].ttf
-  fonts/variable/Gantari-Italic[wght].ttf: Gantari-Italic[wght].ttf
-archive:
diff --git a/ofl/gasoekone/METADATA.pb b/ofl/gasoekone/METADATA.pb
index 51b001bcf90697ccd862de67220d19eaae74b435..91b9bd77ad74ec794bb34a02c02e8aeea02b0996 100644
--- a/ofl/gasoekone/METADATA.pb
+++ b/ofl/gasoekone/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/JAMO-TYPEFACE/Gasoek"
   commit: "f3beadd65b93b5f43e9381a546d065253d6e655a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/GasoekOne-Regular.ttf"
+    dest_file: "GasoekOne-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Kore"
 stroke: "SANS_SERIF"
diff --git a/ofl/gasoekone/upstream.yaml b/ofl/gasoekone/upstream.yaml
deleted file mode 100644
index 573581e990589876b96991bee77a9566f754de4d..0000000000000000000000000000000000000000
--- a/ofl/gasoekone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/GasoekOne-Regular.ttf: GasoekOne-Regular.ttf
-archive:
diff --git a/ofl/gelasio/METADATA.pb b/ofl/gelasio/METADATA.pb
index 1359b401cf2deb182a3271d2cacde44d07329e80..2a91550beba5718fa4967cf91b55500014a8e73e 100644
--- a/ofl/gelasio/METADATA.pb
+++ b/ofl/gelasio/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/SorkinType/Gelasio"
   commit: "a6ee02d6ba3d3a038610aa0972f0d4c39b251539"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Gelasio[wght].ttf"
+    dest_file: "Gelasio[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Gelasio-Italic[wght].ttf"
+    dest_file: "Gelasio-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
diff --git a/ofl/gelasio/upstream.yaml b/ofl/gelasio/upstream.yaml
deleted file mode 100644
index 0dc71099da9b52dc20d35e04031f23c84f4a32c5..0000000000000000000000000000000000000000
--- a/ofl/gelasio/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Gelasio[wght].ttf: Gelasio[wght].ttf
-  fonts/variable/Gelasio-Italic[wght].ttf: Gelasio-Italic[wght].ttf
-archive:
diff --git a/ofl/gemunulibre/METADATA.pb b/ofl/gemunulibre/METADATA.pb
index 5d8ff24aadb805d5230bbd8f24b7479e0cd9760d..011d574d98b0b6c04f4dfb88f3f310467ce11fe2 100644
--- a/ofl/gemunulibre/METADATA.pb
+++ b/ofl/gemunulibre/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 200.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/mooniak/gemunu-libre-font"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/GemunuLibre[wght].ttf"
+    dest_file: "GemunuLibre[wght].ttf"
+  }
+  branch: "main"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/gemunulibre/upstream.yaml b/ofl/gemunulibre/upstream.yaml
deleted file mode 100644
index 543100f1ef84eee9f3d99e53164c682660b89af3..0000000000000000000000000000000000000000
--- a/ofl/gemunulibre/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/GemunuLibre[wght].ttf: GemunuLibre[wght].ttf
-repository_url: https://github.com/mooniak/gemunu-libre-font.git
diff --git a/ofl/genos/METADATA.pb b/ofl/genos/METADATA.pb
index 16d0e75482e52687520bd20c4551d39a29309464..5d2df170e635766c5ffc6911a3cc6a70e27e9424 100644
--- a/ofl/genos/METADATA.pb
+++ b/ofl/genos/METADATA.pb
@@ -31,5 +31,25 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/genos"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Genos[wght].ttf"
+    dest_file: "Genos[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Genos-Italic[wght].ttf"
+    dest_file: "Genos-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/genos/upstream.yaml b/ofl/genos/upstream.yaml
deleted file mode 100644
index a5b77d662f9b59e4ea4b27e76ac90faa7315f20a..0000000000000000000000000000000000000000
--- a/ofl/genos/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Genos[wght].ttf: Genos[wght].ttf
-  fonts/variable/Genos-Italic[wght].ttf: Genos-Italic[wght].ttf
-repository_url: https://github.com/googlefonts/genos
diff --git a/ofl/gentiumbookplus/METADATA.pb b/ofl/gentiumbookplus/METADATA.pb
index 6ccc63531f431d5116bb4f417344d592b824eb7c..c21e387e1b29866d41d4b8f73832258dcb320f5c 100644
--- a/ofl/gentiumbookplus/METADATA.pb
+++ b/ofl/gentiumbookplus/METADATA.pb
@@ -50,4 +50,25 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/silnrsi/font-gentium"
   archive_url: "https://github.com/silnrsi/font-gentium/releases/download/v6.101/GentiumPlus-6.101.zip"
+  files {
+    source_file: "GentiumPlus-6.101/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumBookPlus-Regular.ttf"
+    dest_file: "GentiumBookPlus-Regular.ttf"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumBookPlus-Italic.ttf"
+    dest_file: "GentiumBookPlus-Italic.ttf"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumBookPlus-Bold.ttf"
+    dest_file: "GentiumBookPlus-Bold.ttf"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumBookPlus-BoldItalic.ttf"
+    dest_file: "GentiumBookPlus-BoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/gentiumbookplus/upstream.yaml b/ofl/gentiumbookplus/upstream.yaml
deleted file mode 100644
index 105a873fd1aa13add914bc42d780ef21b6582853..0000000000000000000000000000000000000000
--- a/ofl/gentiumbookplus/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-gentium/releases/download/v6.101/GentiumPlus-6.101.zip
-branch: master
-files:
-  GentiumPlus-6.101/OFL.txt: OFL.txt
-  GentiumPlus-6.101/GentiumBookPlus-Regular.ttf: GentiumBookPlus-Regular.ttf
-  GentiumPlus-6.101/GentiumBookPlus-Italic.ttf: GentiumBookPlus-Italic.ttf
-  GentiumPlus-6.101/GentiumBookPlus-Bold.ttf: GentiumBookPlus-Bold.ttf
-  GentiumPlus-6.101/GentiumBookPlus-BoldItalic.ttf: GentiumBookPlus-BoldItalic.ttf
diff --git a/ofl/gentiumplus/METADATA.pb b/ofl/gentiumplus/METADATA.pb
index f86f61aae8a487901d847c935d290ac2f7e2a1a5..ea389c1101fdc08030571b03225d69f12d9a995c 100644
--- a/ofl/gentiumplus/METADATA.pb
+++ b/ofl/gentiumplus/METADATA.pb
@@ -50,4 +50,25 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/silnrsi/font-gentium"
   archive_url: "https://github.com/silnrsi/font-gentium/releases/download/v6.101/GentiumPlus-6.101.zip"
+  files {
+    source_file: "GentiumPlus-6.101/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumPlus-Regular.ttf"
+    dest_file: "GentiumPlus-Regular.ttf"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumPlus-Italic.ttf"
+    dest_file: "GentiumPlus-Italic.ttf"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumPlus-Bold.ttf"
+    dest_file: "GentiumPlus-Bold.ttf"
+  }
+  files {
+    source_file: "GentiumPlus-6.101/GentiumPlus-BoldItalic.ttf"
+    dest_file: "GentiumPlus-BoldItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/gentiumplus/upstream.yaml b/ofl/gentiumplus/upstream.yaml
deleted file mode 100644
index 1383006ed41c150b4c64651c03b052e5b692bd24..0000000000000000000000000000000000000000
--- a/ofl/gentiumplus/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-gentium/releases/download/v6.101/GentiumPlus-6.101.zip
-branch: master
-files:
-  GentiumPlus-6.101/OFL.txt: OFL.txt
-  GentiumPlus-6.101/GentiumPlus-Regular.ttf: GentiumPlus-Regular.ttf
-  GentiumPlus-6.101/GentiumPlus-Italic.ttf: GentiumPlus-Italic.ttf
-  GentiumPlus-6.101/GentiumPlus-Bold.ttf: GentiumPlus-Bold.ttf
-  GentiumPlus-6.101/GentiumPlus-BoldItalic.ttf: GentiumPlus-BoldItalic.ttf
diff --git a/ofl/geologica/METADATA.pb b/ofl/geologica/METADATA.pb
index 066dce1b53f1ad2c0a18d0baf9eb5a58baf1ce64..9a32c5a136cd3ea61be80c52242b9d05921fb9a4 100644
--- a/ofl/geologica/METADATA.pb
+++ b/ofl/geologica/METADATA.pb
@@ -41,9 +41,22 @@ axes {
 }
 registry_default_overrides {
   key: "CRSV"
-  value: 0
+  value: 0.0
 }
 source {
   repository_url: "https://github.com/googlefonts/geologica"
   commit: "685f38d7c9e86b0c8530204c97ddcaf6558dd17b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Geologica[CRSV,SHRP,slnt,wght].ttf"
+    dest_file: "Geologica[CRSV,SHRP,slnt,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/geologica/upstream.yaml b/ofl/geologica/upstream.yaml
deleted file mode 100644
index 088d956b6559c3166a1c87f325019c2a79c777e1..0000000000000000000000000000000000000000
--- a/ofl/geologica/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Geologica[CRSV,SHRP,slnt,wght].ttf: Geologica[CRSV,SHRP,slnt,wght].ttf
-archive:
diff --git a/ofl/georama/METADATA.pb b/ofl/georama/METADATA.pb
index 16ddc81cdde1034bb1c440b1ef889f4a5c13ead6..a5cdf034c9494f731b35d3bf4b128875f51fc3eb 100644
--- a/ofl/georama/METADATA.pb
+++ b/ofl/georama/METADATA.pb
@@ -35,5 +35,25 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/productiontype/Georama"
+  files {
+    source_file: "ofl.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Georama[wdth,wght].ttf"
+    dest_file: "Georama[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Georama-Italic[wdth,wght].ttf"
+    dest_file: "Georama-Italic[wdth,wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/georama/upstream.yaml b/ofl/georama/upstream.yaml
deleted file mode 100644
index 1282833d3c62558d89a115b801be4b0b1090b7d5..0000000000000000000000000000000000000000
--- a/ofl/georama/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  ofl.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Georama[wdth,wght].ttf: Georama[wdth,wght].ttf
-  fonts/variable/Georama-Italic[wdth,wght].ttf: Georama-Italic[wdth,wght].ttf
-repository_url: https://github.com/productiontype/Georama.git
diff --git a/ofl/gideonroman/METADATA.pb b/ofl/gideonroman/METADATA.pb
index ce59c4fbe43210499740cc761194e442f166330a..0ee9c95c912c5b8b88bfdbd6a09d55f392ce852c 100644
--- a/ofl/gideonroman/METADATA.pb
+++ b/ofl/gideonroman/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/gideon"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/GideonRoman-Regular.ttf"
+    dest_file: "GideonRoman-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/gideonroman/upstream.yaml b/ofl/gideonroman/upstream.yaml
deleted file mode 100644
index 40695a0ca5f9c4a4df9de6fa64f313aff91091e3..0000000000000000000000000000000000000000
--- a/ofl/gideonroman/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/GideonRoman-Regular.ttf: GideonRoman-Regular.ttf
-repository_url: https://github.com/googlefonts/gideon
diff --git a/ofl/gildadisplay/METADATA.pb b/ofl/gildadisplay/METADATA.pb
index c46e39474c5f2f0d04ca92e5f259ef8acf724930..a5073c73b7cd547cf68e7317d89fb06bac68463e 100644
--- a/ofl/gildadisplay/METADATA.pb
+++ b/ofl/gildadisplay/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/gilda-display"
   commit: "640bdfd3d2ee3b533d1f88687a9e4541136254e0"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/GildaDisplay-Regular.ttf"
+    dest_file: "GildaDisplay-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/gildadisplay/upstream.yaml b/ofl/gildadisplay/upstream.yaml
deleted file mode 100644
index c93930abe127562c615c4ac06404b5cdb3349916..0000000000000000000000000000000000000000
--- a/ofl/gildadisplay/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/GildaDisplay-Regular.ttf: GildaDisplay-Regular.ttf
-archive:
diff --git a/ofl/gloock/METADATA.pb b/ofl/gloock/METADATA.pb
index 9c7747d23d5eb57304ff839877ed86b1a6a49c6a..562faa97c3b02fcded7e4aa670352a6e628790bf 100644
--- a/ofl/gloock/METADATA.pb
+++ b/ofl/gloock/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/duartp/gloock"
   commit: "de92978ce821ae0cba86954b4c46abc70486981d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Gloock-Regular.ttf"
+    dest_file: "Gloock-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/gloock/upstream.yaml b/ofl/gloock/upstream.yaml
deleted file mode 100644
index f1b6acb8453c0b6a7feddd9feef60d04bdb2fd50..0000000000000000000000000000000000000000
--- a/ofl/gloock/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Gloock-Regular.ttf: Gloock-Regular.ttf
-archive:
diff --git a/ofl/glory/METADATA.pb b/ofl/glory/METADATA.pb
index e91e9449474720264e6241a3645f80d009d14330..b2c1f042784ffd7e070e385a9390fa283dc68190 100644
--- a/ofl/glory/METADATA.pb
+++ b/ofl/glory/METADATA.pb
@@ -30,5 +30,25 @@ axes {
   min_value: 100.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/glory"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Glory-Italic[wght].ttf"
+    dest_file: "Glory-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Glory[wght].ttf"
+    dest_file: "Glory[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/glory/upstream.yaml b/ofl/glory/upstream.yaml
deleted file mode 100644
index a6f5f3bdd2c94be921454e5ff882568b288bde03..0000000000000000000000000000000000000000
--- a/ofl/glory/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Glory-Italic[wght].ttf: Glory-Italic[wght].ttf
-  fonts/variable/Glory[wght].ttf: Glory[wght].ttf
-repository_url: https://github.com/googlefonts/glory
diff --git a/ofl/gluten/METADATA.pb b/ofl/gluten/METADATA.pb
index 72195ad5308fa125a6d41da843e456731a406477..a8af68e0456e465f437a9adaa9103b6cea52dde3 100644
--- a/ofl/gluten/METADATA.pb
+++ b/ofl/gluten/METADATA.pb
@@ -29,6 +29,15 @@ axes {
 source {
   repository_url: "https://github.com/Etcetera-Type-Co/Gluten"
   commit: "c8525e6a8d31dde1795485cc66f622beed3e5e80"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Gluten[slnt,wght].ttf"
+    dest_file: "Gluten[slnt,wght].ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/gluten/upstream.yaml b/ofl/gluten/upstream.yaml
deleted file mode 100644
index 80978fe81260e994410e50f1396c0f37b727a9c2..0000000000000000000000000000000000000000
--- a/ofl/gluten/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Gluten[slnt,wght].ttf: Gluten[slnt,wght].ttf
diff --git a/ofl/golostext/METADATA.pb b/ofl/golostext/METADATA.pb
index 93f1c1392f95b12ee092dc3176ad5be85278424e..bd71d23825e291b78a9f8dfda60176f43e253ee7 100644
--- a/ofl/golostext/METADATA.pb
+++ b/ofl/golostext/METADATA.pb
@@ -25,4 +25,13 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/golos-text"
   commit: "d321a70cd12f84603617d4cf5d0e0321c2291dd9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/GolosText[wght].ttf"
+    dest_file: "GolosText[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/golostext/upstream.yaml b/ofl/golostext/upstream.yaml
deleted file mode 100644
index c66c82899eb55a5371bec9500a168f390697adb6..0000000000000000000000000000000000000000
--- a/ofl/golostext/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/GolosText[wght].ttf: GolosText[wght].ttf
-archive:
diff --git a/ofl/gowunbatang/METADATA.pb b/ofl/gowunbatang/METADATA.pb
index 5e46adb9b4c1eb3452b4c0b2dc4560dffe58b69b..fea3d9d34bf866213702b201d831de7b0771ad08 100644
--- a/ofl/gowunbatang/METADATA.pb
+++ b/ofl/gowunbatang/METADATA.pb
@@ -26,3 +26,23 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/yangheeryu/Gowun-Batang"
+  files {
+    source_file: "fonts/ttf/GowunBatang-Regular.ttf"
+    dest_file: "GowunBatang-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/GowunBatang-Bold.ttf"
+    dest_file: "GowunBatang-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/gowunbatang/upstream.yaml b/ofl/gowunbatang/upstream.yaml
deleted file mode 100644
index 728ff690b414323b13727bdb09fa9913ff55b2eb..0000000000000000000000000000000000000000
--- a/ofl/gowunbatang/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  fonts/ttf/GowunBatang-Regular.ttf: GowunBatang-Regular.ttf
-  fonts/ttf/GowunBatang-Bold.ttf: GowunBatang-Bold.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/yangheeryu/Gowun-Batang
diff --git a/ofl/gowundodum/METADATA.pb b/ofl/gowundodum/METADATA.pb
index 26311f4325e0877eaedabaa63c3d5b4dbc943eee..ee47145b4223513e484d30ea85d19b09e86f1ff3 100644
--- a/ofl/gowundodum/METADATA.pb
+++ b/ofl/gowundodum/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/yangheeryu/Gowun-Dodum"
+  files {
+    source_file: "fonts/ttf/GowunDodum-Regular.ttf"
+    dest_file: "GowunDodum-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/gowundodum/upstream.yaml b/ofl/gowundodum/upstream.yaml
deleted file mode 100644
index 4040bbb7a45f24d1108aae29ba60ae631d456669..0000000000000000000000000000000000000000
--- a/ofl/gowundodum/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/GowunDodum-Regular.ttf: GowunDodum-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/yangheeryu/Gowun-Dodum
diff --git a/ofl/grandifloraone/METADATA.pb b/ofl/grandifloraone/METADATA.pb
index 53d0ebb7cb0197875dc99b1780cc42cd664c9f42..2f148bca74c22a39251f40d7606298cb6d29b585 100644
--- a/ofl/grandifloraone/METADATA.pb
+++ b/ofl/grandifloraone/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/JAMO-TYPEFACE/Grandiflora"
   commit: "b016ca716dade21cb890efc78b9349275c4e7c99"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/GrandifloraOne-Regular.ttf"
+    dest_file: "GrandifloraOne-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Kore"
 classifications: "DISPLAY"
diff --git a/ofl/grandifloraone/upstream.yaml b/ofl/grandifloraone/upstream.yaml
deleted file mode 100644
index 66544bf8b3ac3531f2b2eaf21fe75aab7769c1ba..0000000000000000000000000000000000000000
--- a/ofl/grandifloraone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/GrandifloraOne-Regular.ttf: GrandifloraOne-Regular.ttf
-archive:
diff --git a/ofl/grapenuts/METADATA.pb b/ofl/grapenuts/METADATA.pb
index 58af7a42d9fcf6ab6e9fe2a8ad7786da20eb4450..c94f696a990b9106e13a442dab398299baad383c 100644
--- a/ofl/grapenuts/METADATA.pb
+++ b/ofl/grapenuts/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/grapenuts"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/GrapeNuts-Regular.ttf"
+    dest_file: "GrapeNuts-Regular.ttf"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/grapenuts/upstream.yaml b/ofl/grapenuts/upstream.yaml
deleted file mode 100644
index 84323f25dcb196db2233f65c2784b313b9277d6d..0000000000000000000000000000000000000000
--- a/ofl/grapenuts/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/GrapeNuts-Regular.ttf: GrapeNuts-Regular.ttf
-repository_url: https://github.com/googlefonts/grapenuts
diff --git a/ofl/greatvibes/METADATA.pb b/ofl/greatvibes/METADATA.pb
index a03e8f8d7f22c36d70907a4975996273fe977c38..20711cbbc39f586d6cd58dd9e64d97690c0a9902 100644
--- a/ofl/greatvibes/METADATA.pb
+++ b/ofl/greatvibes/METADATA.pb
@@ -35,6 +35,18 @@ source {
     source_file: "fonts/ttf/GreatVibes-Regular.ttf"
     dest_file: "GreatVibes-Regular.ttf"
   }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/GreatVibes-Regular.ttf"
+    dest_file: "GreatVibes-Regular.ttf"
+  }
   branch: "master"
 }
 classifications: "DISPLAY"
diff --git a/ofl/greatvibes/upstream.yaml b/ofl/greatvibes/upstream.yaml
deleted file mode 100644
index 693fba08756f6079548ac1497725e98cecd80779..0000000000000000000000000000000000000000
--- a/ofl/greatvibes/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/GreatVibes-Regular.ttf: GreatVibes-Regular.ttf
-repository_url: https://github.com/googlefonts/great-vibes
diff --git a/ofl/grechenfuemen/METADATA.pb b/ofl/grechenfuemen/METADATA.pb
index aefea416403529044cf6d3d7b81e8f63e49f1f3e..0d0138eeda771acff106799126040c3e3db61b5c 100644
--- a/ofl/grechenfuemen/METADATA.pb
+++ b/ofl/grechenfuemen/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/grechen-fuemen"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/GrechenFuemen-Regular.ttf"
+    dest_file: "GrechenFuemen-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/grechenfuemen/upstream.yaml b/ofl/grechenfuemen/upstream.yaml
deleted file mode 100644
index 5fad0e47a9562038bb0b25e17b8b0d00db8068ff..0000000000000000000000000000000000000000
--- a/ofl/grechenfuemen/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/GrechenFuemen-Regular.ttf: GrechenFuemen-Regular.ttf
-repository_url: https://github.com/googlefonts/grechen-fuemen
diff --git a/ofl/greyqo/METADATA.pb b/ofl/greyqo/METADATA.pb
index 5b41e53266e3a7a462685fb6f70beb1a2a301775..d16b64fb5852cabfe56a352fab05f46e5a87a2d3 100644
--- a/ofl/greyqo/METADATA.pb
+++ b/ofl/greyqo/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/grey-qo"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/GreyQo-Regular.ttf"
+    dest_file: "GreyQo-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/greyqo/upstream.yaml b/ofl/greyqo/upstream.yaml
deleted file mode 100644
index e8b4c843ff72c16474869c82b336b76978470ef8..0000000000000000000000000000000000000000
--- a/ofl/greyqo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/GreyQo-Regular.ttf: GreyQo-Regular.ttf
-repository_url: https://github.com/googlefonts/grey-qo
diff --git a/ofl/gruppo/METADATA.pb b/ofl/gruppo/METADATA.pb
index dc69c1a472b7d534010ee591800dd7cd79984373..18883731f1128d925695d9970df3506f7b298f52 100644
--- a/ofl/gruppo/METADATA.pb
+++ b/ofl/gruppo/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/GruppoFont"
   commit: "20e1bc8c76ee1d692c5645b8aaf971cc58ca2e51"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Gruppo-Regular.ttf"
+    dest_file: "Gruppo-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/gruppo/upstream.yaml b/ofl/gruppo/upstream.yaml
deleted file mode 100644
index 23f9dd7593b97a7d1aa2c4e2a3dbe96671d52194..0000000000000000000000000000000000000000
--- a/ofl/gruppo/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Gruppo-Regular.ttf: Gruppo-Regular.ttf
-archive:
diff --git a/ofl/gulzar/METADATA.pb b/ofl/gulzar/METADATA.pb
index 513698dc27ee00a27e9ddc7a9e87f5da760ea117..50d40b0362669994602b37dbfa89351768f2433a 100644
--- a/ofl/gulzar/METADATA.pb
+++ b/ofl/gulzar/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/simoncozens/Gulzar"
   commit: "7f736710573840523e68ea977843f7af7239632b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Gulzar-Regular.ttf"
+    dest_file: "Gulzar-Regular.ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://gulzarfont.org"
 primary_script: "Arab"
diff --git a/ofl/gulzar/upstream.yaml b/ofl/gulzar/upstream.yaml
deleted file mode 100644
index 2af7d97da1a33d15b08d6251d5d5d6eaa4ebc82c..0000000000000000000000000000000000000000
--- a/ofl/gulzar/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Gulzar-Regular.ttf: Gulzar-Regular.ttf
diff --git a/ofl/gwendolyn/METADATA.pb b/ofl/gwendolyn/METADATA.pb
index 008d4541fd70d465ed6d1299cf2a708468b091a2..44dd6107812b9c1c93a158ebcc86db7d465a5f26 100644
--- a/ofl/gwendolyn/METADATA.pb
+++ b/ofl/gwendolyn/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/gwendolyn"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Gwendolyn-Regular.ttf"
+    dest_file: "Gwendolyn-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Gwendolyn-Bold.ttf"
+    dest_file: "Gwendolyn-Bold.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/gwendolyn/upstream.yaml b/ofl/gwendolyn/upstream.yaml
deleted file mode 100644
index cddc2a6835f1cc568a98bdfdcef14b6ded445735..0000000000000000000000000000000000000000
--- a/ofl/gwendolyn/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Gwendolyn-Regular.ttf: Gwendolyn-Regular.ttf
-  fonts/ttf/Gwendolyn-Bold.ttf: Gwendolyn-Bold.ttf
-repository_url: https://github.com/googlefonts/gwendolyn
diff --git a/ofl/hachimarupop/METADATA.pb b/ofl/hachimarupop/METADATA.pb
index e245cdd4c0c409c6b2641231fe75665a4947ec18..b48adbf3aabe16a0794e1db3e0a366bf78300279 100644
--- a/ofl/hachimarupop/METADATA.pb
+++ b/ofl/hachimarupop/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/noriokanisawa/HachiMaruPop"
+  files {
+    source_file: "fonts/ttf/HachiMaruPop-Regular.ttf"
+    dest_file: "HachiMaruPop-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/hachimarupop/upstream.yaml b/ofl/hachimarupop/upstream.yaml
deleted file mode 100644
index d3e674e99a0dbc4082b3a85a558d8199a96761fb..0000000000000000000000000000000000000000
--- a/ofl/hachimarupop/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/HachiMaruPop-Regular.ttf: HachiMaruPop-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/noriokanisawa/HachiMaruPop.git
diff --git a/ofl/hahmlet/METADATA.pb b/ofl/hahmlet/METADATA.pb
index 5f4f4b5d554f6ecf0f53409c48095fc33212b440..7d15e38d51f527d043b5bb1a8a498d1725383e72 100644
--- a/ofl/hahmlet/METADATA.pb
+++ b/ofl/hahmlet/METADATA.pb
@@ -22,3 +22,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/hyper-type/hahmlet/"
+  files {
+    source_file: "fonts/variable/Hahmlet[wght].ttf"
+    dest_file: "Hahmlet[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/hahmlet/upstream.yaml b/ofl/hahmlet/upstream.yaml
deleted file mode 100644
index 3082627819c6f9355ff1781c91fe717dcef32c5e..0000000000000000000000000000000000000000
--- a/ofl/hahmlet/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/Hahmlet[wght].ttf: Hahmlet[wght].ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/hyper-type/hahmlet/
diff --git a/ofl/handjet/METADATA.pb b/ofl/handjet/METADATA.pb
index d07eb925dd9edbc1eb108f86fd365289c756bf12..b96266797708a445587cad53368e3224a8104c28 100644
--- a/ofl/handjet/METADATA.pb
+++ b/ofl/handjet/METADATA.pb
@@ -44,6 +44,15 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/rosettatype/handjet"
   commit: "3918b7798e06c81da6bc558e88dfddd5a6b49807"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/Handjet[ELGR,ELSH,wght].ttf"
+    dest_file: "Handjet[ELGR,ELSH,wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/handjet/upstream.yaml b/ofl/handjet/upstream.yaml
deleted file mode 100644
index 7ed5f09f1b6d7c1c5e89f07dd9405b64cc9567eb..0000000000000000000000000000000000000000
--- a/ofl/handjet/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/Handjet[ELGR,ELSH,wght].ttf: Handjet[ELGR,ELSH,wght].ttf
diff --git a/ofl/hankengrotesk/METADATA.pb b/ofl/hankengrotesk/METADATA.pb
index e9f554b345a352adde354fd217356a7c77cc277c..05694b8b59e6ec3a80e9c466c4369b549f491fbb 100644
--- a/ofl/hankengrotesk/METADATA.pb
+++ b/ofl/hankengrotesk/METADATA.pb
@@ -34,4 +34,21 @@ axes {
 source {
   repository_url: "https://github.com/marcologous/hanken-grotesk"
   commit: "e6e3c4df55acfe44333c587e3d97ae3c44b7dce5"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/HankenGrotesk[wght].ttf"
+    dest_file: "HankenGrotesk[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/HankenGrotesk-Italic[wght].ttf"
+    dest_file: "HankenGrotesk-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/hankengrotesk/upstream.yaml b/ofl/hankengrotesk/upstream.yaml
deleted file mode 100644
index 445662bb85f7a81542724e95a27e19e86a011f58..0000000000000000000000000000000000000000
--- a/ofl/hankengrotesk/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/HankenGrotesk[wght].ttf: HankenGrotesk[wght].ttf
-  fonts/variable/HankenGrotesk-Italic[wght].ttf: HankenGrotesk-Italic[wght].ttf
-archive:
diff --git a/ofl/hanuman/METADATA.pb b/ofl/hanuman/METADATA.pb
index 1ed7ee727270a473b0b066334f02a7bf3e9da0c7..61651ec7a62454e69b61012b7e42cf3fb700193e 100644
--- a/ofl/hanuman/METADATA.pb
+++ b/ofl/hanuman/METADATA.pb
@@ -51,3 +51,31 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Hanuman"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Hanuman-Thin.ttf"
+    dest_file: "Hanuman-Thin.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Hanuman-Light.ttf"
+    dest_file: "Hanuman-Light.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Hanuman-Regular.ttf"
+    dest_file: "Hanuman-Regular.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Hanuman-Bold.ttf"
+    dest_file: "Hanuman-Bold.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Hanuman-Black.ttf"
+    dest_file: "Hanuman-Black.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/hanuman/upstream.yaml b/ofl/hanuman/upstream.yaml
deleted file mode 100644
index 88be782c9708d565be47555d8adfe17605bb2200..0000000000000000000000000000000000000000
--- a/ofl/hanuman/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Hanuman-Thin.ttf: Hanuman-Thin.ttf
-  Release/ttf/Hanuman-Light.ttf: Hanuman-Light.ttf
-  Release/ttf/Hanuman-Regular.ttf: Hanuman-Regular.ttf
-  Release/ttf/Hanuman-Bold.ttf: Hanuman-Bold.ttf
-  Release/ttf/Hanuman-Black.ttf: Hanuman-Black.ttf
-repository_url: https://github.com/danhhong/Hanuman.git
diff --git a/ofl/harmattan/METADATA.pb b/ofl/harmattan/METADATA.pb
index 7aafe400045af0b114b76261c808226c8a26c59f..38f12c3d2fb3eb7764073f243de106d7568eaf0a 100644
--- a/ofl/harmattan/METADATA.pb
+++ b/ofl/harmattan/METADATA.pb
@@ -46,5 +46,26 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-harmattan"
   archive_url: "https://github.com/silnrsi/font-harmattan/releases/download/v4.000/Harmattan-4.000.zip"
+  files {
+    source_file: "Harmattan-4.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Harmattan-4.000/Harmattan-Regular.ttf"
+    dest_file: "Harmattan-Regular.ttf"
+  }
+  files {
+    source_file: "Harmattan-4.000/Harmattan-Medium.ttf"
+    dest_file: "Harmattan-Medium.ttf"
+  }
+  files {
+    source_file: "Harmattan-4.000/Harmattan-SemiBold.ttf"
+    dest_file: "Harmattan-SemiBold.ttf"
+  }
+  files {
+    source_file: "Harmattan-4.000/Harmattan-Bold.ttf"
+    dest_file: "Harmattan-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/harmattan/upstream.yaml b/ofl/harmattan/upstream.yaml
deleted file mode 100644
index bf4bc72cf73056ca2b76b8c404539d6c4016363e..0000000000000000000000000000000000000000
--- a/ofl/harmattan/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-harmattan/releases/download/v4.000/Harmattan-4.000.zip
-branch: master
-files:
-  Harmattan-4.000/OFL.txt: OFL.txt
-  Harmattan-4.000/Harmattan-Regular.ttf: Harmattan-Regular.ttf
-  Harmattan-4.000/Harmattan-Medium.ttf: Harmattan-Medium.ttf
-  Harmattan-4.000/Harmattan-SemiBold.ttf: Harmattan-SemiBold.ttf
-  Harmattan-4.000/Harmattan-Bold.ttf: Harmattan-Bold.ttf
diff --git a/ofl/hedvigletterssans/METADATA.pb b/ofl/hedvigletterssans/METADATA.pb
index acf395d30f645a1ccdc709facef45ad857d0d776..cd550183673655b0dd1bc011f99c09105f1f29db 100644
--- a/ofl/hedvigletterssans/METADATA.pb
+++ b/ofl/hedvigletterssans/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/KanonFoundry/HedvigLetters"
   commit: "345b4d9015af6a26eb05e436460ca41fc42784df"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/HedvigLettersSans/ttf/HedvigLettersSans-Regular.ttf"
+    dest_file: "HedvigLettersSans-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/hedvigletterssans/upstream.yaml b/ofl/hedvigletterssans/upstream.yaml
deleted file mode 100644
index 45bee86e4ed2ac9bfb7d1040bcdd7ed2a0b55c79..0000000000000000000000000000000000000000
--- a/ofl/hedvigletterssans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/HedvigLettersSans/ttf/HedvigLettersSans-Regular.ttf: HedvigLettersSans-Regular.ttf
diff --git a/ofl/hedviglettersserif/METADATA.pb b/ofl/hedviglettersserif/METADATA.pb
index 31f794c4a1959e7e1c667b7a5c133c0c0e684cdc..a5a2f9fb125c31218c084b152635ed7ff87b971f 100644
--- a/ofl/hedviglettersserif/METADATA.pb
+++ b/ofl/hedviglettersserif/METADATA.pb
@@ -24,10 +24,19 @@ axes {
 }
 registry_default_overrides {
   key: "opsz"
-  value: 24
+  value: 24.0
 }
 source {
   repository_url: "https://github.com/KanonFoundry/HedvigLetters"
   commit: "345b4d9015af6a26eb05e436460ca41fc42784df"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/HedvigLettersSerif/variable/HedvigLettersSerif[opsz].ttf"
+    dest_file: "HedvigLettersSerif[opsz].ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
diff --git a/ofl/hedviglettersserif/upstream.yaml b/ofl/hedviglettersserif/upstream.yaml
deleted file mode 100644
index 4b1d19b9629d69c14a4b2b8fc2c5c894694a7176..0000000000000000000000000000000000000000
--- a/ofl/hedviglettersserif/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/HedvigLettersSerif/variable/HedvigLettersSerif[opsz].ttf: HedvigLettersSerif[opsz].ttf
diff --git a/ofl/heebo/METADATA.pb b/ofl/heebo/METADATA.pb
index 4dc3ed01a79edb064beac7e9b8e3f186f716c43e..ac5094cf213266ea2a7c5d7171922a2afe04f95d 100644
--- a/ofl/heebo/METADATA.pb
+++ b/ofl/heebo/METADATA.pb
@@ -26,6 +26,15 @@ axes {
 source {
   repository_url: "https://github.com/OdedEzer/heebo"
   commit: "76c7d538568d3e6d7f052a12c5675c84430df25f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Heebo[wght].ttf"
+    dest_file: "Heebo[wght].ttf"
+  }
+  branch: "master"
 }
 primary_script: "Hebr"
 stroke: "SANS_SERIF"
diff --git a/ofl/heebo/upstream.yaml b/ofl/heebo/upstream.yaml
deleted file mode 100644
index 19b98b69b367e8b9987d5bc6cb102aaeead1119d..0000000000000000000000000000000000000000
--- a/ofl/heebo/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Heebo[wght].ttf: Heebo[wght].ttf
-archive:
diff --git a/ofl/heptaslab/METADATA.pb b/ofl/heptaslab/METADATA.pb
index 59c1e9ea2ca6ada9d159abc56e61ed299471d1fb..c284adf36f67d7845083c93af5cdb81b8742de1e 100644
--- a/ofl/heptaslab/METADATA.pb
+++ b/ofl/heptaslab/METADATA.pb
@@ -21,4 +21,12 @@ axes {
   min_value: 1.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/mjlagattuta/Hepta-Slab"
+  files {
+    source_file: "fonts/variable/HeptaSlab[wght].ttf"
+    dest_file: "HeptaSlab[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SLAB_SERIF"
diff --git a/ofl/heptaslab/upstream.yaml b/ofl/heptaslab/upstream.yaml
deleted file mode 100644
index 7e7fdd8192c39d497018c91b922ed3945bf46474..0000000000000000000000000000000000000000
--- a/ofl/heptaslab/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: master
-files:
-  fonts/variable/HeptaSlab[wght].ttf: HeptaSlab[wght].ttf
-repository_url: https://github.com/mjlagattuta/Hepta-Slab
diff --git a/ofl/hinamincho/METADATA.pb b/ofl/hinamincho/METADATA.pb
index c09976fcaad2823b30f972480489d298efb4d675..b3b36ca549e7bc349c2513d404503da1284e0771 100644
--- a/ofl/hinamincho/METADATA.pb
+++ b/ofl/hinamincho/METADATA.pb
@@ -20,6 +20,19 @@ subsets: "menu"
 subsets: "vietnamese"
 source {
   repository_url: "https://github.com/satsuyako/Hina-Mincho"
+  files {
+    source_file: "fonts/ttf/HinaMincho-Regular.ttf"
+    dest_file: "HinaMincho-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/hinamincho/upstream.yaml b/ofl/hinamincho/upstream.yaml
deleted file mode 100644
index 17ecffdcc21c638dd059eb68bba211b887ce504c..0000000000000000000000000000000000000000
--- a/ofl/hinamincho/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/ttf/HinaMincho-Regular.ttf: HinaMincho-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/honk/METADATA.pb b/ofl/honk/METADATA.pb
index 2912f14a9156af183d4656fc3adb4e33da45969a..f7ed6cb560e6e074be9a880f3baf5dc2cc299f09 100644
--- a/ofl/honk/METADATA.pb
+++ b/ofl/honk/METADATA.pb
@@ -28,11 +28,24 @@ axes {
   min_value: 0.0
   max_value: 100.0
 }
+registry_default_overrides {
+  key: "MORF"
+  value: 15.0
+}
 source {
   repository_url: "https://github.com/EkType/Honk"
   commit: "964739fca4b7f5485b21525df1e803fffbe6da99"
-}
-registry_default_overrides {
-  key: "MORF"
-  value: 15
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Honk[MORF,SHLN].ttf"
+    dest_file: "Honk[MORF,SHLN].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/honk/upstream.yaml b/ofl/honk/upstream.yaml
deleted file mode 100644
index 6b21efc3a3be8ba44dfbc8321726ecca9377f951..0000000000000000000000000000000000000000
--- a/ofl/honk/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Honk[MORF,SHLN].ttf: Honk[MORF,SHLN].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/hubballi/METADATA.pb b/ofl/hubballi/METADATA.pb
index 48e3377673987e249b96ac41d0de69b059076ccf..e06cf4ffd53a115cfc00955597e7354926ec728b 100644
--- a/ofl/hubballi/METADATA.pb
+++ b/ofl/hubballi/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "kannada"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/erinmclaughlin/Hubballi"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Hubballi-Regular.ttf"
+    dest_file: "Hubballi-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/hubballi/upstream.yaml b/ofl/hubballi/upstream.yaml
deleted file mode 100644
index 8cd7279005d587a83af28353c6d49756d5615cb8..0000000000000000000000000000000000000000
--- a/ofl/hubballi/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Hubballi-Regular.ttf: Hubballi-Regular.ttf
-repository_url: https://github.com/erinmclaughlin/Hubballi
diff --git a/ofl/hurricane/METADATA.pb b/ofl/hurricane/METADATA.pb
index b1bdf8de3b8b946bb112b1566e8ceb8240f8d942..b34c8459dfcdff8c2522e0dd541eeb216122a6ea 100644
--- a/ofl/hurricane/METADATA.pb
+++ b/ofl/hurricane/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/hurricane"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Hurricane-Regular.ttf"
+    dest_file: "Hurricane-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/hurricane/upstream.yaml b/ofl/hurricane/upstream.yaml
deleted file mode 100644
index 3764be00bc6157e38d88016091b0c099a83da050..0000000000000000000000000000000000000000
--- a/ofl/hurricane/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Hurricane-Regular.ttf: Hurricane-Regular.ttf
-repository_url: https://github.com/googlefonts/hurricane
diff --git a/ofl/ibarrarealnova/METADATA.pb b/ofl/ibarrarealnova/METADATA.pb
index cb67a85ade03bb0bfcd13d7b446de8e3fc4560f4..10e1970c29f1cbff3271b3c4ea283c578e00c732 100644
--- a/ofl/ibarrarealnova/METADATA.pb
+++ b/ofl/ibarrarealnova/METADATA.pb
@@ -29,5 +29,49 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/ibarrareal"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/IbarraRealNova-Italic[wght].ttf"
+    dest_file: "IbarraRealNova-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/IbarraRealNova[wght].ttf"
+    dest_file: "IbarraRealNova[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/IbarraRealNova-Bold.ttf"
+    dest_file: "static/IbarraRealNova-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/IbarraRealNova-BoldItalic.ttf"
+    dest_file: "static/IbarraRealNova-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/IbarraRealNova-Italic.ttf"
+    dest_file: "static/IbarraRealNova-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/IbarraRealNova-Regular.ttf"
+    dest_file: "static/IbarraRealNova-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/IbarraRealNova-SemiBold.ttf"
+    dest_file: "static/IbarraRealNova-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/IbarraRealNova-SemiBoldItalic.ttf"
+    dest_file: "static/IbarraRealNova-SemiBoldItalic.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/ibarrarealnova/upstream.yaml b/ofl/ibarrarealnova/upstream.yaml
deleted file mode 100644
index c342ba7bf852e95f185c5a232327854e4ef36e65..0000000000000000000000000000000000000000
--- a/ofl/ibarrarealnova/upstream.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/IbarraRealNova-Italic[wght].ttf: IbarraRealNova-Italic[wght].ttf
-  fonts/variable/IbarraRealNova[wght].ttf: IbarraRealNova[wght].ttf
-  fonts/ttf/IbarraRealNova-Bold.ttf: static/IbarraRealNova-Bold.ttf
-  fonts/ttf/IbarraRealNova-BoldItalic.ttf: static/IbarraRealNova-BoldItalic.ttf
-  fonts/ttf/IbarraRealNova-Italic.ttf: static/IbarraRealNova-Italic.ttf
-  fonts/ttf/IbarraRealNova-Regular.ttf: static/IbarraRealNova-Regular.ttf
-  fonts/ttf/IbarraRealNova-SemiBold.ttf: static/IbarraRealNova-SemiBold.ttf
-  fonts/ttf/IbarraRealNova-SemiBoldItalic.ttf: static/IbarraRealNova-SemiBoldItalic.ttf
-repository_url: https://github.com/googlefonts/ibarrareal
diff --git a/ofl/ibmplexmono/METADATA.pb b/ofl/ibmplexmono/METADATA.pb
index d2889bc0e4600be1069fc97eaa1f8c8e118acded..9d42887da3bdf9d6d0f0556371b64b8c93b53511 100644
--- a/ofl/ibmplexmono/METADATA.pb
+++ b/ofl/ibmplexmono/METADATA.pb
@@ -138,4 +138,69 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/plex"
   commit: "9ab3b5b3b96325fb20f365ee0804adca92024cbf"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Bold.ttf"
+    dest_file: "IBMPlexMono-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-BoldItalic.ttf"
+    dest_file: "IBMPlexMono-BoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-ExtraLight.ttf"
+    dest_file: "IBMPlexMono-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-ExtraLightItalic.ttf"
+    dest_file: "IBMPlexMono-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Italic.ttf"
+    dest_file: "IBMPlexMono-Italic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Light.ttf"
+    dest_file: "IBMPlexMono-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-LightItalic.ttf"
+    dest_file: "IBMPlexMono-LightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Medium.ttf"
+    dest_file: "IBMPlexMono-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-MediumItalic.ttf"
+    dest_file: "IBMPlexMono-MediumItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Regular.ttf"
+    dest_file: "IBMPlexMono-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-SemiBold.ttf"
+    dest_file: "IBMPlexMono-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-SemiBoldItalic.ttf"
+    dest_file: "IBMPlexMono-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Thin.ttf"
+    dest_file: "IBMPlexMono-Thin.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-ThinItalic.ttf"
+    dest_file: "IBMPlexMono-ThinItalic.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/ibmplexmono/upstream.yaml b/ofl/ibmplexmono/upstream.yaml
deleted file mode 100644
index 52f8895409cbe6acc662496464c3a8cf053c3b51..0000000000000000000000000000000000000000
--- a/ofl/ibmplexmono/upstream.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Bold.ttf: IBMPlexMono-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-BoldItalic.ttf: IBMPlexMono-BoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-ExtraLight.ttf: IBMPlexMono-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-ExtraLightItalic.ttf: IBMPlexMono-ExtraLightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Italic.ttf: IBMPlexMono-Italic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Light.ttf: IBMPlexMono-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-LightItalic.ttf: IBMPlexMono-LightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Medium.ttf: IBMPlexMono-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-MediumItalic.ttf: IBMPlexMono-MediumItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Regular.ttf: IBMPlexMono-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-SemiBold.ttf: IBMPlexMono-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-SemiBoldItalic.ttf: IBMPlexMono-SemiBoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-Thin.ttf: IBMPlexMono-Thin.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Mono/fonts/complete/ttf/IBMPlexMono-ThinItalic.ttf: IBMPlexMono-ThinItalic.ttf
-archive:
diff --git a/ofl/ibmplexsans/METADATA.pb b/ofl/ibmplexsans/METADATA.pb
index d55549ba3d57d66eb3fb8c5ec87e4f3df575de27..bc61f0a0137cae696afed7d114bf26ae444382ed 100644
--- a/ofl/ibmplexsans/METADATA.pb
+++ b/ofl/ibmplexsans/METADATA.pb
@@ -136,3 +136,71 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Bold.ttf"
+    dest_file: "IBMPlexSans-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-BoldItalic.ttf"
+    dest_file: "IBMPlexSans-BoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-ExtraLight.ttf"
+    dest_file: "IBMPlexSans-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-ExtraLightItalic.ttf"
+    dest_file: "IBMPlexSans-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Italic.ttf"
+    dest_file: "IBMPlexSans-Italic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Light.ttf"
+    dest_file: "IBMPlexSans-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-LightItalic.ttf"
+    dest_file: "IBMPlexSans-LightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Medium.ttf"
+    dest_file: "IBMPlexSans-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-MediumItalic.ttf"
+    dest_file: "IBMPlexSans-MediumItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Regular.ttf"
+    dest_file: "IBMPlexSans-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-SemiBold.ttf"
+    dest_file: "IBMPlexSans-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-SemiBoldItalic.ttf"
+    dest_file: "IBMPlexSans-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Thin.ttf"
+    dest_file: "IBMPlexSans-Thin.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-ThinItalic.ttf"
+    dest_file: "IBMPlexSans-ThinItalic.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/ibmplexsans/upstream.yaml b/ofl/ibmplexsans/upstream.yaml
deleted file mode 100644
index 22d8c9ad2f9bf5247d99f748d3fedf6d11da8e61..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsans/upstream.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Bold.ttf: IBMPlexSans-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-BoldItalic.ttf: IBMPlexSans-BoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-ExtraLight.ttf: IBMPlexSans-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-ExtraLightItalic.ttf: IBMPlexSans-ExtraLightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Italic.ttf: IBMPlexSans-Italic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Light.ttf: IBMPlexSans-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-LightItalic.ttf: IBMPlexSans-LightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Medium.ttf: IBMPlexSans-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-MediumItalic.ttf: IBMPlexSans-MediumItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Regular.ttf: IBMPlexSans-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-SemiBold.ttf: IBMPlexSans-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-SemiBoldItalic.ttf: IBMPlexSans-SemiBoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-Thin.ttf: IBMPlexSans-Thin.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans/fonts/complete/ttf/IBMPlexSans-ThinItalic.ttf: IBMPlexSans-ThinItalic.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsansarabic/METADATA.pb b/ofl/ibmplexsansarabic/METADATA.pb
index 64aee4f3193d89e16b5b31e8a5c8ffc63a6e8644..7919d02df7f44f84e72e3ae11601aede91d79fe3 100644
--- a/ofl/ibmplexsansarabic/METADATA.pb
+++ b/ofl/ibmplexsansarabic/METADATA.pb
@@ -71,4 +71,44 @@ subsets: "cyrillic-ext"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Bold.ttf"
+    dest_file: "IBMPlexSansArabic-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-ExtraLight.ttf"
+    dest_file: "IBMPlexSansArabic-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Light.ttf"
+    dest_file: "IBMPlexSansArabic-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Medium.ttf"
+    dest_file: "IBMPlexSansArabic-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Regular.ttf"
+    dest_file: "IBMPlexSansArabic-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-SemiBold.ttf"
+    dest_file: "IBMPlexSansArabic-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Thin.ttf"
+    dest_file: "IBMPlexSansArabic-Thin.ttf"
+  }
+  branch: "master"
+}
 primary_script: "Arab"
diff --git a/ofl/ibmplexsansarabic/upstream.yaml b/ofl/ibmplexsansarabic/upstream.yaml
deleted file mode 100644
index e0a8ce3da5e16436dda1ecf93f18a1432b8838d5..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsansarabic/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Bold.ttf: IBMPlexSansArabic-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-ExtraLight.ttf: IBMPlexSansArabic-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Light.ttf: IBMPlexSansArabic-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Medium.ttf: IBMPlexSansArabic-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Regular.ttf: IBMPlexSansArabic-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-SemiBold.ttf: IBMPlexSansArabic-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Arabic/fonts/complete/ttf/IBMPlexSansArabic-Thin.ttf: IBMPlexSansArabic-Thin.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsanscondensed/METADATA.pb b/ofl/ibmplexsanscondensed/METADATA.pb
index 51c65840d6e26c7b5d69a47ba5755eee07654267..bd7116588efa6f5b26c09f1749e842fcc8404a66 100644
--- a/ofl/ibmplexsanscondensed/METADATA.pb
+++ b/ofl/ibmplexsanscondensed/METADATA.pb
@@ -134,3 +134,71 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Bold.ttf"
+    dest_file: "IBMPlexSansCondensed-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-BoldItalic.ttf"
+    dest_file: "IBMPlexSansCondensed-BoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-ExtraLight.ttf"
+    dest_file: "IBMPlexSansCondensed-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-ExtraLightItalic.ttf"
+    dest_file: "IBMPlexSansCondensed-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Italic.ttf"
+    dest_file: "IBMPlexSansCondensed-Italic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Light.ttf"
+    dest_file: "IBMPlexSansCondensed-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-LightItalic.ttf"
+    dest_file: "IBMPlexSansCondensed-LightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Medium.ttf"
+    dest_file: "IBMPlexSansCondensed-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-MediumItalic.ttf"
+    dest_file: "IBMPlexSansCondensed-MediumItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Regular.ttf"
+    dest_file: "IBMPlexSansCondensed-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-SemiBold.ttf"
+    dest_file: "IBMPlexSansCondensed-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-SemiBoldItalic.ttf"
+    dest_file: "IBMPlexSansCondensed-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Thin.ttf"
+    dest_file: "IBMPlexSansCondensed-Thin.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-ThinItalic.ttf"
+    dest_file: "IBMPlexSansCondensed-ThinItalic.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/ibmplexsanscondensed/upstream.yaml b/ofl/ibmplexsanscondensed/upstream.yaml
deleted file mode 100644
index 898cf94b2c57c304928c019e4d0200c48185b4a1..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsanscondensed/upstream.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Bold.ttf: IBMPlexSansCondensed-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-BoldItalic.ttf: IBMPlexSansCondensed-BoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-ExtraLight.ttf: IBMPlexSansCondensed-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-ExtraLightItalic.ttf: IBMPlexSansCondensed-ExtraLightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Italic.ttf: IBMPlexSansCondensed-Italic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Light.ttf: IBMPlexSansCondensed-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-LightItalic.ttf: IBMPlexSansCondensed-LightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Medium.ttf: IBMPlexSansCondensed-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-MediumItalic.ttf: IBMPlexSansCondensed-MediumItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Regular.ttf: IBMPlexSansCondensed-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-SemiBold.ttf: IBMPlexSansCondensed-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-SemiBoldItalic.ttf: IBMPlexSansCondensed-SemiBoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-Thin.ttf: IBMPlexSansCondensed-Thin.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Condensed/fonts/complete/ttf/IBMPlexSansCondensed-ThinItalic.ttf: IBMPlexSansCondensed-ThinItalic.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsansdevanagari/METADATA.pb b/ofl/ibmplexsansdevanagari/METADATA.pb
index 8248ecc5a4a53c98050fb9078194b7f57d648f03..9d8faf27cc1b418cb24221d0b5eb4cd61bb983a7 100644
--- a/ofl/ibmplexsansdevanagari/METADATA.pb
+++ b/ofl/ibmplexsansdevanagari/METADATA.pb
@@ -71,4 +71,44 @@ subsets: "devanagari"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Bold.ttf"
+    dest_file: "IBMPlexSansDevanagari-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-ExtraLight.ttf"
+    dest_file: "IBMPlexSansDevanagari-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Light.ttf"
+    dest_file: "IBMPlexSansDevanagari-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Medium.ttf"
+    dest_file: "IBMPlexSansDevanagari-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Regular.ttf"
+    dest_file: "IBMPlexSansDevanagari-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-SemiBold.ttf"
+    dest_file: "IBMPlexSansDevanagari-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Thin.ttf"
+    dest_file: "IBMPlexSansDevanagari-Thin.ttf"
+  }
+  branch: "master"
+}
 primary_script: "Deva"
diff --git a/ofl/ibmplexsansdevanagari/upstream.yaml b/ofl/ibmplexsansdevanagari/upstream.yaml
deleted file mode 100644
index c6e7b9791761f25ff2c24b9dcd4a82a6aa0d278e..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsansdevanagari/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Bold.ttf: IBMPlexSansDevanagari-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-ExtraLight.ttf: IBMPlexSansDevanagari-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Light.ttf: IBMPlexSansDevanagari-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Medium.ttf: IBMPlexSansDevanagari-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Regular.ttf: IBMPlexSansDevanagari-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-SemiBold.ttf: IBMPlexSansDevanagari-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Devanagari/fonts/complete/ttf/IBMPlexSansDevanagari-Thin.ttf: IBMPlexSansDevanagari-Thin.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsanshebrew/METADATA.pb b/ofl/ibmplexsanshebrew/METADATA.pb
index 189e35df2f95e2daddba553bcef5d4105e86b12c..2bb314e14f45416dd90b965fc5be2e6cdd6626c2 100644
--- a/ofl/ibmplexsanshebrew/METADATA.pb
+++ b/ofl/ibmplexsanshebrew/METADATA.pb
@@ -71,4 +71,44 @@ subsets: "hebrew"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Bold.ttf"
+    dest_file: "IBMPlexSansHebrew-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-ExtraLight.ttf"
+    dest_file: "IBMPlexSansHebrew-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Light.ttf"
+    dest_file: "IBMPlexSansHebrew-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Medium.ttf"
+    dest_file: "IBMPlexSansHebrew-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Regular.ttf"
+    dest_file: "IBMPlexSansHebrew-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-SemiBold.ttf"
+    dest_file: "IBMPlexSansHebrew-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Thin.ttf"
+    dest_file: "IBMPlexSansHebrew-Thin.ttf"
+  }
+  branch: "master"
+}
 primary_script: "Hebr"
diff --git a/ofl/ibmplexsanshebrew/upstream.yaml b/ofl/ibmplexsanshebrew/upstream.yaml
deleted file mode 100644
index d4768f450067a839d9da03370c46aba78136bad8..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsanshebrew/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Bold.ttf: IBMPlexSansHebrew-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-ExtraLight.ttf: IBMPlexSansHebrew-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Light.ttf: IBMPlexSansHebrew-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Medium.ttf: IBMPlexSansHebrew-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Regular.ttf: IBMPlexSansHebrew-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-SemiBold.ttf: IBMPlexSansHebrew-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Hebrew/fonts/complete/ttf/IBMPlexSansHebrew-Thin.ttf: IBMPlexSansHebrew-Thin.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsansjp/METADATA.pb b/ofl/ibmplexsansjp/METADATA.pb
index aca1c30e1e2d586bd7b2ac568f59f5a6a402a9bb..59a0a3a0d420849dda9e2911f4bb499f5bb99778 100644
--- a/ofl/ibmplexsansjp/METADATA.pb
+++ b/ofl/ibmplexsansjp/METADATA.pb
@@ -74,5 +74,42 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/plex"
   commit: "80fcb676509354caa75c6bfc7f9db598545d466f"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Bold.ttf"
+    dest_file: "IBMPlexSansJP-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-ExtraLight.ttf"
+    dest_file: "IBMPlexSansJP-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Light.ttf"
+    dest_file: "IBMPlexSansJP-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Medium.ttf"
+    dest_file: "IBMPlexSansJP-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Regular.ttf"
+    dest_file: "IBMPlexSansJP-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-SemiBold.ttf"
+    dest_file: "IBMPlexSansJP-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Thin.ttf"
+    dest_file: "IBMPlexSansJP-Thin.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Jpan"
diff --git a/ofl/ibmplexsansjp/upstream.yaml b/ofl/ibmplexsansjp/upstream.yaml
deleted file mode 100644
index a6e973f6c19681f6027e7251e2b6773398e4e0e5..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsansjp/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Bold.ttf: IBMPlexSansJP-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-ExtraLight.ttf: IBMPlexSansJP-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Light.ttf: IBMPlexSansJP-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Medium.ttf: IBMPlexSansJP-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Regular.ttf: IBMPlexSansJP-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-SemiBold.ttf: IBMPlexSansJP-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-JP/fonts/complete/ttf/IBMPlexSansJP-Thin.ttf: IBMPlexSansJP-Thin.ttf
-archive:
diff --git a/ofl/ibmplexsanskr/METADATA.pb b/ofl/ibmplexsanskr/METADATA.pb
index 02c0f8a60c454364cef907e7120a607722c1e75e..2f091e8ef94599e8e6ee956eeca132d283d6fcfe 100644
--- a/ofl/ibmplexsanskr/METADATA.pb
+++ b/ofl/ibmplexsanskr/METADATA.pb
@@ -70,4 +70,44 @@ subsets: "korean"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Bold.ttf"
+    dest_file: "IBMPlexSansKR-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-ExtraLight.ttf"
+    dest_file: "IBMPlexSansKR-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Light.ttf"
+    dest_file: "IBMPlexSansKR-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Medium.ttf"
+    dest_file: "IBMPlexSansKR-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Regular.ttf"
+    dest_file: "IBMPlexSansKR-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-SemiBold.ttf"
+    dest_file: "IBMPlexSansKR-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Thin.ttf"
+    dest_file: "IBMPlexSansKR-Thin.ttf"
+  }
+  branch: "master"
+}
 primary_script: "Kore"
diff --git a/ofl/ibmplexsanskr/upstream.yaml b/ofl/ibmplexsanskr/upstream.yaml
deleted file mode 100644
index 00acb766483ce6da930431b8b652391a1fe7a9bc..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsanskr/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Bold.ttf: IBMPlexSansKR-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-ExtraLight.ttf: IBMPlexSansKR-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Light.ttf: IBMPlexSansKR-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Medium.ttf: IBMPlexSansKR-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Regular.ttf: IBMPlexSansKR-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-SemiBold.ttf: IBMPlexSansKR-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-KR/fonts/complete/ttf/IBMPlexSansKR-Thin.ttf: IBMPlexSansKR-Thin.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsansthai/METADATA.pb b/ofl/ibmplexsansthai/METADATA.pb
index ac74c00d249b29470d803a877995f94f7c36a36d..c6bd6869c49ca8a1ff918987f7238fd74f037ec8 100644
--- a/ofl/ibmplexsansthai/METADATA.pb
+++ b/ofl/ibmplexsansthai/METADATA.pb
@@ -71,4 +71,44 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "thai"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Bold.ttf"
+    dest_file: "IBMPlexSansThai-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-ExtraLight.ttf"
+    dest_file: "IBMPlexSansThai-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Light.ttf"
+    dest_file: "IBMPlexSansThai-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Medium.ttf"
+    dest_file: "IBMPlexSansThai-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Regular.ttf"
+    dest_file: "IBMPlexSansThai-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-SemiBold.ttf"
+    dest_file: "IBMPlexSansThai-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Thin.ttf"
+    dest_file: "IBMPlexSansThai-Thin.ttf"
+  }
+  branch: "master"
+}
 primary_script: "Thai"
diff --git a/ofl/ibmplexsansthai/upstream.yaml b/ofl/ibmplexsansthai/upstream.yaml
deleted file mode 100644
index c67efcf72b7211809d882fef4d72b0e6a809e870..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsansthai/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Bold.ttf: IBMPlexSansThai-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-ExtraLight.ttf: IBMPlexSansThai-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Light.ttf: IBMPlexSansThai-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Medium.ttf: IBMPlexSansThai-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Regular.ttf: IBMPlexSansThai-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-SemiBold.ttf: IBMPlexSansThai-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai/fonts/complete/ttf/IBMPlexSansThai-Thin.ttf: IBMPlexSansThai-Thin.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexsansthailooped/METADATA.pb b/ofl/ibmplexsansthailooped/METADATA.pb
index 74ccba67c1f155a3adc5dc27858ba2d4fbf1aa14..f268be2a1279935647be1bfbe08550319e0ee43a 100644
--- a/ofl/ibmplexsansthailooped/METADATA.pb
+++ b/ofl/ibmplexsansthailooped/METADATA.pb
@@ -71,4 +71,44 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "thai"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Bold.ttf"
+    dest_file: "IBMPlexSansThaiLooped-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-ExtraLight.ttf"
+    dest_file: "IBMPlexSansThaiLooped-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Light.ttf"
+    dest_file: "IBMPlexSansThaiLooped-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Medium.ttf"
+    dest_file: "IBMPlexSansThaiLooped-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Regular.ttf"
+    dest_file: "IBMPlexSansThaiLooped-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-SemiBold.ttf"
+    dest_file: "IBMPlexSansThaiLooped-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Thin.ttf"
+    dest_file: "IBMPlexSansThaiLooped-Thin.ttf"
+  }
+  branch: "master"
+}
 primary_script: "Thai"
diff --git a/ofl/ibmplexsansthailooped/upstream.yaml b/ofl/ibmplexsansthailooped/upstream.yaml
deleted file mode 100644
index d44e477b5bb170654bbc90fc0610288dd9fe2c97..0000000000000000000000000000000000000000
--- a/ofl/ibmplexsansthailooped/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Bold.ttf: IBMPlexSansThaiLooped-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-ExtraLight.ttf: IBMPlexSansThaiLooped-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Light.ttf: IBMPlexSansThaiLooped-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Medium.ttf: IBMPlexSansThaiLooped-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Regular.ttf: IBMPlexSansThaiLooped-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-SemiBold.ttf: IBMPlexSansThaiLooped-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Sans-Thai-Looped/fonts/complete/ttf/IBMPlexSansThaiLooped-Thin.ttf: IBMPlexSansThaiLooped-Thin.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/ibmplexserif/METADATA.pb b/ofl/ibmplexserif/METADATA.pb
index f65f25409583afc28bf78e42fed7fca538142f37..e3cfb13b8297d5d7d46e98ec89ccbb48b5643506 100644
--- a/ofl/ibmplexserif/METADATA.pb
+++ b/ofl/ibmplexserif/METADATA.pb
@@ -135,3 +135,71 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/plex"
+  files {
+    source_file: "LICENSE.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Bold.ttf"
+    dest_file: "IBMPlexSerif-Bold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-BoldItalic.ttf"
+    dest_file: "IBMPlexSerif-BoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-ExtraLight.ttf"
+    dest_file: "IBMPlexSerif-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-ExtraLightItalic.ttf"
+    dest_file: "IBMPlexSerif-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Italic.ttf"
+    dest_file: "IBMPlexSerif-Italic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Light.ttf"
+    dest_file: "IBMPlexSerif-Light.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-LightItalic.ttf"
+    dest_file: "IBMPlexSerif-LightItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Medium.ttf"
+    dest_file: "IBMPlexSerif-Medium.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-MediumItalic.ttf"
+    dest_file: "IBMPlexSerif-MediumItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Regular.ttf"
+    dest_file: "IBMPlexSerif-Regular.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-SemiBold.ttf"
+    dest_file: "IBMPlexSerif-SemiBold.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-SemiBoldItalic.ttf"
+    dest_file: "IBMPlexSerif-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Thin.ttf"
+    dest_file: "IBMPlexSerif-Thin.ttf"
+  }
+  files {
+    source_file: "Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-ThinItalic.ttf"
+    dest_file: "IBMPlexSerif-ThinItalic.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/ibmplexserif/upstream.yaml b/ofl/ibmplexserif/upstream.yaml
deleted file mode 100644
index ca3fe381dd4357912b49c68ccc19ea6b5493514d..0000000000000000000000000000000000000000
--- a/ofl/ibmplexserif/upstream.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-branch: master
-files:
-  LICENSE.txt: OFL.txt
-  Google-Fonts-Fixes/descriptions/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Bold.ttf: IBMPlexSerif-Bold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-BoldItalic.ttf: IBMPlexSerif-BoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-ExtraLight.ttf: IBMPlexSerif-ExtraLight.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-ExtraLightItalic.ttf: IBMPlexSerif-ExtraLightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Italic.ttf: IBMPlexSerif-Italic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Light.ttf: IBMPlexSerif-Light.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-LightItalic.ttf: IBMPlexSerif-LightItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Medium.ttf: IBMPlexSerif-Medium.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-MediumItalic.ttf: IBMPlexSerif-MediumItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Regular.ttf: IBMPlexSerif-Regular.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-SemiBold.ttf: IBMPlexSerif-SemiBold.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-SemiBoldItalic.ttf: IBMPlexSerif-SemiBoldItalic.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-Thin.ttf: IBMPlexSerif-Thin.ttf
-  Google-Fonts-Fixes/fonts/IBM-Plex-Serif/fonts/complete/ttf/IBMPlexSerif-ThinItalic.ttf: IBMPlexSerif-ThinItalic.ttf
-repository_url: https://github.com/googlefonts/plex
diff --git a/ofl/imbue/METADATA.pb b/ofl/imbue/METADATA.pb
index ebba161343deac00245740605a364cd961875b9f..7ed082f09505c3cb8d7017ca3777f239ad2b49d1 100644
--- a/ofl/imbue/METADATA.pb
+++ b/ofl/imbue/METADATA.pb
@@ -30,5 +30,125 @@ registry_default_overrides {
   key: "opsz"
   value: 10.0
 }
+source {
+  repository_url: "https://github.com/Etcetera-Type-Co/Imbue"
+  files {
+    source_file: "fonts/variable/Imbue[opsz,wght].ttf"
+    dest_file: "Imbue[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-Black.ttf"
+    dest_file: "static/Imbue10pt-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-Bold.ttf"
+    dest_file: "static/Imbue10pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-ExtraBold.ttf"
+    dest_file: "static/Imbue10pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-ExtraLight.ttf"
+    dest_file: "static/Imbue10pt-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-Light.ttf"
+    dest_file: "static/Imbue10pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-Medium.ttf"
+    dest_file: "static/Imbue10pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-Regular.ttf"
+    dest_file: "static/Imbue10pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-SemiBold.ttf"
+    dest_file: "static/Imbue10pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue10pt-Thin.ttf"
+    dest_file: "static/Imbue10pt-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-Black.ttf"
+    dest_file: "static/Imbue50pt-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-Bold.ttf"
+    dest_file: "static/Imbue50pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-ExtraBold.ttf"
+    dest_file: "static/Imbue50pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-ExtraLight.ttf"
+    dest_file: "static/Imbue50pt-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-Light.ttf"
+    dest_file: "static/Imbue50pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-Medium.ttf"
+    dest_file: "static/Imbue50pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-Regular.ttf"
+    dest_file: "static/Imbue50pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-SemiBold.ttf"
+    dest_file: "static/Imbue50pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue50pt-Thin.ttf"
+    dest_file: "static/Imbue50pt-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-Black.ttf"
+    dest_file: "static/Imbue100pt-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-Bold.ttf"
+    dest_file: "static/Imbue100pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-ExtraBold.ttf"
+    dest_file: "static/Imbue100pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-ExtraLight.ttf"
+    dest_file: "static/Imbue100pt-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-Light.ttf"
+    dest_file: "static/Imbue100pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-Medium.ttf"
+    dest_file: "static/Imbue100pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-Regular.ttf"
+    dest_file: "static/Imbue100pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-SemiBold.ttf"
+    dest_file: "static/Imbue100pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Imbue100pt-Thin.ttf"
+    dest_file: "static/Imbue100pt-Thin.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/imbue/upstream.yaml b/ofl/imbue/upstream.yaml
deleted file mode 100644
index bb7fae0d4f4df969875a073d58a665ccf1fcc589..0000000000000000000000000000000000000000
--- a/ofl/imbue/upstream.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-branch: master
-files:
-  fonts/variable/Imbue[opsz,wght].ttf: Imbue[opsz,wght].ttf
-  fonts/ttf/Imbue10pt-Black.ttf: static/Imbue10pt-Black.ttf
-  fonts/ttf/Imbue10pt-Bold.ttf: static/Imbue10pt-Bold.ttf
-  fonts/ttf/Imbue10pt-ExtraBold.ttf: static/Imbue10pt-ExtraBold.ttf
-  fonts/ttf/Imbue10pt-ExtraLight.ttf: static/Imbue10pt-ExtraLight.ttf
-  fonts/ttf/Imbue10pt-Light.ttf: static/Imbue10pt-Light.ttf
-  fonts/ttf/Imbue10pt-Medium.ttf: static/Imbue10pt-Medium.ttf
-  fonts/ttf/Imbue10pt-Regular.ttf: static/Imbue10pt-Regular.ttf
-  fonts/ttf/Imbue10pt-SemiBold.ttf: static/Imbue10pt-SemiBold.ttf
-  fonts/ttf/Imbue10pt-Thin.ttf: static/Imbue10pt-Thin.ttf
-  fonts/ttf/Imbue50pt-Black.ttf: static/Imbue50pt-Black.ttf
-  fonts/ttf/Imbue50pt-Bold.ttf: static/Imbue50pt-Bold.ttf
-  fonts/ttf/Imbue50pt-ExtraBold.ttf: static/Imbue50pt-ExtraBold.ttf
-  fonts/ttf/Imbue50pt-ExtraLight.ttf: static/Imbue50pt-ExtraLight.ttf
-  fonts/ttf/Imbue50pt-Light.ttf: static/Imbue50pt-Light.ttf
-  fonts/ttf/Imbue50pt-Medium.ttf: static/Imbue50pt-Medium.ttf
-  fonts/ttf/Imbue50pt-Regular.ttf: static/Imbue50pt-Regular.ttf
-  fonts/ttf/Imbue50pt-SemiBold.ttf: static/Imbue50pt-SemiBold.ttf
-  fonts/ttf/Imbue50pt-Thin.ttf: static/Imbue50pt-Thin.ttf
-  fonts/ttf/Imbue100pt-Black.ttf: static/Imbue100pt-Black.ttf
-  fonts/ttf/Imbue100pt-Bold.ttf: static/Imbue100pt-Bold.ttf
-  fonts/ttf/Imbue100pt-ExtraBold.ttf: static/Imbue100pt-ExtraBold.ttf
-  fonts/ttf/Imbue100pt-ExtraLight.ttf: static/Imbue100pt-ExtraLight.ttf
-  fonts/ttf/Imbue100pt-Light.ttf: static/Imbue100pt-Light.ttf
-  fonts/ttf/Imbue100pt-Medium.ttf: static/Imbue100pt-Medium.ttf
-  fonts/ttf/Imbue100pt-Regular.ttf: static/Imbue100pt-Regular.ttf
-  fonts/ttf/Imbue100pt-SemiBold.ttf: static/Imbue100pt-SemiBold.ttf
-  fonts/ttf/Imbue100pt-Thin.ttf: static/Imbue100pt-Thin.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Etcetera-Type-Co/Imbue
diff --git a/ofl/imperialscript/METADATA.pb b/ofl/imperialscript/METADATA.pb
index 19e6ba7ec2dba7bd9dc23506cee572f6cba3c322..e7f7890f16ea319ae78b70b37e158389f3d84a7c 100644
--- a/ofl/imperialscript/METADATA.pb
+++ b/ofl/imperialscript/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/imperial-script"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/ImperialScript-Regular.ttf"
+    dest_file: "ImperialScript-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/imperialscript/upstream.yaml b/ofl/imperialscript/upstream.yaml
deleted file mode 100644
index 1e1e0d1be20701d0a30c393957aca9823f4c8909..0000000000000000000000000000000000000000
--- a/ofl/imperialscript/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/ImperialScript-Regular.ttf: ImperialScript-Regular.ttf
-repository_url: https://github.com/googlefonts/imperial-script
diff --git a/ofl/imprima/METADATA.pb b/ofl/imprima/METADATA.pb
index 276ad705b81de3815e39a923b2b4c0f9b8e6d50d..8cc221f1e7c9a34f4216fba643f8737be0208448 100644
--- a/ofl/imprima/METADATA.pb
+++ b/ofl/imprima/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/imprima"
   commit: "efec6ee25d2ba461487c391b62ae26817614741a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Imprima-Regular.ttf"
+    dest_file: "Imprima-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/imprima/upstream.yaml b/ofl/imprima/upstream.yaml
deleted file mode 100644
index b1662b1daaaa2aa897cb127bc802519466569c23..0000000000000000000000000000000000000000
--- a/ofl/imprima/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Imprima-Regular.ttf: Imprima-Regular.ttf
-archive:
diff --git a/ofl/inclusivesans/METADATA.pb b/ofl/inclusivesans/METADATA.pb
index b5839b81cf1e8ca95fbfe41ac77a82319e88641f..da35fcd3f51a4c95e79552ab41577c8d697ded8a 100644
--- a/ofl/inclusivesans/METADATA.pb
+++ b/ofl/inclusivesans/METADATA.pb
@@ -28,5 +28,18 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/LivKing/Inclusive-Sans"
   commit: "97577e1a7c08db105c19bae35ea17b1a8f81ec5e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/InclusiveSans-Regular.ttf"
+    dest_file: "InclusiveSans-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/InclusiveSans-Italic.ttf"
+    dest_file: "InclusiveSans-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Zinh"
diff --git a/ofl/inclusivesans/upstream.yaml b/ofl/inclusivesans/upstream.yaml
deleted file mode 100644
index 5ce36f3420122218d8a5a1796b4249f14274c311..0000000000000000000000000000000000000000
--- a/ofl/inclusivesans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/InclusiveSans-Regular.ttf: InclusiveSans-Regular.ttf
-  fonts/ttf/InclusiveSans-Italic.ttf: InclusiveSans-Italic.ttf
-archive:
diff --git a/ofl/ingriddarling/METADATA.pb b/ofl/ingriddarling/METADATA.pb
index 4302ca5ba310754541e9107a34b5e6b14f729463..b5c1287de7188fac07e21b31d79d786e81d14126 100644
--- a/ofl/ingriddarling/METADATA.pb
+++ b/ofl/ingriddarling/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/ingrid-darling"
   commit: "ea2b4893cf8dc8cd0e7fb2b89f9631b38fde4ed3"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/IngridDarling-Regular.ttf"
+    dest_file: "IngridDarling-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/ingriddarling/upstream.yaml b/ofl/ingriddarling/upstream.yaml
deleted file mode 100644
index 7057dfc731aa6aa4f8fe23317653bffcecfd3b10..0000000000000000000000000000000000000000
--- a/ofl/ingriddarling/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/IngridDarling-Regular.ttf: IngridDarling-Regular.ttf
diff --git a/ofl/inspiration/METADATA.pb b/ofl/inspiration/METADATA.pb
index 7e1d0be82e9e2dca4ca556050ff548b246cdcc13..bbf1eda907507549168ab3467f17d1281b8280b2 100644
--- a/ofl/inspiration/METADATA.pb
+++ b/ofl/inspiration/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/inspiration"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Inspiration-Regular.ttf"
+    dest_file: "Inspiration-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/inspiration/upstream.yaml b/ofl/inspiration/upstream.yaml
deleted file mode 100644
index 11049bc14800c989089a2fbc283b9a27a625bd94..0000000000000000000000000000000000000000
--- a/ofl/inspiration/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Inspiration-Regular.ttf: Inspiration-Regular.ttf
-repository_url: https://github.com/googlefonts/inspiration
diff --git a/ofl/instrumentsans/METADATA.pb b/ofl/instrumentsans/METADATA.pb
index 6bd35deebb717016f7c03fd39c751eeabfd94fd8..cb72e84e82ab63b5ac6e3304c21294f0c757f320 100644
--- a/ofl/instrumentsans/METADATA.pb
+++ b/ofl/instrumentsans/METADATA.pb
@@ -37,4 +37,17 @@ axes {
 source {
   repository_url: "https://github.com/Instrument/instrument-sans"
   commit: "4a27996becc1c7d8e8d4095df4bb485068252bb2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/InstrumentSans[wdth,wght].ttf"
+    dest_file: "InstrumentSans[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/InstrumentSans-Italic[wdth,wght].ttf"
+    dest_file: "InstrumentSans-Italic[wdth,wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/instrumentsans/upstream.yaml b/ofl/instrumentsans/upstream.yaml
deleted file mode 100644
index 63b536357c0e4ea6a5eef6d04285d76fa52a1138..0000000000000000000000000000000000000000
--- a/ofl/instrumentsans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/InstrumentSans[wdth,wght].ttf: InstrumentSans[wdth,wght].ttf
-  fonts/variable/InstrumentSans-Italic[wdth,wght].ttf: InstrumentSans-Italic[wdth,wght].ttf
-archive:
diff --git a/ofl/instrumentserif/METADATA.pb b/ofl/instrumentserif/METADATA.pb
index 0d82d4315530c9c6120c4a277b66ba5afbd72757..538a4d48002472138707f2e3cb08a7ba049b7774 100644
--- a/ofl/instrumentserif/METADATA.pb
+++ b/ofl/instrumentserif/METADATA.pb
@@ -27,4 +27,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/Instrument/instrument-serif"
   commit: "9aefd76b9b96dffbdc7b65d38c0dc5bcae2717a9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/InstrumentSerif-Regular.ttf"
+    dest_file: "InstrumentSerif-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/InstrumentSerif-Italic.ttf"
+    dest_file: "InstrumentSerif-Italic.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/instrumentserif/upstream.yaml b/ofl/instrumentserif/upstream.yaml
deleted file mode 100644
index bd41f275a261022c42a56ef827ffb79db2fd46be..0000000000000000000000000000000000000000
--- a/ofl/instrumentserif/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/InstrumentSerif-Regular.ttf: InstrumentSerif-Regular.ttf
-  fonts/ttf/InstrumentSerif-Italic.ttf: InstrumentSerif-Italic.ttf
-archive:
diff --git a/ofl/intertight/METADATA.pb b/ofl/intertight/METADATA.pb
index 2a9f3cdafc684d93fa35ac2e4e5634302ae019e7..a48a3c8c2979cac19de8a4e569aa165957f5ccf6 100644
--- a/ofl/intertight/METADATA.pb
+++ b/ofl/intertight/METADATA.pb
@@ -37,6 +37,19 @@ axes {
 source {
   repository_url: "https://github.com/rsms/inter-gf-tight"
   commit: "c194f94c60b569b47876811321f5ef1f0c2614a2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/InterTight[wght].ttf"
+    dest_file: "InterTight[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/InterTight-Italic[wght].ttf"
+    dest_file: "InterTight-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/intertight/upstream.yaml b/ofl/intertight/upstream.yaml
deleted file mode 100644
index 829ab009c8c3f21d86b1bc8c3830e2d9113a439b..0000000000000000000000000000000000000000
--- a/ofl/intertight/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/InterTight[wght].ttf: InterTight[wght].ttf
-  fonts/variable/InterTight-Italic[wght].ttf: InterTight-Italic[wght].ttf
diff --git a/ofl/islandmoments/METADATA.pb b/ofl/islandmoments/METADATA.pb
index 46ac96df93ac7179d7e159aa57ce48c97de59ee1..cc04b787116e2707b4003c54622288a93cdf5db4 100644
--- a/ofl/islandmoments/METADATA.pb
+++ b/ofl/islandmoments/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/island-moments"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/IslandMoments-Regular.ttf"
+    dest_file: "IslandMoments-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/islandmoments/upstream.yaml b/ofl/islandmoments/upstream.yaml
deleted file mode 100644
index 6f809e1d8a5edb63181961f7adcaa2a2aa8da2ce..0000000000000000000000000000000000000000
--- a/ofl/islandmoments/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/IslandMoments-Regular.ttf: IslandMoments-Regular.ttf
-repository_url: https://github.com/googlefonts/island-moments
diff --git a/ofl/italianno/METADATA.pb b/ofl/italianno/METADATA.pb
index ec67ac7b2ac101a1ab5e75886eac2061bbd6096e..cb16e5a38377f795c992d4f31d222cd771beea64 100644
--- a/ofl/italianno/METADATA.pb
+++ b/ofl/italianno/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/italianno"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Italianno-Regular.ttf"
+    dest_file: "Italianno-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/italianno/upstream.yaml b/ofl/italianno/upstream.yaml
deleted file mode 100644
index 996804da979ab5862477d17a68e7082a9063ede3..0000000000000000000000000000000000000000
--- a/ofl/italianno/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Italianno-Regular.ttf: Italianno-Regular.ttf
-repository_url: https://github.com/googlefonts/italianno
diff --git a/ofl/jacquard12/METADATA.pb b/ofl/jacquard12/METADATA.pb
index dabf4f2118155b14255725cbbe9325938a224553..3561b25185448075e3f04cc879b2416ab6e4e7eb 100644
--- a/ofl/jacquard12/METADATA.pb
+++ b/ofl/jacquard12/METADATA.pb
@@ -20,4 +20,13 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-jacquard"
   commit: "9c5c14889fd148d385536658cc2d320be294f32d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jacquard12-Regular.ttf"
+    dest_file: "Jacquard12-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/jacquard12/upstream.yaml b/ofl/jacquard12/upstream.yaml
deleted file mode 100644
index f7b654ac642ec7fb593c3421a08573c94a04cad5..0000000000000000000000000000000000000000
--- a/ofl/jacquard12/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jacquard12-Regular.ttf: Jacquard12-Regular.ttf
-archive:
diff --git a/ofl/jacquard12charted/METADATA.pb b/ofl/jacquard12charted/METADATA.pb
index 27597fc7f65c50faa4e38b80f8e2aa191ff852dd..6f9117874e23dd4656712a9603d056077cab9c9e 100644
--- a/ofl/jacquard12charted/METADATA.pb
+++ b/ofl/jacquard12charted/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-jacquard"
   commit: "9c5c14889fd148d385536658cc2d320be294f32d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jacquard12Charted-Regular.ttf"
+    dest_file: "Jacquard12Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/jacquard12charted/upstream.yaml b/ofl/jacquard12charted/upstream.yaml
deleted file mode 100644
index 20799c6783a59cd991adff84eab5c0b5ca2d60f6..0000000000000000000000000000000000000000
--- a/ofl/jacquard12charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jacquard12Charted-Regular.ttf: Jacquard12Charted-Regular.ttf
-archive:
diff --git a/ofl/jacquard24/METADATA.pb b/ofl/jacquard24/METADATA.pb
index 1a682f496745690348eb7ce5d67283907d925044..b779a5dd411ecf0053bc66afc2787c23817bee30 100644
--- a/ofl/jacquard24/METADATA.pb
+++ b/ofl/jacquard24/METADATA.pb
@@ -18,5 +18,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jacquard"
   commit: "0ef57f102270194f4e41ce609ad5888f14983b8e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jacquard24-Regular.ttf"
+    dest_file: "Jacquard24-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/jacquard24/upstream.yaml b/ofl/jacquard24/upstream.yaml
deleted file mode 100644
index 9e5d1aa3d9cb1d0c1b5a77f3b270d209efd50b89..0000000000000000000000000000000000000000
--- a/ofl/jacquard24/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jacquard24-Regular.ttf: Jacquard24-Regular.ttf
-archive:
diff --git a/ofl/jacquard24charted/METADATA.pb b/ofl/jacquard24charted/METADATA.pb
index 79abf4285b9861e9e03aa0757435f3a1ca186493..1d3995efc629e26c2a400df198a6bd96f00acf33 100644
--- a/ofl/jacquard24charted/METADATA.pb
+++ b/ofl/jacquard24charted/METADATA.pb
@@ -18,5 +18,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jacquard"
   commit: "0ef57f102270194f4e41ce609ad5888f14983b8e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jacquard24Charted-Regular.ttf"
+    dest_file: "Jacquard24Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/jacquard24charted/upstream.yaml b/ofl/jacquard24charted/upstream.yaml
deleted file mode 100644
index e510b552c3c6c728a5c2fb2d83e1afa9e3df799d..0000000000000000000000000000000000000000
--- a/ofl/jacquard24charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jacquard24Charted-Regular.ttf: Jacquard24Charted-Regular.ttf
-archive:
diff --git a/ofl/jacquardabastarda9/METADATA.pb b/ofl/jacquardabastarda9/METADATA.pb
index 84730a0ec05c5741821b4684d5a30ed4efaa2432..97c4923ecd3ad42392e26b9ea98932d4bb30fbad 100644
--- a/ofl/jacquardabastarda9/METADATA.pb
+++ b/ofl/jacquardabastarda9/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-jacquarda-bastarda"
   commit: "cfc133ee284c74b8f76980a1267f4a3d45671377"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/JacquardaBastarda9-Regular.ttf"
+    dest_file: "JacquardaBastarda9-Regular.ttf"
+  }
+  branch: "main"
 }
-stroke:"SERIF"
+stroke: "SERIF"
diff --git a/ofl/jacquardabastarda9/upstream.yaml b/ofl/jacquardabastarda9/upstream.yaml
deleted file mode 100644
index f9a99fd12a458d5165d23576f02832a00dd58001..0000000000000000000000000000000000000000
--- a/ofl/jacquardabastarda9/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/JacquardaBastarda9-Regular.ttf: JacquardaBastarda9-Regular.ttf
-archive:
diff --git a/ofl/jacquardabastarda9charted/METADATA.pb b/ofl/jacquardabastarda9charted/METADATA.pb
index edb71a61b0c0a3a3b2025e9ed712e6537279d4da..9b99dbfdd7e1079e864f1ed9cb270e4f5378c31b 100644
--- a/ofl/jacquardabastarda9charted/METADATA.pb
+++ b/ofl/jacquardabastarda9charted/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-jacquarda-bastarda"
   commit: "cfc133ee284c74b8f76980a1267f4a3d45671377"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/JacquardaBastarda9Charted-Regular.ttf"
+    dest_file: "JacquardaBastarda9Charted-Regular.ttf"
+  }
+  branch: "main"
 }
-stroke:"SERIF"
+stroke: "SERIF"
diff --git a/ofl/jacquardabastarda9charted/upstream.yaml b/ofl/jacquardabastarda9charted/upstream.yaml
deleted file mode 100644
index 72907e7624f1a13d0eaa4ac062388bd44f2c7ef6..0000000000000000000000000000000000000000
--- a/ofl/jacquardabastarda9charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/JacquardaBastarda9Charted-Regular.ttf: JacquardaBastarda9Charted-Regular.ttf
-archive:
diff --git a/ofl/jaro/METADATA.pb b/ofl/jaro/METADATA.pb
index 9a82b0491629563ab7c499e324a761511d9ca79a..a6c8270a842cc38e7ab96c1eab076052170bbfd2 100644
--- a/ofl/jaro/METADATA.pb
+++ b/ofl/jaro/METADATA.pb
@@ -24,6 +24,15 @@ axes {
 source {
   repository_url: "https://github.com/agyeiarcher/Jaro"
   commit: "51096c4f8e9e0076709d509b905741470beb972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Jaro[opsz].ttf"
+    dest_file: "Jaro[opsz].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jaro/upstream.yaml b/ofl/jaro/upstream.yaml
deleted file mode 100644
index d63432c62433d9367e425f6a5d58e006c92163a1..0000000000000000000000000000000000000000
--- a/ofl/jaro/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Jaro[opsz].ttf: Jaro[opsz].ttf
-archive:
diff --git a/ofl/jersey10/METADATA.pb b/ofl/jersey10/METADATA.pb
index ad533a637930b8e2feb6adf813dc450aa4945a98..e3f3b7cc28139719a57f298d3213b3ba2e8d2155 100644
--- a/ofl/jersey10/METADATA.pb
+++ b/ofl/jersey10/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "1e98ec50907b66062a3da4b8aaf63bb37b2542f2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey10-Regular.ttf"
+    dest_file: "Jersey10-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey10/upstream.yaml b/ofl/jersey10/upstream.yaml
deleted file mode 100644
index 99d0fd03b40a169d80fc2330f166380e008181e7..0000000000000000000000000000000000000000
--- a/ofl/jersey10/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey10-Regular.ttf: Jersey10-Regular.ttf
-archive:
diff --git a/ofl/jersey10charted/METADATA.pb b/ofl/jersey10charted/METADATA.pb
index 66f76afe1b01a6943ab5f8fcfdf4523c0ed8fc17..552c556388476a4709bc32ccca7001c45dc881e7 100644
--- a/ofl/jersey10charted/METADATA.pb
+++ b/ofl/jersey10charted/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "1e98ec50907b66062a3da4b8aaf63bb37b2542f2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey10Charted-Regular.ttf"
+    dest_file: "Jersey10Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey10charted/upstream.yaml b/ofl/jersey10charted/upstream.yaml
deleted file mode 100644
index d5f8e219b39ea9294535dd4bbdc6b652b91535d1..0000000000000000000000000000000000000000
--- a/ofl/jersey10charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey10Charted-Regular.ttf: Jersey10Charted-Regular.ttf
-archive:
diff --git a/ofl/jersey15/METADATA.pb b/ofl/jersey15/METADATA.pb
index bba89489c034e99227652f236e096873a4472bc7..d192d2401d9324774e24c75d66f3f43ba8e3c24d 100644
--- a/ofl/jersey15/METADATA.pb
+++ b/ofl/jersey15/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "1e98ec50907b66062a3da4b8aaf63bb37b2542f2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey15-Regular.ttf"
+    dest_file: "Jersey15-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey15/upstream.yaml b/ofl/jersey15/upstream.yaml
deleted file mode 100644
index cba10073d04179d02e054af8572a8c63a4daf3b5..0000000000000000000000000000000000000000
--- a/ofl/jersey15/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey15-Regular.ttf: Jersey15-Regular.ttf
-archive:
diff --git a/ofl/jersey15charted/METADATA.pb b/ofl/jersey15charted/METADATA.pb
index 2c9a94d49315316b79a0dd0cfc7d645a85f40939..5e29cc75caa53b28ca8a67c86be33cf816c31a98 100644
--- a/ofl/jersey15charted/METADATA.pb
+++ b/ofl/jersey15charted/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "1e98ec50907b66062a3da4b8aaf63bb37b2542f2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey15Charted-Regular.ttf"
+    dest_file: "Jersey15Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey15charted/upstream.yaml b/ofl/jersey15charted/upstream.yaml
deleted file mode 100644
index d6a4a3eef17bbf2bc9ec70cca3e4b91b3f27b963..0000000000000000000000000000000000000000
--- a/ofl/jersey15charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey15Charted-Regular.ttf: Jersey15Charted-Regular.ttf
-archive:
diff --git a/ofl/jersey20/METADATA.pb b/ofl/jersey20/METADATA.pb
index 188965a611d872ceab9d1071f4a308425b440fd1..07169aa5278907df7b579bbab9d3ee6913d08e77 100644
--- a/ofl/jersey20/METADATA.pb
+++ b/ofl/jersey20/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "f32179dbeffdb64d0401f34bf9e4e38a768f4cfb"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey20-Regular.ttf"
+    dest_file: "Jersey20-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey20/upstream.yaml b/ofl/jersey20/upstream.yaml
deleted file mode 100644
index 46f0d68c3d5534eca3129950394d291277dc430b..0000000000000000000000000000000000000000
--- a/ofl/jersey20/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey20-Regular.ttf: Jersey20-Regular.ttf
-archive:
diff --git a/ofl/jersey20charted/METADATA.pb b/ofl/jersey20charted/METADATA.pb
index 095210fc032fceb0b47cea897690218de976afdd..74a8c54904ccd5c3f3d14d81e536acc7d1922091 100644
--- a/ofl/jersey20charted/METADATA.pb
+++ b/ofl/jersey20charted/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "f32179dbeffdb64d0401f34bf9e4e38a768f4cfb"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey20Charted-Regular.ttf"
+    dest_file: "Jersey20Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey20charted/upstream.yaml b/ofl/jersey20charted/upstream.yaml
deleted file mode 100644
index 96d42d109186d28256ad33ac7eebbe8ab3134db9..0000000000000000000000000000000000000000
--- a/ofl/jersey20charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey20Charted-Regular.ttf: Jersey20Charted-Regular.ttf
-archive:
diff --git a/ofl/jersey25/METADATA.pb b/ofl/jersey25/METADATA.pb
index 850b7710b7a25822ce6ee2dbae07c2b04474c82a..a5daef254d8e5ee5f616d16f00f6a162f1477a89 100644
--- a/ofl/jersey25/METADATA.pb
+++ b/ofl/jersey25/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/scfried/soft-type-jersey"
   commit: "f32179dbeffdb64d0401f34bf9e4e38a768f4cfb"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Jersey25-Regular.ttf"
+    dest_file: "Jersey25-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jersey25/upstream.yaml b/ofl/jersey25/upstream.yaml
deleted file mode 100644
index 5ddc1c437b1ceb7a1293c2122b80e8c0351f8e10..0000000000000000000000000000000000000000
--- a/ofl/jersey25/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Jersey25-Regular.ttf: Jersey25-Regular.ttf
-archive:
diff --git a/ofl/jetbrainsmono/METADATA.pb b/ofl/jetbrainsmono/METADATA.pb
index 0b393731cef2a46549533835128d7c80dd858c97..8cf8ddc0d9adafc3bc935ed4bf9971bf0f1f3b2e 100644
--- a/ofl/jetbrainsmono/METADATA.pb
+++ b/ofl/jetbrainsmono/METADATA.pb
@@ -33,4 +33,76 @@ axes {
   min_value: 100.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/JetBrains/JetBrainsMono"
+  files {
+    source_file: "fonts/variable/JetBrainsMono[wght].ttf"
+    dest_file: "JetBrainsMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/JetBrainsMono-Italic[wght].ttf"
+    dest_file: "JetBrainsMono-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-Bold.ttf"
+    dest_file: "static/JetBrainsMono-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-BoldItalic.ttf"
+    dest_file: "static/JetBrainsMono-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-ExtraBold.ttf"
+    dest_file: "static/JetBrainsMono-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-ExtraBoldItalic.ttf"
+    dest_file: "static/JetBrainsMono-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-ExtraLight.ttf"
+    dest_file: "static/JetBrainsMono-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-ExtraLightItalic.ttf"
+    dest_file: "static/JetBrainsMono-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-Italic.ttf"
+    dest_file: "static/JetBrainsMono-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-Light.ttf"
+    dest_file: "static/JetBrainsMono-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-LightItalic.ttf"
+    dest_file: "static/JetBrainsMono-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-Medium.ttf"
+    dest_file: "static/JetBrainsMono-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-MediumItalic.ttf"
+    dest_file: "static/JetBrainsMono-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-Regular.ttf"
+    dest_file: "static/JetBrainsMono-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-Thin.ttf"
+    dest_file: "static/JetBrainsMono-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JetBrainsMono-ThinItalic.ttf"
+    dest_file: "static/JetBrainsMono-ThinItalic.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 minisite_url: "https://www.jetbrains.com/lp/mono/"
diff --git a/ofl/jetbrainsmono/upstream.yaml b/ofl/jetbrainsmono/upstream.yaml
deleted file mode 100644
index a1092fba3db1b85ef31287347fceabb927677bfc..0000000000000000000000000000000000000000
--- a/ofl/jetbrainsmono/upstream.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-branch: master
-files:
-  fonts/variable/JetBrainsMono[wght].ttf: JetBrainsMono[wght].ttf
-  fonts/variable/JetBrainsMono-Italic[wght].ttf: JetBrainsMono-Italic[wght].ttf
-  fonts/ttf/JetBrainsMono-Bold.ttf: static/JetBrainsMono-Bold.ttf
-  fonts/ttf/JetBrainsMono-BoldItalic.ttf: static/JetBrainsMono-BoldItalic.ttf
-  fonts/ttf/JetBrainsMono-ExtraBold.ttf: static/JetBrainsMono-ExtraBold.ttf
-  fonts/ttf/JetBrainsMono-ExtraBoldItalic.ttf: static/JetBrainsMono-ExtraBoldItalic.ttf
-  fonts/ttf/JetBrainsMono-ExtraLight.ttf: static/JetBrainsMono-ExtraLight.ttf
-  fonts/ttf/JetBrainsMono-ExtraLightItalic.ttf: static/JetBrainsMono-ExtraLightItalic.ttf
-  fonts/ttf/JetBrainsMono-Italic.ttf: static/JetBrainsMono-Italic.ttf
-  fonts/ttf/JetBrainsMono-Light.ttf: static/JetBrainsMono-Light.ttf
-  fonts/ttf/JetBrainsMono-LightItalic.ttf: static/JetBrainsMono-LightItalic.ttf
-  fonts/ttf/JetBrainsMono-Medium.ttf: static/JetBrainsMono-Medium.ttf
-  fonts/ttf/JetBrainsMono-MediumItalic.ttf: static/JetBrainsMono-MediumItalic.ttf
-  fonts/ttf/JetBrainsMono-Regular.ttf: static/JetBrainsMono-Regular.ttf
-  fonts/ttf/JetBrainsMono-Thin.ttf: static/JetBrainsMono-Thin.ttf
-  fonts/ttf/JetBrainsMono-ThinItalic.ttf: static/JetBrainsMono-ThinItalic.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/JetBrains/JetBrainsMono
diff --git a/ofl/joan/METADATA.pb b/ofl/joan/METADATA.pb
index 656ab26713e1f4c9630a181fe1827c2bc7306385..c11c1acc407a95792f25dd848da0618b9c4aec18 100644
--- a/ofl/joan/METADATA.pb
+++ b/ofl/joan/METADATA.pb
@@ -18,5 +18,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/PaoloBiagini/Joan"
   commit: "981cb73299f7d9164eedcb647e57fb34c9dc1139"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Joan-Regular.ttf"
+    dest_file: "Joan-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
diff --git a/ofl/joan/upstream.yaml b/ofl/joan/upstream.yaml
deleted file mode 100644
index 76c008c8a12311c3e23353cff3eea553231f6715..0000000000000000000000000000000000000000
--- a/ofl/joan/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Joan-Regular.ttf: Joan-Regular.ttf
diff --git a/ofl/josefinslab/METADATA.pb b/ofl/josefinslab/METADATA.pb
index b05c8b9374d0a4fc7291f9ebea8ba0cac06fa75a..f93c0bef527ab8422f74d63216eb726bf9bc3a6b 100644
--- a/ofl/josefinslab/METADATA.pb
+++ b/ofl/josefinslab/METADATA.pb
@@ -28,5 +28,61 @@ axes {
   min_value: 100.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/TypeNetwork/Josefinslab"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/JosefinSlab-Italic[wght].ttf"
+    dest_file: "JosefinSlab-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/JosefinSlab[wght].ttf"
+    dest_file: "JosefinSlab[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-Bold.ttf"
+    dest_file: "static/JosefinSlab-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-BoldItalic.ttf"
+    dest_file: "static/JosefinSlab-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-Italic.ttf"
+    dest_file: "static/JosefinSlab-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-Light.ttf"
+    dest_file: "static/JosefinSlab-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-LightItalic.ttf"
+    dest_file: "static/JosefinSlab-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-Regular.ttf"
+    dest_file: "static/JosefinSlab-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-SemiBold.ttf"
+    dest_file: "static/JosefinSlab-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-SemiBoldItalic.ttf"
+    dest_file: "static/JosefinSlab-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-Thin.ttf"
+    dest_file: "static/JosefinSlab-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/JosefinSlab-ThinItalic.ttf"
+    dest_file: "static/JosefinSlab-ThinItalic.ttf"
+  }
+  branch: "master"
+}
 stroke: "SLAB_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/josefinslab/upstream.yaml b/ofl/josefinslab/upstream.yaml
deleted file mode 100644
index 61dbed1fe85171ae35618c2dd7943c0ff2e59628..0000000000000000000000000000000000000000
--- a/ofl/josefinslab/upstream.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/JosefinSlab-Italic[wght].ttf: JosefinSlab-Italic[wght].ttf
-  fonts/variable/JosefinSlab[wght].ttf: JosefinSlab[wght].ttf
-  fonts/ttf/JosefinSlab-Bold.ttf: static/JosefinSlab-Bold.ttf
-  fonts/ttf/JosefinSlab-BoldItalic.ttf: static/JosefinSlab-BoldItalic.ttf
-  fonts/ttf/JosefinSlab-Italic.ttf: static/JosefinSlab-Italic.ttf
-  fonts/ttf/JosefinSlab-Light.ttf: static/JosefinSlab-Light.ttf
-  fonts/ttf/JosefinSlab-LightItalic.ttf: static/JosefinSlab-LightItalic.ttf
-  fonts/ttf/JosefinSlab-Regular.ttf: static/JosefinSlab-Regular.ttf
-  fonts/ttf/JosefinSlab-SemiBold.ttf: static/JosefinSlab-SemiBold.ttf
-  fonts/ttf/JosefinSlab-SemiBoldItalic.ttf: static/JosefinSlab-SemiBoldItalic.ttf
-  fonts/ttf/JosefinSlab-Thin.ttf: static/JosefinSlab-Thin.ttf
-  fonts/ttf/JosefinSlab-ThinItalic.ttf: static/JosefinSlab-ThinItalic.ttf
-repository_url: https://github.com/TypeNetwork/Josefinslab
diff --git a/ofl/jost/METADATA.pb b/ofl/jost/METADATA.pb
index e1a28f49ff34b5d5970da60624200c84ced1e0c5..11e0abf1dd24303721fc1156d58be904fd38d39a 100644
--- a/ofl/jost/METADATA.pb
+++ b/ofl/jost/METADATA.pb
@@ -30,4 +30,16 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/indestructible-type/Jost"
+  files {
+    source_file: "fonts/variable/Jost[wght].ttf"
+    dest_file: "Jost[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Jost-Italic[wght].ttf"
+    dest_file: "Jost-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 minisite_url: "https://indestructibletype.com/Jost.html"
diff --git a/ofl/jost/upstream.yaml b/ofl/jost/upstream.yaml
deleted file mode 100644
index 83e804efcdff7fdb7aa2a3e21babcfb12d588cd4..0000000000000000000000000000000000000000
--- a/ofl/jost/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/Jost[wght].ttf: Jost[wght].ttf
-  fonts/variable/Jost-Italic[wght].ttf: Jost-Italic[wght].ttf
-repository_url: https://github.com/indestructible-type/Jost
diff --git a/ofl/jotione/METADATA.pb b/ofl/jotione/METADATA.pb
index ac354dceea81720547f922b4c17dd2ec1595b8d4..bcf5bbb6e6a9e56929d1746afa89b7445104f1bb 100644
--- a/ofl/jotione/METADATA.pb
+++ b/ofl/jotione/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/joti"
   commit: "7feedf8bad69029e82ae281c7a100fb639d946e1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/JotiOne-Regular.ttf"
+    dest_file: "JotiOne-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/jotione/upstream.yaml b/ofl/jotione/upstream.yaml
deleted file mode 100644
index 9fd1c6c565e66b3e02204b70099cecddb7f98457..0000000000000000000000000000000000000000
--- a/ofl/jotione/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/JotiOne-Regular.ttf: JotiOne-Regular.ttf
-archive:
diff --git a/ofl/julee/METADATA.pb b/ofl/julee/METADATA.pb
index e0e428e8d6e15934612c650eaa26c570eb98a8b8..0afc70338ff1cbebf1cb4b72ec84d6a5bf57d4f2 100644
--- a/ofl/julee/METADATA.pb
+++ b/ofl/julee/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/julee"
   commit: "9a2efe6783e9ea590cee62c8aec51670a3dec51d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Julee-Regular.ttf"
+    dest_file: "Julee-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/julee/upstream.yaml b/ofl/julee/upstream.yaml
deleted file mode 100644
index 1370b92531aeb5cfd3b4b420004c56dd6b072b54..0000000000000000000000000000000000000000
--- a/ofl/julee/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Julee-Regular.ttf: Julee-Regular.ttf
-archive:
diff --git a/ofl/kablammo/METADATA.pb b/ofl/kablammo/METADATA.pb
index 2c6629a855ae01de9df28a23c8d1001adc16437a..ddae579d78af81cc893d2c5f74a171c3944a6f86 100644
--- a/ofl/kablammo/METADATA.pb
+++ b/ofl/kablammo/METADATA.pb
@@ -26,5 +26,18 @@ axes {
 source {
   repository_url: "https://github.com/Vectro-Type-Foundry/kablammo"
   commit: "49d6cecb53612bfb428995a43ba94dfda725c415"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Kablammo[MORF].ttf"
+    dest_file: "Kablammo[MORF].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://fonts.withgoogle.com/kablammo"
diff --git a/ofl/kablammo/upstream.yaml b/ofl/kablammo/upstream.yaml
deleted file mode 100644
index 931334a2ccc092bb0f7d51a8cbea4c7d6867e23a..0000000000000000000000000000000000000000
--- a/ofl/kablammo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Kablammo[MORF].ttf: Kablammo[MORF].ttf
-archive:
diff --git a/ofl/kaiseidecol/METADATA.pb b/ofl/kaiseidecol/METADATA.pb
index bca5e0242b498936d544f5f7bec18cc38e049876..17c1d3ff5b7c97b60acec4400758f69641c37cdd 100644
--- a/ofl/kaiseidecol/METADATA.pb
+++ b/ofl/kaiseidecol/METADATA.pb
@@ -35,3 +35,27 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/FontKai-Kaisei/Kaisei"
+  files {
+    source_file: "fonts/ttf/decol/KaiseiDecol-Regular.ttf"
+    dest_file: "KaiseiDecol-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/decol/KaiseiDecol-Medium.ttf"
+    dest_file: "KaiseiDecol-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/decol/KaiseiDecol-Bold.ttf"
+    dest_file: "KaiseiDecol-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "decol_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/kaiseidecol/upstream.yaml b/ofl/kaiseidecol/upstream.yaml
deleted file mode 100644
index b291035e9b33060f18787dcd5ba189929d4703a3..0000000000000000000000000000000000000000
--- a/ofl/kaiseidecol/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: master
-files:
-  fonts/ttf/decol/KaiseiDecol-Regular.ttf: KaiseiDecol-Regular.ttf
-  fonts/ttf/decol/KaiseiDecol-Medium.ttf: KaiseiDecol-Medium.ttf
-  fonts/ttf/decol/KaiseiDecol-Bold.ttf: KaiseiDecol-Bold.ttf
-  OFL.txt: OFL.txt
-  decol_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/FontKai-Kaisei/Kaisei.git
diff --git a/ofl/kaiseiharunoumi/METADATA.pb b/ofl/kaiseiharunoumi/METADATA.pb
index 32ddba8d85589c962c062ca76c5f7aa93b0e1786..df498540f01fc8b8dd45766bf63ef89f44e4a03c 100644
--- a/ofl/kaiseiharunoumi/METADATA.pb
+++ b/ofl/kaiseiharunoumi/METADATA.pb
@@ -35,3 +35,27 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/FontKai-Kaisei/Kaisei"
+  files {
+    source_file: "fonts/ttf/haruno/KaiseiHarunoUmi-Regular.ttf"
+    dest_file: "KaiseiHarunoUmi-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/haruno/KaiseiHarunoUmi-Medium.ttf"
+    dest_file: "KaiseiHarunoUmi-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/haruno/KaiseiHarunoUmi-Bold.ttf"
+    dest_file: "KaiseiHarunoUmi-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "haruno_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/kaiseiharunoumi/upstream.yaml b/ofl/kaiseiharunoumi/upstream.yaml
deleted file mode 100644
index b0068824323163044bd6183c6d73a7db024cb1e5..0000000000000000000000000000000000000000
--- a/ofl/kaiseiharunoumi/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: master
-files:
-  fonts/ttf/haruno/KaiseiHarunoUmi-Regular.ttf: KaiseiHarunoUmi-Regular.ttf
-  fonts/ttf/haruno/KaiseiHarunoUmi-Medium.ttf: KaiseiHarunoUmi-Medium.ttf
-  fonts/ttf/haruno/KaiseiHarunoUmi-Bold.ttf: KaiseiHarunoUmi-Bold.ttf
-  OFL.txt: OFL.txt
-  haruno_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/FontKai-Kaisei/Kaisei.git
diff --git a/ofl/kaiseiopti/METADATA.pb b/ofl/kaiseiopti/METADATA.pb
index cce7e638784706a04c3a7972f9629559d76a6ac0..b6e0fee96d70611670e4f6834f8a7618420a2ff2 100644
--- a/ofl/kaiseiopti/METADATA.pb
+++ b/ofl/kaiseiopti/METADATA.pb
@@ -35,3 +35,27 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/FontKai-Kaisei/Kaisei"
+  files {
+    source_file: "fonts/ttf/opti/KaiseiOpti-Regular.ttf"
+    dest_file: "KaiseiOpti-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/opti/KaiseiOpti-Medium.ttf"
+    dest_file: "KaiseiOpti-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/opti/KaiseiOpti-Bold.ttf"
+    dest_file: "KaiseiOpti-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "opti_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/kaiseiopti/upstream.yaml b/ofl/kaiseiopti/upstream.yaml
deleted file mode 100644
index dfe66dd4de4f4fc88e981c52fb5105f34d5a75d9..0000000000000000000000000000000000000000
--- a/ofl/kaiseiopti/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: master
-files:
-  fonts/ttf/opti/KaiseiOpti-Regular.ttf: KaiseiOpti-Regular.ttf
-  fonts/ttf/opti/KaiseiOpti-Medium.ttf: KaiseiOpti-Medium.ttf
-  fonts/ttf/opti/KaiseiOpti-Bold.ttf: KaiseiOpti-Bold.ttf
-  OFL.txt: OFL.txt
-  opti_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/FontKai-Kaisei/Kaisei.git
diff --git a/ofl/kaiseitokumin/METADATA.pb b/ofl/kaiseitokumin/METADATA.pb
index ae63bdf8a43bbb990727dcea2dd83c466f544585..5ec25b6ada189975f5b2347f67e2c691d6982d42 100644
--- a/ofl/kaiseitokumin/METADATA.pb
+++ b/ofl/kaiseitokumin/METADATA.pb
@@ -44,3 +44,31 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/FontKai-Kaisei/Kaisei"
+  files {
+    source_file: "fonts/ttf/tokumin/KaiseiTokumin-Regular.ttf"
+    dest_file: "KaiseiTokumin-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/tokumin/KaiseiTokumin-Medium.ttf"
+    dest_file: "KaiseiTokumin-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/tokumin/KaiseiTokumin-Bold.ttf"
+    dest_file: "KaiseiTokumin-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/tokumin/KaiseiTokumin-ExtraBold.ttf"
+    dest_file: "KaiseiTokumin-ExtraBold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "tokumin_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/kaiseitokumin/upstream.yaml b/ofl/kaiseitokumin/upstream.yaml
deleted file mode 100644
index 5a72adaf828cd8e8c6e95240f81f8304851a223a..0000000000000000000000000000000000000000
--- a/ofl/kaiseitokumin/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  fonts/ttf/tokumin/KaiseiTokumin-Regular.ttf: KaiseiTokumin-Regular.ttf
-  fonts/ttf/tokumin/KaiseiTokumin-Medium.ttf: KaiseiTokumin-Medium.ttf
-  fonts/ttf/tokumin/KaiseiTokumin-Bold.ttf: KaiseiTokumin-Bold.ttf
-  fonts/ttf/tokumin/KaiseiTokumin-ExtraBold.ttf: KaiseiTokumin-ExtraBold.ttf
-  OFL.txt: OFL.txt
-  tokumin_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/FontKai-Kaisei/Kaisei.git
diff --git a/ofl/kalnia/METADATA.pb b/ofl/kalnia/METADATA.pb
index 9b6d6c6dcdbc219fff3ed5d50f21b652c6e848cf..b8d957b5f7efcad67cae1a6707ddcb9b54f37821 100644
--- a/ofl/kalnia/METADATA.pb
+++ b/ofl/kalnia/METADATA.pb
@@ -29,6 +29,19 @@ axes {
 source {
   repository_url: "https://github.com/fridamedrano/Kalnia-Typeface"
   commit: "22e2d855245c5a4f94aa12461e1b1be5c0da841b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Kalnia[wdth,wght].ttf"
+    dest_file: "Kalnia[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/kalnia/upstream.yaml b/ofl/kalnia/upstream.yaml
deleted file mode 100644
index 0c26d84f30e5a0d9d6553e4861cc1501a4259261..0000000000000000000000000000000000000000
--- a/ofl/kalnia/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Kalnia[wdth,wght].ttf: Kalnia[wdth,wght].ttf
-archive:
diff --git a/ofl/kameron/METADATA.pb b/ofl/kameron/METADATA.pb
index a7395c6e51865809c5742e7599aee48e3fbb70e7..509f773248bf0b14fc8e73113ece422b7d446df0 100644
--- a/ofl/kameron/METADATA.pb
+++ b/ofl/kameron/METADATA.pb
@@ -23,5 +23,14 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/kameronFont"
   commit: "4c36d3f42f93806b911562d50927406fbb043f89"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Kameron[wght].ttf"
+    dest_file: "Kameron[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SLAB_SERIF"
diff --git a/ofl/kameron/upstream.yaml b/ofl/kameron/upstream.yaml
deleted file mode 100644
index e3c71fc95d9e5012e90b38b98e343242585ada51..0000000000000000000000000000000000000000
--- a/ofl/kameron/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Kameron[wght].ttf: Kameron[wght].ttf
-archive:
diff --git a/ofl/kantumruypro/METADATA.pb b/ofl/kantumruypro/METADATA.pb
index d289e60f425785e9b9b1be15ef6f810994a6f163..2a731eed189626433353b0a9a836c686f6a2a2b0 100644
--- a/ofl/kantumruypro/METADATA.pb
+++ b/ofl/kantumruypro/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/sovichet/kantumruy-pro"
   commit: "8bf831210d27c1eda0129aa991d12af9e4c16632"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/KantumruyPro[wght].ttf"
+    dest_file: "KantumruyPro[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/KantumruyPro-Italic[wght].ttf"
+    dest_file: "KantumruyPro-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/kantumruypro/upstream.yaml b/ofl/kantumruypro/upstream.yaml
deleted file mode 100644
index f4953897261cd16fd73287f197ac977ce0865402..0000000000000000000000000000000000000000
--- a/ofl/kantumruypro/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/KantumruyPro[wght].ttf: KantumruyPro[wght].ttf
-  fonts/variable/KantumruyPro-Italic[wght].ttf: KantumruyPro-Italic[wght].ttf
diff --git a/ofl/kapakana/METADATA.pb b/ofl/kapakana/METADATA.pb
index 9ffccd3f5cd73ec0e56037566a39a23443f255d5..a811ce1d6f016411d85c4c85f16627e10f7757ba 100644
--- a/ofl/kapakana/METADATA.pb
+++ b/ofl/kapakana/METADATA.pb
@@ -21,8 +21,32 @@ axes {
   min_value: 300.0
   max_value: 400.0
 }
-languages: "ja_Kana"
-languages: "ja_Hira"
+source {
+  repository_url: "https://github.com/nagamaki008/kapakana"
+  files {
+    source_file: "fonts/ttf/Kapakana-Light.ttf"
+    dest_file: "static/Kapakana-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Kapakana-Regular.ttf"
+    dest_file: "static/Kapakana-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/variable/Kapakana[wght].ttf"
+    dest_file: "Kapakana[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/kapakana/upstream.yaml b/ofl/kapakana/upstream.yaml
deleted file mode 100644
index 00a039ade22c185fcb2ef475057d18e577eda379..0000000000000000000000000000000000000000
--- a/ofl/kapakana/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Kapakana-Light.ttf: static/Kapakana-Light.ttf
-  fonts/ttf/Kapakana-Regular.ttf: static/Kapakana-Regular.ttf
-  fonts/variable/Kapakana[wght].ttf: Kapakana[wght].ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/nagamaki008/kapakana.git
diff --git a/ofl/karantina/METADATA.pb b/ofl/karantina/METADATA.pb
index 05538be8db7ec5ffd1f86c24b7a42fa8de47631a..a2ebe23c302fe66e7ad42894f6a4eac63221cd93 100644
--- a/ofl/karantina/METADATA.pb
+++ b/ofl/karantina/METADATA.pb
@@ -34,3 +34,27 @@ subsets: "hebrew"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/ronykoch/Karantina"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TTF/Karantina-Light.ttf"
+    dest_file: "Karantina-Light.ttf"
+  }
+  files {
+    source_file: "fonts/TTF/Karantina-Regular.ttf"
+    dest_file: "Karantina-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TTF/Karantina-Bold.ttf"
+    dest_file: "Karantina-Bold.ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/karantina/upstream.yaml b/ofl/karantina/upstream.yaml
deleted file mode 100644
index f5c508870baf2611b2eb13f6fa20e739b2a94f64..0000000000000000000000000000000000000000
--- a/ofl/karantina/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TTF/Karantina-Light.ttf: Karantina-Light.ttf
-  fonts/TTF/Karantina-Regular.ttf: Karantina-Regular.ttf
-  fonts/TTF/Karantina-Bold.ttf: Karantina-Bold.ttf
-repository_url: https://github.com/ronykoch/Karantina.git
diff --git a/ofl/karla/METADATA.pb b/ofl/karla/METADATA.pb
index 8eddc53fa9c5add1ecffc0e3e8bcdd2cc21f9cda..1024cecaab7a04f2e5358d6fac9f4301c5de65b5 100644
--- a/ofl/karla/METADATA.pb
+++ b/ofl/karla/METADATA.pb
@@ -32,4 +32,17 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/karla"
   commit: "69b25f663101efb4113dd7ed416c120dd2dce56a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Karla[wght].ttf"
+    dest_file: "Karla[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Karla-Italic[wght].ttf"
+    dest_file: "Karla-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/karla/upstream.yaml b/ofl/karla/upstream.yaml
deleted file mode 100644
index 98ce43f3b775fcda24001c5ece22a04eb654bf98..0000000000000000000000000000000000000000
--- a/ofl/karla/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Karla[wght].ttf: Karla[wght].ttf
-  fonts/variable/Karla-Italic[wght].ttf: Karla-Italic[wght].ttf
-archive:
diff --git a/ofl/kayphodu/METADATA.pb b/ofl/kayphodu/METADATA.pb
index 35aa26c42456d46e9c9e40839759c00c9fafe60e..edcab19b35ae6481bd066ac48acd7a3b38576ca8 100644
--- a/ofl/kayphodu/METADATA.pb
+++ b/ofl/kayphodu/METADATA.pb
@@ -46,6 +46,27 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-kayphodu"
   archive_url: "https://github.com/silnrsi/font-kayphodu/releases/download/v3.000/KayPhoDu-3.000.zip"
+  files {
+    source_file: "KayPhoDu-3.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "KayPhoDu-3.000/KayPhoDu-Regular.ttf"
+    dest_file: "KayPhoDu-Regular.ttf"
+  }
+  files {
+    source_file: "KayPhoDu-3.000/KayPhoDu-Medium.ttf"
+    dest_file: "KayPhoDu-Medium.ttf"
+  }
+  files {
+    source_file: "KayPhoDu-3.000/KayPhoDu-SemiBold.ttf"
+    dest_file: "KayPhoDu-SemiBold.ttf"
+  }
+  files {
+    source_file: "KayPhoDu-3.000/KayPhoDu-Bold.ttf"
+    dest_file: "KayPhoDu-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Kali"
 stroke: "SLAB_SERIF"
diff --git a/ofl/kayphodu/upstream.yaml b/ofl/kayphodu/upstream.yaml
deleted file mode 100644
index 0cd3766543cd227c06e1f3f50178e46bc8c474b4..0000000000000000000000000000000000000000
--- a/ofl/kayphodu/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-kayphodu/releases/download/v3.000/KayPhoDu-3.000.zip
-branch: master
-files:
-  KayPhoDu-3.000/OFL.txt: OFL.txt
-  KayPhoDu-3.000/KayPhoDu-Regular.ttf: KayPhoDu-Regular.ttf
-  KayPhoDu-3.000/KayPhoDu-Medium.ttf: KayPhoDu-Medium.ttf
-  KayPhoDu-3.000/KayPhoDu-SemiBold.ttf: KayPhoDu-SemiBold.ttf
-  KayPhoDu-3.000/KayPhoDu-Bold.ttf: KayPhoDu-Bold.ttf
diff --git a/ofl/kdamthmorpro/METADATA.pb b/ofl/kdamthmorpro/METADATA.pb
index 59931a17e7af136071446091f6b30b75cea57559..b0e4ae928de8b47b23b43c939c3390cbf4986420 100644
--- a/ofl/kdamthmorpro/METADATA.pb
+++ b/ofl/kdamthmorpro/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/sovichet/kdam-thmor-pro"
   commit: "a78a9ff035108630f42ae15a04b4ab8150298786"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/KdamThmorPro-Regular.ttf"
+    dest_file: "KdamThmorPro-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/kdamthmorpro/upstream.yaml b/ofl/kdamthmorpro/upstream.yaml
deleted file mode 100644
index ef3a587c5e7dac14a4925cdf78d361609f3a371e..0000000000000000000000000000000000000000
--- a/ofl/kdamthmorpro/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/KdamThmorPro-Regular.ttf: KdamThmorPro-Regular.ttf
-archive:
diff --git a/ofl/kings/METADATA.pb b/ofl/kings/METADATA.pb
index 095738597339110a16621d7d017edf371c27ca5d..5ffa60a2e8bd8ff95a837857b9e050f340cf769b 100644
--- a/ofl/kings/METADATA.pb
+++ b/ofl/kings/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/kings"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Kings-Regular.ttf"
+    dest_file: "Kings-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/kings/upstream.yaml b/ofl/kings/upstream.yaml
deleted file mode 100644
index 1a0d1ff92d6b212454b13b243dff22c389fbabbc..0000000000000000000000000000000000000000
--- a/ofl/kings/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Kings-Regular.ttf: Kings-Regular.ttf
-repository_url: https://github.com/googlefonts/kings
diff --git a/ofl/kiteone/METADATA.pb b/ofl/kiteone/METADATA.pb
index 9e43dee85fe9dcdb65be075f30b5055a43498c8f..52d22f5dde20c903a363ab8a6f6432346b5cb42c 100644
--- a/ofl/kiteone/METADATA.pb
+++ b/ofl/kiteone/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/Kite-One"
   commit: "be1d4f26c91c29993c47fa4b4857337b0d94e2f2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/KiteOne-Regular.ttf"
+    dest_file: "KiteOne-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/kiteone/upstream.yaml b/ofl/kiteone/upstream.yaml
deleted file mode 100644
index 5dde8a900e2bbb051124f9e56a6754db87258aa0..0000000000000000000000000000000000000000
--- a/ofl/kiteone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/KiteOne-Regular.ttf: KiteOne-Regular.ttf
-archive:
diff --git a/ofl/kiwimaru/METADATA.pb b/ofl/kiwimaru/METADATA.pb
index 1a35dd2223564a1e3fc5bd05857cd81fc51fe9cd..3e9d8b810227824780feb0e7f5ba6b59fc3f5d0e 100644
--- a/ofl/kiwimaru/METADATA.pb
+++ b/ofl/kiwimaru/METADATA.pb
@@ -35,3 +35,27 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Kiwi-KawagotoKajiru/Kiwi-Maru"
+  files {
+    source_file: "fonts/ttf/KiwiMaru-Light.ttf"
+    dest_file: "KiwiMaru-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/KiwiMaru-Medium.ttf"
+    dest_file: "KiwiMaru-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/KiwiMaru-Regular.ttf"
+    dest_file: "KiwiMaru-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/kiwimaru/upstream.yaml b/ofl/kiwimaru/upstream.yaml
deleted file mode 100644
index d9a8f0ef98c5bf07320397eed66a1d1d652fc811..0000000000000000000000000000000000000000
--- a/ofl/kiwimaru/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: master
-files:
-  fonts/ttf/KiwiMaru-Light.ttf: KiwiMaru-Light.ttf
-  fonts/ttf/KiwiMaru-Medium.ttf: KiwiMaru-Medium.ttf
-  fonts/ttf/KiwiMaru-Regular.ttf: KiwiMaru-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Kiwi-KawagotoKajiru/Kiwi-Maru.git
diff --git a/ofl/kleeone/METADATA.pb b/ofl/kleeone/METADATA.pb
index a49ddcc9879956212c273bea7f34320699384a8e..d124d70c446ae9347911a04417f0d6348b2b38a7 100644
--- a/ofl/kleeone/METADATA.pb
+++ b/ofl/kleeone/METADATA.pb
@@ -27,3 +27,23 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/Klee"
+  files {
+    source_file: "fonts/ttf/KleeOne-Regular.ttf"
+    dest_file: "KleeOne-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/KleeOne-SemiBold.ttf"
+    dest_file: "KleeOne-SemiBold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/kleeone/upstream.yaml b/ofl/kleeone/upstream.yaml
deleted file mode 100644
index eaf3bea2abb9590cc85ce940198fe554c13f9d64..0000000000000000000000000000000000000000
--- a/ofl/kleeone/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  fonts/ttf/KleeOne-Regular.ttf: KleeOne-Regular.ttf
-  fonts/ttf/KleeOne-SemiBold.ttf: KleeOne-SemiBold.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/Klee
\ No newline at end of file
diff --git a/ofl/kodemono/METADATA.pb b/ofl/kodemono/METADATA.pb
index 7b085f7e9e03203306726c977e800bc4e1206d5f..a35d108ccfd9b1090d51d843fec76a36e0aa6753 100644
--- a/ofl/kodemono/METADATA.pb
+++ b/ofl/kodemono/METADATA.pb
@@ -24,6 +24,19 @@ axes {
 source {
   repository_url: "https://github.com/isaozler/kode-mono"
   commit: "94d565d4b6164cee482c68ee706e51135d6691ad"
+  files {
+    source_file: "fonts/variable/KodeMono[wght].ttf"
+    dest_file: "KodeMono[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
-classifications: "MONOSPACE"
 stroke: "SANS_SERIF"
+classifications: "MONOSPACE"
diff --git a/ofl/kodemono/upstream.yaml b/ofl/kodemono/upstream.yaml
deleted file mode 100644
index 8452dda667490e9810d4cc6c27f38cfc83f52051..0000000000000000000000000000000000000000
--- a/ofl/kodemono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/variable/KodeMono[wght].ttf: KodeMono[wght].ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/kohsantepheap/METADATA.pb b/ofl/kohsantepheap/METADATA.pb
index 2f51d16082ae14e67f22abe2fd880f4d8a71f5e2..2cdc4ca362fc9265496927915445377d7e8a52e7 100644
--- a/ofl/kohsantepheap/METADATA.pb
+++ b/ofl/kohsantepheap/METADATA.pb
@@ -51,3 +51,31 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/KohSantepheap"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/KohSantepheap-Thin.ttf"
+    dest_file: "KohSantepheap-Thin.ttf"
+  }
+  files {
+    source_file: "Release/ttf/KohSantepheap-Light.ttf"
+    dest_file: "KohSantepheap-Light.ttf"
+  }
+  files {
+    source_file: "Release/ttf/KohSantepheap-Regular.ttf"
+    dest_file: "KohSantepheap-Regular.ttf"
+  }
+  files {
+    source_file: "Release/ttf/KohSantepheap-Bold.ttf"
+    dest_file: "KohSantepheap-Bold.ttf"
+  }
+  files {
+    source_file: "Release/ttf/KohSantepheap-Black.ttf"
+    dest_file: "KohSantepheap-Black.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/kohsantepheap/upstream.yaml b/ofl/kohsantepheap/upstream.yaml
deleted file mode 100644
index 37652488f9b9a6bd3a48cbd713803174d2aa1452..0000000000000000000000000000000000000000
--- a/ofl/kohsantepheap/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/KohSantepheap-Thin.ttf: KohSantepheap-Thin.ttf
-  Release/ttf/KohSantepheap-Light.ttf: KohSantepheap-Light.ttf
-  Release/ttf/KohSantepheap-Regular.ttf: KohSantepheap-Regular.ttf
-  Release/ttf/KohSantepheap-Bold.ttf: KohSantepheap-Bold.ttf
-  Release/ttf/KohSantepheap-Black.ttf: KohSantepheap-Black.ttf
-repository_url: https://github.com/danhhong/KohSantepheap.git
diff --git a/ofl/kolkerbrush/METADATA.pb b/ofl/kolkerbrush/METADATA.pb
index 2f2b8b95bbfbcada3782b9830bd1dcb1f79350fe..c235d816ede22ee6a68f22f626ade79bc576d2ba 100644
--- a/ofl/kolkerbrush/METADATA.pb
+++ b/ofl/kolkerbrush/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/kolker-brush"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/KolkerBrush-Regular.ttf"
+    dest_file: "KolkerBrush-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/kolkerbrush/upstream.yaml b/ofl/kolkerbrush/upstream.yaml
deleted file mode 100644
index a9d00ed6b8e17614b578394906e19ffc35793457..0000000000000000000000000000000000000000
--- a/ofl/kolkerbrush/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/KolkerBrush-Regular.ttf: KolkerBrush-Regular.ttf
-repository_url: https://github.com/googlefonts/kolker-brush
diff --git a/ofl/konkhmersleokchher/METADATA.pb b/ofl/konkhmersleokchher/METADATA.pb
index ff40ce6dd8b9df625978eacad6fa5cc63e517988..12b5760639ee942ab174079ba465ec305b77fa7b 100644
--- a/ofl/konkhmersleokchher/METADATA.pb
+++ b/ofl/konkhmersleokchher/METADATA.pb
@@ -19,5 +19,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/suonmaysophanith7/KonKhmer_SleokChher"
   commit: "1289371ce1f5f4f9223f023f607d83c98fc03625"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/KonkhmerSleokchher-Regular.ttf"
+    dest_file: "KonkhmerSleokchher-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Khmr"
diff --git a/ofl/konkhmersleokchher/upstream.yaml b/ofl/konkhmersleokchher/upstream.yaml
deleted file mode 100644
index 2bd1d1ab67690097d156e4a7d37f8481e9b2b6d5..0000000000000000000000000000000000000000
--- a/ofl/konkhmersleokchher/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/KonkhmerSleokchher-Regular.ttf: KonkhmerSleokchher-Regular.ttf
-archive:
diff --git a/ofl/koulen/METADATA.pb b/ofl/koulen/METADATA.pb
index d65bbe6b42bad0bbb589eede7fbc05de91513a0a..d6ed12ba0852436cd4f068357f50411d577e0809 100644
--- a/ofl/koulen/METADATA.pb
+++ b/ofl/koulen/METADATA.pb
@@ -15,6 +15,18 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Koulen"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Koulen-Regular.ttf"
+    dest_file: "Koulen-Regular.ttf"
+  }
+  branch: "master"
+}
+primary_script: "Khmr"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
-primary_script: "Khmr"
\ No newline at end of file
diff --git a/ofl/koulen/upstream.yaml b/ofl/koulen/upstream.yaml
deleted file mode 100644
index ab364563c362790c5ff4a0e8912482e60ed1e277..0000000000000000000000000000000000000000
--- a/ofl/koulen/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Koulen-Regular.ttf: Koulen-Regular.ttf
-repository_url: https://github.com/danhhong/Koulen.git
diff --git a/ofl/kufam/METADATA.pb b/ofl/kufam/METADATA.pb
index f4704415fe3ebaf71194b4d206821e1e37fb6221..44104bf91ee159cd02200b2f9f859c6ab90f6e47 100644
--- a/ofl/kufam/METADATA.pb
+++ b/ofl/kufam/METADATA.pb
@@ -31,3 +31,23 @@ axes {
   min_value: 400.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/originaltype/kufam"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/VF/Kufam[wght].ttf"
+    dest_file: "Kufam[wght].ttf"
+  }
+  files {
+    source_file: "Fonts/VF/Kufam-Italic[wght].ttf"
+    dest_file: "Kufam-Italic[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/kufam/upstream.yaml b/ofl/kufam/upstream.yaml
deleted file mode 100644
index 0d15e26ebf7f26148a0871423d459d5df744b5ad..0000000000000000000000000000000000000000
--- a/ofl/kufam/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/VF/Kufam[wght].ttf: Kufam[wght].ttf
-  Fonts/VF/Kufam-Italic[wght].ttf: Kufam-Italic[wght].ttf
-repository_url: https://github.com/originaltype/kufam
diff --git a/ofl/kumbhsans/METADATA.pb b/ofl/kumbhsans/METADATA.pb
index c89a4b04729738bd04eec81215325ea1500f3335..af32574d2ebbfec8a4857d32a888bbdc67402677 100644
--- a/ofl/kumbhsans/METADATA.pb
+++ b/ofl/kumbhsans/METADATA.pb
@@ -34,4 +34,13 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/xconsau/KumbhSans"
   commit: "b1c41a8ff0916a5421bd3976c361f1980c0e7cfc"
+  files {
+    source_file: "fonts/variable/KumbhSans[YOPQ,wght].ttf"
+    dest_file: "KumbhSans[YOPQ,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
 }
diff --git a/ofl/kumbhsans/upstream.yaml b/ofl/kumbhsans/upstream.yaml
deleted file mode 100644
index 126ae3ce2f373f978db9500fd5f1dd54afc5c28d..0000000000000000000000000000000000000000
--- a/ofl/kumbhsans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  fonts/variable/KumbhSans[YOPQ,wght].ttf: KumbhSans[YOPQ,wght].ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/labrada/METADATA.pb b/ofl/labrada/METADATA.pb
index 5e5b7ace943c099d4f965be60c6c03b33affe030..4a5d2f8107064c62843d5f978706a887e492979f 100644
--- a/ofl/labrada/METADATA.pb
+++ b/ofl/labrada/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/Omnibus-Type/Labrada"
   commit: "b15424f8840bda81f5dfa88f97bb634598faeadc"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Labrada-Italic[wght].ttf"
+    dest_file: "Labrada-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Labrada[wght].ttf"
+    dest_file: "Labrada[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/labrada/upstream.yaml b/ofl/labrada/upstream.yaml
deleted file mode 100644
index 406a1f9779576868c8b6c0423ca78336d51b4440..0000000000000000000000000000000000000000
--- a/ofl/labrada/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Labrada-Italic[wght].ttf: Labrada-Italic[wght].ttf
-  fonts/variable/Labrada[wght].ttf: Labrada[wght].ttf
-archive:
diff --git a/ofl/langar/METADATA.pb b/ofl/langar/METADATA.pb
index f1854df2e191a7da11c93883db20d16c8459622d..38b1ead9dcf0bfbc1eb3a05ce731a20bf3c4f372 100644
--- a/ofl/langar/METADATA.pb
+++ b/ofl/langar/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "gurmukhi"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/typeland/Langar"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/TTF/Langar-Regular.ttf"
+    dest_file: "Langar-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/langar/upstream.yaml b/ofl/langar/upstream.yaml
deleted file mode 100644
index 34bb87cc30e912814f085b6b5547109c32b93e50..0000000000000000000000000000000000000000
--- a/ofl/langar/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/TTF/Langar-Regular.ttf: Langar-Regular.ttf
-repository_url: https://github.com/typeland/Langar.git
diff --git a/ofl/lateef/METADATA.pb b/ofl/lateef/METADATA.pb
index bacd66d49078b9cce0186e9313f12bda5dcc3744..571ec3eddefd87e9710eedb389dd4425be7ba3c8 100644
--- a/ofl/lateef/METADATA.pb
+++ b/ofl/lateef/METADATA.pb
@@ -73,5 +73,38 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-lateef"
   archive_url: "https://github.com/silnrsi/font-lateef/releases/download/v4.200/Lateef-4.200.zip"
+  files {
+    source_file: "Lateef-4.200/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-ExtraLight.ttf"
+    dest_file: "Lateef-ExtraLight.ttf"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-Light.ttf"
+    dest_file: "Lateef-Light.ttf"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-Regular.ttf"
+    dest_file: "Lateef-Regular.ttf"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-Medium.ttf"
+    dest_file: "Lateef-Medium.ttf"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-SemiBold.ttf"
+    dest_file: "Lateef-SemiBold.ttf"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-Bold.ttf"
+    dest_file: "Lateef-Bold.ttf"
+  }
+  files {
+    source_file: "Lateef-4.200/Lateef-ExtraBold.ttf"
+    dest_file: "Lateef-ExtraBold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/lateef/upstream.yaml b/ofl/lateef/upstream.yaml
deleted file mode 100644
index 04010033e48d5a343f24fa8663662c3fa43c044c..0000000000000000000000000000000000000000
--- a/ofl/lateef/upstream.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-archive: https://github.com/silnrsi/font-lateef/releases/download/v4.200/Lateef-4.200.zip
-branch: master
-files:
-  Lateef-4.200/OFL.txt: OFL.txt
-  Lateef-4.200/Lateef-ExtraLight.ttf: Lateef-ExtraLight.ttf
-  Lateef-4.200/Lateef-Light.ttf: Lateef-Light.ttf
-  Lateef-4.200/Lateef-Regular.ttf: Lateef-Regular.ttf
-  Lateef-4.200/Lateef-Medium.ttf: Lateef-Medium.ttf
-  Lateef-4.200/Lateef-SemiBold.ttf: Lateef-SemiBold.ttf
-  Lateef-4.200/Lateef-Bold.ttf: Lateef-Bold.ttf
-  Lateef-4.200/Lateef-ExtraBold.ttf: Lateef-ExtraBold.ttf
diff --git a/ofl/lavishlyyours/METADATA.pb b/ofl/lavishlyyours/METADATA.pb
index b0e63ec97b56d8b6bbdcb367081b277a83b52ba6..e6de27846647d49d2f3a773f93e63916a4782dc3 100644
--- a/ofl/lavishlyyours/METADATA.pb
+++ b/ofl/lavishlyyours/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/lavishly-yours"
   commit: "06ea77a251dc2d763d199995ec06da0a0c1a85f1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/LavishlyYours-Regular.ttf"
+    dest_file: "LavishlyYours-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/lavishlyyours/upstream.yaml b/ofl/lavishlyyours/upstream.yaml
deleted file mode 100644
index 296512686907f22a0645c145e7609dbf8b7f0094..0000000000000000000000000000000000000000
--- a/ofl/lavishlyyours/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/LavishlyYours-Regular.ttf: LavishlyYours-Regular.ttf
diff --git a/ofl/leaguegothic/METADATA.pb b/ofl/leaguegothic/METADATA.pb
index edef8933f1e0658390bdd820cf15e51d3ab9298e..ea369ac9d87c888c1d548303376ffba7ffc20b09 100644
--- a/ofl/leaguegothic/METADATA.pb
+++ b/ofl/leaguegothic/METADATA.pb
@@ -21,5 +21,17 @@ axes {
   min_value: 75.0
   max_value: 100.0
 }
+source {
+  repository_url: "https://github.com/sursly/league-gothic"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/LeagueGothic[wdth].ttf"
+    dest_file: "LeagueGothic[wdth].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/leaguegothic/upstream.yaml b/ofl/leaguegothic/upstream.yaml
deleted file mode 100644
index 23ae494088fc2d4fb14415bfcfa1b1c175266d0a..0000000000000000000000000000000000000000
--- a/ofl/leaguegothic/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/LeagueGothic[wdth].ttf: LeagueGothic[wdth].ttf
-repository_url: https://github.com/sursly/league-gothic
diff --git a/ofl/leaguespartan/METADATA.pb b/ofl/leaguespartan/METADATA.pb
index 22329455b4bf76d318ae3995eb823b82233d65b7..aac2a923ba0be44eeccf72bcac4dddccfd49ae20 100644
--- a/ofl/leaguespartan/METADATA.pb
+++ b/ofl/leaguespartan/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/theleagueof/league-spartan"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/LeagueSpartan[wght].ttf"
+    dest_file: "LeagueSpartan[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/leaguespartan/upstream.yaml b/ofl/leaguespartan/upstream.yaml
deleted file mode 100644
index 1f334b84eb9ab7ce353eedd5c97470dff7753299..0000000000000000000000000000000000000000
--- a/ofl/leaguespartan/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-repository_url: https://github.com/theleagueof/league-spartan
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/LeagueSpartan[wght].ttf: LeagueSpartan[wght].ttf
diff --git a/ofl/lemon/METADATA.pb b/ofl/lemon/METADATA.pb
index 86c7561b6e232b3e6baef3bad21734fe15cbd384..c3605fc9ae5b8d0f060e4bfb45126023eaf45ca8 100644
--- a/ofl/lemon/METADATA.pb
+++ b/ofl/lemon/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/lemon"
   commit: "88027507a29de7878336812a328d25245c106e9b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Lemon-Regular.ttf"
+    dest_file: "Lemon-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/lemon/upstream.yaml b/ofl/lemon/upstream.yaml
deleted file mode 100644
index 252a91541285e19f20c9e7f57a5546140b4af00f..0000000000000000000000000000000000000000
--- a/ofl/lemon/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Lemon-Regular.ttf: Lemon-Regular.ttf
-archive:
diff --git a/ofl/lexend/METADATA.pb b/ofl/lexend/METADATA.pb
index 85f3834b669dee1c99c7df02bb9978d3e38737a6..95e177111f937f9b40758ec53848327574c82b2d 100644
--- a/ofl/lexend/METADATA.pb
+++ b/ofl/lexend/METADATA.pb
@@ -21,4 +21,16 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/lexend/variable/Lexend[wght].ttf"
+    dest_file: "Lexend[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 minisite_url: "https://www.lexend.com/"
diff --git a/ofl/lexend/upstream.yaml b/ofl/lexend/upstream.yaml
deleted file mode 100644
index 9f2f59945aa0147b3bc3f08dd2899b2957e06e9f..0000000000000000000000000000000000000000
--- a/ofl/lexend/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/lexend/variable/Lexend[wght].ttf: Lexend[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexenddeca/METADATA.pb b/ofl/lexenddeca/METADATA.pb
index 6cf0bf7a00cb390a9dd2202496a603cf1701c332..94bd92c68d1960b5315d676520cdd4c1be4fd9f9 100644
--- a/ofl/lexenddeca/METADATA.pb
+++ b/ofl/lexenddeca/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/deca/variable/LexendDeca[wght].ttf"
+    dest_file: "LexendDeca[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexenddeca/upstream.yaml b/ofl/lexenddeca/upstream.yaml
deleted file mode 100644
index fc63e68de144da53254deb73566beebecdfbdd40..0000000000000000000000000000000000000000
--- a/ofl/lexenddeca/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/deca/variable/LexendDeca[wght].ttf: LexendDeca[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexendexa/METADATA.pb b/ofl/lexendexa/METADATA.pb
index 4f7a1d0e6d0f25acaf1fed48bc2ed0ffb58a664f..a9e6b261edda6f92b20c94d931803785763b94e6 100644
--- a/ofl/lexendexa/METADATA.pb
+++ b/ofl/lexendexa/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/exa/variable/LexendExa[wght].ttf"
+    dest_file: "LexendExa[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexendexa/upstream.yaml b/ofl/lexendexa/upstream.yaml
deleted file mode 100644
index d7d7ec5daa8b95199846239fc0db4377544ea42e..0000000000000000000000000000000000000000
--- a/ofl/lexendexa/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/exa/variable/LexendExa[wght].ttf: LexendExa[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexendgiga/METADATA.pb b/ofl/lexendgiga/METADATA.pb
index 12ef16073bd65116f75df513547a4c4a8a0a79ab..451aee607835f40a4272e8884215689172ee3e51 100644
--- a/ofl/lexendgiga/METADATA.pb
+++ b/ofl/lexendgiga/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/giga/variable/LexendGiga[wght].ttf"
+    dest_file: "LexendGiga[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexendgiga/upstream.yaml b/ofl/lexendgiga/upstream.yaml
deleted file mode 100644
index c1d090d422daa664d30c68d975d385e25746c1be..0000000000000000000000000000000000000000
--- a/ofl/lexendgiga/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/giga/variable/LexendGiga[wght].ttf: LexendGiga[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexendmega/METADATA.pb b/ofl/lexendmega/METADATA.pb
index 5b36e83329865a05a4c5b80c515e07d2ca180020..634ab4da6d8a6d72a339dea63efbdd2773ad9ef3 100644
--- a/ofl/lexendmega/METADATA.pb
+++ b/ofl/lexendmega/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/mega/variable/LexendMega[wght].ttf"
+    dest_file: "LexendMega[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexendmega/upstream.yaml b/ofl/lexendmega/upstream.yaml
deleted file mode 100644
index cc5362a76251e23ae0e8eee47d5f84814c5b3117..0000000000000000000000000000000000000000
--- a/ofl/lexendmega/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/mega/variable/LexendMega[wght].ttf: LexendMega[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexendpeta/METADATA.pb b/ofl/lexendpeta/METADATA.pb
index 2b4a844c814e7f09f3eef8b2517d13994dc4bcdf..6c6e029edf934903275fab67f8cec1fe7f027efb 100644
--- a/ofl/lexendpeta/METADATA.pb
+++ b/ofl/lexendpeta/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/peta/variable/LexendPeta[wght].ttf"
+    dest_file: "LexendPeta[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexendpeta/upstream.yaml b/ofl/lexendpeta/upstream.yaml
deleted file mode 100644
index 8f0cfa355048dada99235d33025ac9e4e4021638..0000000000000000000000000000000000000000
--- a/ofl/lexendpeta/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/peta/variable/LexendPeta[wght].ttf: LexendPeta[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexendtera/METADATA.pb b/ofl/lexendtera/METADATA.pb
index f556a05d6d18f786ee5d98882baaa9959bb5abcc..535ecbb5aba931b365d6267c36602def439e0c27 100644
--- a/ofl/lexendtera/METADATA.pb
+++ b/ofl/lexendtera/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/tera/variable/LexendTera[wght].ttf"
+    dest_file: "LexendTera[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexendtera/upstream.yaml b/ofl/lexendtera/upstream.yaml
deleted file mode 100644
index fdf9aa18dd7db4cded8548dfa885bd8efc8b7b3f..0000000000000000000000000000000000000000
--- a/ofl/lexendtera/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/tera/variable/LexendTera[wght].ttf: LexendTera[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/lexendzetta/METADATA.pb b/ofl/lexendzetta/METADATA.pb
index ef614e9dcef9c5c2c6de1b005f97ec797038014d..edc284452814cf4e58d4590faadd1bd94d4696de 100644
--- a/ofl/lexendzetta/METADATA.pb
+++ b/ofl/lexendzetta/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/lexend"
+  files {
+    source_file: "fonts/zetta/variable/LexendZetta[wght].ttf"
+    dest_file: "LexendZetta[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
diff --git a/ofl/lexendzetta/upstream.yaml b/ofl/lexendzetta/upstream.yaml
deleted file mode 100644
index a10739471828a1e1e63127c6c6725a25fb4d3105..0000000000000000000000000000000000000000
--- a/ofl/lexendzetta/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/zetta/variable/LexendZetta[wght].ttf: LexendZetta[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/googlefonts/lexend
diff --git a/ofl/librebarcode128/METADATA.pb b/ofl/librebarcode128/METADATA.pb
index 13648574f1ca7dea71725da33c1068b7d9a628a3..9e06fc27f1e3741ef08cb6475bc6b13e2be7a748 100644
--- a/ofl/librebarcode128/METADATA.pb
+++ b/ofl/librebarcode128/METADATA.pb
@@ -14,5 +14,17 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcode128-Regular.ttf"
+    dest_file: "LibreBarcode128-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/librebarcode128/upstream.yaml b/ofl/librebarcode128/upstream.yaml
deleted file mode 100644
index 7c54198ee8b550d822d1fa0ff8671488f72946ad..0000000000000000000000000000000000000000
--- a/ofl/librebarcode128/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcode128-Regular.ttf: LibreBarcode128-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebarcode128text/METADATA.pb b/ofl/librebarcode128text/METADATA.pb
index 74fee72cd9fdb04c52b65ef2c814285f7f412f06..97b4c633a1400e7b9522c7424fe43e39ccf00eb3 100644
--- a/ofl/librebarcode128text/METADATA.pb
+++ b/ofl/librebarcode128text/METADATA.pb
@@ -14,5 +14,17 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcode128Text-Regular.ttf"
+    dest_file: "LibreBarcode128Text-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/librebarcode128text/upstream.yaml b/ofl/librebarcode128text/upstream.yaml
deleted file mode 100644
index 3bfde0d4fe632d9257c40bfeaf37820975c958aa..0000000000000000000000000000000000000000
--- a/ofl/librebarcode128text/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcode128Text-Regular.ttf: LibreBarcode128Text-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebarcode39/METADATA.pb b/ofl/librebarcode39/METADATA.pb
index 8d13599bab887d9c920cc9336a497437a3ca6781..7e8c605cf4b09bb41822a9afb88bb62b5377d001 100644
--- a/ofl/librebarcode39/METADATA.pb
+++ b/ofl/librebarcode39/METADATA.pb
@@ -14,5 +14,17 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcode39-Regular.ttf"
+    dest_file: "LibreBarcode39-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/librebarcode39/upstream.yaml b/ofl/librebarcode39/upstream.yaml
deleted file mode 100644
index 2e417f75218e0a454b34945d9e27653077c3263f..0000000000000000000000000000000000000000
--- a/ofl/librebarcode39/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcode39-Regular.ttf: LibreBarcode39-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebarcode39extended/METADATA.pb b/ofl/librebarcode39extended/METADATA.pb
index aa5faa95dcb1e65cc5e4f85553f9de21b91666e9..e8d1b5e5b62727fb5c3e3bdcc8a240ab6e944f56 100644
--- a/ofl/librebarcode39extended/METADATA.pb
+++ b/ofl/librebarcode39extended/METADATA.pb
@@ -14,5 +14,17 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcode39Extended-Regular.ttf"
+    dest_file: "LibreBarcode39Extended-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/librebarcode39extended/upstream.yaml b/ofl/librebarcode39extended/upstream.yaml
deleted file mode 100644
index 7d0e648db1b0f23bf5d9abb06d6ca9a744c5d5e4..0000000000000000000000000000000000000000
--- a/ofl/librebarcode39extended/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcode39Extended-Regular.ttf: LibreBarcode39Extended-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebarcode39extendedtext/METADATA.pb b/ofl/librebarcode39extendedtext/METADATA.pb
index 2733a7204514090f7528137542885b498daca670..baeaf14684e6ade08d2e5227223965840ca1801e 100644
--- a/ofl/librebarcode39extendedtext/METADATA.pb
+++ b/ofl/librebarcode39extendedtext/METADATA.pb
@@ -14,5 +14,17 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcode39ExtendedText-Regular.ttf"
+    dest_file: "LibreBarcode39ExtendedText-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/librebarcode39extendedtext/upstream.yaml b/ofl/librebarcode39extendedtext/upstream.yaml
deleted file mode 100644
index 64d026328629283febf85af94045fa981152cba5..0000000000000000000000000000000000000000
--- a/ofl/librebarcode39extendedtext/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcode39ExtendedText-Regular.ttf: LibreBarcode39ExtendedText-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebarcode39text/METADATA.pb b/ofl/librebarcode39text/METADATA.pb
index 7f07484b7124257466787d4e00280f3061e9ccd8..08235a2a5fd3c68f1801d696b7e050689fee9ee1 100644
--- a/ofl/librebarcode39text/METADATA.pb
+++ b/ofl/librebarcode39text/METADATA.pb
@@ -14,5 +14,17 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcode39Text-Regular.ttf"
+    dest_file: "LibreBarcode39Text-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/librebarcode39text/upstream.yaml b/ofl/librebarcode39text/upstream.yaml
deleted file mode 100644
index 944e7e902e41ba35542505e1f7c918defa196b35..0000000000000000000000000000000000000000
--- a/ofl/librebarcode39text/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcode39Text-Regular.ttf: LibreBarcode39Text-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebarcodeean13text/METADATA.pb b/ofl/librebarcodeean13text/METADATA.pb
index 6a669b39155d80fbf20919f471ff4f2c25a6a221..e6faa75e3971a01e7a24a7e919df6fab553963f0 100644
--- a/ofl/librebarcodeean13text/METADATA.pb
+++ b/ofl/librebarcodeean13text/METADATA.pb
@@ -14,6 +14,18 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/graphicore/librebarcode"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/LibreBarcodeEAN13Text-Regular.ttf"
+    dest_file: "LibreBarcodeEAN13Text-Regular.ttf"
+  }
+  branch: "master"
+}
 sample_text {
   masthead_full: "abcdefghij"
   masthead_partial: "abcd"
diff --git a/ofl/librebarcodeean13text/upstream.yaml b/ofl/librebarcodeean13text/upstream.yaml
deleted file mode 100644
index 9e01c0244a6171ee25af5171d190a504270df39d..0000000000000000000000000000000000000000
--- a/ofl/librebarcodeean13text/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/LibreBarcodeEAN13Text-Regular.ttf: LibreBarcodeEAN13Text-Regular.ttf
-repository_url: https://github.com/graphicore/librebarcode.git
diff --git a/ofl/librebodoni/METADATA.pb b/ofl/librebodoni/METADATA.pb
index 882bed57ced9cfaea1d3040a199a40ca14bd0582..7c898fc69f7a3f0d1370082838292806126c3f0a 100644
--- a/ofl/librebodoni/METADATA.pb
+++ b/ofl/librebodoni/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Libre-Bodoni"
   commit: "37d048938a8a32e6ba3992072cb3857659a7828f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/LibreBodoni[wght].ttf"
+    dest_file: "LibreBodoni[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/LibreBodoni-Italic[wght].ttf"
+    dest_file: "LibreBodoni-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/librebodoni/upstream.yaml b/ofl/librebodoni/upstream.yaml
deleted file mode 100644
index c902c2307c0c05669734af0d21dfe34c9467cbd1..0000000000000000000000000000000000000000
--- a/ofl/librebodoni/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/LibreBodoni[wght].ttf: LibreBodoni[wght].ttf
-  fonts/variable/LibreBodoni-Italic[wght].ttf: LibreBodoni-Italic[wght].ttf
-archive:
diff --git a/ofl/librefranklin/METADATA.pb b/ofl/librefranklin/METADATA.pb
index d44b48cf3188e153ea8745b4a299904943817fd5..ab6b7b85b65031f5df35dcf385e07d3f7ab2f112 100644
--- a/ofl/librefranklin/METADATA.pb
+++ b/ofl/librefranklin/METADATA.pb
@@ -30,3 +30,91 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/TypeNetwork/Libre-Franklin"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/LibreFranklin-Italic[wght].ttf"
+    dest_file: "LibreFranklin-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/LibreFranklin[wght].ttf"
+    dest_file: "LibreFranklin[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Black.ttf"
+    dest_file: "static/LibreFranklin-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-BlackItalic.ttf"
+    dest_file: "static/LibreFranklin-BlackItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Bold.ttf"
+    dest_file: "static/LibreFranklin-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-BoldItalic.ttf"
+    dest_file: "static/LibreFranklin-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-ExtraBold.ttf"
+    dest_file: "static/LibreFranklin-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-ExtraBoldItalic.ttf"
+    dest_file: "static/LibreFranklin-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-ExtraLight.ttf"
+    dest_file: "static/LibreFranklin-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-ExtraLightItalic.ttf"
+    dest_file: "static/LibreFranklin-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Italic.ttf"
+    dest_file: "static/LibreFranklin-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Light.ttf"
+    dest_file: "static/LibreFranklin-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-LightItalic.ttf"
+    dest_file: "static/LibreFranklin-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Medium.ttf"
+    dest_file: "static/LibreFranklin-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-MediumItalic.ttf"
+    dest_file: "static/LibreFranklin-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Regular.ttf"
+    dest_file: "static/LibreFranklin-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-SemiBold.ttf"
+    dest_file: "static/LibreFranklin-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-SemiBoldItalic.ttf"
+    dest_file: "static/LibreFranklin-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-Thin.ttf"
+    dest_file: "static/LibreFranklin-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/LibreFranklin-ThinItalic.ttf"
+    dest_file: "static/LibreFranklin-ThinItalic.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/librefranklin/upstream.yaml b/ofl/librefranklin/upstream.yaml
deleted file mode 100644
index 7a9570b497fa499fcf4ccf0432b5529c042bce78..0000000000000000000000000000000000000000
--- a/ofl/librefranklin/upstream.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/LibreFranklin-Italic[wght].ttf: LibreFranklin-Italic[wght].ttf
-  fonts/variable/LibreFranklin[wght].ttf: LibreFranklin[wght].ttf
-  fonts/ttf/LibreFranklin-Black.ttf: static/LibreFranklin-Black.ttf
-  fonts/ttf/LibreFranklin-BlackItalic.ttf: static/LibreFranklin-BlackItalic.ttf
-  fonts/ttf/LibreFranklin-Bold.ttf: static/LibreFranklin-Bold.ttf
-  fonts/ttf/LibreFranklin-BoldItalic.ttf: static/LibreFranklin-BoldItalic.ttf
-  fonts/ttf/LibreFranklin-ExtraBold.ttf: static/LibreFranklin-ExtraBold.ttf
-  fonts/ttf/LibreFranklin-ExtraBoldItalic.ttf: static/LibreFranklin-ExtraBoldItalic.ttf
-  fonts/ttf/LibreFranklin-ExtraLight.ttf: static/LibreFranklin-ExtraLight.ttf
-  fonts/ttf/LibreFranklin-ExtraLightItalic.ttf: static/LibreFranklin-ExtraLightItalic.ttf
-  fonts/ttf/LibreFranklin-Italic.ttf: static/LibreFranklin-Italic.ttf
-  fonts/ttf/LibreFranklin-Light.ttf: static/LibreFranklin-Light.ttf
-  fonts/ttf/LibreFranklin-LightItalic.ttf: static/LibreFranklin-LightItalic.ttf
-  fonts/ttf/LibreFranklin-Medium.ttf: static/LibreFranklin-Medium.ttf
-  fonts/ttf/LibreFranklin-MediumItalic.ttf: static/LibreFranklin-MediumItalic.ttf
-  fonts/ttf/LibreFranklin-Regular.ttf: static/LibreFranklin-Regular.ttf
-  fonts/ttf/LibreFranklin-SemiBold.ttf: static/LibreFranklin-SemiBold.ttf
-  fonts/ttf/LibreFranklin-SemiBoldItalic.ttf: static/LibreFranklin-SemiBoldItalic.ttf
-  fonts/ttf/LibreFranklin-Thin.ttf: static/LibreFranklin-Thin.ttf
-  fonts/ttf/LibreFranklin-ThinItalic.ttf: static/LibreFranklin-ThinItalic.ttf
-repository_url: https://github.com/TypeNetwork/Libre-Franklin
diff --git a/ofl/licorice/METADATA.pb b/ofl/licorice/METADATA.pb
index c6fa00c074a3ce4fbb49aeeff61898174bf0cf3d..7115680203f40a03c709c32950af23d871e22004 100644
--- a/ofl/licorice/METADATA.pb
+++ b/ofl/licorice/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/licorice"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Licorice-Regular.ttf"
+    dest_file: "Licorice-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/licorice/upstream.yaml b/ofl/licorice/upstream.yaml
deleted file mode 100644
index 9e6095e21fc9476aff815f7600b20d3afa5d2923..0000000000000000000000000000000000000000
--- a/ofl/licorice/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Licorice-Regular.ttf: Licorice-Regular.ttf
-repository_url: https://github.com/googlefonts/licorice
diff --git a/ofl/linefont/METADATA.pb b/ofl/linefont/METADATA.pb
index 5d3e8dfe111e4191bf7e5d084976615d6848f01e..8d7e0902f8714ab8aaa420ba26dc057663251c59 100644
--- a/ofl/linefont/METADATA.pb
+++ b/ofl/linefont/METADATA.pb
@@ -26,6 +26,15 @@ axes {
 source {
   repository_url: "https://github.com/dy/linefont"
   commit: "347effeda6955b1aa7febc34e17dcce3e04f5e15"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Linefont[wdth,wght].ttf"
+    dest_file: "Linefont[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 sample_text {
   masthead_full: "ĀŤĀŤĀŤĀŤĀŤĀŤĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤŤŤĀĀĀĀŤŤŤŤĀĀĀĀŤŤŤŤĀĀ"
@@ -33,6 +42,6 @@ sample_text {
   styles: "ĀŤĀŤĀŤĀŤĀŤĀŤĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤŤŤĀĀĀĀŤŤŤŤĀĀĀĀŤŤŤŤĀĀŤŤŤŤĀĀĀĀŤŤŤŤŤŤŤŤĀĀĀĀĀĀĀĀŤŤŤŤŤŤŤŤĀĀĀĀ"
   tester: "ĀŤĀŤĀŤĀŤĀŤĀŤĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤĀĀŤŤŤŤĀĀĀĀŤŤŤŤĀĀĀĀŤŤŤŤĀĀŤŤŤŤĀĀĀĀŤŤŤŤŤŤŤŤĀĀĀĀĀĀĀĀŤŤŤŤŤŤŤŤĀĀĀĀĀĀĀĀĀĀĀŤŤŤŤŤŤŤŤŤŤŤŤŤŤŤŤĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀŤŤŤŤŤŤŤŤŤŤŤŤŤŤŤŤĀĀĀĀĀĀĀĀ"
 }
+minisite_url: "https://dy.github.io/linefont/scripts/"
 classifications: "SYMBOLS"
 classifications: "DISPLAY"
-minisite_url: "https://dy.github.io/linefont/scripts/"
diff --git a/ofl/linefont/upstream.yaml b/ofl/linefont/upstream.yaml
deleted file mode 100644
index 713c1b7a84a8bf9880f28a9642e81514b59f07a8..0000000000000000000000000000000000000000
--- a/ofl/linefont/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Linefont[wdth,wght].ttf: Linefont[wdth,wght].ttf
diff --git a/ofl/lisubosa/METADATA.pb b/ofl/lisubosa/METADATA.pb
index 06f9e6ffd36bc11c4d8c25a179d6a51f5742ba5d..53cce30543d5733df3705f9b6f6bc9990d11fd88 100644
--- a/ofl/lisubosa/METADATA.pb
+++ b/ofl/lisubosa/METADATA.pb
@@ -154,5 +154,74 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-lisu-bosa"
   archive_url: "https://github.com/silnrsi/font-lisu-bosa/releases/download/v2.000/LisuBosa-2.000.zip"
+  files {
+    source_file: "LisuBosa-2.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-ExtraLight.ttf"
+    dest_file: "LisuBosa-ExtraLight.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-ExtraLightItalic.ttf"
+    dest_file: "LisuBosa-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-Light.ttf"
+    dest_file: "LisuBosa-Light.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-LightItalic.ttf"
+    dest_file: "LisuBosa-LightItalic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-Regular.ttf"
+    dest_file: "LisuBosa-Regular.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-Italic.ttf"
+    dest_file: "LisuBosa-Italic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-Medium.ttf"
+    dest_file: "LisuBosa-Medium.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-MediumItalic.ttf"
+    dest_file: "LisuBosa-MediumItalic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-SemiBold.ttf"
+    dest_file: "LisuBosa-SemiBold.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-SemiBoldItalic.ttf"
+    dest_file: "LisuBosa-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-Bold.ttf"
+    dest_file: "LisuBosa-Bold.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-BoldItalic.ttf"
+    dest_file: "LisuBosa-BoldItalic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-ExtraBold.ttf"
+    dest_file: "LisuBosa-ExtraBold.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-ExtraBoldItalic.ttf"
+    dest_file: "LisuBosa-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-Black.ttf"
+    dest_file: "LisuBosa-Black.ttf"
+  }
+  files {
+    source_file: "LisuBosa-2.000/LisuBosa-BlackItalic.ttf"
+    dest_file: "LisuBosa-BlackItalic.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Lisu"
diff --git a/ofl/lisubosa/upstream.yaml b/ofl/lisubosa/upstream.yaml
deleted file mode 100644
index b5358e0e307ea00e61d23d02370066e0f8f5a61f..0000000000000000000000000000000000000000
--- a/ofl/lisubosa/upstream.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-archive: https://github.com/silnrsi/font-lisu-bosa/releases/download/v2.000/LisuBosa-2.000.zip
-branch: master
-files:
-  LisuBosa-2.000/OFL.txt: OFL.txt
-  LisuBosa-2.000/LisuBosa-ExtraLight.ttf: LisuBosa-ExtraLight.ttf
-  LisuBosa-2.000/LisuBosa-ExtraLightItalic.ttf: LisuBosa-ExtraLightItalic.ttf
-  LisuBosa-2.000/LisuBosa-Light.ttf: LisuBosa-Light.ttf
-  LisuBosa-2.000/LisuBosa-LightItalic.ttf: LisuBosa-LightItalic.ttf
-  LisuBosa-2.000/LisuBosa-Regular.ttf: LisuBosa-Regular.ttf
-  LisuBosa-2.000/LisuBosa-Italic.ttf: LisuBosa-Italic.ttf
-  LisuBosa-2.000/LisuBosa-Medium.ttf: LisuBosa-Medium.ttf
-  LisuBosa-2.000/LisuBosa-MediumItalic.ttf: LisuBosa-MediumItalic.ttf
-  LisuBosa-2.000/LisuBosa-SemiBold.ttf: LisuBosa-SemiBold.ttf
-  LisuBosa-2.000/LisuBosa-SemiBoldItalic.ttf: LisuBosa-SemiBoldItalic.ttf
-  LisuBosa-2.000/LisuBosa-Bold.ttf: LisuBosa-Bold.ttf
-  LisuBosa-2.000/LisuBosa-BoldItalic.ttf: LisuBosa-BoldItalic.ttf
-  LisuBosa-2.000/LisuBosa-ExtraBold.ttf: LisuBosa-ExtraBold.ttf
-  LisuBosa-2.000/LisuBosa-ExtraBoldItalic.ttf: LisuBosa-ExtraBoldItalic.ttf
-  LisuBosa-2.000/LisuBosa-Black.ttf: LisuBosa-Black.ttf
-  LisuBosa-2.000/LisuBosa-BlackItalic.ttf: LisuBosa-BlackItalic.ttf
diff --git a/ofl/literata/METADATA.pb b/ofl/literata/METADATA.pb
index 46c2b5c4877fbeea05ba62b476e02a911349d93d..3f41c0d45f27a24cb83459882e2b7d5d0e152f6f 100644
--- a/ofl/literata/METADATA.pb
+++ b/ofl/literata/METADATA.pb
@@ -42,4 +42,17 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/literata"
   commit: "0c2761b727a1b3a7cffd313c37f0f5163dfc7a63"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Literata[opsz,wght].ttf"
+    dest_file: "Literata[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Literata-Italic[opsz,wght].ttf"
+    dest_file: "Literata-Italic[opsz,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/literata/upstream.yaml b/ofl/literata/upstream.yaml
deleted file mode 100644
index 45d50587d5316300ccbff68a7321a75f71d62d6a..0000000000000000000000000000000000000000
--- a/ofl/literata/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Literata[opsz,wght].ttf: Literata[opsz,wght].ttf
-  fonts/variable/Literata-Italic[opsz,wght].ttf: Literata-Italic[opsz,wght].ttf
-archive:
diff --git a/ofl/liujianmaocao/METADATA.pb b/ofl/liujianmaocao/METADATA.pb
index c9c9319eefd59fcc2a7eb6c486e2c1ae00b1b624..afc793bfa84267b51b093efeaebaf51958ab6b86 100644
--- a/ofl/liujianmaocao/METADATA.pb
+++ b/ofl/liujianmaocao/METADATA.pb
@@ -15,5 +15,21 @@ fonts {
 subsets: "chinese-simplified"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/liujianmaocao"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/LiuJianMaoCao-Regular.ttf"
+    dest_file: "LiuJianMaoCao-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/liujianmaocao/upstream.yaml b/ofl/liujianmaocao/upstream.yaml
deleted file mode 100644
index 7710f4e680b695c3f29823de7e0ca45c5f96f7ff..0000000000000000000000000000000000000000
--- a/ofl/liujianmaocao/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/LiuJianMaoCao-Regular.ttf: LiuJianMaoCao-Regular.ttf
-repository_url: https://github.com/googlefonts/liujianmaocao
diff --git a/ofl/lora/METADATA.pb b/ofl/lora/METADATA.pb
index 55e98553017b74fe8c452a1fa086f0b393694dae..50bf517612009bdff9033387a69f9b3ed6746033 100644
--- a/ofl/lora/METADATA.pb
+++ b/ofl/lora/METADATA.pb
@@ -37,5 +37,18 @@ axes {
 source {
   repository_url: "https://github.com/cyrealtype/Lora-Cyrillic"
   commit: "403b1a66ca2e79f81d749c5299559e168591a4df"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Lora[wght].ttf"
+    dest_file: "Lora[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Lora-Italic[wght].ttf"
+    dest_file: "Lora-Italic[wght].ttf"
+  }
+  branch: "main"
 }
-stroke:"SERIF"
+stroke: "SERIF"
diff --git a/ofl/lora/upstream.yaml b/ofl/lora/upstream.yaml
deleted file mode 100644
index b0d7444e4a1df2094b20d9f95bb64710350097de..0000000000000000000000000000000000000000
--- a/ofl/lora/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Lora[wght].ttf: Lora[wght].ttf
-  fonts/variable/Lora-Italic[wght].ttf: Lora-Italic[wght].ttf
diff --git a/ofl/lovelight/METADATA.pb b/ofl/lovelight/METADATA.pb
index 26d809c19cfe7202209e139f3c3592e293c8919a..ce871f26fb2e229c9d541286fd94c854de9d614e 100644
--- a/ofl/lovelight/METADATA.pb
+++ b/ofl/lovelight/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/love-light"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/LoveLight-Regular.ttf"
+    dest_file: "LoveLight-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/lovelight/upstream.yaml b/ofl/lovelight/upstream.yaml
deleted file mode 100644
index 23e3a45cfd5d93c45a483c084331ce469ab372a9..0000000000000000000000000000000000000000
--- a/ofl/lovelight/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/LoveLight-Regular.ttf: LoveLight-Regular.ttf
-repository_url: https://github.com/googlefonts/love-light
diff --git a/ofl/loversquarrel/METADATA.pb b/ofl/loversquarrel/METADATA.pb
index 482ed3e78d104be38451c8834b1d253a4c423822..d798561c93f464cccd747e62c6961ed689199296 100644
--- a/ofl/loversquarrel/METADATA.pb
+++ b/ofl/loversquarrel/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/lovers-quarrel"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/LoversQuarrel-Regular.ttf"
+    dest_file: "LoversQuarrel-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/loversquarrel/upstream.yaml b/ofl/loversquarrel/upstream.yaml
deleted file mode 100644
index 7d7e8ab07352d345c303697006d4082b50a8c606..0000000000000000000000000000000000000000
--- a/ofl/loversquarrel/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/LoversQuarrel-Regular.ttf: LoversQuarrel-Regular.ttf
-repository_url: https://github.com/googlefonts/lovers-quarrel
diff --git a/ofl/lugrasimo/METADATA.pb b/ofl/lugrasimo/METADATA.pb
index 178b5e132b3c046084977c5285e1edab6f094cc3..5afb646d835a910636935da7ff6f84de24ce9f05 100644
--- a/ofl/lugrasimo/METADATA.pb
+++ b/ofl/lugrasimo/METADATA.pb
@@ -18,6 +18,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/docrepair-fonts/lugrasimo-fonts"
   commit: "40395a6877a6bcdfe74deb2a7e355c0a4c7228e7"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Lugrasimo-Regular.ttf"
+    dest_file: "Lugrasimo-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "HANDWRITING"
diff --git a/ofl/lugrasimo/upstream.yaml b/ofl/lugrasimo/upstream.yaml
deleted file mode 100644
index cdce4d97f373c250d0729bbd366c61c5dddd0b02..0000000000000000000000000000000000000000
--- a/ofl/lugrasimo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Lugrasimo-Regular.ttf: Lugrasimo-Regular.ttf
-archive:
diff --git a/ofl/lumanosimo/METADATA.pb b/ofl/lumanosimo/METADATA.pb
index 7a7b32d91d20f43eb53ac78b20144dd1f80967f2..f88581d4b73b98a2c4635bc51d6960702e92f7d8 100644
--- a/ofl/lumanosimo/METADATA.pb
+++ b/ofl/lumanosimo/METADATA.pb
@@ -18,6 +18,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/docrepair-fonts/lumanosimo-fonts"
   commit: "a7395fda4d79523ae6f0a798e2ea2d8ed524fc80"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Lumanosimo-Regular.ttf"
+    dest_file: "Lumanosimo-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "HANDWRITING"
diff --git a/ofl/lumanosimo/upstream.yaml b/ofl/lumanosimo/upstream.yaml
deleted file mode 100644
index b3190a22df12306632d4d2442788487024365eff..0000000000000000000000000000000000000000
--- a/ofl/lumanosimo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Lumanosimo-Regular.ttf: Lumanosimo-Regular.ttf
-archive:
diff --git a/ofl/lunasima/METADATA.pb b/ofl/lunasima/METADATA.pb
index 8d5ad6ed9d9fb53cb906652f2ef56fd8312213a8..5586593c1b849350a508f553247ff35e60ee45c4 100644
--- a/ofl/lunasima/METADATA.pb
+++ b/ofl/lunasima/METADATA.pb
@@ -33,4 +33,21 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/docrepair-fonts/lunasima-fonts"
   commit: "88f44d7a6c3693aa455dc7194c6e5a01cb2a39ae"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Lunasima-Regular.ttf"
+    dest_file: "Lunasima-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Lunasima-Bold.ttf"
+    dest_file: "Lunasima-Bold.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/lunasima/upstream.yaml b/ofl/lunasima/upstream.yaml
deleted file mode 100644
index 00acdd79ec1659045d6455d034ecc59b0500e233..0000000000000000000000000000000000000000
--- a/ofl/lunasima/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Lunasima-Regular.ttf: Lunasima-Regular.ttf
-  fonts/ttf/Lunasima-Bold.ttf: Lunasima-Bold.ttf
-archive:
diff --git a/ofl/luxuriousroman/METADATA.pb b/ofl/luxuriousroman/METADATA.pb
index bbc595dca69939bccd9c453fbde3d6e0099423ac..7ab2813e4b317db16e126540af854e727e615aa7 100644
--- a/ofl/luxuriousroman/METADATA.pb
+++ b/ofl/luxuriousroman/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/luxurious-roman"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/LuxuriousRoman-Regular.ttf"
+    dest_file: "LuxuriousRoman-Regular.ttf"
+  }
+  branch: "main"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/luxuriousroman/upstream.yaml b/ofl/luxuriousroman/upstream.yaml
deleted file mode 100644
index cf796c65a667d48353e2c46bf2409ed8bc03e4e4..0000000000000000000000000000000000000000
--- a/ofl/luxuriousroman/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/LuxuriousRoman-Regular.ttf: LuxuriousRoman-Regular.ttf
-repository_url: https://github.com/googlefonts/luxurious-roman
diff --git a/ofl/luxuriousscript/METADATA.pb b/ofl/luxuriousscript/METADATA.pb
index 21fe07b8295d5ad06541f3af2474b9325bc2bff0..c9ebcf259e304637b58ffb961b6d4189c8db43fa 100644
--- a/ofl/luxuriousscript/METADATA.pb
+++ b/ofl/luxuriousscript/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/luxurious"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/LuxuriousScript-Regular.ttf"
+    dest_file: "LuxuriousScript-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/luxuriousscript/upstream.yaml b/ofl/luxuriousscript/upstream.yaml
deleted file mode 100644
index 95ee8a11f68c004e80c466dca34854353cfb28c7..0000000000000000000000000000000000000000
--- a/ofl/luxuriousscript/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/LuxuriousScript-Regular.ttf: LuxuriousScript-Regular.ttf
-repository_url: https://github.com/googlefonts/luxurious
diff --git a/ofl/mada/METADATA.pb b/ofl/mada/METADATA.pb
index 8d8ced346ce9e8da3661bd25ec6b9244fd87ad4b..af183f43301ce43cfb2477d94f4dcd46c52c2196 100644
--- a/ofl/mada/METADATA.pb
+++ b/ofl/mada/METADATA.pb
@@ -24,5 +24,14 @@ axes {
 source {
   repository_url: "https://github.com/aliftype/mada"
   archive_url: "https://github.com/aliftype/mada/releases/download/v1.5/Mada-1.5.zip"
+  files {
+    source_file: "Mada-1.5/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Mada-1.5/Mada.ttf"
+    dest_file: "Mada[wght].ttf"
+  }
+  branch: "main"
 }
 primary_script: "Arab"
diff --git a/ofl/mada/upstream.yaml b/ofl/mada/upstream.yaml
deleted file mode 100644
index dc49d4954715b636c8abf017269d8493412e675d..0000000000000000000000000000000000000000
--- a/ofl/mada/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-archive: https://github.com/aliftype/mada/releases/download/v1.5/Mada-1.5.zip
-files:
-  Mada-1.5/OFL.txt: OFL.txt
-  Mada-1.5/Mada.ttf: Mada[wght].ttf
diff --git a/ofl/madimione/METADATA.pb b/ofl/madimione/METADATA.pb
index 0b9de76ea3cb0f7b6a2f0e10aee8ab14844d4c22..87ce7887b4358608e762bcf1408b88b3a54e73cc 100644
--- a/ofl/madimione/METADATA.pb
+++ b/ofl/madimione/METADATA.pb
@@ -20,6 +20,19 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/TaVaTake/madimi"
   commit: "b0fedf3bfa1ac17a00bdbcbf06e8fe2aecfa009e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MadimiOne-Regular.ttf"
+    dest_file: "MadimiOne-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/madimione/upstream.yaml b/ofl/madimione/upstream.yaml
deleted file mode 100644
index 69aa10d4300fa180cd76224a00bd5f577b2b6207..0000000000000000000000000000000000000000
--- a/ofl/madimione/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MadimiOne-Regular.ttf: MadimiOne-Regular.ttf
-archive:
diff --git a/ofl/mako/METADATA.pb b/ofl/mako/METADATA.pb
index a7c2157c0105d073a876759b2cba918d796a9c63..32d12f11e044f484ffe9e3d2c21e5a2fd74b0814 100644
--- a/ofl/mako/METADATA.pb
+++ b/ofl/mako/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/MakoFont"
   commit: "493c8535e2ae836eea478f167b7c05755818360f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Mako-Regular.ttf"
+    dest_file: "Mako-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/mako/upstream.yaml b/ofl/mako/upstream.yaml
deleted file mode 100644
index a6b0fddaff16d080779c0d91a148d354a9fe77a9..0000000000000000000000000000000000000000
--- a/ofl/mako/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Mako-Regular.ttf: Mako-Regular.ttf
-archive:
diff --git a/ofl/manjari/METADATA.pb b/ofl/manjari/METADATA.pb
index a1f081be5382f4686a536a77209b05ee996f165d..38fe79d5f39829be846ff91637df5ac520981454 100644
--- a/ofl/manjari/METADATA.pb
+++ b/ofl/manjari/METADATA.pb
@@ -35,7 +35,20 @@ subsets: "latin-ext"
 subsets: "malayalam"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/smc/manjari"
+  repository_url: "https://gitlab.com/smc/fonts/manjari"
+  files {
+    source_file: "build/Manjari-Regular.ttf"
+    dest_file: "Manjari-Regular.ttf"
+  }
+  files {
+    source_file: "build/Manjari-Bold.ttf"
+    dest_file: "Manjari-Bold.ttf"
+  }
+  files {
+    source_file: "build/Manjari-Thin.ttf"
+    dest_file: "Manjari-Thin.ttf"
+  }
+  branch: "tags/Version2.000"
 }
 primary_script: "Mlym"
 stroke: "SANS_SERIF"
diff --git a/ofl/manjari/upstream.yaml b/ofl/manjari/upstream.yaml
deleted file mode 100644
index 3f57975bcee807f23ff7577a644a4a7d8b393a0c..0000000000000000000000000000000000000000
--- a/ofl/manjari/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-branch: tags/Version2.000
-build: mkdir -p build; python3 -m venv build/venv; source build/venv/bin/activate;
-  pip install -r requirements.txt; make ttf
-files:
-  build/Manjari-Regular.ttf: Manjari-Regular.ttf
-  build/Manjari-Bold.ttf: Manjari-Bold.ttf
-  build/Manjari-Thin.ttf: Manjari-Thin.ttf
-repository_url: https://gitlab.com/smc/fonts/manjari.git
diff --git a/ofl/mansalva/METADATA.pb b/ofl/mansalva/METADATA.pb
index 85f60eeb0f6081cddea8a4c058183433c1a83287..c926ae9de881ce30c8a88d0708e47ed1bcaa45d6 100644
--- a/ofl/mansalva/METADATA.pb
+++ b/ofl/mansalva/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/carolinashort/mansalva"
   commit: "192d65ff2d1560ff6399abde05904d910965d483"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Mansalva-Regular.ttf"
+    dest_file: "Mansalva-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/mansalva/upstream.yaml b/ofl/mansalva/upstream.yaml
deleted file mode 100644
index 35508a1173aff5b9d3b9ff35849e34704b90b663..0000000000000000000000000000000000000000
--- a/ofl/mansalva/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Mansalva-Regular.ttf: Mansalva-Regular.ttf
-archive:
diff --git a/ofl/marhey/METADATA.pb b/ofl/marhey/METADATA.pb
index d64a1bf1c225e348273a01e427f4ab39a159a5e3..e88e969d0068f5bce91f8b9accbce03d55814f0b 100644
--- a/ofl/marhey/METADATA.pb
+++ b/ofl/marhey/METADATA.pb
@@ -24,6 +24,19 @@ axes {
 source {
   repository_url: "https://github.com/namelatype/Marhey"
   commit: "535eeb5a3f4dee825fdaf13d84075b212d969f8d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Marhey[wght].ttf"
+    dest_file: "Marhey[wght].ttf"
+  }
+  files {
+    source_file: "DESCRITION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 primary_script: "Arab"
 stroke: "SANS_SERIF"
diff --git a/ofl/marhey/upstream.yaml b/ofl/marhey/upstream.yaml
deleted file mode 100644
index c2d0e2de64906fe854b0f5777b6cd97c1ae62cde..0000000000000000000000000000000000000000
--- a/ofl/marhey/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Marhey[wght].ttf: Marhey[wght].ttf
-  DESCRITION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/marmelad/METADATA.pb b/ofl/marmelad/METADATA.pb
index 19e58b99519cd3defbc218b8fbb0a356e8999c28..4a014d57ddefaadd373bb20ff65fcf3bd7126081 100644
--- a/ofl/marmelad/METADATA.pb
+++ b/ofl/marmelad/METADATA.pb
@@ -21,4 +21,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/cyrealtype/Marmelad-Cyrillic"
   commit: "9ddac1c0cbdc888e1c6adae6f34e7db08ec6c187"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Marmelad-Regular.ttf"
+    dest_file: "Marmelad-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/marmelad/upstream.yaml b/ofl/marmelad/upstream.yaml
deleted file mode 100644
index d93785b323eb9e1437304c8b4448541f57f58ba8..0000000000000000000000000000000000000000
--- a/ofl/marmelad/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Marmelad-Regular.ttf: Marmelad-Regular.ttf
-archive:
diff --git a/ofl/martianmono/METADATA.pb b/ofl/martianmono/METADATA.pb
index 776fe99b836437fcac39669c91ae000fe796d9b4..b6623d610234f3d9ec5a90e8f8583e383d813464 100644
--- a/ofl/martianmono/METADATA.pb
+++ b/ofl/martianmono/METADATA.pb
@@ -31,4 +31,13 @@ axes {
 source {
   repository_url: "https://github.com/evilmartians/mono"
   commit: "17865aac562a1a800888de6604f7251f135cf3b5"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/MartianMono[wdth,wght].ttf"
+    dest_file: "MartianMono[wdth,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/martianmono/upstream.yaml b/ofl/martianmono/upstream.yaml
deleted file mode 100644
index 5c8a0d55a8b6e9656344e5da5a7b40bc4e2ddf05..0000000000000000000000000000000000000000
--- a/ofl/martianmono/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/MartianMono[wdth,wght].ttf: MartianMono[wdth,wght].ttf
-archive:
diff --git a/ofl/mate/METADATA.pb b/ofl/mate/METADATA.pb
index 20ecdeb46858355a32513f962dbd6a91caf92366..5f112de89b3b00d3986727ba27333c1a0e944dda 100644
--- a/ofl/mate/METADATA.pb
+++ b/ofl/mate/METADATA.pb
@@ -27,6 +27,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/mate"
   commit: "2ea8febc952610379af663b1651411493d34beea"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/mate/ttf/Mate-Regular.ttf"
+    dest_file: "Mate-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/mate/ttf/Mate-Italic.ttf"
+    dest_file: "Mate-Italic.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/mate/upstream.yaml b/ofl/mate/upstream.yaml
deleted file mode 100644
index cd697c7350992700b6ab6d1f39c222fc94405438..0000000000000000000000000000000000000000
--- a/ofl/mate/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/mate/ttf/Mate-Regular.ttf: Mate-Regular.ttf
-  fonts/mate/ttf/Mate-Italic.ttf: Mate-Italic.ttf
-archive:
diff --git a/ofl/matesc/METADATA.pb b/ofl/matesc/METADATA.pb
index 69323265bbfb04fda18a21a7af110260b8d7600c..1afe37e83a714baf8a019a39f099d93de7ad02d0 100644
--- a/ofl/matesc/METADATA.pb
+++ b/ofl/matesc/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/mate"
   commit: "2ea8febc952610379af663b1651411493d34beea"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/matesc/ttf/MateSC-Regular.ttf"
+    dest_file: "MateSC-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/matesc/upstream.yaml b/ofl/matesc/upstream.yaml
deleted file mode 100644
index c1398871971100b7eb4cfbc217f086ccdab6470e..0000000000000000000000000000000000000000
--- a/ofl/matesc/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/matesc/ttf/MateSC-Regular.ttf: MateSC-Regular.ttf
-archive:
diff --git a/ofl/meaculpa/METADATA.pb b/ofl/meaculpa/METADATA.pb
index 3b7ea622077d817d56345d8135b0f5eb133283f4..a869627b44c82a3e2b8c605bfb7dd98c2679e1cb 100644
--- a/ofl/meaculpa/METADATA.pb
+++ b/ofl/meaculpa/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/mea-culpa"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MeaCulpa-Regular.ttf"
+    dest_file: "MeaCulpa-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/meaculpa/upstream.yaml b/ofl/meaculpa/upstream.yaml
deleted file mode 100644
index 6a54b7f386bece29a83adffb4b4e95bab3e1e0da..0000000000000000000000000000000000000000
--- a/ofl/meaculpa/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MeaCulpa-Regular.ttf: MeaCulpa-Regular.ttf
-repository_url: https://github.com/googlefonts/mea-culpa
diff --git a/ofl/meowscript/METADATA.pb b/ofl/meowscript/METADATA.pb
index 76872825b7de52e2d8c648d27cf138ef3b4594b2..fcdb343e1a0c5a0aed70eaed3af29a2974afcb27 100644
--- a/ofl/meowscript/METADATA.pb
+++ b/ofl/meowscript/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/meow-script"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MeowScript-Regular.ttf"
+    dest_file: "MeowScript-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/meowscript/upstream.yaml b/ofl/meowscript/upstream.yaml
deleted file mode 100644
index 6ad2b8171b9b432f30330dbea000a1bfc607ad3b..0000000000000000000000000000000000000000
--- a/ofl/meowscript/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MeowScript-Regular.ttf: MeowScript-Regular.ttf
-repository_url: https://github.com/googlefonts/meow-script
diff --git a/ofl/merienda/METADATA.pb b/ofl/merienda/METADATA.pb
index 22792194e85048678d68ef7f362b2ddd7f468fcd..81afca913367ca2e74f5afacd640aeb57ec243c1 100644
--- a/ofl/merienda/METADATA.pb
+++ b/ofl/merienda/METADATA.pb
@@ -24,4 +24,13 @@ axes {
 source {
   repository_url: "https://github.com/etunni/merienda"
   commit: "15f2f36d29595fa3dd6cf068323ef44bc0713b56"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Merienda[wght].ttf"
+    dest_file: "Merienda[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/merienda/upstream.yaml b/ofl/merienda/upstream.yaml
deleted file mode 100644
index d633f501ab4a0879b08694080850f713069ae91c..0000000000000000000000000000000000000000
--- a/ofl/merienda/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Merienda[wght].ttf: Merienda[wght].ttf
-archive:
diff --git a/ofl/metal/METADATA.pb b/ofl/metal/METADATA.pb
index 1f36994fdbd0af7e3506705f259146d04d2ff4b2..41fede1d320eb00280acf8035e6aa0dac1e75aa4 100644
--- a/ofl/metal/METADATA.pb
+++ b/ofl/metal/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Metal"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Metal-Regular.ttf"
+    dest_file: "Metal-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/metal/upstream.yaml b/ofl/metal/upstream.yaml
deleted file mode 100644
index 217afb31cf80bac717ec72eb44c6f61b613a989c..0000000000000000000000000000000000000000
--- a/ofl/metal/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Metal-Regular.ttf: Metal-Regular.ttf
-repository_url: https://github.com/danhhong/Metal.git
diff --git a/ofl/metrophobic/METADATA.pb b/ofl/metrophobic/METADATA.pb
index 680e17a9ab2b1a124a69d87a6c7c45ac937fe223..2314fa5f410418e9cc8f92878a3d7445025e9da0 100644
--- a/ofl/metrophobic/METADATA.pb
+++ b/ofl/metrophobic/METADATA.pb
@@ -19,4 +19,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/MetrophobicFont"
   commit: "c834ca0e9188d756627252ae510266ed5e8d2416"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Metrophobic-Regular.ttf"
+    dest_file: "Metrophobic-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/metrophobic/upstream.yaml b/ofl/metrophobic/upstream.yaml
deleted file mode 100644
index 16597714eb9c4713e9854693a243ff1228f9ca85..0000000000000000000000000000000000000000
--- a/ofl/metrophobic/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Metrophobic-Regular.ttf: Metrophobic-Regular.ttf
-archive:
diff --git a/ofl/michroma/METADATA.pb b/ofl/michroma/METADATA.pb
index 4b829c7ceacf198f15b981648c93111105e09992..911ee6d9379b3462aaa43d3cecb0a4f80afccb71 100644
--- a/ofl/michroma/METADATA.pb
+++ b/ofl/michroma/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/Michroma-font"
   commit: "07893d1b85a537a6ed4b96fdb091bee45eabe65f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Michroma-Regular.ttf"
+    dest_file: "Michroma-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/michroma/upstream.yaml b/ofl/michroma/upstream.yaml
deleted file mode 100644
index 9cad3044f6b279d25ec272bd85d946cf30e8f69f..0000000000000000000000000000000000000000
--- a/ofl/michroma/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Michroma-Regular.ttf: Michroma-Regular.ttf
-archive:
diff --git a/ofl/micro5/METADATA.pb b/ofl/micro5/METADATA.pb
index 0a6c7e282bb9d3169b4294c5f587cc216088b074..fe6363254ca391db458b5072aa1a548ba8818ea6 100644
--- a/ofl/micro5/METADATA.pb
+++ b/ofl/micro5/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-micro"
   commit: "e8450033cd07542081f72abd540b93574434bc71"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Micro5-Regular.ttf"
+    dest_file: "Micro5-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/micro5/upstream.yaml b/ofl/micro5/upstream.yaml
deleted file mode 100644
index ca6693af8b04c352a60e21bd2de5bf11c25798cd..0000000000000000000000000000000000000000
--- a/ofl/micro5/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Micro5-Regular.ttf: Micro5-Regular.ttf
-archive:
diff --git a/ofl/micro5charted/METADATA.pb b/ofl/micro5charted/METADATA.pb
index 8e2b15d4fa29e38197ab250ff4089dc8f3bcef70..d0b39c848ba589460b2a33e335a141f98836d5bc 100644
--- a/ofl/micro5charted/METADATA.pb
+++ b/ofl/micro5charted/METADATA.pb
@@ -20,5 +20,14 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-micro"
   commit: "e8450033cd07542081f72abd540b93574434bc71"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Micro5Charted-Regular.ttf"
+    dest_file: "Micro5Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/micro5charted/upstream.yaml b/ofl/micro5charted/upstream.yaml
deleted file mode 100644
index 584aac0ea5e20c8f7dd057992e2edec1e940b82f..0000000000000000000000000000000000000000
--- a/ofl/micro5charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Micro5Charted-Regular.ttf: Micro5Charted-Regular.ttf
-archive:
diff --git a/ofl/mingzat/METADATA.pb b/ofl/mingzat/METADATA.pb
index dfed24a399fa044ecd1e85cc910f3a40fc2ed2e6..fa293e44244353709e9d02a01fa2028bb998d511 100644
--- a/ofl/mingzat/METADATA.pb
+++ b/ofl/mingzat/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-mingzat"
   archive_url: "https://github.com/silnrsi/font-mingzat/releases/download/v1.100/Mingzat-1.100.zip"
+  files {
+    source_file: "Mingzat-1.100/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Mingzat-1.100/Mingzat-Regular.ttf"
+    dest_file: "Mingzat-Regular.ttf"
+  }
+  branch: "master"
 }
-primary_script: "Lepc"
 languages: "lep_Lepc"  # Lepcha
+primary_script: "Lepc"
diff --git a/ofl/mingzat/upstream.yaml b/ofl/mingzat/upstream.yaml
deleted file mode 100644
index c59e1267a03c3aec3cc86f122c84235aca56243b..0000000000000000000000000000000000000000
--- a/ofl/mingzat/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/silnrsi/font-mingzat/releases/download/v1.100/Mingzat-1.100.zip
-branch: master
-files:
-  Mingzat-1.100/OFL.txt: OFL.txt
-  Mingzat-1.100/Mingzat-Regular.ttf: Mingzat-Regular.ttf
diff --git a/ofl/mochiypopone/METADATA.pb b/ofl/mochiypopone/METADATA.pb
index 9a8729d1b98d14c8bb2da5ad4e2727981cc94e08..377ddb8bb4174ef2c237b41f5f85ea5509ce3287 100644
--- a/ofl/mochiypopone/METADATA.pb
+++ b/ofl/mochiypopone/METADATA.pb
@@ -15,5 +15,21 @@ fonts {
 subsets: "japanese"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontdasu/Mochiypop"
+  files {
+    source_file: "fonts/ttf/MochiyPopOne-Regular.ttf"
+    dest_file: "MochiyPopOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/mochiypopone/upstream.yaml b/ofl/mochiypopone/upstream.yaml
deleted file mode 100644
index 36d90b2816366e28c2c5c49e9e5e4b02b7451092..0000000000000000000000000000000000000000
--- a/ofl/mochiypopone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/MochiyPopOne-Regular.ttf: MochiyPopOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontdasu/Mochiypop
\ No newline at end of file
diff --git a/ofl/mochiypoppone/METADATA.pb b/ofl/mochiypoppone/METADATA.pb
index d3e3da6c8d8e9f189b97a3a3a0faec0895ab0629..2c6ba9f838d81463396d1d2b531a54102951d76c 100644
--- a/ofl/mochiypoppone/METADATA.pb
+++ b/ofl/mochiypoppone/METADATA.pb
@@ -15,5 +15,21 @@ fonts {
 subsets: "japanese"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontdasu/Mochiypop"
+  files {
+    source_file: "fonts/ttf/MochiyPopPOne-Regular.ttf"
+    dest_file: "MochiyPopPOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "P_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/mochiypoppone/upstream.yaml b/ofl/mochiypoppone/upstream.yaml
deleted file mode 100644
index bceda1c43319748a39e2ec2645628fce2c66b3a3..0000000000000000000000000000000000000000
--- a/ofl/mochiypoppone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/MochiyPopPOne-Regular.ttf: MochiyPopPOne-Regular.ttf
-  OFL.txt: OFL.txt
-  P_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontdasu/Mochiypop
\ No newline at end of file
diff --git a/ofl/moiraione/METADATA.pb b/ofl/moiraione/METADATA.pb
index e2fa70789781aaa84ffdb1af5a7a1459cb1d2333..c75c06af41b381854265f586d9fa96e15b5c21c8 100644
--- a/ofl/moiraione/METADATA.pb
+++ b/ofl/moiraione/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/JAMO-TYPEFACE/Moirai"
   commit: "3220f0c211c8d3a3bb989896cf7ea66d16a925e6"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/MoiraiOne-Regular.ttf"
+    dest_file: "MoiraiOne-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Kore"
diff --git a/ofl/moiraione/upstream.yaml b/ofl/moiraione/upstream.yaml
deleted file mode 100644
index 1eba3db97fd96aec4cf7736c475dd7dce4c8fcd2..0000000000000000000000000000000000000000
--- a/ofl/moiraione/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/MoiraiOne-Regular.ttf: MoiraiOne-Regular.ttf
-archive:
diff --git a/ofl/monda/METADATA.pb b/ofl/monda/METADATA.pb
index 7c7b5915c1ace892e46e5b67096dc4820a2654bb..58dbae2a81824ed00d222cea3f48a1acff28117b 100644
--- a/ofl/monda/METADATA.pb
+++ b/ofl/monda/METADATA.pb
@@ -25,3 +25,23 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/mondaFont"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Monda-Bold.ttf"
+    dest_file: "Monda-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Monda-Regular.ttf"
+    dest_file: "Monda-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/monda/upstream.yaml b/ofl/monda/upstream.yaml
deleted file mode 100644
index 72a36a9358f4047775f628ac14600e359c7fa498..0000000000000000000000000000000000000000
--- a/ofl/monda/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Monda-Bold.ttf: Monda-Bold.ttf
-  fonts/ttf/Monda-Regular.ttf: Monda-Regular.ttf
-repository_url: https://github.com/googlefonts/mondaFont
diff --git a/ofl/monofett/METADATA.pb b/ofl/monofett/METADATA.pb
index 2ece1b5764064b1b0fd6777e212b0e1b4b1ace29..49f6acd7346a5531cf5fddbf765c5dea44ddf8cd 100644
--- a/ofl/monofett/METADATA.pb
+++ b/ofl/monofett/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/monofett"
   commit: "a1a60166b5db2c6676d0a0a7751fe378fff1af9e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Monofett-Regular.ttf"
+    dest_file: "Monofett-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/monofett/upstream.yaml b/ofl/monofett/upstream.yaml
deleted file mode 100644
index b1f9c6acddff88e0680fb286375911dc6fe74608..0000000000000000000000000000000000000000
--- a/ofl/monofett/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Monofett-Regular.ttf: Monofett-Regular.ttf
-archive:
diff --git a/ofl/monomaniacone/METADATA.pb b/ofl/monomaniacone/METADATA.pb
index 99937179a3b1b316b8550ad2477bc1a518813b4b..d76935b38ae8e4986d1e68a57e7417395dc432dd 100644
--- a/ofl/monomaniacone/METADATA.pb
+++ b/ofl/monomaniacone/METADATA.pb
@@ -16,8 +16,24 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
-languages: "ja_Kana"
-languages: "ja_Hira"
+source {
+  repository_url: "https://github.com/ManiackersDesign/monomaniac"
+  files {
+    source_file: "fonts/ttf/MonomaniacOne-Regular.ttf"
+    dest_file: "MonomaniacOne-Regular.ttf"
+  }
+  files {
+    source_file: "ofl.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/monomaniacone/upstream.yaml b/ofl/monomaniacone/upstream.yaml
deleted file mode 100644
index 4d57f889d80bdb560fdab10c07c0cc8447a9be04..0000000000000000000000000000000000000000
--- a/ofl/monomaniacone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/MonomaniacOne-Regular.ttf: MonomaniacOne-Regular.ttf
-  ofl.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/ManiackersDesign/monomaniac.git
diff --git a/ofl/montaguslab/METADATA.pb b/ofl/montaguslab/METADATA.pb
index eccb6e561163237af613fd315ae0e77b240f25e3..7220edc245e6c7227be4893103fc0ade8fd0c274 100644
--- a/ofl/montaguslab/METADATA.pb
+++ b/ofl/montaguslab/METADATA.pb
@@ -30,5 +30,21 @@ registry_default_overrides {
   key: "opsz"
   value: 144.0
 }
+source {
+  repository_url: "https://github.com/floriankarsten/montagu-slab"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/MontaguSlab[opsz,wght].ttf"
+    dest_file: "MontaguSlab[opsz,wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SLAB_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/montaguslab/upstream.yaml b/ofl/montaguslab/upstream.yaml
deleted file mode 100644
index 22937bf420e326e52c6c97e9728e3cd17735e8d4..0000000000000000000000000000000000000000
--- a/ofl/montaguslab/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/MontaguSlab[opsz,wght].ttf: MontaguSlab[opsz,wght].ttf
-repository_url: https://github.com/floriankarsten/montagu-slab
diff --git a/ofl/montecarlo/METADATA.pb b/ofl/montecarlo/METADATA.pb
index 25840400646f27e00e10961dee260ba0b96b474c..b9f938d22740f8dfbb509d4a964dfa2078f9c76a 100644
--- a/ofl/montecarlo/METADATA.pb
+++ b/ofl/montecarlo/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/monte-carlo"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MonteCarlo-Regular.ttf"
+    dest_file: "MonteCarlo-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/montecarlo/upstream.yaml b/ofl/montecarlo/upstream.yaml
deleted file mode 100644
index 276c8f54336ff1c541959754c0f0dfe5a5839fa6..0000000000000000000000000000000000000000
--- a/ofl/montecarlo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MonteCarlo-Regular.ttf: MonteCarlo-Regular.ttf
-repository_url: https://github.com/googlefonts/monte-carlo
diff --git a/ofl/moolahlah/METADATA.pb b/ofl/moolahlah/METADATA.pb
index 26c56458f3b4595e478c300c312ef7097c5769ff..edb4fcaefe68c7d9ef09b7b8d6b7e44fc9bcb441 100644
--- a/ofl/moolahlah/METADATA.pb
+++ b/ofl/moolahlah/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/moolahlah"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MooLahLah-Regular.ttf"
+    dest_file: "MooLahLah-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/moolahlah/upstream.yaml b/ofl/moolahlah/upstream.yaml
deleted file mode 100644
index 9179afcebcc06e9da5e1ba9c5142c194ff13780e..0000000000000000000000000000000000000000
--- a/ofl/moolahlah/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MooLahLah-Regular.ttf: MooLahLah-Regular.ttf
-repository_url: https://github.com/googlefonts/moolahlah
diff --git a/ofl/mooli/METADATA.pb b/ofl/mooli/METADATA.pb
index f1b38ce5281f95eaaf6961b1f69f21d49bf097ad..0ff1c8e41eaea126cd14f041d1b053cded40082f 100644
--- a/ofl/mooli/METADATA.pb
+++ b/ofl/mooli/METADATA.pb
@@ -18,5 +18,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/mooliFont"
   commit: "ecf6cc6fe2cb9c9d61f243f673c9181188f81499"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Mooli-Regular.ttf"
+    dest_file: "Mooli-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/mooli/upstream.yaml b/ofl/mooli/upstream.yaml
deleted file mode 100644
index 35a9ffb89c8a2244ac828e28e8bd75c450c9a8a2..0000000000000000000000000000000000000000
--- a/ofl/mooli/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Mooli-Regular.ttf: Mooli-Regular.ttf
-archive:
diff --git a/ofl/moondance/METADATA.pb b/ofl/moondance/METADATA.pb
index ea5d1354a9920a12defd2e3a5dbd4c20269669eb..2f9ee4b084f61f24d61c3d10f93629f692f6e6b3 100644
--- a/ofl/moondance/METADATA.pb
+++ b/ofl/moondance/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/moondance"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MoonDance-Regular.ttf"
+    dest_file: "MoonDance-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/moondance/upstream.yaml b/ofl/moondance/upstream.yaml
deleted file mode 100644
index 53b88eb1c2af7fa173dfcd875b21cb8fecd14587..0000000000000000000000000000000000000000
--- a/ofl/moondance/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MoonDance-Regular.ttf: MoonDance-Regular.ttf
-repository_url: https://github.com/googlefonts/moondance
diff --git a/ofl/moul/METADATA.pb b/ofl/moul/METADATA.pb
index 57711d1b480becceb5c4e8524576d2b5cc555b88..41f70a1daf192b3ca8803c8bade931884c45e918 100644
--- a/ofl/moul/METADATA.pb
+++ b/ofl/moul/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Moul"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Moul-Regular.ttf"
+    dest_file: "Moul-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/moul/upstream.yaml b/ofl/moul/upstream.yaml
deleted file mode 100644
index 458988939aa01ac3aefc8bbb1a23bb1638db7f16..0000000000000000000000000000000000000000
--- a/ofl/moul/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Moul-Regular.ttf: Moul-Regular.ttf
-repository_url: https://github.com/danhhong/Moul.git
diff --git a/ofl/moulpali/METADATA.pb b/ofl/moulpali/METADATA.pb
index 8ba3f2a2c14ad9e3296b1edaee06945548e0a50b..8d7854bf56592d7053f283a5fdffd6a66a63f8f8 100644
--- a/ofl/moulpali/METADATA.pb
+++ b/ofl/moulpali/METADATA.pb
@@ -15,3 +15,15 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Moulpali"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Moulpali-Regular.ttf"
+    dest_file: "Moulpali-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/moulpali/upstream.yaml b/ofl/moulpali/upstream.yaml
deleted file mode 100644
index a2dd72a0955d71444406d10544a7eb701f3fd4c1..0000000000000000000000000000000000000000
--- a/ofl/moulpali/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Moulpali-Regular.ttf: Moulpali-Regular.ttf
-repository_url: https://github.com/danhhong/Moulpali.git
diff --git a/ofl/mplus1/METADATA.pb b/ofl/mplus1/METADATA.pb
index 86db830e9cbfc5b9c49799a67f7f8265dd20a8a1..985859cc02d953d4dc356a2ece27add6d655649d 100644
--- a/ofl/mplus1/METADATA.pb
+++ b/ofl/mplus1/METADATA.pb
@@ -22,3 +22,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/coz-m/MPLUS_FONTS"
+  files {
+    source_file: "fonts/ttf/Mplus1[wght].ttf"
+    dest_file: "Mplus1[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Mplus1_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/mplus1/upstream.yaml b/ofl/mplus1/upstream.yaml
deleted file mode 100644
index 6a22c7036d08835cd8c13fda6e422d26bd0b63cd..0000000000000000000000000000000000000000
--- a/ofl/mplus1/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Mplus1[wght].ttf: Mplus1[wght].ttf
-  OFL.txt: OFL.txt
-  Mplus1_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/coz-m/MPLUS_FONTS.git
diff --git a/ofl/mplus1code/METADATA.pb b/ofl/mplus1code/METADATA.pb
index 780cf0dba1b087d737cacc9afd68fc02e12f6f5b..e78576f3a416d9093082c1ef0c6be2415b7233cc 100644
--- a/ofl/mplus1code/METADATA.pb
+++ b/ofl/mplus1code/METADATA.pb
@@ -22,3 +22,19 @@ axes {
   min_value: 100.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/coz-m/MPLUS_FONTS"
+  files {
+    source_file: "fonts/ttf/MPLUS1Code[wght].ttf"
+    dest_file: "MPLUS1Code[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Mplus1Code_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/mplus1code/upstream.yaml b/ofl/mplus1code/upstream.yaml
deleted file mode 100644
index e9ca00485d55b32f1bcb2df6df6074f94ddffc76..0000000000000000000000000000000000000000
--- a/ofl/mplus1code/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/MPLUS1Code[wght].ttf: MPLUS1Code[wght].ttf
-  OFL.txt: OFL.txt
-  Mplus1Code_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/coz-m/MPLUS_FONTS.git
diff --git a/ofl/mplus2/METADATA.pb b/ofl/mplus2/METADATA.pb
index 3fb69310bd9e9c2276a18e6dd1bd109c05138aab..7477f0150cbdcd801bd0d9fd8c0db57dcd72c9dd 100644
--- a/ofl/mplus2/METADATA.pb
+++ b/ofl/mplus2/METADATA.pb
@@ -22,3 +22,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/coz-m/MPLUS_FONTS"
+  files {
+    source_file: "fonts/ttf/Mplus2[wght].ttf"
+    dest_file: "Mplus2[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Mplus2_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/mplus2/upstream.yaml b/ofl/mplus2/upstream.yaml
deleted file mode 100644
index c726c83f2a7cee2465c60d920cf7e3da672e052a..0000000000000000000000000000000000000000
--- a/ofl/mplus2/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Mplus2[wght].ttf: Mplus2[wght].ttf
-  OFL.txt: OFL.txt
-  Mplus2_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/coz-m/MPLUS_FONTS.git
diff --git a/ofl/mpluscodelatin/METADATA.pb b/ofl/mpluscodelatin/METADATA.pb
index 2c408074b14a347cbdcfbf8ef7112bec5c834d80..8a42d2c5ad1fb468853b7cf3b703a572df09ba5a 100644
--- a/ofl/mpluscodelatin/METADATA.pb
+++ b/ofl/mpluscodelatin/METADATA.pb
@@ -26,5 +26,21 @@ axes {
   min_value: 100.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/coz-m/MPLUS_FONTS"
+  files {
+    source_file: "fonts/ttf/MPLUSCodeLatin[wdth,wght].ttf"
+    dest_file: "MPLUSCodeLatin[wdth,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "MPlusCodeLatin_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "MONOSPACE"
diff --git a/ofl/mpluscodelatin/upstream.yaml b/ofl/mpluscodelatin/upstream.yaml
deleted file mode 100644
index 46c26a64eef192a0b8d9631cea139fb225a2f63d..0000000000000000000000000000000000000000
--- a/ofl/mpluscodelatin/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/MPLUSCodeLatin[wdth,wght].ttf: MPLUSCodeLatin[wdth,wght].ttf
-  OFL.txt: OFL.txt
-  MPlusCodeLatin_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/coz-m/MPLUS_FONTS.git
diff --git a/ofl/msmadi/METADATA.pb b/ofl/msmadi/METADATA.pb
index aee5bf18e02eb72e7f95fe8b808ae146ef74b09c..a9fbf41452ab76016296f4650fe2ccf81cbfbe26 100644
--- a/ofl/msmadi/METADATA.pb
+++ b/ofl/msmadi/METADATA.pb
@@ -19,4 +19,17 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/ms-madi"
   commit: "867703c03535006513ced087c9d2a1a1fda8f565"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MsMadi-Regular.ttf"
+    dest_file: "MsMadi-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/msmadi/upstream.yaml b/ofl/msmadi/upstream.yaml
deleted file mode 100644
index 33f847695f4ae8d76791e1fb3562f97b646f32b6..0000000000000000000000000000000000000000
--- a/ofl/msmadi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MsMadi-Regular.ttf: MsMadi-Regular.ttf
diff --git a/ofl/mulish/METADATA.pb b/ofl/mulish/METADATA.pb
index 14c09c94b08ad00ff58ffb9744ce5ddfe4545b82..b5aad3429ced7f945e223f497b1074ea9544f217 100644
--- a/ofl/mulish/METADATA.pb
+++ b/ofl/mulish/METADATA.pb
@@ -32,3 +32,23 @@ axes {
   min_value: 200.0
   max_value: 1000.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/mulish"
+  files {
+    source_file: "fonts/variable/Mulish[wght].ttf"
+    dest_file: "Mulish[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Mulish-Italic[wght].ttf"
+    dest_file: "Mulish-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
diff --git a/ofl/mulish/upstream.yaml b/ofl/mulish/upstream.yaml
deleted file mode 100644
index 1bd54db39fe427429b69a67a2a6af82b074a524e..0000000000000000000000000000000000000000
--- a/ofl/mulish/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  fonts/variable/Mulish[wght].ttf: Mulish[wght].ttf
-  fonts/variable/Mulish-Italic[wght].ttf: Mulish-Italic[wght].ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/mulish
diff --git a/ofl/murecho/METADATA.pb b/ofl/murecho/METADATA.pb
index c56febb76d915365bdd896c713a0f6063fbe6884..e0f25a7964a01bb18b313fe589a764d0f635c4a7 100644
--- a/ofl/murecho/METADATA.pb
+++ b/ofl/murecho/METADATA.pb
@@ -24,4 +24,16 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/positype/Murecho-Project"
+  files {
+    source_file: "fonts/variable/Murecho[wght].ttf"
+    dest_file: "Murecho[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 primary_script: "Hira"
diff --git a/ofl/murecho/upstream.yaml b/ofl/murecho/upstream.yaml
deleted file mode 100644
index 79549ab723d2a03c4f19f2ee9e43f267549f70dc..0000000000000000000000000000000000000000
--- a/ofl/murecho/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/Murecho[wght].ttf: Murecho[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/positype/Murecho-Project.git
diff --git a/ofl/museomoderno/METADATA.pb b/ofl/museomoderno/METADATA.pb
index 34e7f61895c20ac704ef04975fa22b2dcaf5fda4..0d6098f8fa815c51654d6a137be0953f599f7e93 100644
--- a/ofl/museomoderno/METADATA.pb
+++ b/ofl/museomoderno/METADATA.pb
@@ -33,6 +33,19 @@ axes {
 source {
   repository_url: "https://github.com/Omnibus-Type/MuseoModerno"
   commit: "ad2f135bea4525cf6d1f14d488593c0fc6ef82db"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/MuseoModerno[wght].ttf"
+    dest_file: "MuseoModerno[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/MuseoModerno-Italic[wght].ttf"
+    dest_file: "MuseoModerno-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/museomoderno/upstream.yaml b/ofl/museomoderno/upstream.yaml
deleted file mode 100644
index 63b60ee227ea7bfd852c580c00bcd2eba5a1aaa2..0000000000000000000000000000000000000000
--- a/ofl/museomoderno/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/MuseoModerno[wght].ttf: MuseoModerno[wght].ttf
-  fonts/variable/MuseoModerno-Italic[wght].ttf: MuseoModerno-Italic[wght].ttf
-archive:
diff --git a/ofl/mynerve/METADATA.pb b/ofl/mynerve/METADATA.pb
index 70ba1116ecf171ff63b78676d93d634195bb7167..796f226a536b39d3043a469d4ff8cc359befd3a8 100644
--- a/ofl/mynerve/METADATA.pb
+++ b/ofl/mynerve/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/carolinashort/MyNerve"
   commit: "4220ec76c588d97b43757c5332b0aa45ed9a52f3"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Mynerve-Regular.ttf"
+    dest_file: "Mynerve-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/mynerve/upstream.yaml b/ofl/mynerve/upstream.yaml
deleted file mode 100644
index 9d291878364e8cf01c09de7294d27a253261c9f2..0000000000000000000000000000000000000000
--- a/ofl/mynerve/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Mynerve-Regular.ttf: Mynerve-Regular.ttf
-archive:
diff --git a/ofl/mysoul/METADATA.pb b/ofl/mysoul/METADATA.pb
index 625974ebd5fc15278dee47310405e1580ee75c2e..853a2bff4c4107d41c5815d3f91d1aa39a32507f 100644
--- a/ofl/mysoul/METADATA.pb
+++ b/ofl/mysoul/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/my-soul"
   commit: "13b1f37605ab5bd23b9c71be2d8f639810996236"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/MySoul-Regular.ttf"
+    dest_file: "MySoul-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/mysoul/upstream.yaml b/ofl/mysoul/upstream.yaml
deleted file mode 100644
index 57fe064fd0e6e222c1d6cbcae483379d4ead4aec..0000000000000000000000000000000000000000
--- a/ofl/mysoul/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/MySoul-Regular.ttf: MySoul-Regular.ttf
diff --git a/ofl/nabla/METADATA.pb b/ofl/nabla/METADATA.pb
index 8b01adfcdfce16b2892197b60ca70d167e6202ea..efc827c25be44010aa7e7de86bc93c50aedfadeb 100644
--- a/ofl/nabla/METADATA.pb
+++ b/ofl/nabla/METADATA.pb
@@ -31,5 +31,10 @@ axes {
 source {
   repository_url: "https://github.com/justvanrossum/nabla"
   archive_url: "https://github.com/justvanrossum/nabla/releases/download/v1.002/nabla-fonts.zip"
+  files {
+    source_file: "nabla-fonts/Nabla[EDPT,EHLT].ttf"
+    dest_file: "Nabla[EDPT,EHLT].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://nabla.typearture.com/"
diff --git a/ofl/nabla/upstream.yaml b/ofl/nabla/upstream.yaml
deleted file mode 100644
index aecf28aa431e000b40f17a3dd3f58538a80aa521..0000000000000000000000000000000000000000
--- a/ofl/nabla/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-archive: https://github.com/justvanrossum/nabla/releases/download/v1.002/nabla-fonts.zip
-branch: main
-files:
-  nabla-fonts/Nabla[EDPT,EHLT].ttf: Nabla[EDPT,EHLT].ttf
diff --git a/ofl/namdhinggo/METADATA.pb b/ofl/namdhinggo/METADATA.pb
index 44d45f32aa27b615001379f601d6bc883c60c4f1..cd4727ce8cc673d458c3707c74db6f586d38cbec 100644
--- a/ofl/namdhinggo/METADATA.pb
+++ b/ofl/namdhinggo/METADATA.pb
@@ -55,5 +55,30 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-namdhinggo"
   archive_url: "https://github.com/silnrsi/font-namdhinggo/releases/download/v3.001/Namdhinggo-3.001.zip"
+  files {
+    source_file: "Namdhinggo-3.001/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Namdhinggo-3.001/Namdhinggo-Regular.ttf"
+    dest_file: "Namdhinggo-Regular.ttf"
+  }
+  files {
+    source_file: "Namdhinggo-3.001/Namdhinggo-Medium.ttf"
+    dest_file: "Namdhinggo-Medium.ttf"
+  }
+  files {
+    source_file: "Namdhinggo-3.001/Namdhinggo-SemiBold.ttf"
+    dest_file: "Namdhinggo-SemiBold.ttf"
+  }
+  files {
+    source_file: "Namdhinggo-3.001/Namdhinggo-Bold.ttf"
+    dest_file: "Namdhinggo-Bold.ttf"
+  }
+  files {
+    source_file: "Namdhinggo-3.001/Namdhinggo-ExtraBold.ttf"
+    dest_file: "Namdhinggo-ExtraBold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Limb"
diff --git a/ofl/namdhinggo/upstream.yaml b/ofl/namdhinggo/upstream.yaml
deleted file mode 100644
index 330ce37e61006e38f6c4d6eccaf67c7d7bbbccdb..0000000000000000000000000000000000000000
--- a/ofl/namdhinggo/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-archive: https://github.com/silnrsi/font-namdhinggo/releases/download/v3.001/Namdhinggo-3.001.zip
-branch: master
-files:
-  Namdhinggo-3.001/OFL.txt: OFL.txt
-  Namdhinggo-3.001/Namdhinggo-Regular.ttf: Namdhinggo-Regular.ttf
-  Namdhinggo-3.001/Namdhinggo-Medium.ttf: Namdhinggo-Medium.ttf
-  Namdhinggo-3.001/Namdhinggo-SemiBold.ttf: Namdhinggo-SemiBold.ttf
-  Namdhinggo-3.001/Namdhinggo-Bold.ttf: Namdhinggo-Bold.ttf
-  Namdhinggo-3.001/Namdhinggo-ExtraBold.ttf: Namdhinggo-ExtraBold.ttf
diff --git a/ofl/narnoor/METADATA.pb b/ofl/narnoor/METADATA.pb
index adc3c4090dfc1e25a4dfa43da422518671a2e07c..ec3dd6b2a2c7ac37fa4e824d0703749db79a0b99 100644
--- a/ofl/narnoor/METADATA.pb
+++ b/ofl/narnoor/METADATA.pb
@@ -57,6 +57,31 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/silnrsi/font-narnoor"
   archive_url: "https://github.com/silnrsi/font-narnoor/releases/download/v3.000/Narnoor-3.000.zip"
+  files {
+    source_file: "Narnoor-3.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Narnoor-3.000/Narnoor-Regular.ttf"
+    dest_file: "Narnoor-Regular.ttf"
+  }
+  files {
+    source_file: "Narnoor-3.000/Narnoor-Medium.ttf"
+    dest_file: "Narnoor-Medium.ttf"
+  }
+  files {
+    source_file: "Narnoor-3.000/Narnoor-SemiBold.ttf"
+    dest_file: "Narnoor-SemiBold.ttf"
+  }
+  files {
+    source_file: "Narnoor-3.000/Narnoor-Bold.ttf"
+    dest_file: "Narnoor-Bold.ttf"
+  }
+  files {
+    source_file: "Narnoor-3.000/Narnoor-ExtraBold.ttf"
+    dest_file: "Narnoor-ExtraBold.ttf"
+  }
+  branch: "master"
 }
 languages: "wsg_Gong"  # Adilabad Gondi, Gunjala Gondi
 primary_script: "Gong"
diff --git a/ofl/narnoor/upstream.yaml b/ofl/narnoor/upstream.yaml
deleted file mode 100644
index 0ee74585b4f80109739d1e01a2292819c4ccc137..0000000000000000000000000000000000000000
--- a/ofl/narnoor/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-archive: https://github.com/silnrsi/font-narnoor/releases/download/v3.000/Narnoor-3.000.zip
-branch: master
-files:
-  Narnoor-3.000/OFL.txt: OFL.txt
-  Narnoor-3.000/Narnoor-Regular.ttf: Narnoor-Regular.ttf
-  Narnoor-3.000/Narnoor-Medium.ttf: Narnoor-Medium.ttf
-  Narnoor-3.000/Narnoor-SemiBold.ttf: Narnoor-SemiBold.ttf
-  Narnoor-3.000/Narnoor-Bold.ttf: Narnoor-Bold.ttf
-  Narnoor-3.000/Narnoor-ExtraBold.ttf: Narnoor-ExtraBold.ttf
diff --git a/ofl/neonderthaw/METADATA.pb b/ofl/neonderthaw/METADATA.pb
index 51daf537bae7b4f4fb2b420d3a804bd8ebca0390..04f7afecec444b9aa2687abd5fb77197f431d27c 100644
--- a/ofl/neonderthaw/METADATA.pb
+++ b/ofl/neonderthaw/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/neonderthaw"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Neonderthaw-Regular.ttf"
+    dest_file: "Neonderthaw-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/neonderthaw/upstream.yaml b/ofl/neonderthaw/upstream.yaml
deleted file mode 100644
index 2c6c8b9c918fda3c3cdcaf8499482274217147c5..0000000000000000000000000000000000000000
--- a/ofl/neonderthaw/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Neonderthaw-Regular.ttf: Neonderthaw-Regular.ttf
-repository_url: https://github.com/googlefonts/neonderthaw
diff --git a/ofl/nerkoone/METADATA.pb b/ofl/nerkoone/METADATA.pb
index 1911f9317aecbba5feb22652ee24d5448d97dd17..456bc3f301188458f955d33307eb599052842a77 100644
--- a/ofl/nerkoone/METADATA.pb
+++ b/ofl/nerkoone/METADATA.pb
@@ -15,3 +15,23 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/nermink99/Nerko"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "FONTLOG.txt"
+    dest_file: "FONTLOG.txt"
+  }
+  files {
+    source_file: "fonts/ttf/NerkoOne-Regular.ttf"
+    dest_file: "NerkoOne-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/nerkoone/upstream.yaml b/ofl/nerkoone/upstream.yaml
deleted file mode 100644
index 55a4ab174b653792f5fcb59e0401e715624f8763..0000000000000000000000000000000000000000
--- a/ofl/nerkoone/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  FONTLOG.txt: FONTLOG.txt
-  fonts/ttf/NerkoOne-Regular.ttf: NerkoOne-Regular.ttf
-repository_url: https://github.com/nermink99/Nerko.git
diff --git a/ofl/newsreader/METADATA.pb b/ofl/newsreader/METADATA.pb
index 134c3e6663e647d2b2e1074cc8a52bc90474b552..fd1a060ccc37c667535cfcc98883df77d7abc16d 100644
--- a/ofl/newsreader/METADATA.pb
+++ b/ofl/newsreader/METADATA.pb
@@ -39,3 +39,191 @@ registry_default_overrides {
   key: "opsz"
   value: 16.0
 }
+source {
+  repository_url: "https://github.com/productiontype/NewsReader"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/ttf/Newsreader-Italic[opsz,wght].ttf"
+    dest_file: "Newsreader-Italic[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/ttf/Newsreader[opsz,wght].ttf"
+    dest_file: "Newsreader[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-ExtraBoldItalic.ttf"
+    dest_file: "static/Newsreader6pt-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-Bold.ttf"
+    dest_file: "static/Newsreader16pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-ExtraLightItalic.ttf"
+    dest_file: "static/Newsreader16pt-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-ExtraBoldItalic.ttf"
+    dest_file: "static/Newsreader72pt-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-Bold.ttf"
+    dest_file: "static/Newsreader6pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-ExtraBoldItalic.ttf"
+    dest_file: "static/Newsreader16pt-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-MediumItalic.ttf"
+    dest_file: "static/Newsreader16pt-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-LightItalic.ttf"
+    dest_file: "static/Newsreader16pt-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-SemiBold.ttf"
+    dest_file: "static/Newsreader16pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-Italic.ttf"
+    dest_file: "static/Newsreader72pt-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-SemiBold.ttf"
+    dest_file: "static/Newsreader72pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-SemiBoldItalic.ttf"
+    dest_file: "static/Newsreader16pt-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-Italic.ttf"
+    dest_file: "static/Newsreader6pt-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-Regular.ttf"
+    dest_file: "static/Newsreader72pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-ExtraLightItalic.ttf"
+    dest_file: "static/Newsreader6pt-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-Italic.ttf"
+    dest_file: "static/Newsreader16pt-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-SemiBoldItalic.ttf"
+    dest_file: "static/Newsreader72pt-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-Regular.ttf"
+    dest_file: "static/Newsreader16pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-MediumItalic.ttf"
+    dest_file: "static/Newsreader6pt-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-LightItalic.ttf"
+    dest_file: "static/Newsreader72pt-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-Light.ttf"
+    dest_file: "static/Newsreader16pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-BoldItalic.ttf"
+    dest_file: "static/Newsreader16pt-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-Light.ttf"
+    dest_file: "static/Newsreader6pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-Medium.ttf"
+    dest_file: "static/Newsreader16pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-ExtraLight.ttf"
+    dest_file: "static/Newsreader16pt-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-Medium.ttf"
+    dest_file: "static/Newsreader72pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-Medium.ttf"
+    dest_file: "static/Newsreader6pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-MediumItalic.ttf"
+    dest_file: "static/Newsreader72pt-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-ExtraBold.ttf"
+    dest_file: "static/Newsreader6pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-LightItalic.ttf"
+    dest_file: "static/Newsreader6pt-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader16pt-ExtraBold.ttf"
+    dest_file: "static/Newsreader16pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-BoldItalic.ttf"
+    dest_file: "static/Newsreader72pt-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-Bold.ttf"
+    dest_file: "static/Newsreader72pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-ExtraLightItalic.ttf"
+    dest_file: "static/Newsreader72pt-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-ExtraLight.ttf"
+    dest_file: "static/Newsreader72pt-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-SemiBoldItalic.ttf"
+    dest_file: "static/Newsreader6pt-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-Light.ttf"
+    dest_file: "static/Newsreader72pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-BoldItalic.ttf"
+    dest_file: "static/Newsreader6pt-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-SemiBold.ttf"
+    dest_file: "static/Newsreader6pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-Regular.ttf"
+    dest_file: "static/Newsreader6pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader72pt-ExtraBold.ttf"
+    dest_file: "static/Newsreader72pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/static/ttf/Newsreader6pt-ExtraLight.ttf"
+    dest_file: "static/Newsreader6pt-ExtraLight.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/newsreader/upstream.yaml b/ofl/newsreader/upstream.yaml
deleted file mode 100644
index 298e20a7e26daae5081a984479ad08695f13a998..0000000000000000000000000000000000000000
--- a/ofl/newsreader/upstream.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/ttf/Newsreader-Italic[opsz,wght].ttf: Newsreader-Italic[opsz,wght].ttf
-  fonts/variable/ttf/Newsreader[opsz,wght].ttf: Newsreader[opsz,wght].ttf
-  fonts/static/ttf/Newsreader6pt-ExtraBoldItalic.ttf: static/Newsreader6pt-ExtraBoldItalic.ttf
-  fonts/static/ttf/Newsreader16pt-Bold.ttf: static/Newsreader16pt-Bold.ttf
-  fonts/static/ttf/Newsreader16pt-ExtraLightItalic.ttf: static/Newsreader16pt-ExtraLightItalic.ttf
-  fonts/static/ttf/Newsreader72pt-ExtraBoldItalic.ttf: static/Newsreader72pt-ExtraBoldItalic.ttf
-  fonts/static/ttf/Newsreader6pt-Bold.ttf: static/Newsreader6pt-Bold.ttf
-  fonts/static/ttf/Newsreader16pt-ExtraBoldItalic.ttf: static/Newsreader16pt-ExtraBoldItalic.ttf
-  fonts/static/ttf/Newsreader16pt-MediumItalic.ttf: static/Newsreader16pt-MediumItalic.ttf
-  fonts/static/ttf/Newsreader16pt-LightItalic.ttf: static/Newsreader16pt-LightItalic.ttf
-  fonts/static/ttf/Newsreader16pt-SemiBold.ttf: static/Newsreader16pt-SemiBold.ttf
-  fonts/static/ttf/Newsreader72pt-Italic.ttf: static/Newsreader72pt-Italic.ttf
-  fonts/static/ttf/Newsreader72pt-SemiBold.ttf: static/Newsreader72pt-SemiBold.ttf
-  fonts/static/ttf/Newsreader16pt-SemiBoldItalic.ttf: static/Newsreader16pt-SemiBoldItalic.ttf
-  fonts/static/ttf/Newsreader6pt-Italic.ttf: static/Newsreader6pt-Italic.ttf
-  fonts/static/ttf/Newsreader72pt-Regular.ttf: static/Newsreader72pt-Regular.ttf
-  fonts/static/ttf/Newsreader6pt-ExtraLightItalic.ttf: static/Newsreader6pt-ExtraLightItalic.ttf
-  fonts/static/ttf/Newsreader16pt-Italic.ttf: static/Newsreader16pt-Italic.ttf
-  fonts/static/ttf/Newsreader72pt-SemiBoldItalic.ttf: static/Newsreader72pt-SemiBoldItalic.ttf
-  fonts/static/ttf/Newsreader16pt-Regular.ttf: static/Newsreader16pt-Regular.ttf
-  fonts/static/ttf/Newsreader6pt-MediumItalic.ttf: static/Newsreader6pt-MediumItalic.ttf
-  fonts/static/ttf/Newsreader72pt-LightItalic.ttf: static/Newsreader72pt-LightItalic.ttf
-  fonts/static/ttf/Newsreader16pt-Light.ttf: static/Newsreader16pt-Light.ttf
-  fonts/static/ttf/Newsreader16pt-BoldItalic.ttf: static/Newsreader16pt-BoldItalic.ttf
-  fonts/static/ttf/Newsreader6pt-Light.ttf: static/Newsreader6pt-Light.ttf
-  fonts/static/ttf/Newsreader16pt-Medium.ttf: static/Newsreader16pt-Medium.ttf
-  fonts/static/ttf/Newsreader16pt-ExtraLight.ttf: static/Newsreader16pt-ExtraLight.ttf
-  fonts/static/ttf/Newsreader72pt-Medium.ttf: static/Newsreader72pt-Medium.ttf
-  fonts/static/ttf/Newsreader6pt-Medium.ttf: static/Newsreader6pt-Medium.ttf
-  fonts/static/ttf/Newsreader72pt-MediumItalic.ttf: static/Newsreader72pt-MediumItalic.ttf
-  fonts/static/ttf/Newsreader6pt-ExtraBold.ttf: static/Newsreader6pt-ExtraBold.ttf
-  fonts/static/ttf/Newsreader6pt-LightItalic.ttf: static/Newsreader6pt-LightItalic.ttf
-  fonts/static/ttf/Newsreader16pt-ExtraBold.ttf: static/Newsreader16pt-ExtraBold.ttf
-  fonts/static/ttf/Newsreader72pt-BoldItalic.ttf: static/Newsreader72pt-BoldItalic.ttf
-  fonts/static/ttf/Newsreader72pt-Bold.ttf: static/Newsreader72pt-Bold.ttf
-  fonts/static/ttf/Newsreader72pt-ExtraLightItalic.ttf: static/Newsreader72pt-ExtraLightItalic.ttf
-  fonts/static/ttf/Newsreader72pt-ExtraLight.ttf: static/Newsreader72pt-ExtraLight.ttf
-  fonts/static/ttf/Newsreader6pt-SemiBoldItalic.ttf: static/Newsreader6pt-SemiBoldItalic.ttf
-  fonts/static/ttf/Newsreader72pt-Light.ttf: static/Newsreader72pt-Light.ttf
-  fonts/static/ttf/Newsreader6pt-BoldItalic.ttf: static/Newsreader6pt-BoldItalic.ttf
-  fonts/static/ttf/Newsreader6pt-SemiBold.ttf: static/Newsreader6pt-SemiBold.ttf
-  fonts/static/ttf/Newsreader6pt-Regular.ttf: static/Newsreader6pt-Regular.ttf
-  fonts/static/ttf/Newsreader72pt-ExtraBold.ttf: static/Newsreader72pt-ExtraBold.ttf
-  fonts/static/ttf/Newsreader6pt-ExtraLight.ttf: static/Newsreader6pt-ExtraLight.ttf
-repository_url: https://github.com/productiontype/NewsReader.git
diff --git a/ofl/newtegomin/METADATA.pb b/ofl/newtegomin/METADATA.pb
index f616b98f9dfb7c349a28e8145652b03b4e522412..b5211ee555871be44436e53ad01410a353fa24d5 100644
--- a/ofl/newtegomin/METADATA.pb
+++ b/ofl/newtegomin/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/nagamaki008/NewTegomin"
+  files {
+    source_file: "fonts/ttf/NewTegomin-Regular.ttf"
+    dest_file: "NewTegomin-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/newtegomin/upstream.yaml b/ofl/newtegomin/upstream.yaml
deleted file mode 100644
index 35423130775c19b86eb9d0ccd79b792fac168c95..0000000000000000000000000000000000000000
--- a/ofl/newtegomin/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/NewTegomin-Regular.ttf: NewTegomin-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/nagamaki008/NewTegomin.git
diff --git a/ofl/nokora/METADATA.pb b/ofl/nokora/METADATA.pb
index be2c50f08a1e3e7c664918295520e97d43f99a2c..2f1a4dd178ef8788c2de542e94790272a203d612 100644
--- a/ofl/nokora/METADATA.pb
+++ b/ofl/nokora/METADATA.pb
@@ -51,3 +51,31 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Nokora"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Nokora-Thin.ttf"
+    dest_file: "Nokora-Thin.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Nokora-Light.ttf"
+    dest_file: "Nokora-Light.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Nokora-Regular.ttf"
+    dest_file: "Nokora-Regular.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Nokora-Bold.ttf"
+    dest_file: "Nokora-Bold.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Nokora-Black.ttf"
+    dest_file: "Nokora-Black.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/nokora/upstream.yaml b/ofl/nokora/upstream.yaml
deleted file mode 100644
index ec0cbe3972a14bff8b2b11e9973fc387a6ef1eb3..0000000000000000000000000000000000000000
--- a/ofl/nokora/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-repository_url: https://github.com/danhhong/Nokora.git
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Nokora-Thin.ttf: Nokora-Thin.ttf
-  Release/ttf/Nokora-Light.ttf: Nokora-Light.ttf
-  Release/ttf/Nokora-Regular.ttf: Nokora-Regular.ttf
-  Release/ttf/Nokora-Bold.ttf: Nokora-Bold.ttf
-  Release/ttf/Nokora-Black.ttf: Nokora-Black.ttf
diff --git a/ofl/norican/METADATA.pb b/ofl/norican/METADATA.pb
index 239158580c3d737ffbb1f95686fcd9a8de0321f4..d2d750d56967d7328614de4cb8c9532dc5c7f451 100644
--- a/ofl/norican/METADATA.pb
+++ b/ofl/norican/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/NoricanFont"
   commit: "c8f871d4dd2a00f17ba95783a3bd41c296188faf"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Norican-Regular.ttf"
+    dest_file: "Norican-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/norican/upstream.yaml b/ofl/norican/upstream.yaml
deleted file mode 100644
index 92d1a1083d95000cf71e8c6e3437c0527ac5eb1d..0000000000000000000000000000000000000000
--- a/ofl/norican/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Norican-Regular.ttf: Norican-Regular.ttf
-archive:
diff --git a/ofl/notocoloremoji/METADATA.pb b/ofl/notocoloremoji/METADATA.pb
index db79be13ba4c6f436348da1ad908d98818873b3a..4149ef0c88df1c0fd445a3ce5a6c69642b1206bf 100644
--- a/ofl/notocoloremoji/METADATA.pb
+++ b/ofl/notocoloremoji/METADATA.pb
@@ -14,6 +14,15 @@ fonts {
 }
 subsets: "menu"
 subsets: "emoji"
+source {
+  repository_url: ""
+  archive_url: "https://github.com/googlefonts/noto-emoji/archive/refs/heads/main.zip"
+  files {
+    source_file: "noto-emoji-main/fonts/Noto-COLRv1.ttf"
+    dest_file: "NotoColorEmoji-Regular.ttf"
+  }
+  branch: "main"
+}
 is_noto: true
 sample_text {
   masthead_full: "🎶🎷🐛"
diff --git a/ofl/notocoloremoji/upstream.yaml b/ofl/notocoloremoji/upstream.yaml
deleted file mode 100644
index 0c818740eee3abf329c0ad02a34e7cfb8e8a20c9..0000000000000000000000000000000000000000
--- a/ofl/notocoloremoji/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: main
-archive: https://github.com/googlefonts/noto-emoji/archive/refs/heads/main.zip
-files:
-  noto-emoji-main/fonts/Noto-COLRv1.ttf: NotoColorEmoji-Regular.ttf
diff --git a/ofl/notoemoji/METADATA.pb b/ofl/notoemoji/METADATA.pb
index 4a750572dfd19cf388dd518b45f8486dc99a08b8..48f9e655e8d72c9df32f6cca7a785893c89b1c59 100644
--- a/ofl/notoemoji/METADATA.pb
+++ b/ofl/notoemoji/METADATA.pb
@@ -14,12 +14,21 @@ fonts {
 }
 subsets: "menu"
 subsets: "emoji"
-is_noto: true
 axes {
   tag: "wght"
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: ""
+  archive_url: "https://github.com/googlefonts/emoji-bw/releases/download/v3.000/NotoEmoji.wght.ttf.zip"
+  files {
+    source_file: "NotoEmoji[wght].ttf"
+    dest_file: "NotoEmoji[wght].ttf"
+  }
+  branch: "main"
+}
+is_noto: true
 sample_text {
   masthead_full: "🎶🎷🐛"
   masthead_partial: "🍪"
diff --git a/ofl/notoemoji/upstream.yaml b/ofl/notoemoji/upstream.yaml
deleted file mode 100644
index 41fb9af4bb3d05fa51a9ca2819fd1fbaa4ce897d..0000000000000000000000000000000000000000
--- a/ofl/notoemoji/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: main
-archive: https://github.com/googlefonts/emoji-bw/releases/download/v3.000/NotoEmoji.wght.ttf.zip
-files:
-  NotoEmoji[wght].ttf: NotoEmoji[wght].ttf
diff --git a/ofl/notokufiarabic/METADATA.pb b/ofl/notokufiarabic/METADATA.pb
index d12579f2c8a352dbd969e979ccaf492de49eed92..e60ab056e01e026e58d1e1691302e081ebd603a3 100644
--- a/ofl/notokufiarabic/METADATA.pb
+++ b/ofl/notokufiarabic/METADATA.pb
@@ -24,8 +24,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/arabic.git"
+  repository_url: "https://github.com/notofonts/arabic"
   archive_url: "https://github.com/notofonts/arabic/releases/download/NotoKufiArabic-v2.109/NotoKufiArabic-v2.109.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoKufiArabic/googlefonts/variable/NotoKufiArabic[wght].ttf"
+    dest_file: "NotoKufiArabic[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aeb_Arab"  # Tunisian Arabic
diff --git a/ofl/notokufiarabic/upstream.yaml b/ofl/notokufiarabic/upstream.yaml
deleted file mode 100644
index b203ce818d8762260b5d458404db32d393ffd477..0000000000000000000000000000000000000000
--- a/ofl/notokufiarabic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/arabic/releases/download/NotoKufiArabic-v2.109/NotoKufiArabic-v2.109.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoKufiArabic/googlefonts/variable/NotoKufiArabic[wght].ttf: NotoKufiArabic[wght].ttf
diff --git a/ofl/notomusic/METADATA.pb b/ofl/notomusic/METADATA.pb
index d4b6ea6fde2e2a11ae5b1be3d9f62ad065d745eb..150e7986718641a98f93ca6bf7698da50f82b76e 100644
--- a/ofl/notomusic/METADATA.pb
+++ b/ofl/notomusic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "music"
 source {
-  repository_url: "https://github.com/notofonts/music.git"
+  repository_url: "https://github.com/notofonts/music"
   archive_url: "https://github.com/notofonts/music/releases/download/NotoMusic-v2.003/NotoMusic-v2.003.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoMusic/googlefonts/ttf/NotoMusic-Regular.ttf"
+    dest_file: "NotoMusic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notomusic/upstream.yaml b/ofl/notomusic/upstream.yaml
deleted file mode 100644
index ee33803f3eb09aacd977204689fabb62b65def2c..0000000000000000000000000000000000000000
--- a/ofl/notomusic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/music/releases/download/NotoMusic-v2.003/NotoMusic-v2.003.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoMusic/googlefonts/ttf/NotoMusic-Regular.ttf: NotoMusic-Regular.ttf
diff --git a/ofl/notonaskharabic/METADATA.pb b/ofl/notonaskharabic/METADATA.pb
index 71790bcf924a7ca5f562a2786f8179415ed1d8c3..eb9c559aa4197d8c5ab591a5b91ef6948335c21f 100644
--- a/ofl/notonaskharabic/METADATA.pb
+++ b/ofl/notonaskharabic/METADATA.pb
@@ -24,8 +24,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/arabic.git"
+  repository_url: "https://github.com/notofonts/arabic"
   archive_url: "https://github.com/notofonts/arabic/releases/download/NotoNaskhArabic-v2.018/NotoNaskhArabic-v2.018.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoNaskhArabic/googlefonts/variable/NotoNaskhArabic[wght].ttf"
+    dest_file: "NotoNaskhArabic[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aeb_Arab"  # Tunisian Arabic
@@ -94,7 +111,7 @@ languages: "shi_Arab"  # Tachelhit
 languages: "skr_Arab"  # Saraiki
 languages: "so_Arab"  # Somali, Arabic
 languages: "sus_Arab"  # Susu, Arabic
-languages: "swb_Arab"  # Comorian
+languages: "swb_Arab"  # Maore Comorian, Arabic
 languages: "tg_Arab"  # Tajik (Arabic)
 languages: "tk_Arab"  # Turkmen
 languages: "tly_Arab"  # Talysh
diff --git a/ofl/notonaskharabic/upstream.yaml b/ofl/notonaskharabic/upstream.yaml
deleted file mode 100644
index 3020cebfb6524187c273dd7d994801b35500204a..0000000000000000000000000000000000000000
--- a/ofl/notonaskharabic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/arabic/releases/download/NotoNaskhArabic-v2.018/NotoNaskhArabic-v2.018.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoNaskhArabic/googlefonts/variable/NotoNaskhArabic[wght].ttf: NotoNaskhArabic[wght].ttf
diff --git a/ofl/notonastaliqurdu/METADATA.pb b/ofl/notonastaliqurdu/METADATA.pb
index e39d96c0383c4d8a52d0747467968790caf046bf..aede9ea4c549826ec30934cee2c640b7d9eeaf76 100644
--- a/ofl/notonastaliqurdu/METADATA.pb
+++ b/ofl/notonastaliqurdu/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/nastaliq.git"
+  repository_url: "https://github.com/notofonts/nastaliq"
   archive_url: "https://github.com/notofonts/nastaliq/releases/download/NotoNastaliqUrdu-v3.009/NotoNastaliqUrdu-v3.009.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoNastaliqUrdu/googlefonts/variable/NotoNastaliqUrdu[wght].ttf"
+    dest_file: "NotoNastaliqUrdu[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ur_Arab"  # Urdu
diff --git a/ofl/notonastaliqurdu/upstream.yaml b/ofl/notonastaliqurdu/upstream.yaml
deleted file mode 100644
index 766e1ddf056983bebe9893ce0e1c5a595a9fa339..0000000000000000000000000000000000000000
--- a/ofl/notonastaliqurdu/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/nastaliq/releases/download/NotoNastaliqUrdu-v3.009/NotoNastaliqUrdu-v3.009.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoNastaliqUrdu/googlefonts/variable/NotoNastaliqUrdu[wght].ttf: NotoNastaliqUrdu[wght].ttf
diff --git a/ofl/notorashihebrew/METADATA.pb b/ofl/notorashihebrew/METADATA.pb
index 8d2173c43531e0f5effb6ce85cfef14b4a401bdf..bac18749a9af5add41452ca0ac955de47ebdf4d6 100644
--- a/ofl/notorashihebrew/METADATA.pb
+++ b/ofl/notorashihebrew/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/hebrew.git"
+  repository_url: "https://github.com/notofonts/hebrew"
   archive_url: "https://github.com/notofonts/hebrew/releases/download/NotoRashiHebrew-v1.006/NotoRashiHebrew-v1.006.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoRashiHebrew/googlefonts/variable-ttf/NotoRashiHebrew[wght].ttf"
+    dest_file: "NotoRashiHebrew[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "he_Hebr"  # Hebrew
diff --git a/ofl/notorashihebrew/upstream.yaml b/ofl/notorashihebrew/upstream.yaml
deleted file mode 100644
index 0c686ed8ef26071d718e8ca311ecc28991eb65dc..0000000000000000000000000000000000000000
--- a/ofl/notorashihebrew/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/hebrew/releases/download/NotoRashiHebrew-v1.006/NotoRashiHebrew-v1.006.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoRashiHebrew/googlefonts/variable-ttf/NotoRashiHebrew[wght].ttf: NotoRashiHebrew[wght].ttf
diff --git a/ofl/notosans/METADATA.pb b/ofl/notosans/METADATA.pb
index 2a14f4154fcd73e652169cc3de886dd6570ddcc0..4d0ece7b772ddf364643f2e2d7de484b7b83ac75 100644
--- a/ofl/notosans/METADATA.pb
+++ b/ofl/notosans/METADATA.pb
@@ -41,8 +41,29 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/latin-greek-cyrillic.git"
+  repository_url: "https://github.com/notofonts/latin-greek-cyrillic"
   archive_url: "https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSans-v2.013/NotoSans-v2.013.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSans/googlefonts/variable/NotoSans[wdth,wght].ttf"
+    dest_file: "NotoSans[wdth,wght].ttf"
+  }
+  files {
+    source_file: "NotoSans/googlefonts/variable/NotoSans-Italic[wdth,wght].ttf"
+    dest_file: "NotoSans-Italic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aa_Latn"  # Afar
@@ -54,7 +75,7 @@ languages: "acf_Latn"  # Saint Lucian Creole French, Latin
 languages: "ach_Latn"  # Acoli
 languages: "acu_Latn"  # Achuar-Shiwiar
 languages: "ada_Latn"  # Adangme
-languages: "adl_Latn"  # Galo, Latin
+languages: "adl_Latn"
 languages: "ady_Cyrl"  # Adyghe
 languages: "af_Latn"  # Afrikaans
 languages: "agq_Latn"  # Aghem
@@ -63,7 +84,7 @@ languages: "aii_Cyrl"  # Assyrian Neo-Aramaic, Cyrillic
 languages: "aii_Latn"  # Assyrian Neo-Aramaic, Latin
 languages: "ain_Latn"  # Ainu, Latin
 languages: "ajg_Latn"  # Aja
-languages: "ak_Latn"  # Akan
+languages: "ak_Latn"
 languages: "akz_Latn"  # Alabama
 languages: "ale_Latn"  # Aleut
 languages: "aln_Latn"  # Gheg Albanian
@@ -152,7 +173,7 @@ languages: "bug_Latn"  # Buginese
 languages: "bum_Latn"  # Bulu
 languages: "bvb_Latn"  # Bube
 languages: "bvi_Latn"  # Belanda Viri, Latin
-languages: "bwy_Latn"  # Cwi Bwamu, Latin
+languages: "bwy_Latn"
 languages: "byh_Deva"  # Bhujel, Devanagari
 languages: "byv_Latn"  # Medumba
 languages: "bze_Latn"  # Jenaama Bozo
@@ -478,7 +499,7 @@ languages: "lkt_Latn"  # Lakota
 languages: "lld_Latn"  # Ladin
 languages: "lmo_Latn"  # Lombard
 languages: "ln_Latn"  # Lingala
-languages: "lns_Latn"  # Lamnso'
+languages: "lns_Latn"  # Lamnso’
 languages: "lob_Latn"  # Lobi
 languages: "lol_Latn"  # Mongo
 languages: "lot_Latn"  # Otuho
@@ -760,7 +781,7 @@ languages: "suk_Latn"  # Sukuma
 languages: "sus_Latn"  # Susu
 languages: "sv_Latn"  # Swedish
 languages: "sw_Latn"  # Swahili
-languages: "swb_Latn"  # Comorian, Latin
+languages: "swb_Latn"  # Maore Comorian, Latin
 languages: "swg_Latn"  # Swabian
 languages: "swv_Deva"  # Shekhawati
 languages: "sxn_Latn"  # Sangir
diff --git a/ofl/notosans/upstream.yaml b/ofl/notosans/upstream.yaml
deleted file mode 100644
index d6eabc82ae8371d5c3214d377f5c72ffb265e0c7..0000000000000000000000000000000000000000
--- a/ofl/notosans/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSans-v2.013/NotoSans-v2.013.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSans/googlefonts/variable/NotoSans[wdth,wght].ttf: NotoSans[wdth,wght].ttf
-  NotoSans/googlefonts/variable/NotoSans-Italic[wdth,wght].ttf: NotoSans-Italic[wdth,wght].ttf
diff --git a/ofl/notosansadlam/METADATA.pb b/ofl/notosansadlam/METADATA.pb
index 9087cc0bc85414f2258025c9a28a2e000d3e23c0..28b315281eb6e8aa9289ed3affe9c011cfb1fc36 100644
--- a/ofl/notosansadlam/METADATA.pb
+++ b/ofl/notosansadlam/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/adlam.git"
+  repository_url: "https://github.com/notofonts/adlam"
   archive_url: "https://github.com/notofonts/adlam/releases/download/NotoSansAdlam-v3.001/NotoSansAdlam-v3.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansAdlam/googlefonts/variable-ttf/NotoSansAdlam[wght].ttf"
+    dest_file: "NotoSansAdlam[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ff_Adlm"  # Fulah (Adlam)
diff --git a/ofl/notosansadlam/upstream.yaml b/ofl/notosansadlam/upstream.yaml
deleted file mode 100644
index 5bc9ccfe6b5bf7d1f780a5d6aa15c8bd92460394..0000000000000000000000000000000000000000
--- a/ofl/notosansadlam/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/adlam/releases/download/NotoSansAdlam-v3.001/NotoSansAdlam-v3.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansAdlam/googlefonts/variable-ttf/NotoSansAdlam[wght].ttf: NotoSansAdlam[wght].ttf
diff --git a/ofl/notosansadlamunjoined/METADATA.pb b/ofl/notosansadlamunjoined/METADATA.pb
index 80c338ffd0246972e85cc7038ebab86e108c94e9..8ba4be0ecdd473d39df34aad0cbe98e76af9ef84 100644
--- a/ofl/notosansadlamunjoined/METADATA.pb
+++ b/ofl/notosansadlamunjoined/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/adlam.git"
+  repository_url: "https://github.com/notofonts/adlam"
   archive_url: "https://github.com/notofonts/adlam/releases/download/NotoSansAdlamUnjoined-v3.001/NotoSansAdlamUnjoined-v3.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansAdlamUnjoined/googlefonts/variable-ttf/NotoSansAdlamUnjoined[wght].ttf"
+    dest_file: "NotoSansAdlamUnjoined[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ff_Adlm"  # Fulah (Adlam)
diff --git a/ofl/notosansadlamunjoined/upstream.yaml b/ofl/notosansadlamunjoined/upstream.yaml
deleted file mode 100644
index 69d135c7068aa81f91eae584f6c65f89587c5281..0000000000000000000000000000000000000000
--- a/ofl/notosansadlamunjoined/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/adlam/releases/download/NotoSansAdlamUnjoined-v3.001/NotoSansAdlamUnjoined-v3.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansAdlamUnjoined/googlefonts/variable-ttf/NotoSansAdlamUnjoined[wght].ttf: NotoSansAdlamUnjoined[wght].ttf
diff --git a/ofl/notosansanatolianhieroglyphs/METADATA.pb b/ofl/notosansanatolianhieroglyphs/METADATA.pb
index eb198569ad06811c89ee4f22222b3c2d00670652..ffc181c9c497a2c15a02039943f38e03ede56599 100644
--- a/ofl/notosansanatolianhieroglyphs/METADATA.pb
+++ b/ofl/notosansanatolianhieroglyphs/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/anatolian-hieroglyphs.git"
+  repository_url: "https://github.com/notofonts/anatolian-hieroglyphs"
   archive_url: "https://github.com/notofonts/anatolian-hieroglyphs/releases/download/NotoSansAnatolianHieroglyphs-v2.001/NotoSansAnatolianHieroglyphs-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansAnatolianHieroglyphs/googlefonts/ttf/NotoSansAnatolianHieroglyphs-Regular.ttf"
+    dest_file: "NotoSansAnatolianHieroglyphs-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hlu_Hluw"  # Hieroglyphic Luwian
diff --git a/ofl/notosansanatolianhieroglyphs/upstream.yaml b/ofl/notosansanatolianhieroglyphs/upstream.yaml
deleted file mode 100644
index 15f6d6c7db545e337e743d5ae52852e47dd76a4b..0000000000000000000000000000000000000000
--- a/ofl/notosansanatolianhieroglyphs/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/anatolian-hieroglyphs/releases/download/NotoSansAnatolianHieroglyphs-v2.001/NotoSansAnatolianHieroglyphs-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansAnatolianHieroglyphs/googlefonts/ttf/NotoSansAnatolianHieroglyphs-Regular.ttf: NotoSansAnatolianHieroglyphs-Regular.ttf
diff --git a/ofl/notosansarabic/METADATA.pb b/ofl/notosansarabic/METADATA.pb
index 295529af901f6ea6e0bfd5ac06881be6532ea040..67bd0e6814e954a36484223b39ef8c7850cf7465 100644
--- a/ofl/notosansarabic/METADATA.pb
+++ b/ofl/notosansarabic/METADATA.pb
@@ -29,8 +29,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/arabic.git"
+  repository_url: "https://github.com/notofonts/arabic"
   archive_url: "https://github.com/notofonts/arabic/releases/download/NotoSansArabic-v2.012/NotoSansArabic-v2.012.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansArabic/googlefonts/variable/NotoSansArabic[wdth,wght].ttf"
+    dest_file: "NotoSansArabic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aeb_Arab"  # Tunisian Arabic
@@ -99,7 +116,7 @@ languages: "shi_Arab"  # Tachelhit
 languages: "skr_Arab"  # Saraiki
 languages: "so_Arab"  # Somali, Arabic
 languages: "sus_Arab"  # Susu, Arabic
-languages: "swb_Arab"  # Comorian
+languages: "swb_Arab"  # Maore Comorian, Arabic
 languages: "tg_Arab"  # Tajik (Arabic)
 languages: "tk_Arab"  # Turkmen
 languages: "tly_Arab"  # Talysh
diff --git a/ofl/notosansarabic/upstream.yaml b/ofl/notosansarabic/upstream.yaml
deleted file mode 100644
index 64bde2fb921ae591c1a3354e903a3e10efb6d866..0000000000000000000000000000000000000000
--- a/ofl/notosansarabic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/arabic/releases/download/NotoSansArabic-v2.012/NotoSansArabic-v2.012.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansArabic/googlefonts/variable/NotoSansArabic[wdth,wght].ttf: NotoSansArabic[wdth,wght].ttf
diff --git a/ofl/notosansarmenian/METADATA.pb b/ofl/notosansarmenian/METADATA.pb
index 2998f3c2af22f49d3956f7aa36d474bf7421bb56..af06a9c4c9f447e463bac1e774b1b13ea9d882de 100644
--- a/ofl/notosansarmenian/METADATA.pb
+++ b/ofl/notosansarmenian/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/armenian.git"
+  repository_url: "https://github.com/notofonts/armenian"
   archive_url: "https://github.com/notofonts/armenian/releases/download/NotoSansArmenian-v2.008/NotoSansArmenian-v2.008.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansArmenian/googlefonts/variable/NotoSansArmenian[wdth,wght].ttf"
+    dest_file: "NotoSansArmenian[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hy_Armn"  # Armenian
diff --git a/ofl/notosansarmenian/upstream.yaml b/ofl/notosansarmenian/upstream.yaml
deleted file mode 100644
index e02e7b87b443877a775c5bdc6830e5e85cd3840c..0000000000000000000000000000000000000000
--- a/ofl/notosansarmenian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/armenian/releases/download/NotoSansArmenian-v2.008/NotoSansArmenian-v2.008.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansArmenian/googlefonts/variable/NotoSansArmenian[wdth,wght].ttf: NotoSansArmenian[wdth,wght].ttf
diff --git a/ofl/notosansavestan/METADATA.pb b/ofl/notosansavestan/METADATA.pb
index 79b90dbd4809b781c274f7851aae2e29a0e4c8d8..c590bcd51f07c2a86d67fe206feb37683c745cf9 100644
--- a/ofl/notosansavestan/METADATA.pb
+++ b/ofl/notosansavestan/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/avestan.git"
+  repository_url: "https://github.com/notofonts/avestan"
   archive_url: "https://github.com/notofonts/avestan/releases/download/NotoSansAvestan-v2.003/NotoSansAvestan-v2.003.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansAvestan/googlefonts/ttf/NotoSansAvestan-Regular.ttf"
+    dest_file: "NotoSansAvestan-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ae_Avst"  # Avestan
diff --git a/ofl/notosansavestan/upstream.yaml b/ofl/notosansavestan/upstream.yaml
deleted file mode 100644
index 1234433f2bfbbfe40f51560c4da50c551f71fb95..0000000000000000000000000000000000000000
--- a/ofl/notosansavestan/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/avestan/releases/download/NotoSansAvestan-v2.003/NotoSansAvestan-v2.003.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansAvestan/googlefonts/ttf/NotoSansAvestan-Regular.ttf: NotoSansAvestan-Regular.ttf
diff --git a/ofl/notosansbalinese/METADATA.pb b/ofl/notosansbalinese/METADATA.pb
index 7e6893f48267985e4fba4bf7b220347f774aa961..f2c896cb4644947eb92391abd95fd51ea1118f80 100644
--- a/ofl/notosansbalinese/METADATA.pb
+++ b/ofl/notosansbalinese/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/balinese.git"
+  repository_url: "https://github.com/notofonts/balinese"
   archive_url: "https://github.com/notofonts/balinese/releases/download/NotoSansBalinese-v2.003/NotoSansBalinese-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansBalinese/googlefonts/variable-ttf/NotoSansBalinese[wght].ttf"
+    dest_file: "NotoSansBalinese[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ban_Bali"  # Balinese, Balinese
diff --git a/ofl/notosansbalinese/upstream.yaml b/ofl/notosansbalinese/upstream.yaml
deleted file mode 100644
index 3aea52c90384bc3b21446abdcbd3e0d4c54af81f..0000000000000000000000000000000000000000
--- a/ofl/notosansbalinese/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/balinese/releases/download/NotoSansBalinese-v2.003/NotoSansBalinese-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansBalinese/googlefonts/variable-ttf/NotoSansBalinese[wght].ttf: NotoSansBalinese[wght].ttf
diff --git a/ofl/notosansbamum/METADATA.pb b/ofl/notosansbamum/METADATA.pb
index ac9414a394fcd5c02a240b007325a8604cc7d5fa..1e478aab93a1fb6d64379ef5454931ae289f6750 100644
--- a/ofl/notosansbamum/METADATA.pb
+++ b/ofl/notosansbamum/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/bamum.git"
+  repository_url: "https://github.com/notofonts/bamum"
   archive_url: "https://github.com/notofonts/bamum/releases/download/NotoSansBamum-v2.002/NotoSansBamum-v2.002.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansBamum/googlefonts/variable-ttf/NotoSansBamum[wght].ttf"
+    dest_file: "NotoSansBamum[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bax_Bamu"  # Bamun
diff --git a/ofl/notosansbamum/upstream.yaml b/ofl/notosansbamum/upstream.yaml
deleted file mode 100644
index b5ea960b3aa2e26e54ebf50cea0e1eb0520ab389..0000000000000000000000000000000000000000
--- a/ofl/notosansbamum/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/bamum/releases/download/NotoSansBamum-v2.002/NotoSansBamum-v2.002.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansBamum/googlefonts/variable-ttf/NotoSansBamum[wght].ttf: NotoSansBamum[wght].ttf
diff --git a/ofl/notosansbassavah/METADATA.pb b/ofl/notosansbassavah/METADATA.pb
index d9632b6f973b5469c502d01748fa468b53a45858..ceb6df325e91d8fc7ff7ad23605ec67ef0a4b073 100644
--- a/ofl/notosansbassavah/METADATA.pb
+++ b/ofl/notosansbassavah/METADATA.pb
@@ -22,8 +22,21 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/bassa-vah.git"
+  repository_url: "https://github.com/notofonts/bassa-vah"
   archive_url: "https://github.com/notofonts/bassa-vah/releases/download/NotoSansBassaVah-v2.002/NotoSansBassaVah-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansBassaVah/googlefonts/variable-ttf/NotoSansBassaVah[wght].ttf"
+    dest_file: "NotoSansBassaVah[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bsq_Bass"  # Bassa
diff --git a/ofl/notosansbassavah/upstream.yaml b/ofl/notosansbassavah/upstream.yaml
deleted file mode 100644
index 425be3a5dc5d88700a64e37f2b98e5463ae4e6f9..0000000000000000000000000000000000000000
--- a/ofl/notosansbassavah/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/bassa-vah/releases/download/NotoSansBassaVah-v2.002/NotoSansBassaVah-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansBassaVah/googlefonts/variable-ttf/NotoSansBassaVah[wght].ttf: NotoSansBassaVah[wght].ttf
diff --git a/ofl/notosansbatak/METADATA.pb b/ofl/notosansbatak/METADATA.pb
index b0a1ca44456f4c623d5e14b198ba5061b7f2c292..a80ec04b4180092b15bbad5f058e7da2b0814be7 100644
--- a/ofl/notosansbatak/METADATA.pb
+++ b/ofl/notosansbatak/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/batak.git"
+  repository_url: "https://github.com/notofonts/batak"
   archive_url: "https://github.com/notofonts/batak/releases/download/NotoSansBatak-v2.003/NotoSansBatak-v2.003.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansBatak/googlefonts/ttf/NotoSansBatak-Regular.ttf"
+    dest_file: "NotoSansBatak-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bbc_Batk"  # Batak Toba, Batak
diff --git a/ofl/notosansbatak/upstream.yaml b/ofl/notosansbatak/upstream.yaml
deleted file mode 100644
index 4c5df662e1a97683dcd749ddf35bf54c856107e0..0000000000000000000000000000000000000000
--- a/ofl/notosansbatak/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/batak/releases/download/NotoSansBatak-v2.003/NotoSansBatak-v2.003.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansBatak/googlefonts/ttf/NotoSansBatak-Regular.ttf: NotoSansBatak-Regular.ttf
diff --git a/ofl/notosansbengali/METADATA.pb b/ofl/notosansbengali/METADATA.pb
index 42dbc1d30f5de83958813af3485d64eb5b05a9ef..120604ca25ebb3af967b66476ef0600999a3b401 100644
--- a/ofl/notosansbengali/METADATA.pb
+++ b/ofl/notosansbengali/METADATA.pb
@@ -27,8 +27,17 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/bengali.git"
+  repository_url: "https://github.com/notofonts/bengali"
   archive_url: "https://github.com/notofonts/bengali/releases/download/NotoSansBengali-v2.003/NotoSansBengali-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansBengali/googlefonts/variable-ttf/NotoSansBengali[wdth,wght].ttf"
+    dest_file: "NotoSansBengali[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "as_Beng"  # Assamese
diff --git a/ofl/notosansbengali/upstream.yaml b/ofl/notosansbengali/upstream.yaml
deleted file mode 100644
index 27081c48e5cce63daba5be2a3d767d3c692114f0..0000000000000000000000000000000000000000
--- a/ofl/notosansbengali/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/bengali/releases/download/NotoSansBengali-v2.003/NotoSansBengali-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansBengali/googlefonts/variable-ttf/NotoSansBengali[wdth,wght].ttf: NotoSansBengali[wdth,wght].ttf
diff --git a/ofl/notosansbhaiksuki/METADATA.pb b/ofl/notosansbhaiksuki/METADATA.pb
index 3aacd63a7ae40e5a59671b982f52e4bd936d97e9..f6f1ce7bc42f973fc1dd69d647e4a72e6c6cee8b 100644
--- a/ofl/notosansbhaiksuki/METADATA.pb
+++ b/ofl/notosansbhaiksuki/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/bhaiksuki.git"
+  repository_url: "https://github.com/notofonts/bhaiksuki"
   archive_url: "https://github.com/notofonts/bhaiksuki/releases/download/NotoSansBhaiksuki-v2.002/NotoSansBhaiksuki-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansBhaiksuki/googlefonts/ttf/NotoSansBhaiksuki-Regular.ttf"
+    dest_file: "NotoSansBhaiksuki-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Bhks"  # Sanskrit, Bhaiksuki
diff --git a/ofl/notosansbhaiksuki/upstream.yaml b/ofl/notosansbhaiksuki/upstream.yaml
deleted file mode 100644
index b1d6988645ae853ec938ba40fd344d072918e6ab..0000000000000000000000000000000000000000
--- a/ofl/notosansbhaiksuki/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/bhaiksuki/releases/download/NotoSansBhaiksuki-v2.002/NotoSansBhaiksuki-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansBhaiksuki/googlefonts/ttf/NotoSansBhaiksuki-Regular.ttf: NotoSansBhaiksuki-Regular.ttf
diff --git a/ofl/notosansbrahmi/METADATA.pb b/ofl/notosansbrahmi/METADATA.pb
index 7789f2d6c9bd3c42327445ae422d1673a2f391b0..3a1684bc08c83a76e0fb17b74f50b2361da09657 100644
--- a/ofl/notosansbrahmi/METADATA.pb
+++ b/ofl/notosansbrahmi/METADATA.pb
@@ -19,8 +19,25 @@ subsets: "math"
 subsets: "menu"
 subsets: "symbols"
 source {
-  repository_url: "https://github.com/notofonts/brahmi.git"
+  repository_url: "https://github.com/notofonts/brahmi"
   archive_url: "https://github.com/notofonts/brahmi/releases/download/NotoSansBrahmi-v2.004/NotoSansBrahmi-v2.004.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansBrahmi/googlefonts/ttf/NotoSansBrahmi-Regular.ttf"
+    dest_file: "NotoSansBrahmi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Brah"  # Assyrian Neo-Aramaic, Brahmi
diff --git a/ofl/notosansbrahmi/upstream.yaml b/ofl/notosansbrahmi/upstream.yaml
deleted file mode 100644
index 7d9c662aa5146a5873c1c68b27bcf921a53acada..0000000000000000000000000000000000000000
--- a/ofl/notosansbrahmi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/brahmi/releases/download/NotoSansBrahmi-v2.004/NotoSansBrahmi-v2.004.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansBrahmi/googlefonts/ttf/NotoSansBrahmi-Regular.ttf: NotoSansBrahmi-Regular.ttf
diff --git a/ofl/notosansbuginese/METADATA.pb b/ofl/notosansbuginese/METADATA.pb
index c5c69bfc64af15aef215ce602f8ebae75d4b436e..e731ab35d463537a115266b05e40c4b9114921f1 100644
--- a/ofl/notosansbuginese/METADATA.pb
+++ b/ofl/notosansbuginese/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/buginese.git"
+  repository_url: "https://github.com/notofonts/buginese"
   archive_url: "https://github.com/notofonts/buginese/releases/download/NotoSansBuginese-v2.002/NotoSansBuginese-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansBuginese/googlefonts/ttf/NotoSansBuginese-Regular.ttf"
+    dest_file: "NotoSansBuginese-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bug_Bugi"  # Buginese, Buginese
diff --git a/ofl/notosansbuginese/upstream.yaml b/ofl/notosansbuginese/upstream.yaml
deleted file mode 100644
index 51895aaf358ef3ab878ed18df55e2522b4d0bd7c..0000000000000000000000000000000000000000
--- a/ofl/notosansbuginese/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/buginese/releases/download/NotoSansBuginese-v2.002/NotoSansBuginese-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansBuginese/googlefonts/ttf/NotoSansBuginese-Regular.ttf: NotoSansBuginese-Regular.ttf
diff --git a/ofl/notosansbuhid/METADATA.pb b/ofl/notosansbuhid/METADATA.pb
index 539a3d66051c14b4810fbe432ac9ea82b2ef1cd5..e42aaf8fafef9b37b7048df9918bd44c0dfaa9f0 100644
--- a/ofl/notosansbuhid/METADATA.pb
+++ b/ofl/notosansbuhid/METADATA.pb
@@ -17,8 +17,17 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/buhid.git"
+  repository_url: "https://github.com/notofonts/buhid"
   archive_url: "https://github.com/notofonts/buhid/releases/download/NotoSansBuhid-v2.001/NotoSansBuhid-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansBuhid/full/ttf/NotoSansBuhid-Regular.ttf"
+    dest_file: "NotoSansBuhid-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bku_Buhd"  # Buhid, Buhid
diff --git a/ofl/notosansbuhid/upstream.yaml b/ofl/notosansbuhid/upstream.yaml
deleted file mode 100644
index 3ad733aa7e123ce06db374a35f3edd8f67b2406b..0000000000000000000000000000000000000000
--- a/ofl/notosansbuhid/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/buhid/releases/download/NotoSansBuhid-v2.001/NotoSansBuhid-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansBuhid/full/ttf/NotoSansBuhid-Regular.ttf: NotoSansBuhid-Regular.ttf
diff --git a/ofl/notosanscanadianaboriginal/METADATA.pb b/ofl/notosanscanadianaboriginal/METADATA.pb
index a1549c9cd93f4deac1b353cd86f7e4a1801fff34..10a0abe0d173a71d46dc4e03596df8812399c240 100644
--- a/ofl/notosanscanadianaboriginal/METADATA.pb
+++ b/ofl/notosanscanadianaboriginal/METADATA.pb
@@ -24,8 +24,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/canadian-aboriginal.git"
+  repository_url: "https://github.com/notofonts/canadian-aboriginal"
   archive_url: "https://github.com/notofonts/canadian-aboriginal/releases/download/NotoSansCanadianAboriginal-v2.004/NotoSansCanadianAboriginal-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCanadianAboriginal/googlefonts/variable/NotoSansCanadianAboriginal[wght].ttf"
+    dest_file: "NotoSansCanadianAboriginal[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "chp_Cans"  # Chipewyan, Unified Canadian Aboriginal Syllabics
diff --git a/ofl/notosanscanadianaboriginal/upstream.yaml b/ofl/notosanscanadianaboriginal/upstream.yaml
deleted file mode 100644
index fed24c8e7e6725f8b0088c6192b4fe53638b76e5..0000000000000000000000000000000000000000
--- a/ofl/notosanscanadianaboriginal/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/canadian-aboriginal/releases/download/NotoSansCanadianAboriginal-v2.004/NotoSansCanadianAboriginal-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansCanadianAboriginal/googlefonts/variable/NotoSansCanadianAboriginal[wght].ttf: NotoSansCanadianAboriginal[wght].ttf
diff --git a/ofl/notosanscarian/METADATA.pb b/ofl/notosanscarian/METADATA.pb
index 581290dddc1f638bf73cac9fd1d6b64ffe901f9c..681ce38e8823309d16ab7aea8510b297195c9e4f 100644
--- a/ofl/notosanscarian/METADATA.pb
+++ b/ofl/notosanscarian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/carian.git"
+  repository_url: "https://github.com/notofonts/carian"
   archive_url: "https://github.com/notofonts/carian/releases/download/NotoSansCarian-v2.002/NotoSansCarian-v2.002.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCarian/googlefonts/ttf/NotoSansCarian-Regular.ttf"
+    dest_file: "NotoSansCarian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "xcr_Cari"  # Carian
diff --git a/ofl/notosanscarian/upstream.yaml b/ofl/notosanscarian/upstream.yaml
deleted file mode 100644
index 6b0d9caa95d48a17f1d576a22e7a55b6eae5e88f..0000000000000000000000000000000000000000
--- a/ofl/notosanscarian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/carian/releases/download/NotoSansCarian-v2.002/NotoSansCarian-v2.002.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansCarian/googlefonts/ttf/NotoSansCarian-Regular.ttf: NotoSansCarian-Regular.ttf
diff --git a/ofl/notosanscaucasianalbanian/METADATA.pb b/ofl/notosanscaucasianalbanian/METADATA.pb
index 664ce5157a245fdf186dbca92e0dc036fee63f16..dd3060b594147f9582f29daf82c1bcaf59a01465 100644
--- a/ofl/notosanscaucasianalbanian/METADATA.pb
+++ b/ofl/notosanscaucasianalbanian/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/caucasian-albanian.git"
+  repository_url: "https://github.com/notofonts/caucasian-albanian"
   archive_url: "https://github.com/notofonts/caucasian-albanian/releases/download/NotoSansCaucasianAlbanian-v2.005/NotoSansCaucasianAlbanian-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansCaucasianAlbanian/googlefonts/ttf/NotoSansCaucasianAlbanian-Regular.ttf"
+    dest_file: "NotoSansCaucasianAlbanian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "lez_Aghb"  # Lezghian, Caucasian Albanian
diff --git a/ofl/notosanscaucasianalbanian/upstream.yaml b/ofl/notosanscaucasianalbanian/upstream.yaml
deleted file mode 100644
index 2acc6b2282f0e56912f7c4b80bda183ad19f7ea3..0000000000000000000000000000000000000000
--- a/ofl/notosanscaucasianalbanian/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/caucasian-albanian/releases/download/NotoSansCaucasianAlbanian-v2.005/NotoSansCaucasianAlbanian-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansCaucasianAlbanian/googlefonts/ttf/NotoSansCaucasianAlbanian-Regular.ttf: NotoSansCaucasianAlbanian-Regular.ttf
diff --git a/ofl/notosanschakma/METADATA.pb b/ofl/notosanschakma/METADATA.pb
index d156e1ad89d7459389447aadc8859e61986055c3..d8d19271f3f8a47b16aa41838a40c1be38c09037 100644
--- a/ofl/notosanschakma/METADATA.pb
+++ b/ofl/notosanschakma/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/chakma.git"
+  repository_url: "https://github.com/notofonts/chakma"
   archive_url: "https://github.com/notofonts/chakma/releases/download/NotoSansChakma-v2.003/NotoSansChakma-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansChakma/googlefonts/ttf/NotoSansChakma-Regular.ttf"
+    dest_file: "NotoSansChakma-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ccp_Cakm"  # Chakma
diff --git a/ofl/notosanschakma/upstream.yaml b/ofl/notosanschakma/upstream.yaml
deleted file mode 100644
index 8aaa528fe4495881799d88acf7fe5bb00f4a8a74..0000000000000000000000000000000000000000
--- a/ofl/notosanschakma/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/chakma/releases/download/NotoSansChakma-v2.003/NotoSansChakma-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansChakma/googlefonts/ttf/NotoSansChakma-Regular.ttf: NotoSansChakma-Regular.ttf
diff --git a/ofl/notosanscham/METADATA.pb b/ofl/notosanscham/METADATA.pb
index cc67c6f7bc35b380938551f5d38f3bde98849e67..188e7888b5e1ec1dc7335043e5c8d78aa39308a9 100644
--- a/ofl/notosanscham/METADATA.pb
+++ b/ofl/notosanscham/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/cham.git"
+  repository_url: "https://github.com/notofonts/cham"
   archive_url: "https://github.com/notofonts/cham/releases/download/NotoSansCham-v2.004/NotoSansCham-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCham/googlefonts/variable/NotoSansCham[wght].ttf"
+    dest_file: "NotoSansCham[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "cja_Cham"  # Western Cham, Cham
diff --git a/ofl/notosanscham/upstream.yaml b/ofl/notosanscham/upstream.yaml
deleted file mode 100644
index 49fc03b27d7e21553ae3c8726e79a1f0cc32a613..0000000000000000000000000000000000000000
--- a/ofl/notosanscham/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/cham/releases/download/NotoSansCham-v2.004/NotoSansCham-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansCham/googlefonts/variable/NotoSansCham[wght].ttf: NotoSansCham[wght].ttf
diff --git a/ofl/notosanscherokee/METADATA.pb b/ofl/notosanscherokee/METADATA.pb
index e94f318a99bf07330456ccf8676ef9b854da8f2c..17dfbbee9309830d1a6c44d39bb713dab5d1feb2 100644
--- a/ofl/notosanscherokee/METADATA.pb
+++ b/ofl/notosanscherokee/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/cherokee.git"
+  repository_url: "https://github.com/notofonts/cherokee"
   archive_url: "https://github.com/notofonts/cherokee/releases/download/NotoSansCherokee-v2.001/NotoSansCherokee-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCherokee/googlefonts/variable-ttf/NotoSansCherokee[wght].ttf"
+    dest_file: "NotoSansCherokee[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "chr_Cher"  # Cherokee
diff --git a/ofl/notosanscherokee/upstream.yaml b/ofl/notosanscherokee/upstream.yaml
deleted file mode 100644
index a1e6f4f3664a42551d90bfae7d4df00a44b2ba10..0000000000000000000000000000000000000000
--- a/ofl/notosanscherokee/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/cherokee/releases/download/NotoSansCherokee-v2.001/NotoSansCherokee-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansCherokee/googlefonts/variable-ttf/NotoSansCherokee[wght].ttf: NotoSansCherokee[wght].ttf
diff --git a/ofl/notosanschorasmian/METADATA.pb b/ofl/notosanschorasmian/METADATA.pb
index 48a7297b15a7baa2ca9a5478ed93b5adfea20b86..ce918f3f7bc2da590b16d6d326d69a7c7c34a405 100644
--- a/ofl/notosanschorasmian/METADATA.pb
+++ b/ofl/notosanschorasmian/METADATA.pb
@@ -19,8 +19,25 @@ subsets: "math"
 subsets: "menu"
 subsets: "symbols"
 source {
-  repository_url: "https://github.com/notofonts/chorasmian.git"
+  repository_url: "https://github.com/notofonts/chorasmian"
   archive_url: "https://github.com/notofonts/chorasmian/releases/download/NotoSansChorasmian-v1.004/NotoSansChorasmian-v1.004.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansChorasmian/googlefonts/ttf/NotoSansChorasmian-Regular.ttf"
+    dest_file: "NotoSansChorasmian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Chrs"  # Assyrian Neo-Aramaic, Chorasmian
diff --git a/ofl/notosanschorasmian/upstream.yaml b/ofl/notosanschorasmian/upstream.yaml
deleted file mode 100644
index 1ccf487cc0527856d379e416df3e56ca44486a1a..0000000000000000000000000000000000000000
--- a/ofl/notosanschorasmian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/chorasmian/releases/download/NotoSansChorasmian-v1.004/NotoSansChorasmian-v1.004.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansChorasmian/googlefonts/ttf/NotoSansChorasmian-Regular.ttf: NotoSansChorasmian-Regular.ttf
diff --git a/ofl/notosanscoptic/METADATA.pb b/ofl/notosanscoptic/METADATA.pb
index 30451316193b9b0da37bbdde97922f713cf08ff9..950ef09fda8c04041c900e1dbec8443e4223ee26 100644
--- a/ofl/notosanscoptic/METADATA.pb
+++ b/ofl/notosanscoptic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/coptic.git"
+  repository_url: "https://github.com/notofonts/coptic"
   archive_url: "https://github.com/notofonts/coptic/releases/download/NotoSansCoptic-v2.004/NotoSansCoptic-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCoptic/googlefonts/ttf/NotoSansCoptic-Regular.ttf"
+    dest_file: "NotoSansCoptic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "cop_Copt"  # Coptic, Coptic
diff --git a/ofl/notosanscoptic/upstream.yaml b/ofl/notosanscoptic/upstream.yaml
deleted file mode 100644
index 999cd91bb96fe7e3273b285026e58907d087cef5..0000000000000000000000000000000000000000
--- a/ofl/notosanscoptic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/coptic/releases/download/NotoSansCoptic-v2.004/NotoSansCoptic-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansCoptic/googlefonts/ttf/NotoSansCoptic-Regular.ttf: NotoSansCoptic-Regular.ttf
diff --git a/ofl/notosanscuneiform/METADATA.pb b/ofl/notosanscuneiform/METADATA.pb
index bbf68c1557780b1283be788091475cf0c72300d2..0ca7a9dddd1b5dd0221731a1679e32f0df304fd3 100644
--- a/ofl/notosanscuneiform/METADATA.pb
+++ b/ofl/notosanscuneiform/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/cuneiform.git"
+  repository_url: "https://github.com/notofonts/cuneiform"
   archive_url: "https://github.com/notofonts/cuneiform/releases/download/NotoSansCuneiform-v2.001/NotoSansCuneiform-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCuneiform/googlefonts/ttf/NotoSansCuneiform-Regular.ttf"
+    dest_file: "NotoSansCuneiform-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "akk_Xsux"  # Akkadian
diff --git a/ofl/notosanscuneiform/upstream.yaml b/ofl/notosanscuneiform/upstream.yaml
deleted file mode 100644
index db0760e60da79c3c0a9b1a22de42554a486a3095..0000000000000000000000000000000000000000
--- a/ofl/notosanscuneiform/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/cuneiform/releases/download/NotoSansCuneiform-v2.001/NotoSansCuneiform-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansCuneiform/googlefonts/ttf/NotoSansCuneiform-Regular.ttf: NotoSansCuneiform-Regular.ttf
diff --git a/ofl/notosanscypriot/METADATA.pb b/ofl/notosanscypriot/METADATA.pb
index ef80bfc00cd3cba63db30fc0a85b34e5ce913241..04913b7492fb5c25038ca1425a2268000fa4f94f 100644
--- a/ofl/notosanscypriot/METADATA.pb
+++ b/ofl/notosanscypriot/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/cypriot.git"
+  repository_url: "https://github.com/notofonts/cypriot"
   archive_url: "https://github.com/notofonts/cypriot/releases/download/NotoSansCypriot-v2.002/NotoSansCypriot-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansCypriot/googlefonts/ttf/NotoSansCypriot-Regular.ttf"
+    dest_file: "NotoSansCypriot-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "grc_Cprt"  # Ancient Greek
diff --git a/ofl/notosanscypriot/upstream.yaml b/ofl/notosanscypriot/upstream.yaml
deleted file mode 100644
index 6c67dcf424cd65245b52cbb25ced74b709c4d4ce..0000000000000000000000000000000000000000
--- a/ofl/notosanscypriot/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/cypriot/releases/download/NotoSansCypriot-v2.002/NotoSansCypriot-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansCypriot/googlefonts/ttf/NotoSansCypriot-Regular.ttf: NotoSansCypriot-Regular.ttf
diff --git a/ofl/notosanscyprominoan/METADATA.pb b/ofl/notosanscyprominoan/METADATA.pb
index 6821814384539742492e17cf26fc1ed16b16e1fc..55e2ab0036229c7f4731196ed3c2a02b8dea5d3d 100644
--- a/ofl/notosanscyprominoan/METADATA.pb
+++ b/ofl/notosanscyprominoan/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/cypro-minoan.git"
+  repository_url: "https://github.com/notofonts/cypro-minoan"
   archive_url: "https://github.com/notofonts/cypro-minoan/releases/download/NotoSansCyproMinoan-v1.503/NotoSansCyproMinoan-v1.503.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansCyproMinoan/googlefonts/ttf/NotoSansCyproMinoan-Regular.ttf"
+    dest_file: "NotoSansCyproMinoan-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notosanscyprominoan/upstream.yaml b/ofl/notosanscyprominoan/upstream.yaml
deleted file mode 100644
index 968c828f9c2a1a72fd140e9940d6e2533e29688b..0000000000000000000000000000000000000000
--- a/ofl/notosanscyprominoan/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/cypro-minoan/releases/download/NotoSansCyproMinoan-v1.503/NotoSansCyproMinoan-v1.503.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansCyproMinoan/googlefonts/ttf/NotoSansCyproMinoan-Regular.ttf: NotoSansCyproMinoan-Regular.ttf
diff --git a/ofl/notosansdeseret/METADATA.pb b/ofl/notosansdeseret/METADATA.pb
index 65fe4ef6248a7a1fbca4a0a4b46935b987fc9d44..07f857b101681fcc7aecb39166eba96a68acb008 100644
--- a/ofl/notosansdeseret/METADATA.pb
+++ b/ofl/notosansdeseret/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/deseret.git"
+  repository_url: "https://github.com/notofonts/deseret"
   archive_url: "https://github.com/notofonts/deseret/releases/download/NotoSansDeseret-v2.001/NotoSansDeseret-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansDeseret/googlefonts/ttf/NotoSansDeseret-Regular.ttf"
+    dest_file: "NotoSansDeseret-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "en_Dsrt"  # English, Deseret
diff --git a/ofl/notosansdeseret/upstream.yaml b/ofl/notosansdeseret/upstream.yaml
deleted file mode 100644
index 600a93a5dd7bcb2303617b1405c10882213e62e7..0000000000000000000000000000000000000000
--- a/ofl/notosansdeseret/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/deseret/releases/download/NotoSansDeseret-v2.001/NotoSansDeseret-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansDeseret/googlefonts/ttf/NotoSansDeseret-Regular.ttf: NotoSansDeseret-Regular.ttf
diff --git a/ofl/notosansdevanagari/METADATA.pb b/ofl/notosansdevanagari/METADATA.pb
index 08248a7d8567f0b6ba1839258b3256b22cfd4d97..7c09479419ac371a6c822eef8068b690c67c9231 100644
--- a/ofl/notosansdevanagari/METADATA.pb
+++ b/ofl/notosansdevanagari/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/devanagari.git"
+  repository_url: "https://github.com/notofonts/devanagari"
   archive_url: "https://github.com/notofonts/devanagari/releases/download/NotoSansDevanagari-v2.004/NotoSansDevanagari-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansDevanagari/googlefonts/variable-ttf/NotoSansDevanagari[wdth,wght].ttf"
+    dest_file: "NotoSansDevanagari[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "anp_Deva"  # Angika
diff --git a/ofl/notosansdevanagari/upstream.yaml b/ofl/notosansdevanagari/upstream.yaml
deleted file mode 100644
index d138b72a196e431664f0239436614aff376c73be..0000000000000000000000000000000000000000
--- a/ofl/notosansdevanagari/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/devanagari/releases/download/NotoSansDevanagari-v2.004/NotoSansDevanagari-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansDevanagari/googlefonts/variable-ttf/NotoSansDevanagari[wdth,wght].ttf: NotoSansDevanagari[wdth,wght].ttf
diff --git a/ofl/notosansduployan/METADATA.pb b/ofl/notosansduployan/METADATA.pb
index f633678a29faf10fc12ec2c61386c5572fb72c18..6b085fdacbd0513bfe077d3650e29ba675c7fb32 100644
--- a/ofl/notosansduployan/METADATA.pb
+++ b/ofl/notosansduployan/METADATA.pb
@@ -26,14 +26,33 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/duployan.git"
+  repository_url: "https://github.com/notofonts/duployan"
   archive_url: "https://github.com/notofonts/duployan/releases/download/NotoSansDuployan-v3.001/NotoSansDuployan-v3.001.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansDuployan/googlefonts/ttf/NotoSansDuployan-Regular.ttf"
+    dest_file: "NotoSansDuployan-Regular.ttf"
+  }
+  files {
+    source_file: "NotoSansDuployan/googlefonts/ttf/NotoSansDuployan-Bold.ttf"
+    dest_file: "NotoSansDuployan-Bold.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "chn_Dupl"  # Chinook Jargon, Duployan
 languages: "fr_Dupl"  # French, Duployan
-# This is not real text. It needs replacing, ideally with
-# language-specific samples in the lang repo.
 sample_text {
   masthead_full: "𛰳𛱰𛱘𛱢"
   masthead_partial: "𛰠𛰏"
diff --git a/ofl/notosansduployan/upstream.yaml b/ofl/notosansduployan/upstream.yaml
deleted file mode 100644
index ca5e619ac3875cfaa2aa707071a45411cd13c9a0..0000000000000000000000000000000000000000
--- a/ofl/notosansduployan/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/notofonts/duployan/releases/download/NotoSansDuployan-v3.001/NotoSansDuployan-v3.001.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansDuployan/googlefonts/ttf/NotoSansDuployan-Regular.ttf: NotoSansDuployan-Regular.ttf
-  NotoSansDuployan/googlefonts/ttf/NotoSansDuployan-Bold.ttf: NotoSansDuployan-Bold.ttf
diff --git a/ofl/notosansegyptianhieroglyphs/METADATA.pb b/ofl/notosansegyptianhieroglyphs/METADATA.pb
index 32af1c77da291a927107e961a87e0c2a065ff4a5..f3958d493f3a1fc38c6a3e75db0a41d7413040cb 100644
--- a/ofl/notosansegyptianhieroglyphs/METADATA.pb
+++ b/ofl/notosansegyptianhieroglyphs/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/egyptian-hieroglyphs.git"
+  repository_url: "https://github.com/notofonts/egyptian-hieroglyphs"
   archive_url: "https://github.com/notofonts/egyptian-hieroglyphs/releases/download/NotoSansEgyptianHieroglyphs-v2.001/NotoSansEgyptianHieroglyphs-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansEgyptianHieroglyphs/googlefonts/ttf/NotoSansEgyptianHieroglyphs-Regular.ttf"
+    dest_file: "NotoSansEgyptianHieroglyphs-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Egyp"  # Assyrian Neo-Aramaic, Egyptian hieroglyphs
diff --git a/ofl/notosansegyptianhieroglyphs/upstream.yaml b/ofl/notosansegyptianhieroglyphs/upstream.yaml
deleted file mode 100644
index ef133b0013579d5e2eb28abfbd1ad2560236da2d..0000000000000000000000000000000000000000
--- a/ofl/notosansegyptianhieroglyphs/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/egyptian-hieroglyphs/releases/download/NotoSansEgyptianHieroglyphs-v2.001/NotoSansEgyptianHieroglyphs-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansEgyptianHieroglyphs/googlefonts/ttf/NotoSansEgyptianHieroglyphs-Regular.ttf: NotoSansEgyptianHieroglyphs-Regular.ttf
diff --git a/ofl/notosanselbasan/METADATA.pb b/ofl/notosanselbasan/METADATA.pb
index 598ff405bfdc4861c94058c2cb6c0782287f4fca..bd93d9dfdd442c79c13f7668c27c16bf17e211f4 100644
--- a/ofl/notosanselbasan/METADATA.pb
+++ b/ofl/notosanselbasan/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/elbasan.git"
+  repository_url: "https://github.com/notofonts/elbasan"
   archive_url: "https://github.com/notofonts/elbasan/releases/download/NotoSansElbasan-v2.004/NotoSansElbasan-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansElbasan/googlefonts/ttf/NotoSansElbasan-Regular.ttf"
+    dest_file: "NotoSansElbasan-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sq_Elba"  # Albanian, Elbasan
diff --git a/ofl/notosanselbasan/upstream.yaml b/ofl/notosanselbasan/upstream.yaml
deleted file mode 100644
index fe23cd76c07661fea98ecc3150e24a606b537e4c..0000000000000000000000000000000000000000
--- a/ofl/notosanselbasan/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/elbasan/releases/download/NotoSansElbasan-v2.004/NotoSansElbasan-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansElbasan/googlefonts/ttf/NotoSansElbasan-Regular.ttf: NotoSansElbasan-Regular.ttf
diff --git a/ofl/notosanselymaic/METADATA.pb b/ofl/notosanselymaic/METADATA.pb
index 0be889f760c87bc40663105bfd7113538afe0a3d..c05a7348e1baf1fec9e14e96b783315eeff074d8 100644
--- a/ofl/notosanselymaic/METADATA.pb
+++ b/ofl/notosanselymaic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/elymaic.git"
+  repository_url: "https://github.com/notofonts/elymaic"
   archive_url: "https://github.com/notofonts/elymaic/releases/download/NotoSansElymaic-v1.002/NotoSansElymaic-v1.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansElymaic/googlefonts/ttf/NotoSansElymaic-Regular.ttf"
+    dest_file: "NotoSansElymaic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Elym"  # Assyrian Neo-Aramaic, Elymaic
diff --git a/ofl/notosanselymaic/upstream.yaml b/ofl/notosanselymaic/upstream.yaml
deleted file mode 100644
index b032b53e72eacd2b7639c0fe5006672bd95cbb87..0000000000000000000000000000000000000000
--- a/ofl/notosanselymaic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/elymaic/releases/download/NotoSansElymaic-v1.002/NotoSansElymaic-v1.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansElymaic/googlefonts/ttf/NotoSansElymaic-Regular.ttf: NotoSansElymaic-Regular.ttf
diff --git a/ofl/notosansethiopic/METADATA.pb b/ofl/notosansethiopic/METADATA.pb
index 9e7bbc08c0913f3fb63c44b3c43e3c936c4d782c..a748321049f517372c86c17ff104c02ddf3caf0f 100644
--- a/ofl/notosansethiopic/METADATA.pb
+++ b/ofl/notosansethiopic/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/ethiopic.git"
+  repository_url: "https://github.com/notofonts/ethiopic"
   archive_url: "https://github.com/notofonts/ethiopic/releases/download/NotoSansEthiopic-v2.102/NotoSansEthiopic-v2.102.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansEthiopic/googlefonts/variable-ttf/NotoSansEthiopic[wdth,wght].ttf"
+    dest_file: "NotoSansEthiopic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "am_Ethi"  # Amharic
diff --git a/ofl/notosansethiopic/upstream.yaml b/ofl/notosansethiopic/upstream.yaml
deleted file mode 100644
index 866d5ed2c6ea2a317d23a0880056834045039123..0000000000000000000000000000000000000000
--- a/ofl/notosansethiopic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ethiopic/releases/download/NotoSansEthiopic-v2.102/NotoSansEthiopic-v2.102.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansEthiopic/googlefonts/variable-ttf/NotoSansEthiopic[wdth,wght].ttf: NotoSansEthiopic[wdth,wght].ttf
diff --git a/ofl/notosansgeorgian/METADATA.pb b/ofl/notosansgeorgian/METADATA.pb
index d3910dc68b7046a9f900285233a0b25004d25a54..07a0a70d94def3798b70ef6a8a874a8340ac2a16 100644
--- a/ofl/notosansgeorgian/METADATA.pb
+++ b/ofl/notosansgeorgian/METADATA.pb
@@ -31,8 +31,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/georgian.git"
+  repository_url: "https://github.com/notofonts/georgian"
   archive_url: "https://github.com/notofonts/georgian/releases/download/NotoSansGeorgian-v2.005/NotoSansGeorgian-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansGeorgian/googlefonts/variable/NotoSansGeorgian[wdth,wght].ttf"
+    dest_file: "NotoSansGeorgian[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ka_Geor"  # Georgian
diff --git a/ofl/notosansgeorgian/upstream.yaml b/ofl/notosansgeorgian/upstream.yaml
deleted file mode 100644
index 1288d6ef4cb42d0009ef5ce628543a3f949d9691..0000000000000000000000000000000000000000
--- a/ofl/notosansgeorgian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/georgian/releases/download/NotoSansGeorgian-v2.005/NotoSansGeorgian-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansGeorgian/googlefonts/variable/NotoSansGeorgian[wdth,wght].ttf: NotoSansGeorgian[wdth,wght].ttf
diff --git a/ofl/notosansglagolitic/METADATA.pb b/ofl/notosansglagolitic/METADATA.pb
index f264c9012f969065cfe24268e924243d4a8a95ff..abc95c46339bc168619b6f72a301648df144da3d 100644
--- a/ofl/notosansglagolitic/METADATA.pb
+++ b/ofl/notosansglagolitic/METADATA.pb
@@ -20,8 +20,25 @@ subsets: "math"
 subsets: "menu"
 subsets: "symbols"
 source {
-  repository_url: "https://github.com/notofonts/glagolitic.git"
+  repository_url: "https://github.com/notofonts/glagolitic"
   archive_url: "https://github.com/notofonts/glagolitic/releases/download/NotoSansGlagolitic-v2.004/NotoSansGlagolitic-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansGlagolitic/googlefonts/ttf/NotoSansGlagolitic-Regular.ttf"
+    dest_file: "NotoSansGlagolitic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "cu_Glag"  # Church Slavic, Glagolitic
diff --git a/ofl/notosansglagolitic/upstream.yaml b/ofl/notosansglagolitic/upstream.yaml
deleted file mode 100644
index e9d4f39ca2f44147d151807db396a0030a90f1c9..0000000000000000000000000000000000000000
--- a/ofl/notosansglagolitic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/glagolitic/releases/download/NotoSansGlagolitic-v2.004/NotoSansGlagolitic-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansGlagolitic/googlefonts/ttf/NotoSansGlagolitic-Regular.ttf: NotoSansGlagolitic-Regular.ttf
diff --git a/ofl/notosansgothic/METADATA.pb b/ofl/notosansgothic/METADATA.pb
index 2c7571afc093a59f5b8ac41898fc0463195d5204..a12c06df02634017029ca7d5b4d31225b4a937b5 100644
--- a/ofl/notosansgothic/METADATA.pb
+++ b/ofl/notosansgothic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/gothic.git"
+  repository_url: "https://github.com/notofonts/gothic"
   archive_url: "https://github.com/notofonts/gothic/releases/download/NotoSansGothic-v2.001/NotoSansGothic-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansGothic/googlefonts/ttf/NotoSansGothic-Regular.ttf"
+    dest_file: "NotoSansGothic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "got_Goth"  # Gothic
diff --git a/ofl/notosansgothic/upstream.yaml b/ofl/notosansgothic/upstream.yaml
deleted file mode 100644
index 4490bfca235113b054fc437c83debc14a64e70e3..0000000000000000000000000000000000000000
--- a/ofl/notosansgothic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/gothic/releases/download/NotoSansGothic-v2.001/NotoSansGothic-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansGothic/googlefonts/ttf/NotoSansGothic-Regular.ttf: NotoSansGothic-Regular.ttf
diff --git a/ofl/notosansgrantha/METADATA.pb b/ofl/notosansgrantha/METADATA.pb
index 9eeccd44a33ca7d0ccec37621fd4ff1dea8af49c..6b02275e1313c73b3821f3267969fb6f7e974573 100644
--- a/ofl/notosansgrantha/METADATA.pb
+++ b/ofl/notosansgrantha/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/grantha.git"
+  repository_url: "https://github.com/notofonts/grantha"
   archive_url: "https://github.com/notofonts/grantha/releases/download/NotoSansGrantha-v2.003/NotoSansGrantha-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansGrantha/googlefonts/ttf/NotoSansGrantha-Regular.ttf"
+    dest_file: "NotoSansGrantha-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Gran"  # Sanskrit, Grantha
diff --git a/ofl/notosansgrantha/upstream.yaml b/ofl/notosansgrantha/upstream.yaml
deleted file mode 100644
index e93f00e94513a8bdeba23922625940c72891e125..0000000000000000000000000000000000000000
--- a/ofl/notosansgrantha/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/grantha/releases/download/NotoSansGrantha-v2.003/NotoSansGrantha-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansGrantha/googlefonts/ttf/NotoSansGrantha-Regular.ttf: NotoSansGrantha-Regular.ttf
diff --git a/ofl/notosansgujarati/METADATA.pb b/ofl/notosansgujarati/METADATA.pb
index 360594c2482291996b5285a859eb97f8f86f3b53..ce47b9ba33d272cadf8f6476f992a4913e5d3527 100644
--- a/ofl/notosansgujarati/METADATA.pb
+++ b/ofl/notosansgujarati/METADATA.pb
@@ -29,8 +29,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/gujarati.git"
+  repository_url: "https://github.com/notofonts/gujarati"
   archive_url: "https://github.com/notofonts/gujarati/releases/download/NotoSansGujarati-v2.106/NotoSansGujarati-v2.106.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansGujarati/googlefonts/variable/NotoSansGujarati[wdth,wght].ttf"
+    dest_file: "NotoSansGujarati[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "gu_Gujr"  # Gujarati
diff --git a/ofl/notosansgujarati/upstream.yaml b/ofl/notosansgujarati/upstream.yaml
deleted file mode 100644
index 0e1b1712cc389931823e3408c3cd401baadc4905..0000000000000000000000000000000000000000
--- a/ofl/notosansgujarati/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/gujarati/releases/download/NotoSansGujarati-v2.106/NotoSansGujarati-v2.106.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansGujarati/googlefonts/variable/NotoSansGujarati[wdth,wght].ttf: NotoSansGujarati[wdth,wght].ttf
diff --git a/ofl/notosansgunjalagondi/METADATA.pb b/ofl/notosansgunjalagondi/METADATA.pb
index 9a3504c9922b2d443d6538c0bd751db46a29c007..ffc3094662caac92198e8d0f0d128b13837a0073 100644
--- a/ofl/notosansgunjalagondi/METADATA.pb
+++ b/ofl/notosansgunjalagondi/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/gunjala-gondi.git"
+  repository_url: "https://github.com/notofonts/gunjala-gondi"
   archive_url: "https://github.com/notofonts/gunjala-gondi/releases/download/NotoSansGunjalaGondi-v1.004/NotoSansGunjalaGondi-v1.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansGunjalaGondi/googlefonts/variable-ttf/NotoSansGunjalaGondi[wght].ttf"
+    dest_file: "NotoSansGunjalaGondi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "gon_Gong"  # Gondi, Gunjala Gondi
diff --git a/ofl/notosansgunjalagondi/upstream.yaml b/ofl/notosansgunjalagondi/upstream.yaml
deleted file mode 100644
index 155722dca7230a15c67cbb3c64408aa19103bf87..0000000000000000000000000000000000000000
--- a/ofl/notosansgunjalagondi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/gunjala-gondi/releases/download/NotoSansGunjalaGondi-v1.004/NotoSansGunjalaGondi-v1.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansGunjalaGondi/googlefonts/variable-ttf/NotoSansGunjalaGondi[wght].ttf: NotoSansGunjalaGondi[wght].ttf
diff --git a/ofl/notosansgurmukhi/METADATA.pb b/ofl/notosansgurmukhi/METADATA.pb
index 7b5be98a6991135ba7b6ae3f8075537d15552039..4f2f9aaad3928db1254e6bdb0cfae62d502f4ebd 100644
--- a/ofl/notosansgurmukhi/METADATA.pb
+++ b/ofl/notosansgurmukhi/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/gurmukhi.git"
+  repository_url: "https://github.com/notofonts/gurmukhi"
   archive_url: "https://github.com/notofonts/gurmukhi/releases/download/NotoSansGurmukhi-v2.004/NotoSansGurmukhi-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansGurmukhi/googlefonts/variable-ttf/NotoSansGurmukhi[wdth,wght].ttf"
+    dest_file: "NotoSansGurmukhi[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "pa_Guru"  # Punjabi
diff --git a/ofl/notosansgurmukhi/upstream.yaml b/ofl/notosansgurmukhi/upstream.yaml
deleted file mode 100644
index e0ec64651badbc1719da36bb5fb0579bb3bfe7b9..0000000000000000000000000000000000000000
--- a/ofl/notosansgurmukhi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/gurmukhi/releases/download/NotoSansGurmukhi-v2.004/NotoSansGurmukhi-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansGurmukhi/googlefonts/variable-ttf/NotoSansGurmukhi[wdth,wght].ttf: NotoSansGurmukhi[wdth,wght].ttf
diff --git a/ofl/notosanshanifirohingya/METADATA.pb b/ofl/notosanshanifirohingya/METADATA.pb
index 59c510de3fe576f085e4305530bd84010e93f478..baf89096177b0be930b5832d6062774f0a356340 100644
--- a/ofl/notosanshanifirohingya/METADATA.pb
+++ b/ofl/notosanshanifirohingya/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/hanifi-rohingya.git"
+  repository_url: "https://github.com/notofonts/hanifi-rohingya"
   archive_url: "https://github.com/notofonts/hanifi-rohingya/releases/download/NotoSansHanifiRohingya-v2.102/NotoSansHanifiRohingya-v2.102.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansHanifiRohingya/googlefonts/variable-ttf/NotoSansHanifiRohingya[wght].ttf"
+    dest_file: "NotoSansHanifiRohingya[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "rhg_Rohg"  # Rohingya
diff --git a/ofl/notosanshanifirohingya/upstream.yaml b/ofl/notosanshanifirohingya/upstream.yaml
deleted file mode 100644
index e85dd10d5c71c31d1880f6078e2bb32a9a9e9e38..0000000000000000000000000000000000000000
--- a/ofl/notosanshanifirohingya/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/hanifi-rohingya/releases/download/NotoSansHanifiRohingya-v2.102/NotoSansHanifiRohingya-v2.102.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansHanifiRohingya/googlefonts/variable-ttf/NotoSansHanifiRohingya[wght].ttf: NotoSansHanifiRohingya[wght].ttf
diff --git a/ofl/notosanshanunoo/METADATA.pb b/ofl/notosanshanunoo/METADATA.pb
index 995c840d46ac2214962eb76339e06e6933a77df8..1822ce587396d2d21f0e92c3c922c94f6b5345c2 100644
--- a/ofl/notosanshanunoo/METADATA.pb
+++ b/ofl/notosanshanunoo/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/hanunoo.git"
+  repository_url: "https://github.com/notofonts/hanunoo"
   archive_url: "https://github.com/notofonts/hanunoo/releases/download/NotoSansHanunoo-v2.004/NotoSansHanunoo-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansHanunoo/googlefonts/ttf/NotoSansHanunoo-Regular.ttf"
+    dest_file: "NotoSansHanunoo-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hnn_Hano"  # Hanunoo, Hanunoo
diff --git a/ofl/notosanshanunoo/upstream.yaml b/ofl/notosanshanunoo/upstream.yaml
deleted file mode 100644
index 78e8d8cc4414172570f9ee1b822aad22c56663f8..0000000000000000000000000000000000000000
--- a/ofl/notosanshanunoo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/hanunoo/releases/download/NotoSansHanunoo-v2.004/NotoSansHanunoo-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansHanunoo/googlefonts/ttf/NotoSansHanunoo-Regular.ttf: NotoSansHanunoo-Regular.ttf
diff --git a/ofl/notosanshatran/METADATA.pb b/ofl/notosanshatran/METADATA.pb
index 6d75f7e8685a5b63304c29c554434e9e28fadae6..cb93d325c1501c98d8ed3eefda96250e4dd0711f 100644
--- a/ofl/notosanshatran/METADATA.pb
+++ b/ofl/notosanshatran/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/hatran.git"
+  repository_url: "https://github.com/notofonts/hatran"
   archive_url: "https://github.com/notofonts/hatran/releases/download/NotoSansHatran-v2.001/NotoSansHatran-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansHatran/googlefonts/ttf/NotoSansHatran-Regular.ttf"
+    dest_file: "NotoSansHatran-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Hatr"  # Assyrian Neo-Aramaic, Hatran
diff --git a/ofl/notosanshatran/upstream.yaml b/ofl/notosanshatran/upstream.yaml
deleted file mode 100644
index eb80607df4925c0096d8e9f3e4c3a099d22f0a55..0000000000000000000000000000000000000000
--- a/ofl/notosanshatran/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/hatran/releases/download/NotoSansHatran-v2.001/NotoSansHatran-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansHatran/googlefonts/ttf/NotoSansHatran-Regular.ttf: NotoSansHatran-Regular.ttf
diff --git a/ofl/notosanshebrew/METADATA.pb b/ofl/notosanshebrew/METADATA.pb
index 6c84abacefd2560abccd53211a39797fa81e7658..f685bade06862d5e2f85bcaffb25222e46381734 100644
--- a/ofl/notosanshebrew/METADATA.pb
+++ b/ofl/notosanshebrew/METADATA.pb
@@ -27,8 +27,17 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/hebrew.git"
+  repository_url: "https://github.com/notofonts/hebrew"
   archive_url: "https://github.com/notofonts/hebrew/releases/download/NotoSansHebrew-v2.003/NotoSansHebrew-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansHebrew/googlefonts/variable-ttf/NotoSansHebrew[wdth,wght].ttf"
+    dest_file: "NotoSansHebrew[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "he_Hebr"  # Hebrew
diff --git a/ofl/notosanshebrew/upstream.yaml b/ofl/notosanshebrew/upstream.yaml
deleted file mode 100644
index a6a5870d48ac0eb9cdc8750e93c3220127493001..0000000000000000000000000000000000000000
--- a/ofl/notosanshebrew/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/hebrew/releases/download/NotoSansHebrew-v2.003/NotoSansHebrew-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansHebrew/googlefonts/variable-ttf/NotoSansHebrew[wdth,wght].ttf: NotoSansHebrew[wdth,wght].ttf
diff --git a/ofl/notosansimperialaramaic/METADATA.pb b/ofl/notosansimperialaramaic/METADATA.pb
index a927614af726655741936738fe50120f491644ac..f21f4a4c0b7e5a8a64864892a295c88955f4e453 100644
--- a/ofl/notosansimperialaramaic/METADATA.pb
+++ b/ofl/notosansimperialaramaic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/imperial-aramaic.git"
+  repository_url: "https://github.com/notofonts/imperial-aramaic"
   archive_url: "https://github.com/notofonts/imperial-aramaic/releases/download/NotoSansImperialAramaic-v2.001/NotoSansImperialAramaic-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansImperialAramaic/googlefonts/ttf/NotoSansImperialAramaic-Regular.ttf"
+    dest_file: "NotoSansImperialAramaic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Armi"  # Assyrian Neo-Aramaic, Imperial Aramaic
diff --git a/ofl/notosansimperialaramaic/upstream.yaml b/ofl/notosansimperialaramaic/upstream.yaml
deleted file mode 100644
index b7b47285c78c41d895399f254d0ddbda77e31c43..0000000000000000000000000000000000000000
--- a/ofl/notosansimperialaramaic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/imperial-aramaic/releases/download/NotoSansImperialAramaic-v2.001/NotoSansImperialAramaic-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansImperialAramaic/googlefonts/ttf/NotoSansImperialAramaic-Regular.ttf: NotoSansImperialAramaic-Regular.ttf
diff --git a/ofl/notosansindicsiyaqnumbers/METADATA.pb b/ofl/notosansindicsiyaqnumbers/METADATA.pb
index f4ef29d50d11290394ab0b3fd7a013d5f246291a..9e7208773b1a40f6d274232f10034dd2c517615f 100644
--- a/ofl/notosansindicsiyaqnumbers/METADATA.pb
+++ b/ofl/notosansindicsiyaqnumbers/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/indic-siyaq-numbers.git"
+  repository_url: "https://github.com/notofonts/indic-siyaq-numbers"
   archive_url: "https://github.com/notofonts/indic-siyaq-numbers/releases/download/NotoSansIndicSiyaqNumbers-v2.002/NotoSansIndicSiyaqNumbers-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansIndicSiyaqNumbers/googlefonts/ttf/NotoSansIndicSiyaqNumbers-Regular.ttf"
+    dest_file: "NotoSansIndicSiyaqNumbers-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notosansindicsiyaqnumbers/upstream.yaml b/ofl/notosansindicsiyaqnumbers/upstream.yaml
deleted file mode 100644
index e720932232f0e3e3f9a307527b2ad2999ef6b2c1..0000000000000000000000000000000000000000
--- a/ofl/notosansindicsiyaqnumbers/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/indic-siyaq-numbers/releases/download/NotoSansIndicSiyaqNumbers-v2.002/NotoSansIndicSiyaqNumbers-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansIndicSiyaqNumbers/googlefonts/ttf/NotoSansIndicSiyaqNumbers-Regular.ttf: NotoSansIndicSiyaqNumbers-Regular.ttf
diff --git a/ofl/notosansinscriptionalpahlavi/METADATA.pb b/ofl/notosansinscriptionalpahlavi/METADATA.pb
index 79929ae8473b289d4a396000e40b05b165ebf53d..9ca1a74d0a3bea06c47466b67a537f0042f8c9e8 100644
--- a/ofl/notosansinscriptionalpahlavi/METADATA.pb
+++ b/ofl/notosansinscriptionalpahlavi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/inscriptional-pahlavi.git"
+  repository_url: "https://github.com/notofonts/inscriptional-pahlavi"
   archive_url: "https://github.com/notofonts/inscriptional-pahlavi/releases/download/NotoSansInscriptionalPahlavi-v2.003/NotoSansInscriptionalPahlavi-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansInscriptionalPahlavi/googlefonts/ttf/NotoSansInscriptionalPahlavi-Regular.ttf"
+    dest_file: "NotoSansInscriptionalPahlavi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Phli"  # Assyrian Neo-Aramaic, Inscriptional Pahlavi
diff --git a/ofl/notosansinscriptionalpahlavi/upstream.yaml b/ofl/notosansinscriptionalpahlavi/upstream.yaml
deleted file mode 100644
index 00b4b25b7f4544a145ee4e1a3ea4bdaaccb1193b..0000000000000000000000000000000000000000
--- a/ofl/notosansinscriptionalpahlavi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/inscriptional-pahlavi/releases/download/NotoSansInscriptionalPahlavi-v2.003/NotoSansInscriptionalPahlavi-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansInscriptionalPahlavi/googlefonts/ttf/NotoSansInscriptionalPahlavi-Regular.ttf: NotoSansInscriptionalPahlavi-Regular.ttf
diff --git a/ofl/notosansinscriptionalparthian/METADATA.pb b/ofl/notosansinscriptionalparthian/METADATA.pb
index f12ecea1473b7b775b417ddb9d45453deca5ffab..f83c325f67f5bae3724460fd8ce3a331f930b624 100644
--- a/ofl/notosansinscriptionalparthian/METADATA.pb
+++ b/ofl/notosansinscriptionalparthian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/inscriptional-parthian.git"
+  repository_url: "https://github.com/notofonts/inscriptional-parthian"
   archive_url: "https://github.com/notofonts/inscriptional-parthian/releases/download/NotoSansInscriptionalParthian-v2.003/NotoSansInscriptionalParthian-v2.003.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansInscriptionalParthian/googlefonts/ttf/NotoSansInscriptionalParthian-Regular.ttf"
+    dest_file: "NotoSansInscriptionalParthian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Prti"  # Assyrian Neo-Aramaic, Inscriptional Parthian
diff --git a/ofl/notosansinscriptionalparthian/upstream.yaml b/ofl/notosansinscriptionalparthian/upstream.yaml
deleted file mode 100644
index 16992f45c6ae8992bcf6e449dc28d82fad271200..0000000000000000000000000000000000000000
--- a/ofl/notosansinscriptionalparthian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/inscriptional-parthian/releases/download/NotoSansInscriptionalParthian-v2.003/NotoSansInscriptionalParthian-v2.003.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansInscriptionalParthian/googlefonts/ttf/NotoSansInscriptionalParthian-Regular.ttf: NotoSansInscriptionalParthian-Regular.ttf
diff --git a/ofl/notosansjavanese/METADATA.pb b/ofl/notosansjavanese/METADATA.pb
index d2584449c466f55e839301c167332f6274b7d514..6bef274aa51d18f45d5acaa4c925213ac3e4f08f 100644
--- a/ofl/notosansjavanese/METADATA.pb
+++ b/ofl/notosansjavanese/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/javanese.git"
+  repository_url: "https://github.com/notofonts/javanese"
   archive_url: "https://github.com/notofonts/javanese/releases/download/NotoSansJavanese-v2.005/NotoSansJavanese-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansJavanese/googlefonts/variable-ttf/NotoSansJavanese[wght].ttf"
+    dest_file: "NotoSansJavanese[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "jv_Java"  # Javanese, Javanese
diff --git a/ofl/notosansjavanese/upstream.yaml b/ofl/notosansjavanese/upstream.yaml
deleted file mode 100644
index cb76cdcaf8db1f0dc396e511588d55066f27ccc8..0000000000000000000000000000000000000000
--- a/ofl/notosansjavanese/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/javanese/releases/download/NotoSansJavanese-v2.005/NotoSansJavanese-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansJavanese/googlefonts/variable-ttf/NotoSansJavanese[wght].ttf: NotoSansJavanese[wght].ttf
diff --git a/ofl/notosanskaithi/METADATA.pb b/ofl/notosanskaithi/METADATA.pb
index 0ac82b0ec77a7b71a1204db1736936f13df76962..ff3d7cbd9bfd4afd4ef9b4bcd1bac14954735ef2 100644
--- a/ofl/notosanskaithi/METADATA.pb
+++ b/ofl/notosanskaithi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/kaithi.git"
+  repository_url: "https://github.com/notofonts/kaithi"
   archive_url: "https://github.com/notofonts/kaithi/releases/download/NotoSansKaithi-v2.005/NotoSansKaithi-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansKaithi/googlefonts/ttf/NotoSansKaithi-Regular.ttf"
+    dest_file: "NotoSansKaithi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bho_Kthi"  # Bhojpuri, Kaithi
diff --git a/ofl/notosanskaithi/upstream.yaml b/ofl/notosanskaithi/upstream.yaml
deleted file mode 100644
index 76e6106f2dd3c8efe928905c36e96c63d6f0baa6..0000000000000000000000000000000000000000
--- a/ofl/notosanskaithi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/kaithi/releases/download/NotoSansKaithi-v2.005/NotoSansKaithi-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansKaithi/googlefonts/ttf/NotoSansKaithi-Regular.ttf: NotoSansKaithi-Regular.ttf
diff --git a/ofl/notosanskannada/METADATA.pb b/ofl/notosanskannada/METADATA.pb
index 466b4af335211615d9cffab7aaf5ffe8457c9848..ae8283809fa127ebcdd1cc5b882391866b12d57a 100644
--- a/ofl/notosanskannada/METADATA.pb
+++ b/ofl/notosanskannada/METADATA.pb
@@ -27,8 +27,21 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/kannada.git"
+  repository_url: "https://github.com/notofonts/kannada"
   archive_url: "https://github.com/notofonts/kannada/releases/download/NotoSansKannada-v2.005/NotoSansKannada-v2.005.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansKannada/googlefonts/variable/NotoSansKannada[wdth,wght].ttf"
+    dest_file: "NotoSansKannada[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kn_Knda"  # Kannada
diff --git a/ofl/notosanskannada/upstream.yaml b/ofl/notosanskannada/upstream.yaml
deleted file mode 100644
index d8c4c2caa47f1f02dd566aea1d3332ce1595727f..0000000000000000000000000000000000000000
--- a/ofl/notosanskannada/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/kannada/releases/download/NotoSansKannada-v2.005/NotoSansKannada-v2.005.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansKannada/googlefonts/variable/NotoSansKannada[wdth,wght].ttf: NotoSansKannada[wdth,wght].ttf
diff --git a/ofl/notosanskawi/METADATA.pb b/ofl/notosanskawi/METADATA.pb
index 344ea08481749779d4e4791f0b22c2a29ddbf64a..c09c656e67a09c4eb6b3d3b9353a7b049e730f02 100644
--- a/ofl/notosanskawi/METADATA.pb
+++ b/ofl/notosanskawi/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/kawi.git"
+  repository_url: "https://github.com/notofonts/kawi"
   archive_url: "https://github.com/notofonts/kawi/releases/download/NotoSansKawi-v1.000/NotoSansKawi-v1.000.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansKawi/googlefonts/variable-ttf/NotoSansKawi[wght].ttf"
+    dest_file: "NotoSansKawi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kaw_Kawi"  # Old Javanese, Kawi
diff --git a/ofl/notosanskawi/upstream.yaml b/ofl/notosanskawi/upstream.yaml
deleted file mode 100644
index 0a30a508def2a601850393804b7cd17999ea2161..0000000000000000000000000000000000000000
--- a/ofl/notosanskawi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/kawi/releases/download/NotoSansKawi-v1.000/NotoSansKawi-v1.000.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansKawi/googlefonts/variable-ttf/NotoSansKawi[wght].ttf: NotoSansKawi[wght].ttf
diff --git a/ofl/notosanskayahli/METADATA.pb b/ofl/notosanskayahli/METADATA.pb
index 9aad217774b039f09af5904153c9434ca24fbecc..725e84d762cc58d3d44dd1223fb94a8fd36866c1 100644
--- a/ofl/notosanskayahli/METADATA.pb
+++ b/ofl/notosanskayahli/METADATA.pb
@@ -22,8 +22,21 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/kayah-li.git"
+  repository_url: "https://github.com/notofonts/kayah-li"
   archive_url: "https://github.com/notofonts/kayah-li/releases/download/NotoSansKayahLi-v2.002/NotoSansKayahLi-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansKayahLi/googlefonts/variable-ttf/NotoSansKayahLi[wght].ttf"
+    dest_file: "NotoSansKayahLi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "eky_Kali"  # Eastern Kayah
diff --git a/ofl/notosanskayahli/upstream.yaml b/ofl/notosanskayahli/upstream.yaml
deleted file mode 100644
index 29764bad05321254ae4f334cb434a1297f08700a..0000000000000000000000000000000000000000
--- a/ofl/notosanskayahli/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/kayah-li/releases/download/NotoSansKayahLi-v2.002/NotoSansKayahLi-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansKayahLi/googlefonts/variable-ttf/NotoSansKayahLi[wght].ttf: NotoSansKayahLi[wght].ttf
diff --git a/ofl/notosanskharoshthi/METADATA.pb b/ofl/notosanskharoshthi/METADATA.pb
index dc6501ce84638e0b507602605ad28240aab1b3ed..bcdc2a35c52065bb5de61813a753748d87886688 100644
--- a/ofl/notosanskharoshthi/METADATA.pb
+++ b/ofl/notosanskharoshthi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/kharoshthi.git"
+  repository_url: "https://github.com/notofonts/kharoshthi"
   archive_url: "https://github.com/notofonts/kharoshthi/releases/download/NotoSansKharoshthi-v2.004/NotoSansKharoshthi-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansKharoshthi/googlefonts/ttf/NotoSansKharoshthi-Regular.ttf"
+    dest_file: "NotoSansKharoshthi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "pra_Khar"  # Prakrit
diff --git a/ofl/notosanskharoshthi/upstream.yaml b/ofl/notosanskharoshthi/upstream.yaml
deleted file mode 100644
index 7a3ff6dd79f1ddd37bb97dc8a9205ca8446dbacf..0000000000000000000000000000000000000000
--- a/ofl/notosanskharoshthi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/kharoshthi/releases/download/NotoSansKharoshthi-v2.004/NotoSansKharoshthi-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansKharoshthi/googlefonts/ttf/NotoSansKharoshthi-Regular.ttf: NotoSansKharoshthi-Regular.ttf
diff --git a/ofl/notosanskhmer/METADATA.pb b/ofl/notosanskhmer/METADATA.pb
index 665ae0af98cc22392bf2b271b271cc5b835b6d84..b01fe7db2e24b990d4169c12afa6f73f5e7ecaa5 100644
--- a/ofl/notosanskhmer/METADATA.pb
+++ b/ofl/notosanskhmer/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/khmer.git"
+  repository_url: "https://github.com/notofonts/khmer"
   archive_url: "https://github.com/notofonts/khmer/releases/download/NotoSansKhmer-v2.004/NotoSansKhmer-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansKhmer/googlefonts/variable/NotoSansKhmer[wdth,wght].ttf"
+    dest_file: "NotoSansKhmer[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "km_Khmr"  # Khmer
diff --git a/ofl/notosanskhmer/upstream.yaml b/ofl/notosanskhmer/upstream.yaml
deleted file mode 100644
index 90b25c084dccc74e6b93b9c8627221c161e0fe00..0000000000000000000000000000000000000000
--- a/ofl/notosanskhmer/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/khmer/releases/download/NotoSansKhmer-v2.004/NotoSansKhmer-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansKhmer/googlefonts/variable/NotoSansKhmer[wdth,wght].ttf: NotoSansKhmer[wdth,wght].ttf
diff --git a/ofl/notosanskhojki/METADATA.pb b/ofl/notosanskhojki/METADATA.pb
index 351a82d468544f69e49101dad67cde37d7df8fc6..efba501d6d3d9d7042cd484bd1d778028499b55f 100644
--- a/ofl/notosanskhojki/METADATA.pb
+++ b/ofl/notosanskhojki/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/khojki.git"
+  repository_url: "https://github.com/notofonts/khojki"
   archive_url: "https://github.com/notofonts/khojki/releases/download/NotoSansKhojki-v2.005/NotoSansKhojki-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansKhojki/googlefonts/ttf/NotoSansKhojki-Regular.ttf"
+    dest_file: "NotoSansKhojki-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sd_Khoj"  # Sindhi, Khojki
diff --git a/ofl/notosanskhojki/upstream.yaml b/ofl/notosanskhojki/upstream.yaml
deleted file mode 100644
index 6175466d311c1342512414a786fbe42b4366a597..0000000000000000000000000000000000000000
--- a/ofl/notosanskhojki/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/khojki/releases/download/NotoSansKhojki-v2.005/NotoSansKhojki-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansKhojki/googlefonts/ttf/NotoSansKhojki-Regular.ttf: NotoSansKhojki-Regular.ttf
diff --git a/ofl/notosanskhudawadi/METADATA.pb b/ofl/notosanskhudawadi/METADATA.pb
index c629212deacf9617e56e53ce56b2c905ea6be184..4acc822d168d929ee07bd25a89af820283e51837 100644
--- a/ofl/notosanskhudawadi/METADATA.pb
+++ b/ofl/notosanskhudawadi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/khudawadi.git"
+  repository_url: "https://github.com/notofonts/khudawadi"
   archive_url: "https://github.com/notofonts/khudawadi/releases/download/NotoSansKhudawadi-v2.003/NotoSansKhudawadi-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansKhudawadi/googlefonts/ttf/NotoSansKhudawadi-Regular.ttf"
+    dest_file: "NotoSansKhudawadi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sd_Sind"  # Sindhi, Khudawadi
diff --git a/ofl/notosanskhudawadi/upstream.yaml b/ofl/notosanskhudawadi/upstream.yaml
deleted file mode 100644
index 01ad5f27861b23df8f4c4e682e465469e221b35f..0000000000000000000000000000000000000000
--- a/ofl/notosanskhudawadi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/khudawadi/releases/download/NotoSansKhudawadi-v2.003/NotoSansKhudawadi-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansKhudawadi/googlefonts/ttf/NotoSansKhudawadi-Regular.ttf: NotoSansKhudawadi-Regular.ttf
diff --git a/ofl/notosanslao/METADATA.pb b/ofl/notosanslao/METADATA.pb
index 16c4f487273172c3120a1e9cde89220840c7728a..b126e880d667513c8e75243ba8009418c280c99b 100644
--- a/ofl/notosanslao/METADATA.pb
+++ b/ofl/notosanslao/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/lao.git"
+  repository_url: "https://github.com/notofonts/lao"
   archive_url: "https://github.com/notofonts/lao/releases/download/NotoSansLao-v2.003/NotoSansLao-v2.003.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansLao/googlefonts/variable-ttf/NotoSansLao[wdth,wght].ttf"
+    dest_file: "NotoSansLao[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hnj_Laoo"  # Mong Njua
diff --git a/ofl/notosanslao/upstream.yaml b/ofl/notosanslao/upstream.yaml
deleted file mode 100644
index c4b2325c34b2404068dfacdcab99d8e6449c2ab8..0000000000000000000000000000000000000000
--- a/ofl/notosanslao/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/lao/releases/download/NotoSansLao-v2.003/NotoSansLao-v2.003.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansLao/googlefonts/variable-ttf/NotoSansLao[wdth,wght].ttf: NotoSansLao[wdth,wght].ttf
diff --git a/ofl/notosanslaolooped/METADATA.pb b/ofl/notosanslaolooped/METADATA.pb
index 955aff3950bc26a8aeff167dfe111e55fd170fbd..baf80262719272c4dad7c1745bc4756b238273d1 100644
--- a/ofl/notosanslaolooped/METADATA.pb
+++ b/ofl/notosanslaolooped/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/lao.git"
+  repository_url: "https://github.com/notofonts/lao"
   archive_url: "https://github.com/notofonts/lao/releases/download/NotoSansLaoLooped-v1.002/NotoSansLaoLooped-v1.002.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansLaoLooped/googlefonts/variable-ttf/NotoSansLaoLooped[wdth,wght].ttf"
+    dest_file: "NotoSansLaoLooped[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hnj_Laoo"  # Mong Njua
diff --git a/ofl/notosanslaolooped/upstream.yaml b/ofl/notosanslaolooped/upstream.yaml
deleted file mode 100644
index 1ea6cb4c4c5b8acbf8ff9a4a59e881c5d736c26f..0000000000000000000000000000000000000000
--- a/ofl/notosanslaolooped/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/lao/releases/download/NotoSansLaoLooped-v1.002/NotoSansLaoLooped-v1.002.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansLaoLooped/googlefonts/variable-ttf/NotoSansLaoLooped[wdth,wght].ttf: NotoSansLaoLooped[wdth,wght].ttf
diff --git a/ofl/notosanslepcha/METADATA.pb b/ofl/notosanslepcha/METADATA.pb
index da7fd2f5db2080a08ca22735104216f7c0fb490c..11a2c2d8cf3a91071c3b11e04f8b82d9aa8d1721 100644
--- a/ofl/notosanslepcha/METADATA.pb
+++ b/ofl/notosanslepcha/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "lepcha"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/lepcha.git"
+  repository_url: "https://github.com/notofonts/lepcha"
   archive_url: "https://github.com/notofonts/lepcha/releases/download/NotoSansLepcha-v2.006/NotoSansLepcha-v2.006.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansLepcha/googlefonts/ttf/NotoSansLepcha-Regular.ttf"
+    dest_file: "NotoSansLepcha-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "lep_Lepc"  # Lepcha
diff --git a/ofl/notosanslepcha/upstream.yaml b/ofl/notosanslepcha/upstream.yaml
deleted file mode 100644
index 93526e6f8fbd0c7b7241d7e6509094e9f8207772..0000000000000000000000000000000000000000
--- a/ofl/notosanslepcha/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/lepcha/releases/download/NotoSansLepcha-v2.006/NotoSansLepcha-v2.006.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansLepcha/googlefonts/ttf/NotoSansLepcha-Regular.ttf: NotoSansLepcha-Regular.ttf
diff --git a/ofl/notosanslimbu/METADATA.pb b/ofl/notosanslimbu/METADATA.pb
index 4bd76f08cb30880e861ed1952aa91eb6409ba065..fffb46c107382253395a06a88acbc309a89e66c5 100644
--- a/ofl/notosanslimbu/METADATA.pb
+++ b/ofl/notosanslimbu/METADATA.pb
@@ -17,10 +17,23 @@ subsets: "latin-ext"
 subsets: "limbu"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/limbu.git"
+  repository_url: "https://github.com/notofonts/limbu"
   archive_url: "https://github.com/notofonts/limbu/releases/download/NotoSansLimbu-v2.004/NotoSansLimbu-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansLimbu/googlefonts/ttf/NotoSansLimbu-Regular.ttf"
+    dest_file: "NotoSansLimbu-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "lif_Limb"  # Limbu, Limbu
-languages: "sa_Limb"  # Sanskrit, Limbu
+languages: "sa_Limb"
 primary_script: "Limb"
diff --git a/ofl/notosanslimbu/upstream.yaml b/ofl/notosanslimbu/upstream.yaml
deleted file mode 100644
index e46746d52a72c2dd7bfe098b1cc59e14dfcb9d00..0000000000000000000000000000000000000000
--- a/ofl/notosanslimbu/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/limbu/releases/download/NotoSansLimbu-v2.004/NotoSansLimbu-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansLimbu/googlefonts/ttf/NotoSansLimbu-Regular.ttf: NotoSansLimbu-Regular.ttf
diff --git a/ofl/notosanslineara/METADATA.pb b/ofl/notosanslineara/METADATA.pb
index 9ab88b3f53972b5e0b86119c783e0e4b3f12cff5..cf0e607e1b8d0172b4f26c6a0ce4eae048ff7dee 100644
--- a/ofl/notosanslineara/METADATA.pb
+++ b/ofl/notosanslineara/METADATA.pb
@@ -17,13 +17,29 @@ subsets: "latin-ext"
 subsets: "linear-a"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/linear-a.git"
+  repository_url: "https://github.com/notofonts/linear-a"
   archive_url: "https://github.com/notofonts/linear-a/releases/download/NotoSansLinearA-v2.002/NotoSansLinearA-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansLinearA/googlefonts/ttf/NotoSansLinearA-Regular.ttf"
+    dest_file: "NotoSansLinearA-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "lab_Lina"  # Linear A
 languages: "omn_Lina"  # Minoan
-primary_script: "Lina"
 sample_text {
   masthead_full: "𐘂𐚰𐚩𐛌"
   masthead_partial: "𐘁𐚵"
@@ -33,3 +49,4 @@ sample_text {
   poster_md: "𐚨𐚩𐚪𐚫𐚬𐚭𐚮 𐛋𐛌𐛍"
   poster_lg: "𐘀𐘁𐘂"
 }
+primary_script: "Lina"
diff --git a/ofl/notosanslineara/upstream.yaml b/ofl/notosanslineara/upstream.yaml
deleted file mode 100644
index bde96d4badb1088e617a1df50e3db8350e553c68..0000000000000000000000000000000000000000
--- a/ofl/notosanslineara/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/linear-a/releases/download/NotoSansLinearA-v2.002/NotoSansLinearA-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansLinearA/googlefonts/ttf/NotoSansLinearA-Regular.ttf: NotoSansLinearA-Regular.ttf
diff --git a/ofl/notosanslinearb/METADATA.pb b/ofl/notosanslinearb/METADATA.pb
index d3578d84fd0ad4feab33730f9bce78a4e172d073..30dce4ad237cec114045e982b59b5e5a3a311afb 100644
--- a/ofl/notosanslinearb/METADATA.pb
+++ b/ofl/notosanslinearb/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "linear-b"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/linear-b.git"
+  repository_url: "https://github.com/notofonts/linear-b"
   archive_url: "https://github.com/notofonts/linear-b/releases/download/NotoSansLinearB-v2.002/NotoSansLinearB-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansLinearB/googlefonts/ttf/NotoSansLinearB-Regular.ttf"
+    dest_file: "NotoSansLinearB-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "gmy_Linb"  # Mycenaean Greek
diff --git a/ofl/notosanslinearb/upstream.yaml b/ofl/notosanslinearb/upstream.yaml
deleted file mode 100644
index 051f8868b30ef5cfb884552da775758ee72c9f5c..0000000000000000000000000000000000000000
--- a/ofl/notosanslinearb/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/linear-b/releases/download/NotoSansLinearB-v2.002/NotoSansLinearB-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansLinearB/googlefonts/ttf/NotoSansLinearB-Regular.ttf: NotoSansLinearB-Regular.ttf
diff --git a/ofl/notosanslisu/METADATA.pb b/ofl/notosanslisu/METADATA.pb
index 4cb6781e32ee5a2bfae0ba8bae05cd7883fa0b47..061f7bf907196dd59db52c7535624b76abda3939 100644
--- a/ofl/notosanslisu/METADATA.pb
+++ b/ofl/notosanslisu/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/lisu.git"
+  repository_url: "https://github.com/notofonts/lisu"
   archive_url: "https://github.com/notofonts/lisu/releases/download/NotoSansLisu-v2.102/NotoSansLisu-v2.102.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansLisu/googlefonts/variable-ttf/NotoSansLisu[wght].ttf"
+    dest_file: "NotoSansLisu[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "lis_Lisu"  # Lisu
diff --git a/ofl/notosanslisu/upstream.yaml b/ofl/notosanslisu/upstream.yaml
deleted file mode 100644
index 7339c42fc2113c9621981bd08017f653dcd3a929..0000000000000000000000000000000000000000
--- a/ofl/notosanslisu/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/lisu/releases/download/NotoSansLisu-v2.102/NotoSansLisu-v2.102.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansLisu/googlefonts/variable-ttf/NotoSansLisu[wght].ttf: NotoSansLisu[wght].ttf
diff --git a/ofl/notosanslycian/METADATA.pb b/ofl/notosanslycian/METADATA.pb
index 75ec45eceacf00b238d2368aa04a9ba2676308d1..db37d00b369d754054f79917e1ee606a124142ed 100644
--- a/ofl/notosanslycian/METADATA.pb
+++ b/ofl/notosanslycian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "lycian"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/lycian.git"
+  repository_url: "https://github.com/notofonts/lycian"
   archive_url: "https://github.com/notofonts/lycian/releases/download/NotoSansLycian-v2.002/NotoSansLycian-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansLycian/googlefonts/ttf/NotoSansLycian-Regular.ttf"
+    dest_file: "NotoSansLycian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "xlc_Lyci"  # Lycian
diff --git a/ofl/notosanslycian/upstream.yaml b/ofl/notosanslycian/upstream.yaml
deleted file mode 100644
index 0a5f8cc0917674ebdd3f4251d6da5c7ce75ba457..0000000000000000000000000000000000000000
--- a/ofl/notosanslycian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/lycian/releases/download/NotoSansLycian-v2.002/NotoSansLycian-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansLycian/googlefonts/ttf/NotoSansLycian-Regular.ttf: NotoSansLycian-Regular.ttf
diff --git a/ofl/notosanslydian/METADATA.pb b/ofl/notosanslydian/METADATA.pb
index 28ee6cdb5500fc1d0255cb960b61bb96692d0ba4..22f77a6750d8a5748b580b667e7332fe600199b0 100644
--- a/ofl/notosanslydian/METADATA.pb
+++ b/ofl/notosanslydian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "lydian"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/lydian.git"
+  repository_url: "https://github.com/notofonts/lydian"
   archive_url: "https://github.com/notofonts/lydian/releases/download/NotoSansLydian-v2.002/NotoSansLydian-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansLydian/googlefonts/ttf/NotoSansLydian-Regular.ttf"
+    dest_file: "NotoSansLydian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "xld_Lydi"  # Lydian
diff --git a/ofl/notosanslydian/upstream.yaml b/ofl/notosanslydian/upstream.yaml
deleted file mode 100644
index 2b4a8a6581802f993b951238b1525526e05870fb..0000000000000000000000000000000000000000
--- a/ofl/notosanslydian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/lydian/releases/download/NotoSansLydian-v2.002/NotoSansLydian-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansLydian/googlefonts/ttf/NotoSansLydian-Regular.ttf: NotoSansLydian-Regular.ttf
diff --git a/ofl/notosansmahajani/METADATA.pb b/ofl/notosansmahajani/METADATA.pb
index 25ca43f823fa1ecafcccd5808e99ba5a0216db68..87970cb323bc2c65af1f7dfe1ccfaf8fef6f8de2 100644
--- a/ofl/notosansmahajani/METADATA.pb
+++ b/ofl/notosansmahajani/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "mahajani"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/mahajani.git"
+  repository_url: "https://github.com/notofonts/mahajani"
   archive_url: "https://github.com/notofonts/mahajani/releases/download/NotoSansMahajani-v2.003/NotoSansMahajani-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMahajani/googlefonts/ttf/NotoSansMahajani-Regular.ttf"
+    dest_file: "NotoSansMahajani-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hi_Mahj"  # Hindi, Mahajani
diff --git a/ofl/notosansmahajani/upstream.yaml b/ofl/notosansmahajani/upstream.yaml
deleted file mode 100644
index 3ad2e207498580242401d4936609dc3692923cfa..0000000000000000000000000000000000000000
--- a/ofl/notosansmahajani/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/mahajani/releases/download/NotoSansMahajani-v2.003/NotoSansMahajani-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMahajani/googlefonts/ttf/NotoSansMahajani-Regular.ttf: NotoSansMahajani-Regular.ttf
diff --git a/ofl/notosansmalayalam/METADATA.pb b/ofl/notosansmalayalam/METADATA.pb
index 90949ef3c5930e6ade824832789354497393240b..fc1889f36105a7b6f195a6c5c53033a4e6a44a65 100644
--- a/ofl/notosansmalayalam/METADATA.pb
+++ b/ofl/notosansmalayalam/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/malayalam.git"
+  repository_url: "https://github.com/notofonts/malayalam"
   archive_url: "https://github.com/notofonts/malayalam/releases/download/NotoSansMalayalam-v2.104/NotoSansMalayalam-v2.104.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMalayalam/googlefonts/variable-ttf/NotoSansMalayalam[wdth,wght].ttf"
+    dest_file: "NotoSansMalayalam[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ml_Mlym"  # Malayalam
diff --git a/ofl/notosansmalayalam/upstream.yaml b/ofl/notosansmalayalam/upstream.yaml
deleted file mode 100644
index aaf67f3761ce0ab3639d08b790fd7f4a8d720b8c..0000000000000000000000000000000000000000
--- a/ofl/notosansmalayalam/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/malayalam/releases/download/NotoSansMalayalam-v2.104/NotoSansMalayalam-v2.104.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansMalayalam/googlefonts/variable-ttf/NotoSansMalayalam[wdth,wght].ttf: NotoSansMalayalam[wdth,wght].ttf
diff --git a/ofl/notosansmandaic/METADATA.pb b/ofl/notosansmandaic/METADATA.pb
index 8c2336ad24b55bcc6d5da9d1cfb84248b1eebaf5..e028a70d8a140ec634656a868314ebdca8036d0e 100644
--- a/ofl/notosansmandaic/METADATA.pb
+++ b/ofl/notosansmandaic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "mandaic"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/mandaic.git"
+  repository_url: "https://github.com/notofonts/mandaic"
   archive_url: "https://github.com/notofonts/mandaic/releases/download/NotoSansMandaic-v2.002/NotoSansMandaic-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMandaic/googlefonts/ttf/NotoSansMandaic-Regular.ttf"
+    dest_file: "NotoSansMandaic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "myz_Mand"  # Mandaic
diff --git a/ofl/notosansmandaic/upstream.yaml b/ofl/notosansmandaic/upstream.yaml
deleted file mode 100644
index 42c026cf59c265382e5f15d19300cdade82e4616..0000000000000000000000000000000000000000
--- a/ofl/notosansmandaic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/mandaic/releases/download/NotoSansMandaic-v2.002/NotoSansMandaic-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMandaic/googlefonts/ttf/NotoSansMandaic-Regular.ttf: NotoSansMandaic-Regular.ttf
diff --git a/ofl/notosansmanichaean/METADATA.pb b/ofl/notosansmanichaean/METADATA.pb
index d22cfcb02b4f42ca4b2f8d693275fc960d2b3c22..1ed29bc6d50f463f1f3f6f3dc5017bfdc66a76c0 100644
--- a/ofl/notosansmanichaean/METADATA.pb
+++ b/ofl/notosansmanichaean/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "manichaean"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/manichaean.git"
+  repository_url: "https://github.com/notofonts/manichaean"
   archive_url: "https://github.com/notofonts/manichaean/releases/download/NotoSansManichaean-v2.005/NotoSansManichaean-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansManichaean/googlefonts/ttf/NotoSansManichaean-Regular.ttf"
+    dest_file: "NotoSansManichaean-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Mani"  # Assyrian Neo-Aramaic, Manichaean
diff --git a/ofl/notosansmanichaean/upstream.yaml b/ofl/notosansmanichaean/upstream.yaml
deleted file mode 100644
index b08eb6777d9759d9276e7f5fb404db4a798ec572..0000000000000000000000000000000000000000
--- a/ofl/notosansmanichaean/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/manichaean/releases/download/NotoSansManichaean-v2.005/NotoSansManichaean-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansManichaean/googlefonts/ttf/NotoSansManichaean-Regular.ttf: NotoSansManichaean-Regular.ttf
diff --git a/ofl/notosansmarchen/METADATA.pb b/ofl/notosansmarchen/METADATA.pb
index b7024682e6373ae45473d2ef37be68c6d06574a4..2f90d3ef1f35e20d67efba516953c57ecc36f7a5 100644
--- a/ofl/notosansmarchen/METADATA.pb
+++ b/ofl/notosansmarchen/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "marchen"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/marchen.git"
+  repository_url: "https://github.com/notofonts/marchen"
   archive_url: "https://github.com/notofonts/marchen/releases/download/NotoSansMarchen-v2.003/NotoSansMarchen-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMarchen/googlefonts/ttf/NotoSansMarchen-Regular.ttf"
+    dest_file: "NotoSansMarchen-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bo_Marc"  # Tibetan, Marchen
diff --git a/ofl/notosansmarchen/upstream.yaml b/ofl/notosansmarchen/upstream.yaml
deleted file mode 100644
index 696bedbd421852a13d17ccd9e6243d4dc694775c..0000000000000000000000000000000000000000
--- a/ofl/notosansmarchen/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/marchen/releases/download/NotoSansMarchen-v2.003/NotoSansMarchen-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMarchen/googlefonts/ttf/NotoSansMarchen-Regular.ttf: NotoSansMarchen-Regular.ttf
diff --git a/ofl/notosansmasaramgondi/METADATA.pb b/ofl/notosansmasaramgondi/METADATA.pb
index 6f7dc3107fbeea8aded7565ba9069e9790ede942..3d69a3bb5f7fad26d6b00c79d219069bc9774381 100644
--- a/ofl/notosansmasaramgondi/METADATA.pb
+++ b/ofl/notosansmasaramgondi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "masaram-gondi"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/masaram-gondi.git"
+  repository_url: "https://github.com/notofonts/masaram-gondi"
   archive_url: "https://github.com/notofonts/masaram-gondi/releases/download/NotoSansMasaramGondi-v1.004/NotoSansMasaramGondi-v1.004.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMasaramGondi/googlefonts/ttf/NotoSansMasaramGondi-Regular.ttf"
+    dest_file: "NotoSansMasaramGondi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "esg_Gonm"  # Aheri Gondi
diff --git a/ofl/notosansmasaramgondi/upstream.yaml b/ofl/notosansmasaramgondi/upstream.yaml
deleted file mode 100644
index 997499f33ff33293bf96d779a4e8f00bfa9f25ec..0000000000000000000000000000000000000000
--- a/ofl/notosansmasaramgondi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/masaram-gondi/releases/download/NotoSansMasaramGondi-v1.004/NotoSansMasaramGondi-v1.004.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMasaramGondi/googlefonts/ttf/NotoSansMasaramGondi-Regular.ttf: NotoSansMasaramGondi-Regular.ttf
diff --git a/ofl/notosansmayannumerals/METADATA.pb b/ofl/notosansmayannumerals/METADATA.pb
index 7cc0b949608da57a5cb2517c9df1aa634017a492..bc868699af71b281e30a70695dd581ec60623896 100644
--- a/ofl/notosansmayannumerals/METADATA.pb
+++ b/ofl/notosansmayannumerals/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "mayan-numerals"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/mayan-numerals.git"
+  repository_url: "https://github.com/notofonts/mayan-numerals"
   archive_url: "https://github.com/notofonts/mayan-numerals/releases/download/NotoSansMayanNumerals-v2.001/NotoSansMayanNumerals-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMayanNumerals/googlefonts/ttf/NotoSansMayanNumerals-Regular.ttf"
+    dest_file: "NotoSansMayanNumerals-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notosansmayannumerals/upstream.yaml b/ofl/notosansmayannumerals/upstream.yaml
deleted file mode 100644
index fa448c3fb6d85c1161058a496a8e88f5446419a5..0000000000000000000000000000000000000000
--- a/ofl/notosansmayannumerals/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/mayan-numerals/releases/download/NotoSansMayanNumerals-v2.001/NotoSansMayanNumerals-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMayanNumerals/googlefonts/ttf/NotoSansMayanNumerals-Regular.ttf: NotoSansMayanNumerals-Regular.ttf
diff --git a/ofl/notosansmedefaidrin/METADATA.pb b/ofl/notosansmedefaidrin/METADATA.pb
index b5daf472dc988ff6e44bea5295a827fed80ced58..02e847bab4f7ff8922fc56b09bae63fe79aeea37 100644
--- a/ofl/notosansmedefaidrin/METADATA.pb
+++ b/ofl/notosansmedefaidrin/METADATA.pb
@@ -22,8 +22,21 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/medefaidrin.git"
+  repository_url: "https://github.com/notofonts/medefaidrin"
   archive_url: "https://github.com/notofonts/medefaidrin/releases/download/NotoSansMedefaidrin-v1.002/NotoSansMedefaidrin-v1.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMedefaidrin/googlefonts/variable-ttf/NotoSansMedefaidrin[wght].ttf"
+    dest_file: "NotoSansMedefaidrin[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "dmf_Medf"  # Medefaidrin
diff --git a/ofl/notosansmedefaidrin/upstream.yaml b/ofl/notosansmedefaidrin/upstream.yaml
deleted file mode 100644
index 476d15c7c4abdef26a4c3d1c7713a7fbfae984d2..0000000000000000000000000000000000000000
--- a/ofl/notosansmedefaidrin/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/medefaidrin/releases/download/NotoSansMedefaidrin-v1.002/NotoSansMedefaidrin-v1.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMedefaidrin/googlefonts/variable-ttf/NotoSansMedefaidrin[wght].ttf: NotoSansMedefaidrin[wght].ttf
diff --git a/ofl/notosansmeeteimayek/METADATA.pb b/ofl/notosansmeeteimayek/METADATA.pb
index 8f1e662ef5dcdb7afefa282388c945bf0cfadfac..7f4b15421c6e21f33db9501cbc4ea99177f84f29 100644
--- a/ofl/notosansmeeteimayek/METADATA.pb
+++ b/ofl/notosansmeeteimayek/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/meetei-mayek.git"
+  repository_url: "https://github.com/notofonts/meetei-mayek"
   archive_url: "https://github.com/notofonts/meetei-mayek/releases/download/NotoSansMeeteiMayek-v2.002/NotoSansMeeteiMayek-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMeeteiMayek/googlefonts/variable-ttf/NotoSansMeeteiMayek[wght].ttf"
+    dest_file: "NotoSansMeeteiMayek[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mni_Mtei"  # Manipuri, Meetei Mayek
diff --git a/ofl/notosansmeeteimayek/upstream.yaml b/ofl/notosansmeeteimayek/upstream.yaml
deleted file mode 100644
index a64d912004068d1f0ea7cb2f61880a2db4a3cea9..0000000000000000000000000000000000000000
--- a/ofl/notosansmeeteimayek/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/meetei-mayek/releases/download/NotoSansMeeteiMayek-v2.002/NotoSansMeeteiMayek-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMeeteiMayek/googlefonts/variable-ttf/NotoSansMeeteiMayek[wght].ttf: NotoSansMeeteiMayek[wght].ttf
diff --git a/ofl/notosansmendekikakui/METADATA.pb b/ofl/notosansmendekikakui/METADATA.pb
index 01ac152c947af9e4ac13bd90782144fa2d9dea41..7ffb5c84d1e3745f39a987f65f8c7a9369767c28 100644
--- a/ofl/notosansmendekikakui/METADATA.pb
+++ b/ofl/notosansmendekikakui/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin-ext"
 subsets: "mende-kikakui"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/mende-kikakui.git"
+  repository_url: "https://github.com/notofonts/mende-kikakui"
   archive_url: "https://github.com/notofonts/mende-kikakui/releases/download/NotoSansMendeKikakui-v2.003/NotoSansMendeKikakui-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMendeKikakui/googlefonts/ttf/NotoSansMendeKikakui-Regular.ttf"
+    dest_file: "NotoSansMendeKikakui-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "men_Mend"  # Mende, Mende
diff --git a/ofl/notosansmendekikakui/upstream.yaml b/ofl/notosansmendekikakui/upstream.yaml
deleted file mode 100644
index 0682e6e615690641651f3c2932d083769bdfa6f8..0000000000000000000000000000000000000000
--- a/ofl/notosansmendekikakui/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/mende-kikakui/releases/download/NotoSansMendeKikakui-v2.003/NotoSansMendeKikakui-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMendeKikakui/googlefonts/ttf/NotoSansMendeKikakui-Regular.ttf: NotoSansMendeKikakui-Regular.ttf
diff --git a/ofl/notosansmeroitic/METADATA.pb b/ofl/notosansmeroitic/METADATA.pb
index 697f6c2f669f32378aa20b5c83b29a2d64295754..62faca0f334070bf9ae7dd586a179a22e06ca959 100644
--- a/ofl/notosansmeroitic/METADATA.pb
+++ b/ofl/notosansmeroitic/METADATA.pb
@@ -19,8 +19,25 @@ subsets: "meroitic"
 subsets: "meroitic-cursive"
 subsets: "meroitic-hieroglyphs"
 source {
-  repository_url: "https://github.com/notofonts/meroitic.git"
+  repository_url: "https://github.com/notofonts/meroitic"
   archive_url: "https://github.com/notofonts/meroitic/releases/download/NotoSansMeroitic-v2.002/NotoSansMeroitic-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMeroitic/googlefonts/ttf/NotoSansMeroitic-Regular.ttf"
+    dest_file: "NotoSansMeroitic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "xmr_Mero"  # Meroitic, Meroitic Hieroglyphs
diff --git a/ofl/notosansmeroitic/upstream.yaml b/ofl/notosansmeroitic/upstream.yaml
deleted file mode 100644
index c87bd81a8f2f7fb03100bad150670ed0112961fc..0000000000000000000000000000000000000000
--- a/ofl/notosansmeroitic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/meroitic/releases/download/NotoSansMeroitic-v2.002/NotoSansMeroitic-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansMeroitic/googlefonts/ttf/NotoSansMeroitic-Regular.ttf: NotoSansMeroitic-Regular.ttf
diff --git a/ofl/notosansmiao/METADATA.pb b/ofl/notosansmiao/METADATA.pb
index 4ecc4d984f81be203bedae866bb58c6a0f45d19f..6fae6b447dd2f646cbee0bb18ba8608638ce39c5 100644
--- a/ofl/notosansmiao/METADATA.pb
+++ b/ofl/notosansmiao/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "miao"
 source {
-  repository_url: "https://github.com/notofonts/miao.git"
+  repository_url: "https://github.com/notofonts/miao"
   archive_url: "https://github.com/notofonts/miao/releases/download/NotoSansMiao-v2.003/NotoSansMiao-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMiao/googlefonts/ttf/NotoSansMiao-Regular.ttf"
+    dest_file: "NotoSansMiao-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hmd_Plrd"  # A-Hmao
diff --git a/ofl/notosansmiao/upstream.yaml b/ofl/notosansmiao/upstream.yaml
deleted file mode 100644
index 09e614bb7c567451d55246dbc90c695f729b2d7e..0000000000000000000000000000000000000000
--- a/ofl/notosansmiao/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/miao/releases/download/NotoSansMiao-v2.003/NotoSansMiao-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMiao/googlefonts/ttf/NotoSansMiao-Regular.ttf: NotoSansMiao-Regular.ttf
diff --git a/ofl/notosansmodi/METADATA.pb b/ofl/notosansmodi/METADATA.pb
index 498117dded7bcb5e995b5cabd6f21270d503963b..22d008d21f5c3cff06ac279001040bb87069b41b 100644
--- a/ofl/notosansmodi/METADATA.pb
+++ b/ofl/notosansmodi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "modi"
 source {
-  repository_url: "https://github.com/notofonts/modi.git"
+  repository_url: "https://github.com/notofonts/modi"
   archive_url: "https://github.com/notofonts/modi/releases/download/NotoSansModi-v2.004/NotoSansModi-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansModi/googlefonts/ttf/NotoSansModi-Regular.ttf"
+    dest_file: "NotoSansModi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mr_Modi"  # Marathi, Modi
diff --git a/ofl/notosansmodi/upstream.yaml b/ofl/notosansmodi/upstream.yaml
deleted file mode 100644
index 5a8b9ce93f0acfc61b11c6fbd51f641861d28aa7..0000000000000000000000000000000000000000
--- a/ofl/notosansmodi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/modi/releases/download/NotoSansModi-v2.004/NotoSansModi-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansModi/googlefonts/ttf/NotoSansModi-Regular.ttf: NotoSansModi-Regular.ttf
diff --git a/ofl/notosansmongolian/METADATA.pb b/ofl/notosansmongolian/METADATA.pb
index ddb29122b93a303563fe65d03595bed0009a6c5c..1c64db068d3d03b21c689dc429cad57315e72b81 100644
--- a/ofl/notosansmongolian/METADATA.pb
+++ b/ofl/notosansmongolian/METADATA.pb
@@ -19,8 +19,25 @@ subsets: "menu"
 subsets: "mongolian"
 subsets: "symbols"
 source {
-  repository_url: "https://github.com/notofonts/mongolian.git"
+  repository_url: "https://github.com/notofonts/mongolian"
   archive_url: "https://github.com/notofonts/mongolian/releases/download/NotoSansMongolian-v3.001/NotoSansMongolian-v3.001.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansMongolian/googlefonts/ttf/NotoSansMongolian-Regular.ttf"
+    dest_file: "NotoSansMongolian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mn_Mong"  # Mongolian (Mongolian)
diff --git a/ofl/notosansmongolian/upstream.yaml b/ofl/notosansmongolian/upstream.yaml
deleted file mode 100644
index 8b5c0cfb9309e002cff065b6c698e29bc2a43c5c..0000000000000000000000000000000000000000
--- a/ofl/notosansmongolian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/mongolian/releases/download/NotoSansMongolian-v3.001/NotoSansMongolian-v3.001.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansMongolian/googlefonts/ttf/NotoSansMongolian-Regular.ttf: NotoSansMongolian-Regular.ttf
diff --git a/ofl/notosansmono/METADATA.pb b/ofl/notosansmono/METADATA.pb
index b9157620491c0f152c9e407007df52faa1e9edd8..dcf67b8a88880dd16d110958a6f78ce2e5050f3f 100644
--- a/ofl/notosansmono/METADATA.pb
+++ b/ofl/notosansmono/METADATA.pb
@@ -31,8 +31,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/latin-greek-cyrillic.git"
+  repository_url: "https://github.com/notofonts/latin-greek-cyrillic"
   archive_url: "https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSansMono-v2.014/NotoSansMono-v2.014.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansMono/googlefonts/variable/NotoSansMono[wdth,wght].ttf"
+    dest_file: "NotoSansMono[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aa_Latn"  # Afar
@@ -44,7 +61,7 @@ languages: "acf_Latn"  # Saint Lucian Creole French, Latin
 languages: "ach_Latn"  # Acoli
 languages: "acu_Latn"  # Achuar-Shiwiar
 languages: "ada_Latn"  # Adangme
-languages: "adl_Latn"  # Galo, Latin
+languages: "adl_Latn"
 languages: "ady_Cyrl"  # Adyghe
 languages: "af_Latn"  # Afrikaans
 languages: "agq_Latn"  # Aghem
@@ -53,7 +70,7 @@ languages: "aii_Cyrl"  # Assyrian Neo-Aramaic, Cyrillic
 languages: "aii_Latn"  # Assyrian Neo-Aramaic, Latin
 languages: "ain_Latn"  # Ainu, Latin
 languages: "ajg_Latn"  # Aja
-languages: "ak_Latn"  # Akan
+languages: "ak_Latn"
 languages: "akz_Latn"  # Alabama
 languages: "ale_Latn"  # Aleut
 languages: "aln_Latn"  # Gheg Albanian
@@ -130,7 +147,7 @@ languages: "bug_Latn"  # Buginese
 languages: "bum_Latn"  # Bulu
 languages: "bvb_Latn"  # Bube
 languages: "bvi_Latn"  # Belanda Viri, Latin
-languages: "bwy_Latn"  # Cwi Bwamu, Latin
+languages: "bwy_Latn"
 languages: "byv_Latn"  # Medumba
 languages: "bze_Latn"  # Jenaama Bozo
 languages: "bzx_Latn"  # Bozo, Hainyaxo
@@ -428,7 +445,7 @@ languages: "lkt_Latn"  # Lakota
 languages: "lld_Latn"  # Ladin
 languages: "lmo_Latn"  # Lombard
 languages: "ln_Latn"  # Lingala
-languages: "lns_Latn"  # Lamnso'
+languages: "lns_Latn"  # Lamnso’
 languages: "lob_Latn"  # Lobi
 languages: "lol_Latn"  # Mongo
 languages: "lot_Latn"  # Otuho
@@ -690,7 +707,7 @@ languages: "suk_Latn"  # Sukuma
 languages: "sus_Latn"  # Susu
 languages: "sv_Latn"  # Swedish
 languages: "sw_Latn"  # Swahili
-languages: "swb_Latn"  # Comorian, Latin
+languages: "swb_Latn"  # Maore Comorian, Latin
 languages: "swg_Latn"  # Swabian
 languages: "sxn_Latn"  # Sangir
 languages: "syi_Latn"  # Seki
diff --git a/ofl/notosansmono/upstream.yaml b/ofl/notosansmono/upstream.yaml
deleted file mode 100644
index 580af7057dfd4b56e1d7e026dbd74012be686ccf..0000000000000000000000000000000000000000
--- a/ofl/notosansmono/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSansMono-v2.014/NotoSansMono-v2.014.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansMono/googlefonts/variable/NotoSansMono[wdth,wght].ttf: NotoSansMono[wdth,wght].ttf
diff --git a/ofl/notosansmro/METADATA.pb b/ofl/notosansmro/METADATA.pb
index a8b1b218fe5581ed011ee9acd1ec93d1881461b9..eb29f6064d05e5dda4373699381357e72f06e362 100644
--- a/ofl/notosansmro/METADATA.pb
+++ b/ofl/notosansmro/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "mro"
 source {
-  repository_url: "https://github.com/notofonts/mro.git"
+  repository_url: "https://github.com/notofonts/mro"
   archive_url: "https://github.com/notofonts/mro/releases/download/NotoSansMro-v2.001/NotoSansMro-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMro/googlefonts/ttf/NotoSansMro-Regular.ttf"
+    dest_file: "NotoSansMro-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mro_Mroo"  # Mru, Mro
diff --git a/ofl/notosansmro/upstream.yaml b/ofl/notosansmro/upstream.yaml
deleted file mode 100644
index 7ec16d9593f9228bd23ba026bb82cb0c70e76e71..0000000000000000000000000000000000000000
--- a/ofl/notosansmro/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/mro/releases/download/NotoSansMro-v2.001/NotoSansMro-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMro/googlefonts/ttf/NotoSansMro-Regular.ttf: NotoSansMro-Regular.ttf
diff --git a/ofl/notosansmultani/METADATA.pb b/ofl/notosansmultani/METADATA.pb
index 0ed1cdd5707122a29f4176eb18ddd8f882f82479..ba7cf0c722fad4e2549c57c0220248aa9ef337fe 100644
--- a/ofl/notosansmultani/METADATA.pb
+++ b/ofl/notosansmultani/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "multani"
 source {
-  repository_url: "https://github.com/notofonts/multani.git"
+  repository_url: "https://github.com/notofonts/multani"
   archive_url: "https://github.com/notofonts/multani/releases/download/NotoSansMultani-v2.002/NotoSansMultani-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansMultani/googlefonts/ttf/NotoSansMultani-Regular.ttf"
+    dest_file: "NotoSansMultani-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Mult"  # Sanskrit, Multani
diff --git a/ofl/notosansmultani/upstream.yaml b/ofl/notosansmultani/upstream.yaml
deleted file mode 100644
index 1d52ac89ffc76fafa7d2d0d1f7015a326fdf243d..0000000000000000000000000000000000000000
--- a/ofl/notosansmultani/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/multani/releases/download/NotoSansMultani-v2.002/NotoSansMultani-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansMultani/googlefonts/ttf/NotoSansMultani-Regular.ttf: NotoSansMultani-Regular.ttf
diff --git a/ofl/notosansmyanmar/METADATA.pb b/ofl/notosansmyanmar/METADATA.pb
index f9b0c4951564ddc05d5a29cce911fc28b6227ecf..10d5935cf9412a1be28f60183329f7e1e31c17eb 100644
--- a/ofl/notosansmyanmar/METADATA.pb
+++ b/ofl/notosansmyanmar/METADATA.pb
@@ -27,8 +27,21 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/myanmar.git"
+  repository_url: "https://github.com/notofonts/myanmar"
   archive_url: "https://github.com/notofonts/myanmar/releases/download/NotoSansMyanmar-v2.107/NotoSansMyanmar-v2.107.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansMyanmar/googlefonts/variable-ttf/NotoSansMyanmar[wdth,wght].ttf"
+    dest_file: "NotoSansMyanmar[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kht_Mymr"  # Khamti
diff --git a/ofl/notosansmyanmar/upstream.yaml b/ofl/notosansmyanmar/upstream.yaml
deleted file mode 100644
index a6199d1c00b6bc871a8b116eb3ab51d42c21a039..0000000000000000000000000000000000000000
--- a/ofl/notosansmyanmar/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/myanmar/releases/download/NotoSansMyanmar-v2.107/NotoSansMyanmar-v2.107.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansMyanmar/googlefonts/variable-ttf/NotoSansMyanmar[wdth,wght].ttf: NotoSansMyanmar[wdth,wght].ttf
diff --git a/ofl/notosansnabataean/METADATA.pb b/ofl/notosansnabataean/METADATA.pb
index 4c73a47f5f5d66c0bf47936b7e4cd283d369c70b..8c54c71191ed228c78f69f8e50a6846227158396 100644
--- a/ofl/notosansnabataean/METADATA.pb
+++ b/ofl/notosansnabataean/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "nabataean"
 source {
-  repository_url: "https://github.com/notofonts/nabataean.git"
+  repository_url: "https://github.com/notofonts/nabataean"
   archive_url: "https://github.com/notofonts/nabataean/releases/download/NotoSansNabataean-v2.001/NotoSansNabataean-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansNabataean/googlefonts/ttf/NotoSansNabataean-Regular.ttf"
+    dest_file: "NotoSansNabataean-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Nbat"  # Assyrian Neo-Aramaic, Nabataean
diff --git a/ofl/notosansnabataean/upstream.yaml b/ofl/notosansnabataean/upstream.yaml
deleted file mode 100644
index 68268e0dbaa458d25711aef70bc762c4400526b8..0000000000000000000000000000000000000000
--- a/ofl/notosansnabataean/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/nabataean/releases/download/NotoSansNabataean-v2.001/NotoSansNabataean-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansNabataean/googlefonts/ttf/NotoSansNabataean-Regular.ttf: NotoSansNabataean-Regular.ttf
diff --git a/ofl/notosansnagmundari/METADATA.pb b/ofl/notosansnagmundari/METADATA.pb
index d749fdeb739cd79bad5924952289e5fea9c22dc4..873d2f908afb4f86f476417ed15f4e0761735a99 100644
--- a/ofl/notosansnagmundari/METADATA.pb
+++ b/ofl/notosansnagmundari/METADATA.pb
@@ -16,15 +16,32 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "nag-mundari"
-primary_script: "Nagm"
-languages: "unr_Nagm"  # Mundari (Nag Mundari)
 axes {
   tag: "wght"
   min_value: 400.0
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/nag-mundari.git"
+  repository_url: "https://github.com/notofonts/nag-mundari"
   archive_url: "https://github.com/notofonts/nag-mundari/releases/download/NotoSansNagMundari-v1.000/NotoSansNagMundari-v1.000.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansNagMundari/googlefonts/variable-ttf/NotoSansNagMundari[wght].ttf"
+    dest_file: "NotoSansNagMundari[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
+languages: "unr_Nagm"  # Mundari (Nag Mundari)
+primary_script: "Nagm"
diff --git a/ofl/notosansnagmundari/upstream.yaml b/ofl/notosansnagmundari/upstream.yaml
deleted file mode 100644
index 9d705e9c6aa2622d7e0dca451831080bee403706..0000000000000000000000000000000000000000
--- a/ofl/notosansnagmundari/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/nag-mundari/releases/download/NotoSansNagMundari-v1.000/NotoSansNagMundari-v1.000.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansNagMundari/googlefonts/variable-ttf/NotoSansNagMundari[wght].ttf: NotoSansNagMundari[wght].ttf
diff --git a/ofl/notosansnandinagari/METADATA.pb b/ofl/notosansnandinagari/METADATA.pb
index 05d6fa92652a9d8771a4edf92a6415ea0f1507fa..bd8831985ca2d553fe4d1d288638e6a555e213c9 100644
--- a/ofl/notosansnandinagari/METADATA.pb
+++ b/ofl/notosansnandinagari/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "nandinagari"
 source {
-  repository_url: "https://github.com/notofonts/nandinagari.git"
+  repository_url: "https://github.com/notofonts/nandinagari"
   archive_url: "https://github.com/notofonts/nandinagari/releases/download/NotoSansNandinagari-v1.002/NotoSansNandinagari-v1.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansNandinagari/googlefonts/ttf/NotoSansNandinagari-Regular.ttf"
+    dest_file: "NotoSansNandinagari-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Nand"  # Sanskrit
diff --git a/ofl/notosansnandinagari/upstream.yaml b/ofl/notosansnandinagari/upstream.yaml
deleted file mode 100644
index 50430cfc9a24500187b57319fabd00c3777b1dc6..0000000000000000000000000000000000000000
--- a/ofl/notosansnandinagari/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/nandinagari/releases/download/NotoSansNandinagari-v1.002/NotoSansNandinagari-v1.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansNandinagari/googlefonts/ttf/NotoSansNandinagari-Regular.ttf: NotoSansNandinagari-Regular.ttf
diff --git a/ofl/notosansnewa/METADATA.pb b/ofl/notosansnewa/METADATA.pb
index 034077b02e442c88e9da93b280b743b7c6eba1af..b6106c2fa06b97a81a16a0dd09d70c77526397ac 100644
--- a/ofl/notosansnewa/METADATA.pb
+++ b/ofl/notosansnewa/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "newa"
 source {
-  repository_url: "https://github.com/notofonts/newa.git"
+  repository_url: "https://github.com/notofonts/newa"
   archive_url: "https://github.com/notofonts/newa/releases/download/NotoSansNewa-v2.007/NotoSansNewa-v2.007.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansNewa/googlefonts/ttf/NotoSansNewa-Regular.ttf"
+    dest_file: "NotoSansNewa-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bn_Newa"  # Bengali, Newa
diff --git a/ofl/notosansnewa/upstream.yaml b/ofl/notosansnewa/upstream.yaml
deleted file mode 100644
index 5938a640aa34e20d4658c8b4701aefcf7680213c..0000000000000000000000000000000000000000
--- a/ofl/notosansnewa/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/newa/releases/download/NotoSansNewa-v2.007/NotoSansNewa-v2.007.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansNewa/googlefonts/ttf/NotoSansNewa-Regular.ttf: NotoSansNewa-Regular.ttf
diff --git a/ofl/notosansnewtailue/METADATA.pb b/ofl/notosansnewtailue/METADATA.pb
index 4a7154f3f658ad6a16c12bb8b3320c97020b6840..398fa25cfe8c993818f0a3530d9f43cfc8d7f740 100644
--- a/ofl/notosansnewtailue/METADATA.pb
+++ b/ofl/notosansnewtailue/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/new-tai-lue.git"
+  repository_url: "https://github.com/notofonts/new-tai-lue"
   archive_url: "https://github.com/notofonts/new-tai-lue/releases/download/NotoSansNewTaiLue-v2.004/NotoSansNewTaiLue-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansNewTaiLue/googlefonts/variable-ttf/NotoSansNewTaiLue[wght].ttf"
+    dest_file: "NotoSansNewTaiLue[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "khb_Talu"  # Lü
diff --git a/ofl/notosansnewtailue/upstream.yaml b/ofl/notosansnewtailue/upstream.yaml
deleted file mode 100644
index d3c38700d07fb14e33cf882495381bf05d55292f..0000000000000000000000000000000000000000
--- a/ofl/notosansnewtailue/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/new-tai-lue/releases/download/NotoSansNewTaiLue-v2.004/NotoSansNewTaiLue-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansNewTaiLue/googlefonts/variable-ttf/NotoSansNewTaiLue[wght].ttf: NotoSansNewTaiLue[wght].ttf
diff --git a/ofl/notosansnko/METADATA.pb b/ofl/notosansnko/METADATA.pb
index 33b7643435926a46c5df8999a6b97a60fe5529c1..799d226360d3fa96a4e7835c099e012991276c59 100644
--- a/ofl/notosansnko/METADATA.pb
+++ b/ofl/notosansnko/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "nko"
 source {
-  repository_url: "https://github.com/notofonts/nko.git"
+  repository_url: "https://github.com/notofonts/nko"
   archive_url: "https://github.com/notofonts/nko/releases/download/NotoSansNKo-v2.004/NotoSansNKo-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansNKo/googlefonts/ttf/NotoSansNKo-Regular.ttf"
+    dest_file: "NotoSansNKo-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bm_Nkoo"  # Bambara, Nko
diff --git a/ofl/notosansnko/upstream.yaml b/ofl/notosansnko/upstream.yaml
deleted file mode 100644
index c86129b6e3b99b688a4f7b4cd333bfa61d229d77..0000000000000000000000000000000000000000
--- a/ofl/notosansnko/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/nko/releases/download/NotoSansNKo-v2.004/NotoSansNKo-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansNKo/googlefonts/ttf/NotoSansNKo-Regular.ttf: NotoSansNKo-Regular.ttf
diff --git a/ofl/notosansnkounjoined/METADATA.pb b/ofl/notosansnkounjoined/METADATA.pb
index d6b38437d20fe6626bf24b0cdd7dcdca97ebbe72..4658decd523f1f93cdc4e839b07f8eea726b2262 100644
--- a/ofl/notosansnkounjoined/METADATA.pb
+++ b/ofl/notosansnkounjoined/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/nko.git"
+  repository_url: "https://github.com/notofonts/nko"
   archive_url: "https://github.com/notofonts/nko/releases/download/NotoSansNKoUnjoined-v2.004/NotoSansNKoUnjoined-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansNKoUnjoined/googlefonts/variable-ttf/NotoSansNKoUnjoined[wght].ttf"
+    dest_file: "NotoSansNKoUnjoined[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bm_Nkoo"  # Bambara, Nko
diff --git a/ofl/notosansnkounjoined/upstream.yaml b/ofl/notosansnkounjoined/upstream.yaml
deleted file mode 100644
index 47e8b81dde258d0c8d23a3d8d11eef938ea79cc2..0000000000000000000000000000000000000000
--- a/ofl/notosansnkounjoined/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/nko/releases/download/NotoSansNKoUnjoined-v2.004/NotoSansNKoUnjoined-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansNKoUnjoined/googlefonts/variable-ttf/NotoSansNKoUnjoined[wght].ttf: NotoSansNKoUnjoined[wght].ttf
diff --git a/ofl/notosansnushu/METADATA.pb b/ofl/notosansnushu/METADATA.pb
index 4f656cd5646667e7a9035653be945a5a1f25bdc2..f57f503749badca1e182f3c113c4558e725f699a 100644
--- a/ofl/notosansnushu/METADATA.pb
+++ b/ofl/notosansnushu/METADATA.pb
@@ -17,8 +17,21 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "nushu"
 source {
-  repository_url: "https://github.com/notofonts/nushu.git"
+  repository_url: "https://github.com/notofonts/nushu"
   archive_url: "https://github.com/notofonts/nushu/releases/download/NotoSansNushu-v1.003/NotoSansNushu-v1.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansNushu/googlefonts/ttf/NotoSansNushu-Regular.ttf"
+    dest_file: "NotoSansNushu-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mis_Nshu"  # Xiangnan Tuhua
diff --git a/ofl/notosansnushu/upstream.yaml b/ofl/notosansnushu/upstream.yaml
deleted file mode 100644
index 5424163fbf9ffab0291cd9490ef8daad291dc968..0000000000000000000000000000000000000000
--- a/ofl/notosansnushu/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/nushu/releases/download/NotoSansNushu-v1.003/NotoSansNushu-v1.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansNushu/googlefonts/ttf/NotoSansNushu-Regular.ttf: NotoSansNushu-Regular.ttf
diff --git a/ofl/notosansogham/METADATA.pb b/ofl/notosansogham/METADATA.pb
index 82fcdf5d8be9c66590e96730d77575231a1bfb4d..9ddc4af10ef65eb1df26c31ecae97025db729a15 100644
--- a/ofl/notosansogham/METADATA.pb
+++ b/ofl/notosansogham/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "ogham"
 source {
-  repository_url: "https://github.com/notofonts/ogham.git"
+  repository_url: "https://github.com/notofonts/ogham"
   archive_url: "https://github.com/notofonts/ogham/releases/download/NotoSansOgham-v2.001/NotoSansOgham-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOgham/googlefonts/ttf/NotoSansOgham-Regular.ttf"
+    dest_file: "NotoSansOgham-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sga_Ogam"  # Old Irish, Ogham
diff --git a/ofl/notosansogham/upstream.yaml b/ofl/notosansogham/upstream.yaml
deleted file mode 100644
index 31f203210bf272d1ffe6aa7177983708961a0ad2..0000000000000000000000000000000000000000
--- a/ofl/notosansogham/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ogham/releases/download/NotoSansOgham-v2.001/NotoSansOgham-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOgham/googlefonts/ttf/NotoSansOgham-Regular.ttf: NotoSansOgham-Regular.ttf
diff --git a/ofl/notosansolchiki/METADATA.pb b/ofl/notosansolchiki/METADATA.pb
index c10bdb34fb254bcfa382dbd39d1d4e1bc7c1c9e3..d37954156f4d39735669214d461c389b3c86b14e 100644
--- a/ofl/notosansolchiki/METADATA.pb
+++ b/ofl/notosansolchiki/METADATA.pb
@@ -22,9 +22,26 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/ol-chiki.git"
+  repository_url: "https://github.com/notofonts/ol-chiki"
   archive_url: "https://github.com/notofonts/ol-chiki/releases/download/NotoSansOlChiki-v2.003/NotoSansOlChiki-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOlChiki/googlefonts/variable-ttf/NotoSansOlChiki[wght].ttf"
+    dest_file: "NotoSansOlChiki[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
-languages: "sat_Olck"  # Santali
+languages: "sat_Olck"  # Santali, Ol Chiki
 primary_script: "Olck"
diff --git a/ofl/notosansolchiki/upstream.yaml b/ofl/notosansolchiki/upstream.yaml
deleted file mode 100644
index 3c8cb9638b9e25cfa2b2ac60521af505b83eca70..0000000000000000000000000000000000000000
--- a/ofl/notosansolchiki/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ol-chiki/releases/download/NotoSansOlChiki-v2.003/NotoSansOlChiki-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOlChiki/googlefonts/variable-ttf/NotoSansOlChiki[wght].ttf: NotoSansOlChiki[wght].ttf
diff --git a/ofl/notosansoldhungarian/METADATA.pb b/ofl/notosansoldhungarian/METADATA.pb
index d5091004df70ac9b2687cc2d1835dfaa6e8b4c6f..72b825eb58169e340f58bc2cae46d02dcd547185 100644
--- a/ofl/notosansoldhungarian/METADATA.pb
+++ b/ofl/notosansoldhungarian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-hungarian"
 source {
-  repository_url: "https://github.com/notofonts/old-hungarian.git"
+  repository_url: "https://github.com/notofonts/old-hungarian"
   archive_url: "https://github.com/notofonts/old-hungarian/releases/download/NotoSansOldHungarian-v2.005/NotoSansOldHungarian-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansOldHungarian/googlefonts/ttf/NotoSansOldHungarian-Regular.ttf"
+    dest_file: "NotoSansOldHungarian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ohu_Hung"  # Old Hungarian
diff --git a/ofl/notosansoldhungarian/upstream.yaml b/ofl/notosansoldhungarian/upstream.yaml
deleted file mode 100644
index 148af4360a585bd5de864ae195c873e485776de0..0000000000000000000000000000000000000000
--- a/ofl/notosansoldhungarian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-hungarian/releases/download/NotoSansOldHungarian-v2.005/NotoSansOldHungarian-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansOldHungarian/googlefonts/ttf/NotoSansOldHungarian-Regular.ttf: NotoSansOldHungarian-Regular.ttf
diff --git a/ofl/notosansolditalic/METADATA.pb b/ofl/notosansolditalic/METADATA.pb
index b218ded38e760bfbcfe3e94d1665524a79c14a48..a86d14744b6f2a86db391817aedacc70151a0e02 100644
--- a/ofl/notosansolditalic/METADATA.pb
+++ b/ofl/notosansolditalic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-italic"
 source {
-  repository_url: "https://github.com/notofonts/old-italic.git"
+  repository_url: "https://github.com/notofonts/old-italic"
   archive_url: "https://github.com/notofonts/old-italic/releases/download/NotoSansOldItalic-v2.003/NotoSansOldItalic-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOldItalic/googlefonts/ttf/NotoSansOldItalic-Regular.ttf"
+    dest_file: "NotoSansOldItalic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ett_Ital"  # Etruscan
diff --git a/ofl/notosansolditalic/upstream.yaml b/ofl/notosansolditalic/upstream.yaml
deleted file mode 100644
index 8feb39474b27e84979f99d5dd8559fc386753fed..0000000000000000000000000000000000000000
--- a/ofl/notosansolditalic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-italic/releases/download/NotoSansOldItalic-v2.003/NotoSansOldItalic-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOldItalic/googlefonts/ttf/NotoSansOldItalic-Regular.ttf: NotoSansOldItalic-Regular.ttf
diff --git a/ofl/notosansoldnortharabian/METADATA.pb b/ofl/notosansoldnortharabian/METADATA.pb
index 0673ec26711c293023e1d62429385852a7069d8c..6fcd9524e52d8149e127c6d2f33adf788334d2f5 100644
--- a/ofl/notosansoldnortharabian/METADATA.pb
+++ b/ofl/notosansoldnortharabian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-north-arabian"
 source {
-  repository_url: "https://github.com/notofonts/old-north-arabian.git"
+  repository_url: "https://github.com/notofonts/old-north-arabian"
   archive_url: "https://github.com/notofonts/old-north-arabian/releases/download/NotoSansOldNorthArabian-v2.001/NotoSansOldNorthArabian-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOldNorthArabian/googlefonts/ttf/NotoSansOldNorthArabian-Regular.ttf"
+    dest_file: "NotoSansOldNorthArabian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Narb"  # Assyrian Neo-Aramaic, Old North Arabian
diff --git a/ofl/notosansoldnortharabian/upstream.yaml b/ofl/notosansoldnortharabian/upstream.yaml
deleted file mode 100644
index b401d65ccaa750965f054bcc9a39670c04615da3..0000000000000000000000000000000000000000
--- a/ofl/notosansoldnortharabian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-north-arabian/releases/download/NotoSansOldNorthArabian-v2.001/NotoSansOldNorthArabian-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOldNorthArabian/googlefonts/ttf/NotoSansOldNorthArabian-Regular.ttf: NotoSansOldNorthArabian-Regular.ttf
diff --git a/ofl/notosansoldpermic/METADATA.pb b/ofl/notosansoldpermic/METADATA.pb
index 3677cdaa4229032d7dd1107b64ad483f861144fb..e903088295f9e68a03bf675e03ecb7cb586023c5 100644
--- a/ofl/notosansoldpermic/METADATA.pb
+++ b/ofl/notosansoldpermic/METADATA.pb
@@ -18,13 +18,29 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-permic"
 source {
-  repository_url: "https://github.com/notofonts/old-permic.git"
+  repository_url: "https://github.com/notofonts/old-permic"
   archive_url: "https://github.com/notofonts/old-permic/releases/download/NotoSansOldPermic-v2.001/NotoSansOldPermic-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOldPermic/googlefonts/ttf/NotoSansOldPermic-Regular.ttf"
+    dest_file: "NotoSansOldPermic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "koi_Perm"  # Komi-Permyak, Old Permic
 languages: "kv_Perm"  # Komi, Old Permic
-primary_script: "Perm"
 sample_text {
   masthead_full: "𐍒𐍟𐍦𐍘"
   masthead_partial: "𐍑𐍤"
@@ -34,3 +50,4 @@ sample_text {
   poster_md: "𐍥𐍦𐍧𐍨𐍩𐍪𐍫 𐍗𐍘𐍙"
   poster_lg: "𐍐𐍑𐍒"
 }
+primary_script: "Perm"
diff --git a/ofl/notosansoldpermic/upstream.yaml b/ofl/notosansoldpermic/upstream.yaml
deleted file mode 100644
index a84753880d0a3b7bb62b76d6ade6a3db8810438c..0000000000000000000000000000000000000000
--- a/ofl/notosansoldpermic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-permic/releases/download/NotoSansOldPermic-v2.001/NotoSansOldPermic-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOldPermic/googlefonts/ttf/NotoSansOldPermic-Regular.ttf: NotoSansOldPermic-Regular.ttf
diff --git a/ofl/notosansoldpersian/METADATA.pb b/ofl/notosansoldpersian/METADATA.pb
index 4418669bcd29a23f0ac44384e198496a60657b1f..593d29e9283a9aec60f99b30eac6a26f161233dd 100644
--- a/ofl/notosansoldpersian/METADATA.pb
+++ b/ofl/notosansoldpersian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-persian"
 source {
-  repository_url: "https://github.com/notofonts/old-persian.git"
+  repository_url: "https://github.com/notofonts/old-persian"
   archive_url: "https://github.com/notofonts/old-persian/releases/download/NotoSansOldPersian-v2.001/NotoSansOldPersian-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOldPersian/googlefonts/ttf/NotoSansOldPersian-Regular.ttf"
+    dest_file: "NotoSansOldPersian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "peo_Xpeo"  # Old Persian
diff --git a/ofl/notosansoldpersian/upstream.yaml b/ofl/notosansoldpersian/upstream.yaml
deleted file mode 100644
index ebfb2690b1097bc3adf9fd0a4b516fa008fc2a53..0000000000000000000000000000000000000000
--- a/ofl/notosansoldpersian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-persian/releases/download/NotoSansOldPersian-v2.001/NotoSansOldPersian-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOldPersian/googlefonts/ttf/NotoSansOldPersian-Regular.ttf: NotoSansOldPersian-Regular.ttf
diff --git a/ofl/notosansoldsogdian/METADATA.pb b/ofl/notosansoldsogdian/METADATA.pb
index 18c864c63dac28296e6041a9ff24258198e83831..1392e6f0e6aef32668d3ec214eb1f9455ed51ed9 100644
--- a/ofl/notosansoldsogdian/METADATA.pb
+++ b/ofl/notosansoldsogdian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-sogdian"
 source {
-  repository_url: "https://github.com/notofonts/old-sogdian.git"
+  repository_url: "https://github.com/notofonts/old-sogdian"
   archive_url: "https://github.com/notofonts/old-sogdian/releases/download/NotoSansOldSogdian-v2.002/NotoSansOldSogdian-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOldSogdian/googlefonts/ttf/NotoSansOldSogdian-Regular.ttf"
+    dest_file: "NotoSansOldSogdian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Sogo"  # Assyrian Neo-Aramaic, Old Sogdian
diff --git a/ofl/notosansoldsogdian/upstream.yaml b/ofl/notosansoldsogdian/upstream.yaml
deleted file mode 100644
index 377ab37e6e89bde2f582bd8a61a77d5963744b0a..0000000000000000000000000000000000000000
--- a/ofl/notosansoldsogdian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-sogdian/releases/download/NotoSansOldSogdian-v2.002/NotoSansOldSogdian-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOldSogdian/googlefonts/ttf/NotoSansOldSogdian-Regular.ttf: NotoSansOldSogdian-Regular.ttf
diff --git a/ofl/notosansoldsoutharabian/METADATA.pb b/ofl/notosansoldsoutharabian/METADATA.pb
index fdf1ad44ff6fbd94a503830866cc8e674cae46c2..c0d0369f046303a0b2be016635f89efbda2d0627 100644
--- a/ofl/notosansoldsoutharabian/METADATA.pb
+++ b/ofl/notosansoldsoutharabian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-south-arabian"
 source {
-  repository_url: "https://github.com/notofonts/old-south-arabian.git"
+  repository_url: "https://github.com/notofonts/old-south-arabian"
   archive_url: "https://github.com/notofonts/old-south-arabian/releases/download/NotoSansOldSouthArabian-v2.001/NotoSansOldSouthArabian-v2.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansOldSouthArabian/googlefonts/ttf/NotoSansOldSouthArabian-Regular.ttf"
+    dest_file: "NotoSansOldSouthArabian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Sarb"  # Assyrian Neo-Aramaic, Old South Arabian
diff --git a/ofl/notosansoldsoutharabian/upstream.yaml b/ofl/notosansoldsoutharabian/upstream.yaml
deleted file mode 100644
index eb0996112a5a2d8de09eb3576b301f3c3db5df98..0000000000000000000000000000000000000000
--- a/ofl/notosansoldsoutharabian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-south-arabian/releases/download/NotoSansOldSouthArabian-v2.001/NotoSansOldSouthArabian-v2.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansOldSouthArabian/googlefonts/ttf/NotoSansOldSouthArabian-Regular.ttf: NotoSansOldSouthArabian-Regular.ttf
diff --git a/ofl/notosansoldturkic/METADATA.pb b/ofl/notosansoldturkic/METADATA.pb
index 74fec64e7aa01971c6624bbe42778e10bff8ffa6..8a8a34416a1d1487cfcd0fac861548838f904eb8 100644
--- a/ofl/notosansoldturkic/METADATA.pb
+++ b/ofl/notosansoldturkic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-turkic"
 source {
-  repository_url: "https://github.com/notofonts/old-turkic.git"
+  repository_url: "https://github.com/notofonts/old-turkic"
   archive_url: "https://github.com/notofonts/old-turkic/releases/download/NotoSansOldTurkic-v2.003/NotoSansOldTurkic-v2.003.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOldTurkic/googlefonts/ttf/NotoSansOldTurkic-Regular.ttf"
+    dest_file: "NotoSansOldTurkic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "otk_Orkh"  # Old Turkish
diff --git a/ofl/notosansoldturkic/upstream.yaml b/ofl/notosansoldturkic/upstream.yaml
deleted file mode 100644
index ce43847deb74975ccaf1dadae8e91c5066684585..0000000000000000000000000000000000000000
--- a/ofl/notosansoldturkic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-turkic/releases/download/NotoSansOldTurkic-v2.003/NotoSansOldTurkic-v2.003.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOldTurkic/googlefonts/ttf/NotoSansOldTurkic-Regular.ttf: NotoSansOldTurkic-Regular.ttf
diff --git a/ofl/notosansoriya/METADATA.pb b/ofl/notosansoriya/METADATA.pb
index c5994227e3556ca2f9c5d73428cbb0af5d074c54..540fd79d12c92c84485ef29984300cc0952a2397 100644
--- a/ofl/notosansoriya/METADATA.pb
+++ b/ofl/notosansoriya/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/oriya.git"
+  repository_url: "https://github.com/notofonts/oriya"
   archive_url: "https://github.com/notofonts/oriya/releases/download/NotoSansOriya-v2.006/NotoSansOriya-v2.006.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOriya/googlefonts/variable/NotoSansOriya[wdth,wght].ttf"
+    dest_file: "NotoSansOriya[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "khr_Orya"  # Kharia, Odia
diff --git a/ofl/notosansoriya/upstream.yaml b/ofl/notosansoriya/upstream.yaml
deleted file mode 100644
index e8d005c01c6deb98b6dc0f87078474dc9d8e1372..0000000000000000000000000000000000000000
--- a/ofl/notosansoriya/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/oriya/releases/download/NotoSansOriya-v2.006/NotoSansOriya-v2.006.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOriya/googlefonts/variable/NotoSansOriya[wdth,wght].ttf: NotoSansOriya[wdth,wght].ttf
diff --git a/ofl/notosansosage/METADATA.pb b/ofl/notosansosage/METADATA.pb
index d532d858536f988858db1d84d3d0c353e1073ab0..02ca6acc81e93407cef0abd8a21279f252cd825e 100644
--- a/ofl/notosansosage/METADATA.pb
+++ b/ofl/notosansosage/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "osage"
 source {
-  repository_url: "https://github.com/notofonts/osage.git"
+  repository_url: "https://github.com/notofonts/osage"
   archive_url: "https://github.com/notofonts/osage/releases/download/NotoSansOsage-v2.002/NotoSansOsage-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOsage/googlefonts/ttf/NotoSansOsage-Regular.ttf"
+    dest_file: "NotoSansOsage-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "osa_Osge"  # Osage
diff --git a/ofl/notosansosage/upstream.yaml b/ofl/notosansosage/upstream.yaml
deleted file mode 100644
index 6b9063d0a0d8f13f22300ff3fbb4b7c82ac3007b..0000000000000000000000000000000000000000
--- a/ofl/notosansosage/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/osage/releases/download/NotoSansOsage-v2.002/NotoSansOsage-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOsage/googlefonts/ttf/NotoSansOsage-Regular.ttf: NotoSansOsage-Regular.ttf
diff --git a/ofl/notosansosmanya/METADATA.pb b/ofl/notosansosmanya/METADATA.pb
index 046b7fd5fd0417487ac801b0298e98971f26cae3..c937a9c8e9c28001467ca6b3f2d87b853c391c51 100644
--- a/ofl/notosansosmanya/METADATA.pb
+++ b/ofl/notosansosmanya/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "osmanya"
 source {
-  repository_url: "https://github.com/notofonts/osmanya.git"
+  repository_url: "https://github.com/notofonts/osmanya"
   archive_url: "https://github.com/notofonts/osmanya/releases/download/NotoSansOsmanya-v2.001/NotoSansOsmanya-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansOsmanya/googlefonts/ttf/NotoSansOsmanya-Regular.ttf"
+    dest_file: "NotoSansOsmanya-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "so_Osma"  # Somali, Osmanya
diff --git a/ofl/notosansosmanya/upstream.yaml b/ofl/notosansosmanya/upstream.yaml
deleted file mode 100644
index 336c74eeefebadddee390fca57fd6a8d6804ed77..0000000000000000000000000000000000000000
--- a/ofl/notosansosmanya/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/osmanya/releases/download/NotoSansOsmanya-v2.001/NotoSansOsmanya-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansOsmanya/googlefonts/ttf/NotoSansOsmanya-Regular.ttf: NotoSansOsmanya-Regular.ttf
diff --git a/ofl/notosanspahawhhmong/METADATA.pb b/ofl/notosanspahawhhmong/METADATA.pb
index 432f866e4a9273055b7132576fbe5b249a3d204f..979628864eea48359fa2c8361c496226239959f7 100644
--- a/ofl/notosanspahawhhmong/METADATA.pb
+++ b/ofl/notosanspahawhhmong/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "pahawh-hmong"
 source {
-  repository_url: "https://github.com/notofonts/pahawh-hmong.git"
+  repository_url: "https://github.com/notofonts/pahawh-hmong"
   archive_url: "https://github.com/notofonts/pahawh-hmong/releases/download/NotoSansPahawhHmong-v2.001/NotoSansPahawhHmong-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansPahawhHmong/googlefonts/ttf/NotoSansPahawhHmong-Regular.ttf"
+    dest_file: "NotoSansPahawhHmong-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hmd_Hmng"  # A-Hmao, Pahawh Hmong
diff --git a/ofl/notosanspahawhhmong/upstream.yaml b/ofl/notosanspahawhhmong/upstream.yaml
deleted file mode 100644
index 69eab2a08089a194812c50e23c3300420e6a2e04..0000000000000000000000000000000000000000
--- a/ofl/notosanspahawhhmong/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/pahawh-hmong/releases/download/NotoSansPahawhHmong-v2.001/NotoSansPahawhHmong-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansPahawhHmong/googlefonts/ttf/NotoSansPahawhHmong-Regular.ttf: NotoSansPahawhHmong-Regular.ttf
diff --git a/ofl/notosanspalmyrene/METADATA.pb b/ofl/notosanspalmyrene/METADATA.pb
index f20daab18969555fa53df393362b743950a06b65..117f20b903e14e3467bbef2dacc6c257d4cebf47 100644
--- a/ofl/notosanspalmyrene/METADATA.pb
+++ b/ofl/notosanspalmyrene/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "palmyrene"
 source {
-  repository_url: "https://github.com/notofonts/palmyrene.git"
+  repository_url: "https://github.com/notofonts/palmyrene"
   archive_url: "https://github.com/notofonts/palmyrene/releases/download/NotoSansPalmyrene-v2.001/NotoSansPalmyrene-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansPalmyrene/googlefonts/ttf/NotoSansPalmyrene-Regular.ttf"
+    dest_file: "NotoSansPalmyrene-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Palm"  # Assyrian Neo-Aramaic, Palmyrene
diff --git a/ofl/notosanspalmyrene/upstream.yaml b/ofl/notosanspalmyrene/upstream.yaml
deleted file mode 100644
index 531fcd89a20942f8b7026e1d5ae56229d10b568a..0000000000000000000000000000000000000000
--- a/ofl/notosanspalmyrene/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/palmyrene/releases/download/NotoSansPalmyrene-v2.001/NotoSansPalmyrene-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansPalmyrene/googlefonts/ttf/NotoSansPalmyrene-Regular.ttf: NotoSansPalmyrene-Regular.ttf
diff --git a/ofl/notosanspaucinhau/METADATA.pb b/ofl/notosanspaucinhau/METADATA.pb
index 649e046ead9ea154ad8590a57e7ae402653b732c..08e25f3a62ea212353b3abe3e9d9fa92acd115a6 100644
--- a/ofl/notosanspaucinhau/METADATA.pb
+++ b/ofl/notosanspaucinhau/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "pau-cin-hau"
 source {
-  repository_url: "https://github.com/notofonts/pau-cin-hau.git"
+  repository_url: "https://github.com/notofonts/pau-cin-hau"
   archive_url: "https://github.com/notofonts/pau-cin-hau/releases/download/NotoSansPauCinHau-v2.002/NotoSansPauCinHau-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansPauCinHau/googlefonts/ttf/NotoSansPauCinHau-Regular.ttf"
+    dest_file: "NotoSansPauCinHau-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ctd_Pauc"  # Tedim Chin, Pau Cin Hau
diff --git a/ofl/notosanspaucinhau/upstream.yaml b/ofl/notosanspaucinhau/upstream.yaml
deleted file mode 100644
index d109cdea92ddb453b32a310a3d8f27a60327bcc9..0000000000000000000000000000000000000000
--- a/ofl/notosanspaucinhau/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/pau-cin-hau/releases/download/NotoSansPauCinHau-v2.002/NotoSansPauCinHau-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansPauCinHau/googlefonts/ttf/NotoSansPauCinHau-Regular.ttf: NotoSansPauCinHau-Regular.ttf
diff --git a/ofl/notosansphagspa/METADATA.pb b/ofl/notosansphagspa/METADATA.pb
index 04e8ba0e30c6c90c23dea28f046222a4ccf36d2e..f90d508edbe5d37ec66adc07c13c27e0ff32a54c 100644
--- a/ofl/notosansphagspa/METADATA.pb
+++ b/ofl/notosansphagspa/METADATA.pb
@@ -19,12 +19,29 @@ subsets: "menu"
 subsets: "phags-pa"
 subsets: "symbols"
 source {
-  repository_url: "https://github.com/notofonts/phags-pa.git"
+  repository_url: "https://github.com/notofonts/phags-pa"
   archive_url: "https://github.com/notofonts/phags-pa/releases/download/NotoSansPhagsPa-v2.004/NotoSansPhagsPa-v2.004.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansPhagsPa/googlefonts/ttf/NotoSansPhagsPa-Regular.ttf"
+    dest_file: "NotoSansPhagsPa-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
-display_name: "Noto Sans Phags-pa"
 languages: "lzh_Phag"  # Literary Chinese, Phags-pa
 languages: "mn_Phag"  # Mongolian, Phags-pa
 languages: "sa_Phag"  # Sanskrit, Phags-pa
 languages: "zh_Phag"  # Chinese, Phags-pa
+display_name: "Noto Sans Phags-pa"
diff --git a/ofl/notosansphagspa/upstream.yaml b/ofl/notosansphagspa/upstream.yaml
deleted file mode 100644
index 4747f2e1cac8cfa6aba726eb7ab00c98d86aebf5..0000000000000000000000000000000000000000
--- a/ofl/notosansphagspa/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/phags-pa/releases/download/NotoSansPhagsPa-v2.004/NotoSansPhagsPa-v2.004.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansPhagsPa/googlefonts/ttf/NotoSansPhagsPa-Regular.ttf: NotoSansPhagsPa-Regular.ttf
diff --git a/ofl/notosansphoenician/METADATA.pb b/ofl/notosansphoenician/METADATA.pb
index e1c3d67a912d55db7770c5b4743914f13d884e05..9278b478c8dc41728be0d29e036bf5093e8dd078 100644
--- a/ofl/notosansphoenician/METADATA.pb
+++ b/ofl/notosansphoenician/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "phoenician"
 source {
-  repository_url: "https://github.com/notofonts/phoenician.git"
+  repository_url: "https://github.com/notofonts/phoenician"
   archive_url: "https://github.com/notofonts/phoenician/releases/download/NotoSansPhoenician-v2.001/NotoSansPhoenician-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansPhoenician/googlefonts/ttf/NotoSansPhoenician-Regular.ttf"
+    dest_file: "NotoSansPhoenician-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Phnx"  # Assyrian Neo-Aramaic, Phoenician
diff --git a/ofl/notosansphoenician/upstream.yaml b/ofl/notosansphoenician/upstream.yaml
deleted file mode 100644
index f11fe0399525445d6107f657d5e6b1d39c80aef0..0000000000000000000000000000000000000000
--- a/ofl/notosansphoenician/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/phoenician/releases/download/NotoSansPhoenician-v2.001/NotoSansPhoenician-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansPhoenician/googlefonts/ttf/NotoSansPhoenician-Regular.ttf: NotoSansPhoenician-Regular.ttf
diff --git a/ofl/notosanspsalterpahlavi/METADATA.pb b/ofl/notosanspsalterpahlavi/METADATA.pb
index f858acc96cb10ea1922d4749d94f6b848f61631c..15debe978ec38b82f6722b71b8dfb4603c1b8096 100644
--- a/ofl/notosanspsalterpahlavi/METADATA.pb
+++ b/ofl/notosanspsalterpahlavi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "psalter-pahlavi"
 source {
-  repository_url: "https://github.com/notofonts/psalter-pahlavi.git"
+  repository_url: "https://github.com/notofonts/psalter-pahlavi"
   archive_url: "https://github.com/notofonts/psalter-pahlavi/releases/download/NotoSansPsalterPahlavi-v2.002/NotoSansPsalterPahlavi-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansPsalterPahlavi/googlefonts/ttf/NotoSansPsalterPahlavi-Regular.ttf"
+    dest_file: "NotoSansPsalterPahlavi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Phlp"  # Assyrian Neo-Aramaic, Psalter Pahlavi
diff --git a/ofl/notosanspsalterpahlavi/upstream.yaml b/ofl/notosanspsalterpahlavi/upstream.yaml
deleted file mode 100644
index 5d0d1d494f1b93e5fd85cc0656ee12c7e45ee2dd..0000000000000000000000000000000000000000
--- a/ofl/notosanspsalterpahlavi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/psalter-pahlavi/releases/download/NotoSansPsalterPahlavi-v2.002/NotoSansPsalterPahlavi-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansPsalterPahlavi/googlefonts/ttf/NotoSansPsalterPahlavi-Regular.ttf: NotoSansPsalterPahlavi-Regular.ttf
diff --git a/ofl/notosansrejang/METADATA.pb b/ofl/notosansrejang/METADATA.pb
index f1a13a3ed47fd1ae07e1fe04d1aaceaa55f20cc4..af00ce765a5c550d4d290f29633fe5f49cfd78e7 100644
--- a/ofl/notosansrejang/METADATA.pb
+++ b/ofl/notosansrejang/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "rejang"
 source {
-  repository_url: "https://github.com/notofonts/rejang.git"
+  repository_url: "https://github.com/notofonts/rejang"
   archive_url: "https://github.com/notofonts/rejang/releases/download/NotoSansRejang-v2.002/NotoSansRejang-v2.002.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansRejang/googlefonts/ttf/NotoSansRejang-Regular.ttf"
+    dest_file: "NotoSansRejang-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "rej_Rjng"  # Rejang, Rejang
diff --git a/ofl/notosansrejang/upstream.yaml b/ofl/notosansrejang/upstream.yaml
deleted file mode 100644
index a5de3725f7c9453b69e707a0792f7fa3f84f541c..0000000000000000000000000000000000000000
--- a/ofl/notosansrejang/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/rejang/releases/download/NotoSansRejang-v2.002/NotoSansRejang-v2.002.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansRejang/googlefonts/ttf/NotoSansRejang-Regular.ttf: NotoSansRejang-Regular.ttf
diff --git a/ofl/notosansrunic/METADATA.pb b/ofl/notosansrunic/METADATA.pb
index 43b38c991eb711e19467f82f471e8f8041ddc096..8d2b638e0a70489cda305c0ba9200a4f9fc2575b 100644
--- a/ofl/notosansrunic/METADATA.pb
+++ b/ofl/notosansrunic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "runic"
 source {
-  repository_url: "https://github.com/notofonts/runic.git"
+  repository_url: "https://github.com/notofonts/runic"
   archive_url: "https://github.com/notofonts/runic/releases/download/NotoSansRunic-v2.002/NotoSansRunic-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansRunic/googlefonts/ttf/NotoSansRunic-Regular.ttf"
+    dest_file: "NotoSansRunic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "de_Runr"  # German, Runic
diff --git a/ofl/notosansrunic/upstream.yaml b/ofl/notosansrunic/upstream.yaml
deleted file mode 100644
index 85c219b2e1f03d17718388b3ff621133b5462a93..0000000000000000000000000000000000000000
--- a/ofl/notosansrunic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/runic/releases/download/NotoSansRunic-v2.002/NotoSansRunic-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansRunic/googlefonts/ttf/NotoSansRunic-Regular.ttf: NotoSansRunic-Regular.ttf
diff --git a/ofl/notosanssamaritan/METADATA.pb b/ofl/notosanssamaritan/METADATA.pb
index 47df0fe20dfc93e6e7326bbcc268d76fb0dd493c..b9f3cb5de937cf419a8d45ecc46b33a6ee951f25 100644
--- a/ofl/notosanssamaritan/METADATA.pb
+++ b/ofl/notosanssamaritan/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "samaritan"
 source {
-  repository_url: "https://github.com/notofonts/samaritan.git"
+  repository_url: "https://github.com/notofonts/samaritan"
   archive_url: "https://github.com/notofonts/samaritan/releases/download/NotoSansSamaritan-v2.001/NotoSansSamaritan-v2.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSamaritan/googlefonts/ttf/NotoSansSamaritan-Regular.ttf"
+    dest_file: "NotoSansSamaritan-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Samr"  # Assyrian Neo-Aramaic, Samaritan
diff --git a/ofl/notosanssamaritan/upstream.yaml b/ofl/notosanssamaritan/upstream.yaml
deleted file mode 100644
index 4e535aba2f464a5d81c38baf8e2db776fcc528f6..0000000000000000000000000000000000000000
--- a/ofl/notosanssamaritan/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/samaritan/releases/download/NotoSansSamaritan-v2.001/NotoSansSamaritan-v2.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSamaritan/googlefonts/ttf/NotoSansSamaritan-Regular.ttf: NotoSansSamaritan-Regular.ttf
diff --git a/ofl/notosanssaurashtra/METADATA.pb b/ofl/notosanssaurashtra/METADATA.pb
index eecf5a6610140447fbfd7ee35ac74bb417644cf0..1ecc5698566c81125134e491555a706ee443326c 100644
--- a/ofl/notosanssaurashtra/METADATA.pb
+++ b/ofl/notosanssaurashtra/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "saurashtra"
 source {
-  repository_url: "https://github.com/notofonts/saurashtra.git"
+  repository_url: "https://github.com/notofonts/saurashtra"
   archive_url: "https://github.com/notofonts/saurashtra/releases/download/NotoSansSaurashtra-v2.002/NotoSansSaurashtra-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSaurashtra/googlefonts/ttf/NotoSansSaurashtra-Regular.ttf"
+    dest_file: "NotoSansSaurashtra-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "saz_Saur"  # Saurashtra
diff --git a/ofl/notosanssaurashtra/upstream.yaml b/ofl/notosanssaurashtra/upstream.yaml
deleted file mode 100644
index 76ea31b5c464ab2875d651b01fe7ed377231da8c..0000000000000000000000000000000000000000
--- a/ofl/notosanssaurashtra/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/saurashtra/releases/download/NotoSansSaurashtra-v2.002/NotoSansSaurashtra-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSaurashtra/googlefonts/ttf/NotoSansSaurashtra-Regular.ttf: NotoSansSaurashtra-Regular.ttf
diff --git a/ofl/notosanssharada/METADATA.pb b/ofl/notosanssharada/METADATA.pb
index 0dd4318c525df6692ceda8903a1cab09dd1b7ca4..5aa4c8ec0417c88cdebce49bbcf9bf4a34e92271 100644
--- a/ofl/notosanssharada/METADATA.pb
+++ b/ofl/notosanssharada/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "sharada"
 source {
-  repository_url: "https://github.com/notofonts/sharada.git"
+  repository_url: "https://github.com/notofonts/sharada"
   archive_url: "https://github.com/notofonts/sharada/releases/download/NotoSansSharada-v2.006/NotoSansSharada-v2.006.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSharada/googlefonts/ttf/NotoSansSharada-Regular.ttf"
+    dest_file: "NotoSansSharada-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Shrd"  # Sanskrit, Sharada
diff --git a/ofl/notosanssharada/upstream.yaml b/ofl/notosanssharada/upstream.yaml
deleted file mode 100644
index 7d0536ada7c6378d284877df83c70ed65b2f86ef..0000000000000000000000000000000000000000
--- a/ofl/notosanssharada/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sharada/releases/download/NotoSansSharada-v2.006/NotoSansSharada-v2.006.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSharada/googlefonts/ttf/NotoSansSharada-Regular.ttf: NotoSansSharada-Regular.ttf
diff --git a/ofl/notosansshavian/METADATA.pb b/ofl/notosansshavian/METADATA.pb
index f26386cc731d3113d6a415a7f11c7fd15b6eacd3..a3bbd364df15ee7cd877dde6aa4f93d58e3ecf64 100644
--- a/ofl/notosansshavian/METADATA.pb
+++ b/ofl/notosansshavian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "shavian"
 source {
-  repository_url: "https://github.com/notofonts/shavian.git"
+  repository_url: "https://github.com/notofonts/shavian"
   archive_url: "https://github.com/notofonts/shavian/releases/download/NotoSansShavian-v2.001/NotoSansShavian-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansShavian/googlefonts/ttf/NotoSansShavian-Regular.ttf"
+    dest_file: "NotoSansShavian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "en_Shaw"  # English, Shavian
diff --git a/ofl/notosansshavian/upstream.yaml b/ofl/notosansshavian/upstream.yaml
deleted file mode 100644
index e2c5645ec9d39b1513a5053092f8c18331cd0c1a..0000000000000000000000000000000000000000
--- a/ofl/notosansshavian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/shavian/releases/download/NotoSansShavian-v2.001/NotoSansShavian-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansShavian/googlefonts/ttf/NotoSansShavian-Regular.ttf: NotoSansShavian-Regular.ttf
diff --git a/ofl/notosanssiddham/METADATA.pb b/ofl/notosanssiddham/METADATA.pb
index d0f7a4b2f0ba2659a3e502d268fd8e3c45396fc4..127c503b445b6fe6b6871a345d20d6596317dc72 100644
--- a/ofl/notosanssiddham/METADATA.pb
+++ b/ofl/notosanssiddham/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "siddham"
 source {
-  repository_url: "https://github.com/notofonts/siddham.git"
+  repository_url: "https://github.com/notofonts/siddham"
   archive_url: "https://github.com/notofonts/siddham/releases/download/NotoSansSiddham-v2.005/NotoSansSiddham-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSiddham/googlefonts/ttf/NotoSansSiddham-Regular.ttf"
+    dest_file: "NotoSansSiddham-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Sidd"  # Sanskrit, Siddham
diff --git a/ofl/notosanssiddham/upstream.yaml b/ofl/notosanssiddham/upstream.yaml
deleted file mode 100644
index 8333896223c455fdfa773e3ee6c063e6fed002ea..0000000000000000000000000000000000000000
--- a/ofl/notosanssiddham/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/siddham/releases/download/NotoSansSiddham-v2.005/NotoSansSiddham-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSiddham/googlefonts/ttf/NotoSansSiddham-Regular.ttf: NotoSansSiddham-Regular.ttf
diff --git a/ofl/notosanssignwriting/METADATA.pb b/ofl/notosanssignwriting/METADATA.pb
index 8401ce64b67dad745f02e08ad89b9c9b564a2a5e..e7dd4fd80427badb8344170ae7c709ce4342ff4b 100644
--- a/ofl/notosanssignwriting/METADATA.pb
+++ b/ofl/notosanssignwriting/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "signwriting"
 source {
-  repository_url: "https://github.com/notofonts/sign-writing.git"
+  repository_url: "https://github.com/notofonts/sign-writing"
   archive_url: "https://github.com/notofonts/sign-writing/releases/download/NotoSansSignWriting-v2.005/NotoSansSignWriting-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSignWriting/googlefonts/ttf/NotoSansSignWriting-Regular.ttf"
+    dest_file: "NotoSansSignWriting-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notosanssignwriting/upstream.yaml b/ofl/notosanssignwriting/upstream.yaml
deleted file mode 100644
index b9d9f19c9550ccedbd48d615fcf58fb2f7df2b83..0000000000000000000000000000000000000000
--- a/ofl/notosanssignwriting/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sign-writing/releases/download/NotoSansSignWriting-v2.005/NotoSansSignWriting-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSignWriting/googlefonts/ttf/NotoSansSignWriting-Regular.ttf: NotoSansSignWriting-Regular.ttf
diff --git a/ofl/notosanssinhala/METADATA.pb b/ofl/notosanssinhala/METADATA.pb
index 021d91845e95e0c2334f64cdf23ab8c955c0f285..0e56ecf500cff66215318b306a1f4d74b37efd19 100644
--- a/ofl/notosanssinhala/METADATA.pb
+++ b/ofl/notosanssinhala/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/sinhala.git"
+  repository_url: "https://github.com/notofonts/sinhala"
   archive_url: "https://github.com/notofonts/sinhala/releases/download/NotoSansSinhala-v2.006/NotoSansSinhala-v2.006.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansSinhala/googlefonts/variable-ttf/NotoSansSinhala[wdth,wght].ttf"
+    dest_file: "NotoSansSinhala[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "pi_Sinh"  # Pali, Sinhala
diff --git a/ofl/notosanssinhala/upstream.yaml b/ofl/notosanssinhala/upstream.yaml
deleted file mode 100644
index 804248854ca745561bf1743101f1316ebd0d3d64..0000000000000000000000000000000000000000
--- a/ofl/notosanssinhala/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sinhala/releases/download/NotoSansSinhala-v2.006/NotoSansSinhala-v2.006.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansSinhala/googlefonts/variable-ttf/NotoSansSinhala[wdth,wght].ttf: NotoSansSinhala[wdth,wght].ttf
diff --git a/ofl/notosanssogdian/METADATA.pb b/ofl/notosanssogdian/METADATA.pb
index 4135f3b2830919e8c458b61cf7945eeaf66adeac..17a5e831caaa1d02884e467ed0cc5a6c70284679 100644
--- a/ofl/notosanssogdian/METADATA.pb
+++ b/ofl/notosanssogdian/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "sogdian"
 source {
-  repository_url: "https://github.com/notofonts/sogdian.git"
+  repository_url: "https://github.com/notofonts/sogdian"
   archive_url: "https://github.com/notofonts/sogdian/releases/download/NotoSansSogdian-v2.002/NotoSansSogdian-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSogdian/googlefonts/ttf/NotoSansSogdian-Regular.ttf"
+    dest_file: "NotoSansSogdian-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Sogd"  # Assyrian Neo-Aramaic, Sogdian
diff --git a/ofl/notosanssogdian/upstream.yaml b/ofl/notosanssogdian/upstream.yaml
deleted file mode 100644
index a04e0b12ab4141224945ed1e79f062e6a5b26085..0000000000000000000000000000000000000000
--- a/ofl/notosanssogdian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sogdian/releases/download/NotoSansSogdian-v2.002/NotoSansSogdian-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSogdian/googlefonts/ttf/NotoSansSogdian-Regular.ttf: NotoSansSogdian-Regular.ttf
diff --git a/ofl/notosanssorasompeng/METADATA.pb b/ofl/notosanssorasompeng/METADATA.pb
index b23d4fc84764b7e1e31a9e1d1a3d13bd12e1de49..d57869d1a6d9a4d53fc5ffa3095deff0acc52205 100644
--- a/ofl/notosanssorasompeng/METADATA.pb
+++ b/ofl/notosanssorasompeng/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/sora-sompeng.git"
+  repository_url: "https://github.com/notofonts/sora-sompeng"
   archive_url: "https://github.com/notofonts/sora-sompeng/releases/download/NotoSansSoraSompeng-v2.101/NotoSansSoraSompeng-v2.101.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansSoraSompeng/googlefonts/variable-ttf/NotoSansSoraSompeng[wght].ttf"
+    dest_file: "NotoSansSoraSompeng[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Sora"  # Sanskrit, Sora Sompeng
diff --git a/ofl/notosanssorasompeng/upstream.yaml b/ofl/notosanssorasompeng/upstream.yaml
deleted file mode 100644
index 470bdc2d02f99db4944f47678dc2cb7b23efd053..0000000000000000000000000000000000000000
--- a/ofl/notosanssorasompeng/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sora-sompeng/releases/download/NotoSansSoraSompeng-v2.101/NotoSansSoraSompeng-v2.101.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansSoraSompeng/googlefonts/variable-ttf/NotoSansSoraSompeng[wght].ttf: NotoSansSoraSompeng[wght].ttf
diff --git a/ofl/notosanssoyombo/METADATA.pb b/ofl/notosanssoyombo/METADATA.pb
index af19a7bf8c742e9ba857fcb8e18c3cd1eadc6525..e77b64ead1aa6c271558f8250ebde1972a20955a 100644
--- a/ofl/notosanssoyombo/METADATA.pb
+++ b/ofl/notosanssoyombo/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "soyombo"
 source {
-  repository_url: "https://github.com/notofonts/soyombo.git"
+  repository_url: "https://github.com/notofonts/soyombo"
   archive_url: "https://github.com/notofonts/soyombo/releases/download/NotoSansSoyombo-v2.001/NotoSansSoyombo-v2.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSoyombo/googlefonts/ttf/NotoSansSoyombo-Regular.ttf"
+    dest_file: "NotoSansSoyombo-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "cmg_Soyo"  # Classical Mongolian
diff --git a/ofl/notosanssoyombo/upstream.yaml b/ofl/notosanssoyombo/upstream.yaml
deleted file mode 100644
index e04abfa98537c12b764ce1c6fcf8fb04255fc9e4..0000000000000000000000000000000000000000
--- a/ofl/notosanssoyombo/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/soyombo/releases/download/NotoSansSoyombo-v2.001/NotoSansSoyombo-v2.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSoyombo/googlefonts/ttf/NotoSansSoyombo-Regular.ttf: NotoSansSoyombo-Regular.ttf
diff --git a/ofl/notosanssundanese/METADATA.pb b/ofl/notosanssundanese/METADATA.pb
index fb7d18f339eac6df546a2693f91ff5b0b18558b4..1981e7833396241186d7790731b8359d3054bc3a 100644
--- a/ofl/notosanssundanese/METADATA.pb
+++ b/ofl/notosanssundanese/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/sundanese.git"
+  repository_url: "https://github.com/notofonts/sundanese"
   archive_url: "https://github.com/notofonts/sundanese/releases/download/NotoSansSundanese-v2.005/NotoSansSundanese-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansSundanese/googlefonts/variable/NotoSansSundanese[wght].ttf"
+    dest_file: "NotoSansSundanese[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Sund"  # Sanskrit, Sundanese
diff --git a/ofl/notosanssundanese/upstream.yaml b/ofl/notosanssundanese/upstream.yaml
deleted file mode 100644
index 925213eaa6f41039b8cf5887c78aba5522e35738..0000000000000000000000000000000000000000
--- a/ofl/notosanssundanese/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sundanese/releases/download/NotoSansSundanese-v2.005/NotoSansSundanese-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansSundanese/googlefonts/variable/NotoSansSundanese[wght].ttf: NotoSansSundanese[wght].ttf
diff --git a/ofl/notosanssylotinagri/METADATA.pb b/ofl/notosanssylotinagri/METADATA.pb
index d205260f251a7c36847da8511d8f0a04cba5ee6d..6761ae9bce3956471ab253b5c94f742ba4e55dd7 100644
--- a/ofl/notosanssylotinagri/METADATA.pb
+++ b/ofl/notosanssylotinagri/METADATA.pb
@@ -17,10 +17,27 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "syloti-nagri"
 source {
-  repository_url: "https://github.com/notofonts/syloti-nagri.git"
+  repository_url: "https://github.com/notofonts/syloti-nagri"
   archive_url: "https://github.com/notofonts/syloti-nagri/releases/download/NotoSansSylotiNagri-v2.004/NotoSansSylotiNagri-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSylotiNagri/googlefonts/ttf/NotoSansSylotiNagri-Regular.ttf"
+    dest_file: "NotoSansSylotiNagri-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
-languages: "sa_Sylo"  # Sanskrit, Syloti Nagri
+languages: "sa_Sylo"
 languages: "syl_Sylo"  # Sylheti, Syloti Nagri
 primary_script: "Sylo"
diff --git a/ofl/notosanssylotinagri/upstream.yaml b/ofl/notosanssylotinagri/upstream.yaml
deleted file mode 100644
index 894f27feddb56ae66f5e3130363708b465d23a7c..0000000000000000000000000000000000000000
--- a/ofl/notosanssylotinagri/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/syloti-nagri/releases/download/NotoSansSylotiNagri-v2.004/NotoSansSylotiNagri-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSylotiNagri/googlefonts/ttf/NotoSansSylotiNagri-Regular.ttf: NotoSansSylotiNagri-Regular.ttf
diff --git a/ofl/notosanssymbols/METADATA.pb b/ofl/notosanssymbols/METADATA.pb
index ca2be1a31634601cbad01b192aa994d3f94a9ddd..96ae55b5e014a04cb074d33f3aa5918ca5b93b30 100644
--- a/ofl/notosanssymbols/METADATA.pb
+++ b/ofl/notosanssymbols/METADATA.pb
@@ -12,15 +12,6 @@ fonts {
   full_name: "Noto Sans Symbols Regular"
   copyright: "Copyright 2022 The Noto Project Authors (https://github.com/notofonts/symbols)"
 }
-sample_text {
-  masthead_full: "☺🜻⚛🅰"
-  masthead_partial: "⚓♻"
-  styles: "⛾⛿☯☸ ⛩⛰⛱⛴⛷⛸⛹ ♸⚥☊☍☓☤ 🄰🄱🆈🆉 ⚖♇♪♬"
-  tester: "⚓⛲⛵⛺⛽ ⎈⎉⎊⎋⎌⎍⎎ 🜈🜉🜌🜍🜪🝥🜴🜻🜟🝂↕ ♷⚱⚑⚲🝆🝍🜎 ♻♾⚒⚕🜲🜳🜴🜶🜷🜸 ☺⚺⚻⚼ ⎁⎗⏙⏒⏧🅫☽⛩⛯⚖🜕🝰🝗🝬🝞"
-  poster_sm: "☺⚓🜖🝃⚻ ⚗⛰♸⚘⏚ ⎉⎐☊⎘🝭🆎"
-  poster_md: "♻⚚⚖⛱⎙⛯🝈⏃⎃"
-  poster_lg: "⛲🝃♪"
-}
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
@@ -31,9 +22,35 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/symbols.git"
+  repository_url: "https://github.com/notofonts/symbols"
   archive_url: "https://github.com/notofonts/symbols/releases/download/NotoSansSymbols-v2.003/NotoSansSymbols-v2.003.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansSymbols/googlefonts/variable-ttf/NotoSansSymbols[wght].ttf"
+    dest_file: "NotoSansSymbols[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
+sample_text {
+  masthead_full: "☺🜻⚛🅰"
+  masthead_partial: "⚓♻"
+  styles: "⛾⛿☯☸ ⛩⛰⛱⛴⛷⛸⛹ ♸⚥☊☍☓☤ 🄰🄱🆈🆉 ⚖♇♪♬"
+  tester: "⚓⛲⛵⛺⛽ ⎈⎉⎊⎋⎌⎍⎎ 🜈🜉🜌🜍🜪🝥🜴🜻🜟🝂↕ ♷⚱⚑⚲🝆🝍🜎 ♻♾⚒⚕🜲🜳🜴🜶🜷🜸 ☺⚺⚻⚼ ⎁⎗⏙⏒⏧🅫☽⛩⛯⚖🜕🝰🝗🝬🝞"
+  poster_sm: "☺⚓🜖🝃⚻ ⚗⛰♸⚘⏚ ⎉⎐☊⎘🝭🆎"
+  poster_md: "♻⚚⚖⛱⎙⛯🝈⏃⎃"
+  poster_lg: "⛲🝃♪"
+}
 stroke: "SANS_SERIF"
 classifications: "SYMBOLS"
diff --git a/ofl/notosanssymbols/upstream.yaml b/ofl/notosanssymbols/upstream.yaml
deleted file mode 100644
index e32fe2a47e2fbb1194dbf4824d46d89c5f84e5d1..0000000000000000000000000000000000000000
--- a/ofl/notosanssymbols/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/symbols/releases/download/NotoSansSymbols-v2.003/NotoSansSymbols-v2.003.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansSymbols/googlefonts/variable-ttf/NotoSansSymbols[wght].ttf: NotoSansSymbols[wght].ttf
diff --git a/ofl/notosanssymbols2/METADATA.pb b/ofl/notosanssymbols2/METADATA.pb
index 8c0fdf0b75ce55577e6cfe3256298831f7456bc1..33fc7679888aac9936998b9643d07e5bf9ec6ce8 100644
--- a/ofl/notosanssymbols2/METADATA.pb
+++ b/ofl/notosanssymbols2/METADATA.pb
@@ -20,8 +20,25 @@ subsets: "mayan-numerals"
 subsets: "menu"
 subsets: "symbols"
 source {
-  repository_url: "https://github.com/notofonts/symbols.git"
+  repository_url: "https://github.com/notofonts/symbols"
   archive_url: "https://github.com/notofonts/symbols/releases/download/NotoSansSymbols2-v2.008/NotoSansSymbols2-v2.008.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansSymbols2/googlefonts/ttf/NotoSansSymbols2-Regular.ttf"
+    dest_file: "NotoSansSymbols2-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notosanssymbols2/upstream.yaml b/ofl/notosanssymbols2/upstream.yaml
deleted file mode 100644
index d43a7b3e20cc8b572e4f104d09463ea4936ebdf5..0000000000000000000000000000000000000000
--- a/ofl/notosanssymbols2/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/symbols/releases/download/NotoSansSymbols2-v2.008/NotoSansSymbols2-v2.008.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansSymbols2/googlefonts/ttf/NotoSansSymbols2-Regular.ttf: NotoSansSymbols2-Regular.ttf
diff --git a/ofl/notosanssyriac/METADATA.pb b/ofl/notosanssyriac/METADATA.pb
index eb4efca7ce3ee86fc272cb490c01b326fdbd2b31..ba89e5b0e436118d4d4b92a8322ae2076ffeb158 100644
--- a/ofl/notosanssyriac/METADATA.pb
+++ b/ofl/notosanssyriac/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/syriac.git"
+  repository_url: "https://github.com/notofonts/syriac"
   archive_url: "https://github.com/notofonts/syriac/releases/download/NotoSansSyriac-v3.000/NotoSansSyriac-v3.000.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansSyriac/googlefonts/variable-ttf/NotoSansSyriac[wght].ttf"
+    dest_file: "NotoSansSyriac[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Syrc"  # Assyrian Neo-Aramaic
diff --git a/ofl/notosanssyriac/upstream.yaml b/ofl/notosanssyriac/upstream.yaml
deleted file mode 100644
index 810a204a0e4e891c2fe29e76a9a93ffb04be51c1..0000000000000000000000000000000000000000
--- a/ofl/notosanssyriac/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/syriac/releases/download/NotoSansSyriac-v3.000/NotoSansSyriac-v3.000.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansSyriac/googlefonts/variable-ttf/NotoSansSyriac[wght].ttf: NotoSansSyriac[wght].ttf
diff --git a/ofl/notosanssyriaceastern/METADATA.pb b/ofl/notosanssyriaceastern/METADATA.pb
index 86252378b268b7d49d0077b0e5ae487b5cfb3da1..f6f6ccd6819521acf9f8482fecb974957fefd4ca 100644
--- a/ofl/notosanssyriaceastern/METADATA.pb
+++ b/ofl/notosanssyriaceastern/METADATA.pb
@@ -16,19 +16,36 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "syriac"
-languages: "aii_Syrc"  # Assyrian Neo-Aramaic
-languages: "ar_Syrc"  # Arabic, Syriac
-languages: "syc_Syrc"  # Classical Syriac
-languages: "syr_Syrc"  # Syriac
-languages: "tru_Syrc"  # Turoyo, Syriac
-primary_script: "Syrc"
 axes {
   tag: "wght"
   min_value: 100.0
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/syriac.git"
+  repository_url: "https://github.com/notofonts/syriac"
   archive_url: "https://github.com/notofonts/syriac/releases/download/NotoSansSyriacEastern-v3.001/NotoSansSyriacEastern-v3.001.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansSyriacEastern/googlefonts/variable-ttf/NotoSansSyriacEastern[wght].ttf"
+    dest_file: "NotoSansSyriacEastern[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
+languages: "aii_Syrc"  # Assyrian Neo-Aramaic
+languages: "ar_Syrc"  # Arabic, Syriac
+languages: "syc_Syrc"  # Classical Syriac
+languages: "syr_Syrc"  # Syriac
+languages: "tru_Syrc"  # Turoyo, Syriac
+primary_script: "Syrc"
diff --git a/ofl/notosanssyriaceastern/upstream.yaml b/ofl/notosanssyriaceastern/upstream.yaml
deleted file mode 100644
index e282ba3ed3f431cc2d91b6fc04ea9dffdbd278a7..0000000000000000000000000000000000000000
--- a/ofl/notosanssyriaceastern/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/syriac/releases/download/NotoSansSyriacEastern-v3.001/NotoSansSyriacEastern-v3.001.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansSyriacEastern/googlefonts/variable-ttf/NotoSansSyriacEastern[wght].ttf: NotoSansSyriacEastern[wght].ttf
diff --git a/ofl/notosanstagalog/METADATA.pb b/ofl/notosanstagalog/METADATA.pb
index a37c1302512c566932de753788afacdb3c76404e..ff05bf0551c7ab476adc0c7d4e7be8e675769ed7 100644
--- a/ofl/notosanstagalog/METADATA.pb
+++ b/ofl/notosanstagalog/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tagalog"
 source {
-  repository_url: "https://github.com/notofonts/tagalog.git"
+  repository_url: "https://github.com/notofonts/tagalog"
   archive_url: "https://github.com/notofonts/tagalog/releases/download/NotoSansTagalog-v2.002/NotoSansTagalog-v2.002.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTagalog/googlefonts/ttf/NotoSansTagalog-Regular.ttf"
+    dest_file: "NotoSansTagalog-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "fil_Tglg"  # Filipino, Tagalog
diff --git a/ofl/notosanstagalog/upstream.yaml b/ofl/notosanstagalog/upstream.yaml
deleted file mode 100644
index 05a84b9a1f0cf62c6f5790bacd11dce68b398941..0000000000000000000000000000000000000000
--- a/ofl/notosanstagalog/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tagalog/releases/download/NotoSansTagalog-v2.002/NotoSansTagalog-v2.002.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTagalog/googlefonts/ttf/NotoSansTagalog-Regular.ttf: NotoSansTagalog-Regular.ttf
diff --git a/ofl/notosanstagbanwa/METADATA.pb b/ofl/notosanstagbanwa/METADATA.pb
index 837734111d24b64002877ede2fcd0f4d836b20b6..47b9fa82f475e3878d04eb003010750c9e91f44e 100644
--- a/ofl/notosanstagbanwa/METADATA.pb
+++ b/ofl/notosanstagbanwa/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tagbanwa"
 source {
-  repository_url: "https://github.com/notofonts/tagbanwa.git"
+  repository_url: "https://github.com/notofonts/tagbanwa"
   archive_url: "https://github.com/notofonts/tagbanwa/releases/download/NotoSansTagbanwa-v2.001/NotoSansTagbanwa-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTagbanwa/googlefonts/ttf/NotoSansTagbanwa-Regular.ttf"
+    dest_file: "NotoSansTagbanwa-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Tagb"  # Sanskrit, Tagbanwa
diff --git a/ofl/notosanstagbanwa/upstream.yaml b/ofl/notosanstagbanwa/upstream.yaml
deleted file mode 100644
index ea623f6b1e31906fb8c99efc511309a6cbeb268a..0000000000000000000000000000000000000000
--- a/ofl/notosanstagbanwa/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tagbanwa/releases/download/NotoSansTagbanwa-v2.001/NotoSansTagbanwa-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTagbanwa/googlefonts/ttf/NotoSansTagbanwa-Regular.ttf: NotoSansTagbanwa-Regular.ttf
diff --git a/ofl/notosanstaile/METADATA.pb b/ofl/notosanstaile/METADATA.pb
index f2cac642c3c7b5d2d1d200d2545a0c37a535647e..9f0d86129c007765fb89b58da32ff7181ff49f3b 100644
--- a/ofl/notosanstaile/METADATA.pb
+++ b/ofl/notosanstaile/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tai-le"
 source {
-  repository_url: "https://github.com/notofonts/tai-le.git"
+  repository_url: "https://github.com/notofonts/tai-le"
   archive_url: "https://github.com/notofonts/tai-le/releases/download/NotoSansTaiLe-v2.002/NotoSansTaiLe-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTaiLe/googlefonts/ttf/NotoSansTaiLe-Regular.ttf"
+    dest_file: "NotoSansTaiLe-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "tdd_Tale"  # Tai Nüa
diff --git a/ofl/notosanstaile/upstream.yaml b/ofl/notosanstaile/upstream.yaml
deleted file mode 100644
index 0ab46bd0c95941b562ebf7053bee1cdec26f036e..0000000000000000000000000000000000000000
--- a/ofl/notosanstaile/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tai-le/releases/download/NotoSansTaiLe-v2.002/NotoSansTaiLe-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTaiLe/googlefonts/ttf/NotoSansTaiLe-Regular.ttf: NotoSansTaiLe-Regular.ttf
diff --git a/ofl/notosanstaitham/METADATA.pb b/ofl/notosanstaitham/METADATA.pb
index 83d8b58b00b358206d24dc29cace52b2775a8e90..11a70c6184956ca7b50c369e1f2ac21680ca0d2c 100644
--- a/ofl/notosanstaitham/METADATA.pb
+++ b/ofl/notosanstaitham/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/tai-tham.git"
+  repository_url: "https://github.com/notofonts/tai-tham"
   archive_url: "https://github.com/notofonts/tai-tham/releases/download/NotoSansTaiTham-v2.002/NotoSansTaiTham-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTaiTham/googlefonts/variable-ttf/NotoSansTaiTham[wght].ttf"
+    dest_file: "NotoSansTaiTham[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kkh_Lana"  # Tai Khün
diff --git a/ofl/notosanstaitham/upstream.yaml b/ofl/notosanstaitham/upstream.yaml
deleted file mode 100644
index 708d7c8537115f76d65a3b1db386828c286aa564..0000000000000000000000000000000000000000
--- a/ofl/notosanstaitham/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tai-tham/releases/download/NotoSansTaiTham-v2.002/NotoSansTaiTham-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTaiTham/googlefonts/variable-ttf/NotoSansTaiTham[wght].ttf: NotoSansTaiTham[wght].ttf
diff --git a/ofl/notosanstaiviet/METADATA.pb b/ofl/notosanstaiviet/METADATA.pb
index 35966fdf666ee7ab56c1fe5ab8e44d08a6f928f2..c8a284b7563b0f4f906a6cc870fe66349472b93f 100644
--- a/ofl/notosanstaiviet/METADATA.pb
+++ b/ofl/notosanstaiviet/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tai-viet"
 source {
-  repository_url: "https://github.com/notofonts/tai-viet.git"
+  repository_url: "https://github.com/notofonts/tai-viet"
   archive_url: "https://github.com/notofonts/tai-viet/releases/download/NotoSansTaiViet-v2.004/NotoSansTaiViet-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTaiViet/googlefonts/ttf/NotoSansTaiViet-Regular.ttf"
+    dest_file: "NotoSansTaiViet-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "blt_Tavt"  # Tai Dam
diff --git a/ofl/notosanstaiviet/upstream.yaml b/ofl/notosanstaiviet/upstream.yaml
deleted file mode 100644
index 754aa17b74205a1dfeb38a4fd81e2e84b5dc6b56..0000000000000000000000000000000000000000
--- a/ofl/notosanstaiviet/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tai-viet/releases/download/NotoSansTaiViet-v2.004/NotoSansTaiViet-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTaiViet/googlefonts/ttf/NotoSansTaiViet-Regular.ttf: NotoSansTaiViet-Regular.ttf
diff --git a/ofl/notosanstakri/METADATA.pb b/ofl/notosanstakri/METADATA.pb
index 9e00234ecda202fe08ba6b23ce8613b0a94599c9..e001804ce8cd857e621feb6adf9ca77f97946988 100644
--- a/ofl/notosanstakri/METADATA.pb
+++ b/ofl/notosanstakri/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "takri"
 source {
-  repository_url: "https://github.com/notofonts/takri.git"
+  repository_url: "https://github.com/notofonts/takri"
   archive_url: "https://github.com/notofonts/takri/releases/download/NotoSansTakri-v2.005/NotoSansTakri-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTakri/googlefonts/ttf/NotoSansTakri-Regular.ttf"
+    dest_file: "NotoSansTakri-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "doi_Takr"  # Dogri, Takri
diff --git a/ofl/notosanstakri/upstream.yaml b/ofl/notosanstakri/upstream.yaml
deleted file mode 100644
index 90f062ec2215c055a4d28c2913347010463524df..0000000000000000000000000000000000000000
--- a/ofl/notosanstakri/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/takri/releases/download/NotoSansTakri-v2.005/NotoSansTakri-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansTakri/googlefonts/ttf/NotoSansTakri-Regular.ttf: NotoSansTakri-Regular.ttf
diff --git a/ofl/notosanstamil/METADATA.pb b/ofl/notosanstamil/METADATA.pb
index 7ca18efdd3cf4c7b24ec955e44de201f14186fe0..336b2e728a6f0db5bfcf8931620da5abb263b2ff 100644
--- a/ofl/notosanstamil/METADATA.pb
+++ b/ofl/notosanstamil/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/tamil.git"
+  repository_url: "https://github.com/notofonts/tamil"
   archive_url: "https://github.com/notofonts/tamil/releases/download/NotoSansTamil-v2.004/NotoSansTamil-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTamil/googlefonts/variable-ttf/NotoSansTamil[wdth,wght].ttf"
+    dest_file: "NotoSansTamil[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bfq_Taml"  # Badaga
diff --git a/ofl/notosanstamil/upstream.yaml b/ofl/notosanstamil/upstream.yaml
deleted file mode 100644
index d087eab8071cd427bd407db965a9d8e5f1dab6a7..0000000000000000000000000000000000000000
--- a/ofl/notosanstamil/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tamil/releases/download/NotoSansTamil-v2.004/NotoSansTamil-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansTamil/googlefonts/variable-ttf/NotoSansTamil[wdth,wght].ttf: NotoSansTamil[wdth,wght].ttf
diff --git a/ofl/notosanstamilsupplement/METADATA.pb b/ofl/notosanstamilsupplement/METADATA.pb
index 5c5d8cd5d269562b3cc71f1e32cc863281f818b5..d85aba1fd98df39004bdf6ac80276cfc20985640 100644
--- a/ofl/notosanstamilsupplement/METADATA.pb
+++ b/ofl/notosanstamilsupplement/METADATA.pb
@@ -17,13 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tamil-supplement"
 source {
-  repository_url: "https://github.com/notofonts/tamil.git"
+  repository_url: "https://github.com/notofonts/tamil"
   archive_url: "https://github.com/notofonts/tamil/releases/download/NotoSansTamilSupplement-v2.001/NotoSansTamilSupplement-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTamilSupplement/googlefonts/ttf/NotoSansTamilSupplement-Regular.ttf"
+    dest_file: "NotoSansTamilSupplement-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bfq_Taml"  # Badaga
 languages: "ta_Taml"  # Tamil
-primary_script: "Taml"
 sample_text {
   masthead_full: "𑿗𑿘𑿚𑿛"
   masthead_partial: "𑿖𑿛"
@@ -33,3 +45,4 @@ sample_text {
   poster_md: "𑿕𑿖𑿗𑿘𑿙𑿚𑿛 𑿱𑿪"
   poster_lg: "𑿗𑿘𑿚𑿛"
 }
+primary_script: "Taml"
diff --git a/ofl/notosanstamilsupplement/upstream.yaml b/ofl/notosanstamilsupplement/upstream.yaml
deleted file mode 100644
index 84b26e7941d2678de2c8d2881a1335655dcab4ce..0000000000000000000000000000000000000000
--- a/ofl/notosanstamilsupplement/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/tamil/releases/download/NotoSansTamilSupplement-v2.001/NotoSansTamilSupplement-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTamilSupplement/googlefonts/ttf/NotoSansTamilSupplement-Regular.ttf: NotoSansTamilSupplement-Regular.ttf
diff --git a/ofl/notosanstangsa/METADATA.pb b/ofl/notosanstangsa/METADATA.pb
index ae50fe17a1598dc9f18c35183f7f8a1804c78819..c11f27ef4f508ee397b4c36e12876965f1d7bd88 100644
--- a/ofl/notosanstangsa/METADATA.pb
+++ b/ofl/notosanstangsa/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/tangsa.git"
+  repository_url: "https://github.com/notofonts/tangsa"
   archive_url: "https://github.com/notofonts/tangsa/releases/download/NotoSansTangsa-v1.506/NotoSansTangsa-v1.506.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTangsa/googlefonts/variable/NotoSansTangsa[wght].ttf"
+    dest_file: "NotoSansTangsa[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "nst_Tnsa"  # Tangsa
diff --git a/ofl/notosanstangsa/upstream.yaml b/ofl/notosanstangsa/upstream.yaml
deleted file mode 100644
index b7189597fe89db24c9166007d60ecfcb32141ced..0000000000000000000000000000000000000000
--- a/ofl/notosanstangsa/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tangsa/releases/download/NotoSansTangsa-v1.506/NotoSansTangsa-v1.506.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansTangsa/googlefonts/variable/NotoSansTangsa[wght].ttf: NotoSansTangsa[wght].ttf
diff --git a/ofl/notosanstelugu/METADATA.pb b/ofl/notosanstelugu/METADATA.pb
index 746c00cefdfea9b68beda41ce2446237d4a03ebc..c95cb4fef4c4b2031cbbe74b97eb7380b2c7068d 100644
--- a/ofl/notosanstelugu/METADATA.pb
+++ b/ofl/notosanstelugu/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/telugu.git"
+  repository_url: "https://github.com/notofonts/telugu"
   archive_url: "https://github.com/notofonts/telugu/releases/download/NotoSansTelugu-v2.005/NotoSansTelugu-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansTelugu/googlefonts/variable/NotoSansTelugu[wdth,wght].ttf"
+    dest_file: "NotoSansTelugu[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "gon_Telu"  # Gondi, Telugu
diff --git a/ofl/notosanstelugu/upstream.yaml b/ofl/notosanstelugu/upstream.yaml
deleted file mode 100644
index c8b6dfa929e9e1b72f3fb5316a6d6af039399329..0000000000000000000000000000000000000000
--- a/ofl/notosanstelugu/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/telugu/releases/download/NotoSansTelugu-v2.005/NotoSansTelugu-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansTelugu/googlefonts/variable/NotoSansTelugu[wdth,wght].ttf: NotoSansTelugu[wdth,wght].ttf
diff --git a/ofl/notosansthaana/METADATA.pb b/ofl/notosansthaana/METADATA.pb
index 2d0b16d5184192fccfcf3b3ceea751105d25b744..049fae3fe765e78b012d74743273bdd44186bd00 100644
--- a/ofl/notosansthaana/METADATA.pb
+++ b/ofl/notosansthaana/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/thaana.git"
+  repository_url: "https://github.com/notofonts/thaana"
   archive_url: "https://github.com/notofonts/thaana/releases/download/NotoSansThaana-v3.001/NotoSansThaana-v3.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansThaana/googlefonts/variable/NotoSansThaana[wght].ttf"
+    dest_file: "NotoSansThaana[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "dv_Thaa"  # Divehi
diff --git a/ofl/notosansthaana/upstream.yaml b/ofl/notosansthaana/upstream.yaml
deleted file mode 100644
index 052e98fd8e3c438db952401ce9cc0479ed79c231..0000000000000000000000000000000000000000
--- a/ofl/notosansthaana/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/thaana/releases/download/NotoSansThaana-v3.001/NotoSansThaana-v3.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansThaana/googlefonts/variable/NotoSansThaana[wght].ttf: NotoSansThaana[wght].ttf
diff --git a/ofl/notosansthai/METADATA.pb b/ofl/notosansthai/METADATA.pb
index dc0302bd41a3d799cf4c2b14073ce25a2af7b239..c1612ab14f3b89a7f2bbf862577d9df437e9ec01 100644
--- a/ofl/notosansthai/METADATA.pb
+++ b/ofl/notosansthai/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/thai.git"
+  repository_url: "https://github.com/notofonts/thai"
   archive_url: "https://github.com/notofonts/thai/releases/download/NotoSansThai-v2.002/NotoSansThai-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansThai/googlefonts/variable/NotoSansThai[wdth,wght].ttf"
+    dest_file: "NotoSansThai[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kdt_Thai"  # Kuy
diff --git a/ofl/notosansthai/upstream.yaml b/ofl/notosansthai/upstream.yaml
deleted file mode 100644
index 9d1b8a3c73f616f58c3bdf587230fd837b27931a..0000000000000000000000000000000000000000
--- a/ofl/notosansthai/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/thai/releases/download/NotoSansThai-v2.002/NotoSansThai-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansThai/googlefonts/variable/NotoSansThai[wdth,wght].ttf: NotoSansThai[wdth,wght].ttf
diff --git a/ofl/notosansthailooped/METADATA.pb b/ofl/notosansthailooped/METADATA.pb
index f250a125658c5d3e421be4066b6b50ca00121acd..015e74da4d912510c530492c1176fc82027f58fe 100644
--- a/ofl/notosansthailooped/METADATA.pb
+++ b/ofl/notosansthailooped/METADATA.pb
@@ -89,8 +89,49 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "thai"
 source {
-  repository_url: "https://github.com/notofonts/thai.git"
+  repository_url: "https://github.com/notofonts/thai"
   archive_url: "https://github.com/notofonts/thai/releases/download/NotoSansThaiLooped-v1.001/NotoSansThaiLooped-v1.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Regular.ttf"
+    dest_file: "NotoSansThaiLooped-Regular.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Medium.ttf"
+    dest_file: "NotoSansThaiLooped-Medium.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Thin.ttf"
+    dest_file: "NotoSansThaiLooped-Thin.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Black.ttf"
+    dest_file: "NotoSansThaiLooped-Black.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-ExtraLight.ttf"
+    dest_file: "NotoSansThaiLooped-ExtraLight.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-ExtraBold.ttf"
+    dest_file: "NotoSansThaiLooped-ExtraBold.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Bold.ttf"
+    dest_file: "NotoSansThaiLooped-Bold.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Light.ttf"
+    dest_file: "NotoSansThaiLooped-Light.ttf"
+  }
+  files {
+    source_file: "NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-SemiBold.ttf"
+    dest_file: "NotoSansThaiLooped-SemiBold.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kdt_Thai"  # Kuy
diff --git a/ofl/notosansthailooped/upstream.yaml b/ofl/notosansthailooped/upstream.yaml
deleted file mode 100644
index 85171821289f3e35a24d6913bedb94d6efc0fd13..0000000000000000000000000000000000000000
--- a/ofl/notosansthailooped/upstream.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-archive: https://github.com/notofonts/thai/releases/download/NotoSansThaiLooped-v1.001/NotoSansThaiLooped-v1.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Regular.ttf: NotoSansThaiLooped-Regular.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Medium.ttf: NotoSansThaiLooped-Medium.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Thin.ttf: NotoSansThaiLooped-Thin.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Black.ttf: NotoSansThaiLooped-Black.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-ExtraLight.ttf: NotoSansThaiLooped-ExtraLight.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-ExtraBold.ttf: NotoSansThaiLooped-ExtraBold.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Bold.ttf: NotoSansThaiLooped-Bold.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-Light.ttf: NotoSansThaiLooped-Light.ttf
-  NotoSansThaiLooped/googlefonts/ttf/NotoSansThaiLooped-SemiBold.ttf: NotoSansThaiLooped-SemiBold.ttf
diff --git a/ofl/notosanstifinagh/METADATA.pb b/ofl/notosanstifinagh/METADATA.pb
index 53102a6093bde1aa03333178d057794e70f83521..bd06fd94d8013713f099d0095cfde533def663ff 100644
--- a/ofl/notosanstifinagh/METADATA.pb
+++ b/ofl/notosanstifinagh/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tifinagh"
 source {
-  repository_url: "https://github.com/notofonts/tifinagh.git"
+  repository_url: "https://github.com/notofonts/tifinagh"
   archive_url: "https://github.com/notofonts/tifinagh/releases/download/NotoSansTifinagh-v2.006/NotoSansTifinagh-v2.006.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTifinagh/googlefonts/ttf/NotoSansTifinagh-Regular.ttf"
+    dest_file: "NotoSansTifinagh-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ber_Tfng"  # Berber, Tifinagh
diff --git a/ofl/notosanstifinagh/upstream.yaml b/ofl/notosanstifinagh/upstream.yaml
deleted file mode 100644
index 042de925d2b24bccb062c86c20ce9834dd6197e1..0000000000000000000000000000000000000000
--- a/ofl/notosanstifinagh/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tifinagh/releases/download/NotoSansTifinagh-v2.006/NotoSansTifinagh-v2.006.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSansTifinagh/googlefonts/ttf/NotoSansTifinagh-Regular.ttf: NotoSansTifinagh-Regular.ttf
diff --git a/ofl/notosanstirhuta/METADATA.pb b/ofl/notosanstirhuta/METADATA.pb
index 78baf6bf5a5e5f5fae04345a7d6913cd54be155c..2fb9e5e5029ad33c12a67381d77a3205868a91be 100644
--- a/ofl/notosanstirhuta/METADATA.pb
+++ b/ofl/notosanstirhuta/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tirhuta"
 source {
-  repository_url: "https://github.com/notofonts/tirhuta.git"
+  repository_url: "https://github.com/notofonts/tirhuta"
   archive_url: "https://github.com/notofonts/tirhuta/releases/download/NotoSansTirhuta-v2.003/NotoSansTirhuta-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansTirhuta/googlefonts/ttf/NotoSansTirhuta-Regular.ttf"
+    dest_file: "NotoSansTirhuta-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mai_Tirh"  # Maithili, Tirhuta
diff --git a/ofl/notosanstirhuta/upstream.yaml b/ofl/notosanstirhuta/upstream.yaml
deleted file mode 100644
index 11d4d536fa35e8a170e174251d7fa96a790524cc..0000000000000000000000000000000000000000
--- a/ofl/notosanstirhuta/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tirhuta/releases/download/NotoSansTirhuta-v2.003/NotoSansTirhuta-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansTirhuta/googlefonts/ttf/NotoSansTirhuta-Regular.ttf: NotoSansTirhuta-Regular.ttf
diff --git a/ofl/notosansugaritic/METADATA.pb b/ofl/notosansugaritic/METADATA.pb
index 0da5361c7e6c102ac1ad37b63a703f0d46791f8c..f8ff81ea8f01ec6b25f55d5106f9f1d94120346a 100644
--- a/ofl/notosansugaritic/METADATA.pb
+++ b/ofl/notosansugaritic/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "ugaritic"
 source {
-  repository_url: "https://github.com/notofonts/ugaritic.git"
+  repository_url: "https://github.com/notofonts/ugaritic"
   archive_url: "https://github.com/notofonts/ugaritic/releases/download/NotoSansUgaritic-v2.001/NotoSansUgaritic-v2.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansUgaritic/googlefonts/ttf/NotoSansUgaritic-Regular.ttf"
+    dest_file: "NotoSansUgaritic-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aii_Ugar"  # Assyrian Neo-Aramaic, Ugaritic
diff --git a/ofl/notosansugaritic/upstream.yaml b/ofl/notosansugaritic/upstream.yaml
deleted file mode 100644
index 9ba9088a8c185ace2250233facf07ad2aa268b00..0000000000000000000000000000000000000000
--- a/ofl/notosansugaritic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ugaritic/releases/download/NotoSansUgaritic-v2.001/NotoSansUgaritic-v2.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansUgaritic/googlefonts/ttf/NotoSansUgaritic-Regular.ttf: NotoSansUgaritic-Regular.ttf
diff --git a/ofl/notosansvai/METADATA.pb b/ofl/notosansvai/METADATA.pb
index dab1850154abc6aed06614a345fc0cdc21d949aa..313bfd40a876c8126214712958eaf21c1aec7bf3 100644
--- a/ofl/notosansvai/METADATA.pb
+++ b/ofl/notosansvai/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "vai"
 source {
-  repository_url: "https://github.com/notofonts/vai.git"
+  repository_url: "https://github.com/notofonts/vai"
   archive_url: "https://github.com/notofonts/vai/releases/download/NotoSansVai-v2.001/NotoSansVai-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansVai/googlefonts/ttf/NotoSansVai-Regular.ttf"
+    dest_file: "NotoSansVai-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "vai_Vaii"  # Vai
diff --git a/ofl/notosansvai/upstream.yaml b/ofl/notosansvai/upstream.yaml
deleted file mode 100644
index a5fcb9a4a1f6155b29f3772db45eecc1636b9e73..0000000000000000000000000000000000000000
--- a/ofl/notosansvai/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/vai/releases/download/NotoSansVai-v2.001/NotoSansVai-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansVai/googlefonts/ttf/NotoSansVai-Regular.ttf: NotoSansVai-Regular.ttf
diff --git a/ofl/notosansvithkuqi/METADATA.pb b/ofl/notosansvithkuqi/METADATA.pb
index d7ed97c49a9c39ca8a411038c6f8f1ffd7300f68..7c53b1d31f2dc785928c47c8b94fbacfde3c1457 100644
--- a/ofl/notosansvithkuqi/METADATA.pb
+++ b/ofl/notosansvithkuqi/METADATA.pb
@@ -16,15 +16,32 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vithkuqi"
-languages: "sq_Vith" # Albanian, Vithkuqi
-primary_script: "Vith"
 axes {
   tag: "wght"
   min_value: 400.0
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/vithkuqi.git"
+  repository_url: "https://github.com/notofonts/vithkuqi"
   archive_url: "https://github.com/notofonts/vithkuqi/releases/download/NotoSansVithkuqi-v1.001/NotoSansVithkuqi-v1.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSansVithkuqi/googlefonts/variable-ttf/NotoSansVithkuqi[wght].ttf"
+    dest_file: "NotoSansVithkuqi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
+languages: "sq_Vith"  # Albanian, Vithkuqi
+primary_script: "Vith"
diff --git a/ofl/notosansvithkuqi/upstream.yaml b/ofl/notosansvithkuqi/upstream.yaml
deleted file mode 100644
index 0b193b51b83902843803ad044bf87c5b75244de2..0000000000000000000000000000000000000000
--- a/ofl/notosansvithkuqi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/vithkuqi/releases/download/NotoSansVithkuqi-v1.001/NotoSansVithkuqi-v1.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSansVithkuqi/googlefonts/variable-ttf/NotoSansVithkuqi[wght].ttf: NotoSansVithkuqi[wght].ttf
diff --git a/ofl/notosanswancho/METADATA.pb b/ofl/notosanswancho/METADATA.pb
index e18bc9f0a425edc3bb68990b3bda373cdf93db7a..f541d03a2e684cf8084bab23bb5bf72dc89a6110 100644
--- a/ofl/notosanswancho/METADATA.pb
+++ b/ofl/notosanswancho/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "wancho"
 source {
-  repository_url: "https://github.com/notofonts/wancho.git"
+  repository_url: "https://github.com/notofonts/wancho"
   archive_url: "https://github.com/notofonts/wancho/releases/download/NotoSansWancho-v2.001/NotoSansWancho-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansWancho/googlefonts/ttf/NotoSansWancho-Regular.ttf"
+    dest_file: "NotoSansWancho-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "nnp_Wcho"  # Wancho Naga
diff --git a/ofl/notosanswancho/upstream.yaml b/ofl/notosanswancho/upstream.yaml
deleted file mode 100644
index aa9e95f1aee81ed8b7090fe41deb63ad835850bf..0000000000000000000000000000000000000000
--- a/ofl/notosanswancho/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/wancho/releases/download/NotoSansWancho-v2.001/NotoSansWancho-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansWancho/googlefonts/ttf/NotoSansWancho-Regular.ttf: NotoSansWancho-Regular.ttf
diff --git a/ofl/notosanswarangciti/METADATA.pb b/ofl/notosanswarangciti/METADATA.pb
index 790ea45267639ab327e5a8dde25a1467d764b18f..62594539020c1aa1b46690edd504f0094cbf8f77 100644
--- a/ofl/notosanswarangciti/METADATA.pb
+++ b/ofl/notosanswarangciti/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "warang-citi"
 source {
-  repository_url: "https://github.com/notofonts/warang-citi.git"
+  repository_url: "https://github.com/notofonts/warang-citi"
   archive_url: "https://github.com/notofonts/warang-citi/releases/download/NotoSansWarangCiti-v3.002/NotoSansWarangCiti-v3.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansWarangCiti/googlefonts/ttf/NotoSansWarangCiti-Regular.ttf"
+    dest_file: "NotoSansWarangCiti-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hoc_Wara"  # Ho, Warang Citi
diff --git a/ofl/notosanswarangciti/upstream.yaml b/ofl/notosanswarangciti/upstream.yaml
deleted file mode 100644
index eebecef2d39a0d6bef2b6979d313309fe76286e0..0000000000000000000000000000000000000000
--- a/ofl/notosanswarangciti/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/warang-citi/releases/download/NotoSansWarangCiti-v3.002/NotoSansWarangCiti-v3.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansWarangCiti/googlefonts/ttf/NotoSansWarangCiti-Regular.ttf: NotoSansWarangCiti-Regular.ttf
diff --git a/ofl/notosansyi/METADATA.pb b/ofl/notosansyi/METADATA.pb
index 2048c96020f73bef78f32df27e141081be295bbd..64e919574b216fdcc735ea07dc382dc5114d4fef 100644
--- a/ofl/notosansyi/METADATA.pb
+++ b/ofl/notosansyi/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "yi"
 source {
-  repository_url: "https://github.com/notofonts/yi.git"
+  repository_url: "https://github.com/notofonts/yi"
   archive_url: "https://github.com/notofonts/yi/releases/download/NotoSansYi-v2.002/NotoSansYi-v2.002.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansYi/googlefonts/ttf/NotoSansYi-Regular.ttf"
+    dest_file: "NotoSansYi-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ii_Yiii"  # Sichuan Yi
diff --git a/ofl/notosansyi/upstream.yaml b/ofl/notosansyi/upstream.yaml
deleted file mode 100644
index e07d7080b969d98d62b83adb352998ed4f23efd9..0000000000000000000000000000000000000000
--- a/ofl/notosansyi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/yi/releases/download/NotoSansYi-v2.002/NotoSansYi-v2.002.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansYi/googlefonts/ttf/NotoSansYi-Regular.ttf: NotoSansYi-Regular.ttf
diff --git a/ofl/notosanszanabazarsquare/METADATA.pb b/ofl/notosanszanabazarsquare/METADATA.pb
index ec208335c5e41a2cd00d795b7933ffa981e07d40..02260bc28ba2b486cea656ad5974f7f02592f404 100644
--- a/ofl/notosanszanabazarsquare/METADATA.pb
+++ b/ofl/notosanszanabazarsquare/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "zanabazar-square"
 source {
-  repository_url: "https://github.com/notofonts/zanabazar-square.git"
+  repository_url: "https://github.com/notofonts/zanabazar-square"
   archive_url: "https://github.com/notofonts/zanabazar-square/releases/download/NotoSansZanabazarSquare-v2.006/NotoSansZanabazarSquare-v2.006.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSansZanabazarSquare/googlefonts/ttf/NotoSansZanabazarSquare-Regular.ttf"
+    dest_file: "NotoSansZanabazarSquare-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bo_Zanb"  # Tibetan, Zanabazar
diff --git a/ofl/notosanszanabazarsquare/upstream.yaml b/ofl/notosanszanabazarsquare/upstream.yaml
deleted file mode 100644
index 4cf761ba2fe98b80fdac0a280757666f813d18ad..0000000000000000000000000000000000000000
--- a/ofl/notosanszanabazarsquare/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/zanabazar-square/releases/download/NotoSansZanabazarSquare-v2.006/NotoSansZanabazarSquare-v2.006.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSansZanabazarSquare/googlefonts/ttf/NotoSansZanabazarSquare-Regular.ttf: NotoSansZanabazarSquare-Regular.ttf
diff --git a/ofl/notoserif/METADATA.pb b/ofl/notoserif/METADATA.pb
index 6db7ec2911425da63d1063e5efea70e24e0c8eac..76bc8c5d4b32eca38870f39d77a7c03429150d4c 100644
--- a/ofl/notoserif/METADATA.pb
+++ b/ofl/notoserif/METADATA.pb
@@ -40,8 +40,29 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/latin-greek-cyrillic.git"
+  repository_url: "https://github.com/notofonts/latin-greek-cyrillic"
   archive_url: "https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSerif-v2.013/NotoSerif-v2.013.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerif/googlefonts/variable/NotoSerif[wdth,wght].ttf"
+    dest_file: "NotoSerif[wdth,wght].ttf"
+  }
+  files {
+    source_file: "NotoSerif/googlefonts/variable/NotoSerif-Italic[wdth,wght].ttf"
+    dest_file: "NotoSerif-Italic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aa_Latn"  # Afar
@@ -53,7 +74,7 @@ languages: "acf_Latn"  # Saint Lucian Creole French, Latin
 languages: "ach_Latn"  # Acoli
 languages: "acu_Latn"  # Achuar-Shiwiar
 languages: "ada_Latn"  # Adangme
-languages: "adl_Latn"  # Galo, Latin
+languages: "adl_Latn"
 languages: "ady_Cyrl"  # Adyghe
 languages: "af_Latn"  # Afrikaans
 languages: "agq_Latn"  # Aghem
@@ -62,7 +83,7 @@ languages: "aii_Cyrl"  # Assyrian Neo-Aramaic, Cyrillic
 languages: "aii_Latn"  # Assyrian Neo-Aramaic, Latin
 languages: "ain_Latn"  # Ainu, Latin
 languages: "ajg_Latn"  # Aja
-languages: "ak_Latn"  # Akan
+languages: "ak_Latn"
 languages: "akz_Latn"  # Alabama
 languages: "ale_Latn"  # Aleut
 languages: "aln_Latn"  # Gheg Albanian
@@ -139,7 +160,7 @@ languages: "bug_Latn"  # Buginese
 languages: "bum_Latn"  # Bulu
 languages: "bvb_Latn"  # Bube
 languages: "bvi_Latn"  # Belanda Viri, Latin
-languages: "bwy_Latn"  # Cwi Bwamu, Latin
+languages: "bwy_Latn"
 languages: "byv_Latn"  # Medumba
 languages: "bze_Latn"  # Jenaama Bozo
 languages: "bzx_Latn"  # Bozo, Hainyaxo
@@ -437,7 +458,7 @@ languages: "lkt_Latn"  # Lakota
 languages: "lld_Latn"  # Ladin
 languages: "lmo_Latn"  # Lombard
 languages: "ln_Latn"  # Lingala
-languages: "lns_Latn"  # Lamnso'
+languages: "lns_Latn"  # Lamnso’
 languages: "lob_Latn"  # Lobi
 languages: "lol_Latn"  # Mongo
 languages: "lot_Latn"  # Otuho
@@ -699,7 +720,7 @@ languages: "suk_Latn"  # Sukuma
 languages: "sus_Latn"  # Susu
 languages: "sv_Latn"  # Swedish
 languages: "sw_Latn"  # Swahili
-languages: "swb_Latn"  # Comorian, Latin
+languages: "swb_Latn"  # Maore Comorian, Latin
 languages: "swg_Latn"  # Swabian
 languages: "sxn_Latn"  # Sangir
 languages: "syi_Latn"  # Seki
diff --git a/ofl/notoserif/upstream.yaml b/ofl/notoserif/upstream.yaml
deleted file mode 100644
index 70307093d0e72435d196e2cbf086fd7b9e5f90b0..0000000000000000000000000000000000000000
--- a/ofl/notoserif/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSerif-v2.013/NotoSerif-v2.013.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSerif/googlefonts/variable/NotoSerif[wdth,wght].ttf: NotoSerif[wdth,wght].ttf
-  NotoSerif/googlefonts/variable/NotoSerif-Italic[wdth,wght].ttf: NotoSerif-Italic[wdth,wght].ttf
diff --git a/ofl/notoserifahom/METADATA.pb b/ofl/notoserifahom/METADATA.pb
index b6cc7b8fe116aa08feaa0fba64239f50524c8dbe..d4ff54023f9d866e9068c03fb4a73b4ff8893fe8 100644
--- a/ofl/notoserifahom/METADATA.pb
+++ b/ofl/notoserifahom/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/ahom.git"
+  repository_url: "https://github.com/notofonts/ahom"
   archive_url: "https://github.com/notofonts/ahom/releases/download/NotoSerifAhom-v2.007/NotoSerifAhom-v2.007.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifAhom/googlefonts/ttf/NotoSerifAhom-Regular.ttf"
+    dest_file: "NotoSerifAhom-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "aho_Ahom"  # Ahom
diff --git a/ofl/notoserifahom/upstream.yaml b/ofl/notoserifahom/upstream.yaml
deleted file mode 100644
index e6503f7b7d91c6e6594908d66983a6e627273c81..0000000000000000000000000000000000000000
--- a/ofl/notoserifahom/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ahom/releases/download/NotoSerifAhom-v2.007/NotoSerifAhom-v2.007.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifAhom/googlefonts/ttf/NotoSerifAhom-Regular.ttf: NotoSerifAhom-Regular.ttf
diff --git a/ofl/notoserifarmenian/METADATA.pb b/ofl/notoserifarmenian/METADATA.pb
index f5281ca92583e5d646854ae8387b4b2b81308c87..4bddd6461128ae7d01ddc50297eeee50024aa481 100644
--- a/ofl/notoserifarmenian/METADATA.pb
+++ b/ofl/notoserifarmenian/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/armenian.git"
+  repository_url: "https://github.com/notofonts/armenian"
   archive_url: "https://github.com/notofonts/armenian/releases/download/NotoSerifArmenian-v2.008/NotoSerifArmenian-v2.008.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifArmenian/googlefonts/variable/NotoSerifArmenian[wdth,wght].ttf"
+    dest_file: "NotoSerifArmenian[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hy_Armn"  # Armenian
diff --git a/ofl/notoserifarmenian/upstream.yaml b/ofl/notoserifarmenian/upstream.yaml
deleted file mode 100644
index 70ef61e9097f8fc06af4a57364307c0727b87544..0000000000000000000000000000000000000000
--- a/ofl/notoserifarmenian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/armenian/releases/download/NotoSerifArmenian-v2.008/NotoSerifArmenian-v2.008.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifArmenian/googlefonts/variable/NotoSerifArmenian[wdth,wght].ttf: NotoSerifArmenian[wdth,wght].ttf
diff --git a/ofl/notoserifbalinese/METADATA.pb b/ofl/notoserifbalinese/METADATA.pb
index 377c9fb9dd47e75ad30ac877568c040608c0f465..6804556a6e6d309140be0343bffc7ff4836c414a 100644
--- a/ofl/notoserifbalinese/METADATA.pb
+++ b/ofl/notoserifbalinese/METADATA.pb
@@ -17,8 +17,17 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/balinese.git"
-  archive_url: "https://github.com/notofonts/balinese/releases/download/NotoSerifBalinese-v2.005/NotoSerifBalinese-v2.005.zip"
+  repository_url: "https://github.com/notofonts/balinese"
+  archive_url: "https://github.com/notofonts/balinese/releases/download/NotoSerifBalinese-v2.004/NotoSerifBalinese-v2.004.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifBalinese/googlefonts/ttf/NotoSerifBalinese-Regular.ttf"
+    dest_file: "NotoSerifBalinese-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ban_Bali"  # Balinese, Balinese
diff --git a/ofl/notoserifbalinese/upstream.yaml b/ofl/notoserifbalinese/upstream.yaml
deleted file mode 100644
index 57a4f48f26c94d1da4a0efbbbd3e4ccfc9509fb7..0000000000000000000000000000000000000000
--- a/ofl/notoserifbalinese/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/balinese/releases/download/NotoSerifBalinese-v2.004/NotoSerifBalinese-v2.004.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSerifBalinese/googlefonts/ttf/NotoSerifBalinese-Regular.ttf: NotoSerifBalinese-Regular.ttf
diff --git a/ofl/notoserifbengali/METADATA.pb b/ofl/notoserifbengali/METADATA.pb
index 39db303167341c8a7042b825d09beb1c5e96f337..c9b931b712a22e4460f22315a9023f7c5bd1e18e 100644
--- a/ofl/notoserifbengali/METADATA.pb
+++ b/ofl/notoserifbengali/METADATA.pb
@@ -27,8 +27,17 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/bengali.git"
+  repository_url: "https://github.com/notofonts/bengali"
   archive_url: "https://github.com/notofonts/bengali/releases/download/NotoSerifBengali-v2.003/NotoSerifBengali-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifBengali/googlefonts/variable-ttf/NotoSerifBengali[wdth,wght].ttf"
+    dest_file: "NotoSerifBengali[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "as_Beng"  # Assamese
diff --git a/ofl/notoserifbengali/upstream.yaml b/ofl/notoserifbengali/upstream.yaml
deleted file mode 100644
index 26350ae9529025e41fdcea5d281fd4c7a6c8bec8..0000000000000000000000000000000000000000
--- a/ofl/notoserifbengali/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/bengali/releases/download/NotoSerifBengali-v2.003/NotoSerifBengali-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSerifBengali/googlefonts/variable-ttf/NotoSerifBengali[wdth,wght].ttf: NotoSerifBengali[wdth,wght].ttf
diff --git a/ofl/notoserifdevanagari/METADATA.pb b/ofl/notoserifdevanagari/METADATA.pb
index 00d79e3d9006e0a1369d303e447db18b16a4cfed..6042bbdc4a60cf709c94586da037a7c36b2082e7 100644
--- a/ofl/notoserifdevanagari/METADATA.pb
+++ b/ofl/notoserifdevanagari/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/devanagari.git"
+  repository_url: "https://github.com/notofonts/devanagari"
   archive_url: "https://github.com/notofonts/devanagari/releases/download/NotoSerifDevanagari-v2.004/NotoSerifDevanagari-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifDevanagari/googlefonts/variable-ttf/NotoSerifDevanagari[wdth,wght].ttf"
+    dest_file: "NotoSerifDevanagari[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "anp_Deva"  # Angika
diff --git a/ofl/notoserifdevanagari/upstream.yaml b/ofl/notoserifdevanagari/upstream.yaml
deleted file mode 100644
index 14f261df77dc65e41a6b2d1c16060629c8749124..0000000000000000000000000000000000000000
--- a/ofl/notoserifdevanagari/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/devanagari/releases/download/NotoSerifDevanagari-v2.004/NotoSerifDevanagari-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifDevanagari/googlefonts/variable-ttf/NotoSerifDevanagari[wdth,wght].ttf: NotoSerifDevanagari[wdth,wght].ttf
diff --git a/ofl/notoserifdogra/METADATA.pb b/ofl/notoserifdogra/METADATA.pb
index 61981b90a5211e6a8caebcc5bb21d071570572b9..01cca9a778e58825a13f99799c9edf58edb0e7be 100644
--- a/ofl/notoserifdogra/METADATA.pb
+++ b/ofl/notoserifdogra/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/dogra.git"
+  repository_url: "https://github.com/notofonts/dogra"
   archive_url: "https://github.com/notofonts/dogra/releases/download/NotoSerifDogra-v1.007/NotoSerifDogra-v1.007.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifDogra/googlefonts/ttf/NotoSerifDogra-Regular.ttf"
+    dest_file: "NotoSerifDogra-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "doi_Dogr"  # Dogri, Dogra
diff --git a/ofl/notoserifdogra/upstream.yaml b/ofl/notoserifdogra/upstream.yaml
deleted file mode 100644
index 84348edd3e86518918d22a9d8bdf1fb840fea5aa..0000000000000000000000000000000000000000
--- a/ofl/notoserifdogra/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/dogra/releases/download/NotoSerifDogra-v1.007/NotoSerifDogra-v1.007.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifDogra/googlefonts/ttf/NotoSerifDogra-Regular.ttf: NotoSerifDogra-Regular.ttf
diff --git a/ofl/notoserifethiopic/METADATA.pb b/ofl/notoserifethiopic/METADATA.pb
index ce19e8dec851f452bf901e70cd8aad2a3d9cbbb2..d85691ec618c70111bb18633d13de073addb2d2c 100644
--- a/ofl/notoserifethiopic/METADATA.pb
+++ b/ofl/notoserifethiopic/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/ethiopic.git"
+  repository_url: "https://github.com/notofonts/ethiopic"
   archive_url: "https://github.com/notofonts/ethiopic/releases/download/NotoSerifEthiopic-v2.102/NotoSerifEthiopic-v2.102.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifEthiopic/googlefonts/variable-ttf/NotoSerifEthiopic[wdth,wght].ttf"
+    dest_file: "NotoSerifEthiopic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "am_Ethi"  # Amharic
diff --git a/ofl/notoserifethiopic/upstream.yaml b/ofl/notoserifethiopic/upstream.yaml
deleted file mode 100644
index e6c65ea093ee03e2143e5eb6d06e9ee6d2278910..0000000000000000000000000000000000000000
--- a/ofl/notoserifethiopic/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ethiopic/releases/download/NotoSerifEthiopic-v2.102/NotoSerifEthiopic-v2.102.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSerifEthiopic/googlefonts/variable-ttf/NotoSerifEthiopic[wdth,wght].ttf: NotoSerifEthiopic[wdth,wght].ttf
diff --git a/ofl/notoserifgeorgian/METADATA.pb b/ofl/notoserifgeorgian/METADATA.pb
index ecc78da3842eb3daaf2cdf64d326a7a2e874bf32..2ca1fc98fa1998ede8a52dc227ff24a6c8359c61 100644
--- a/ofl/notoserifgeorgian/METADATA.pb
+++ b/ofl/notoserifgeorgian/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/georgian.git"
+  repository_url: "https://github.com/notofonts/georgian"
   archive_url: "https://github.com/notofonts/georgian/releases/download/NotoSerifGeorgian-v2.003/NotoSerifGeorgian-v2.003.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifGeorgian/googlefonts/variable/NotoSerifGeorgian[wdth,wght].ttf"
+    dest_file: "NotoSerifGeorgian[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ka_Geor"  # Georgian
diff --git a/ofl/notoserifgeorgian/upstream.yaml b/ofl/notoserifgeorgian/upstream.yaml
deleted file mode 100644
index 26492165105121af27ef76ac8b28f05e34ad4d91..0000000000000000000000000000000000000000
--- a/ofl/notoserifgeorgian/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/georgian/releases/download/NotoSerifGeorgian-v2.003/NotoSerifGeorgian-v2.003.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifGeorgian/googlefonts/variable/NotoSerifGeorgian[wdth,wght].ttf: NotoSerifGeorgian[wdth,wght].ttf
diff --git a/ofl/notoserifgrantha/METADATA.pb b/ofl/notoserifgrantha/METADATA.pb
index 7b926c716bb98727c0fb08729dad33afeb0bfb3c..499104ecb5af16e41938b86e9022dfbde504e653 100644
--- a/ofl/notoserifgrantha/METADATA.pb
+++ b/ofl/notoserifgrantha/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/grantha.git"
+  repository_url: "https://github.com/notofonts/grantha"
   archive_url: "https://github.com/notofonts/grantha/releases/download/NotoSerifGrantha-v2.004/NotoSerifGrantha-v2.004.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifGrantha/googlefonts/ttf/NotoSerifGrantha-Regular.ttf"
+    dest_file: "NotoSerifGrantha-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sa_Gran"  # Sanskrit, Grantha
diff --git a/ofl/notoserifgrantha/upstream.yaml b/ofl/notoserifgrantha/upstream.yaml
deleted file mode 100644
index f705cf693489d8f40ed2895a85c10ce7e00fc0df..0000000000000000000000000000000000000000
--- a/ofl/notoserifgrantha/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/grantha/releases/download/NotoSerifGrantha-v2.004/NotoSerifGrantha-v2.004.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifGrantha/googlefonts/ttf/NotoSerifGrantha-Regular.ttf: NotoSerifGrantha-Regular.ttf
diff --git a/ofl/notoserifgujarati/METADATA.pb b/ofl/notoserifgujarati/METADATA.pb
index a8fba6938c455ed85f50aa8ab3769b1bd9a3ced0..72b02c748f8daca8edafcef4677df4aef7954b8c 100644
--- a/ofl/notoserifgujarati/METADATA.pb
+++ b/ofl/notoserifgujarati/METADATA.pb
@@ -24,8 +24,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/gujarati.git"
+  repository_url: "https://github.com/notofonts/gujarati"
   archive_url: "https://github.com/notofonts/gujarati/releases/download/NotoSerifGujarati-v2.106/NotoSerifGujarati-v2.106.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifGujarati/googlefonts/variable/NotoSerifGujarati[wght].ttf"
+    dest_file: "NotoSerifGujarati[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "gu_Gujr"  # Gujarati
diff --git a/ofl/notoserifgujarati/upstream.yaml b/ofl/notoserifgujarati/upstream.yaml
deleted file mode 100644
index 44dba43999e952bdd40501222ce0168cecbad455..0000000000000000000000000000000000000000
--- a/ofl/notoserifgujarati/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/gujarati/releases/download/NotoSerifGujarati-v2.106/NotoSerifGujarati-v2.106.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifGujarati/googlefonts/variable/NotoSerifGujarati[wght].ttf: NotoSerifGujarati[wght].ttf
diff --git a/ofl/notoserifgurmukhi/METADATA.pb b/ofl/notoserifgurmukhi/METADATA.pb
index 93710b1e0effa12c3642af0317de66d6757e72a7..786736a85acebcf97b9eefe88d810a97453d103e 100644
--- a/ofl/notoserifgurmukhi/METADATA.pb
+++ b/ofl/notoserifgurmukhi/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/gurmukhi.git"
+  repository_url: "https://github.com/notofonts/gurmukhi"
   archive_url: "https://github.com/notofonts/gurmukhi/releases/download/NotoSerifGurmukhi-v2.004/NotoSerifGurmukhi-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifGurmukhi/googlefonts/variable-ttf/NotoSerifGurmukhi[wght].ttf"
+    dest_file: "NotoSerifGurmukhi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "pa_Guru"  # Punjabi
diff --git a/ofl/notoserifgurmukhi/upstream.yaml b/ofl/notoserifgurmukhi/upstream.yaml
deleted file mode 100644
index f570a0dba9de6874414e551edd084a9cb438da2d..0000000000000000000000000000000000000000
--- a/ofl/notoserifgurmukhi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/gurmukhi/releases/download/NotoSerifGurmukhi-v2.004/NotoSerifGurmukhi-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifGurmukhi/googlefonts/variable-ttf/NotoSerifGurmukhi[wght].ttf: NotoSerifGurmukhi[wght].ttf
diff --git a/ofl/notoserifhebrew/METADATA.pb b/ofl/notoserifhebrew/METADATA.pb
index 79c359296ffb734146011a4d73f52854ff390b9f..088ad16ead56fa7687e1d4624f581e8bb1c13b3e 100644
--- a/ofl/notoserifhebrew/METADATA.pb
+++ b/ofl/notoserifhebrew/METADATA.pb
@@ -27,8 +27,17 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/hebrew.git"
+  repository_url: "https://github.com/notofonts/hebrew"
   archive_url: "https://github.com/notofonts/hebrew/releases/download/NotoSerifHebrew-v2.003/NotoSerifHebrew-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifHebrew/googlefonts/variable-ttf/NotoSerifHebrew[wdth,wght].ttf"
+    dest_file: "NotoSerifHebrew[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "he_Hebr"  # Hebrew
diff --git a/ofl/notoserifhebrew/upstream.yaml b/ofl/notoserifhebrew/upstream.yaml
deleted file mode 100644
index 7eb3d236047809448d25f79fd3086ab7ff9a5b81..0000000000000000000000000000000000000000
--- a/ofl/notoserifhebrew/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/hebrew/releases/download/NotoSerifHebrew-v2.003/NotoSerifHebrew-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSerifHebrew/googlefonts/variable-ttf/NotoSerifHebrew[wdth,wght].ttf: NotoSerifHebrew[wdth,wght].ttf
diff --git a/ofl/notoserifhentaigana/METADATA.pb b/ofl/notoserifhentaigana/METADATA.pb
index b26aaf7613f570f4e8c7e657af2e8cc8ca76f06c..3856f202477eed16ec5cae2d1702b77decddd491 100644
--- a/ofl/notoserifhentaigana/METADATA.pb
+++ b/ofl/notoserifhentaigana/METADATA.pb
@@ -21,8 +21,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/hentaigana.git"
+  repository_url: "https://github.com/notofonts/hentaigana"
   archive_url: "https://github.com/notofonts/hentaigana/releases/download/NotoSerifHentaigana-v1.000/NotoSerifHentaigana-v1.000.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifHentaigana/googlefonts/variable/NotoSerifHentaigana[wght].ttf"
+    dest_file: "NotoSerifHentaigana[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 primary_script: "Hira"
diff --git a/ofl/notoserifhentaigana/upstream.yaml b/ofl/notoserifhentaigana/upstream.yaml
deleted file mode 100644
index 1be754f15696acfcfd207f21e6ec3ff38e56ce57..0000000000000000000000000000000000000000
--- a/ofl/notoserifhentaigana/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/hentaigana/releases/download/NotoSerifHentaigana-v1.000/NotoSerifHentaigana-v1.000.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifHentaigana/googlefonts/variable/NotoSerifHentaigana[wght].ttf: NotoSerifHentaigana[wght].ttf
diff --git a/ofl/notoserifkannada/METADATA.pb b/ofl/notoserifkannada/METADATA.pb
index 2148cd9288d6571e2fcf685a13f8b814b0e19b98..e23d16f5cf73ad1fa09a011b9dc792a3c17c9b6a 100644
--- a/ofl/notoserifkannada/METADATA.pb
+++ b/ofl/notoserifkannada/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/kannada.git"
+  repository_url: "https://github.com/notofonts/kannada"
   archive_url: "https://github.com/notofonts/kannada/releases/download/NotoSerifKannada-v2.005/NotoSerifKannada-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifKannada/googlefonts/variable/NotoSerifKannada[wght].ttf"
+    dest_file: "NotoSerifKannada[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kn_Knda"  # Kannada
diff --git a/ofl/notoserifkannada/upstream.yaml b/ofl/notoserifkannada/upstream.yaml
deleted file mode 100644
index 139098e8be68fd485df87b5c0b5932e2f329ca5a..0000000000000000000000000000000000000000
--- a/ofl/notoserifkannada/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/kannada/releases/download/NotoSerifKannada-v2.005/NotoSerifKannada-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifKannada/googlefonts/variable/NotoSerifKannada[wght].ttf: NotoSerifKannada[wght].ttf
diff --git a/ofl/notoserifkhitansmallscript/METADATA.pb b/ofl/notoserifkhitansmallscript/METADATA.pb
index 989f51d57c62e00f824412ed0731ac69dd10c1fa..1704c52bf0edfbbc63576a545dc49dec2aaf7820 100644
--- a/ofl/notoserifkhitansmallscript/METADATA.pb
+++ b/ofl/notoserifkhitansmallscript/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/notofonts/khitan-small-script.git"
+  repository_url: "https://github.com/notofonts/khitan-small-script"
   archive_url: "https://github.com/notofonts/khitan-small-script/releases/download/NotoSerifKhitanSmallScript-v1.000/NotoSerifKhitanSmallScript-v1.000.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifKhitanSmallScript/googlefonts/ttf/NotoSerifKhitanSmallScript-Regular.ttf"
+    dest_file: "NotoSerifKhitanSmallScript-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notoserifkhitansmallscript/upstream.yaml b/ofl/notoserifkhitansmallscript/upstream.yaml
deleted file mode 100644
index 4f313edb6be0f7f695ee02b9c8626093a2c092bf..0000000000000000000000000000000000000000
--- a/ofl/notoserifkhitansmallscript/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/khitan-small-script/releases/download/NotoSerifKhitanSmallScript-v1.000/NotoSerifKhitanSmallScript-v1.000.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifKhitanSmallScript/googlefonts/ttf/NotoSerifKhitanSmallScript-Regular.ttf: NotoSerifKhitanSmallScript-Regular.ttf
diff --git a/ofl/notoserifkhmer/METADATA.pb b/ofl/notoserifkhmer/METADATA.pb
index 2fef97dd87a27cb379baaaeb9ce10b1ad963b41e..cb985dd3fbc8cb38421bde388731db9c78a369da 100644
--- a/ofl/notoserifkhmer/METADATA.pb
+++ b/ofl/notoserifkhmer/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/khmer.git"
+  repository_url: "https://github.com/notofonts/khmer"
   archive_url: "https://github.com/notofonts/khmer/releases/download/NotoSerifKhmer-v2.004/NotoSerifKhmer-v2.004.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifKhmer/googlefonts/variable/NotoSerifKhmer[wdth,wght].ttf"
+    dest_file: "NotoSerifKhmer[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "km_Khmr"  # Khmer
diff --git a/ofl/notoserifkhmer/upstream.yaml b/ofl/notoserifkhmer/upstream.yaml
deleted file mode 100644
index dd9b7d6ce1e16b4ff58927e9c7ae48dba0ceba08..0000000000000000000000000000000000000000
--- a/ofl/notoserifkhmer/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/khmer/releases/download/NotoSerifKhmer-v2.004/NotoSerifKhmer-v2.004.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSerifKhmer/googlefonts/variable/NotoSerifKhmer[wdth,wght].ttf: NotoSerifKhmer[wdth,wght].ttf
diff --git a/ofl/notoserifkhojki/METADATA.pb b/ofl/notoserifkhojki/METADATA.pb
index aa825c4efe0886ddcc323917dd91a7671610cfd5..096764f7683278a59607550483d1c6fe9e99800f 100644
--- a/ofl/notoserifkhojki/METADATA.pb
+++ b/ofl/notoserifkhojki/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/khojki.git"
+  repository_url: "https://github.com/notofonts/khojki"
   archive_url: "https://github.com/notofonts/khojki/releases/download/NotoSerifKhojki-v2.005/NotoSerifKhojki-v2.005.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifKhojki/googlefonts/variable/NotoSerifKhojki[wght].ttf"
+    dest_file: "NotoSerifKhojki[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "sd_Khoj"  # Sindhi, Khojki
diff --git a/ofl/notoserifkhojki/upstream.yaml b/ofl/notoserifkhojki/upstream.yaml
deleted file mode 100644
index a500ff37d849903df2d9ca5c421596cd2a6b9351..0000000000000000000000000000000000000000
--- a/ofl/notoserifkhojki/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/khojki/releases/download/NotoSerifKhojki-v2.005/NotoSerifKhojki-v2.005.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifKhojki/googlefonts/variable/NotoSerifKhojki[wght].ttf: NotoSerifKhojki[wght].ttf
diff --git a/ofl/notoseriflao/METADATA.pb b/ofl/notoseriflao/METADATA.pb
index 65319cff98c3ca62c711382377c228fc8cf26e1e..0b161ba0f998933a9beee6a7c4f016bc553cfec2 100644
--- a/ofl/notoseriflao/METADATA.pb
+++ b/ofl/notoseriflao/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/lao.git"
+  repository_url: "https://github.com/notofonts/lao"
   archive_url: "https://github.com/notofonts/lao/releases/download/NotoSerifLao-v2.003/NotoSerifLao-v2.003.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifLao/googlefonts/variable-ttf/NotoSerifLao[wdth,wght].ttf"
+    dest_file: "NotoSerifLao[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "hnj_Laoo"  # Mong Njua
diff --git a/ofl/notoseriflao/upstream.yaml b/ofl/notoseriflao/upstream.yaml
deleted file mode 100644
index cdc6491fbe5dca8edfcec7783a858c28ffbe0f47..0000000000000000000000000000000000000000
--- a/ofl/notoseriflao/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/lao/releases/download/NotoSerifLao-v2.003/NotoSerifLao-v2.003.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifLao/googlefonts/variable-ttf/NotoSerifLao[wdth,wght].ttf: NotoSerifLao[wdth,wght].ttf
diff --git a/ofl/notoserifmakasar/METADATA.pb b/ofl/notoserifmakasar/METADATA.pb
index 802b83bbcadb3245a8681f5564aff2c49d5a3196..7a2e5491cb65a3bb3ad347ea1cbae3b5866cbaae 100644
--- a/ofl/notoserifmakasar/METADATA.pb
+++ b/ofl/notoserifmakasar/METADATA.pb
@@ -16,10 +16,27 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "makasar"
 subsets: "menu"
-primary_script: "Maka"
-languages: "mak_Maka"  # Makasar, Old Makasar
 source {
-  repository_url: "https://github.com/notofonts/makasar.git"
+  repository_url: "https://github.com/notofonts/makasar"
   archive_url: "https://github.com/notofonts/makasar/releases/download/NotoSerifMakasar-v1.001/NotoSerifMakasar-v1.001.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifMakasar/googlefonts/ttf/NotoSerifMakasar-Regular.ttf"
+    dest_file: "NotoSerifMakasar-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
+languages: "mak_Maka"  # Makasar, Old Makasar
+primary_script: "Maka"
diff --git a/ofl/notoserifmakasar/upstream.yaml b/ofl/notoserifmakasar/upstream.yaml
deleted file mode 100644
index 6ad5e99fac1b6cf0ecbbe41bd0c92fc5da6af687..0000000000000000000000000000000000000000
--- a/ofl/notoserifmakasar/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/makasar/releases/download/NotoSerifMakasar-v1.001/NotoSerifMakasar-v1.001.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSerifMakasar/googlefonts/ttf/NotoSerifMakasar-Regular.ttf: NotoSerifMakasar-Regular.ttf
diff --git a/ofl/notoserifmalayalam/METADATA.pb b/ofl/notoserifmalayalam/METADATA.pb
index 6f2f27dbb1f3589e567f4c2cef9fcaa40149e59d..c67eae1719609808af28136e837d193bc6550220 100644
--- a/ofl/notoserifmalayalam/METADATA.pb
+++ b/ofl/notoserifmalayalam/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/malayalam.git"
+  repository_url: "https://github.com/notofonts/malayalam"
   archive_url: "https://github.com/notofonts/malayalam/releases/download/NotoSerifMalayalam-v2.104/NotoSerifMalayalam-v2.104.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifMalayalam/googlefonts/variable-ttf/NotoSerifMalayalam[wght].ttf"
+    dest_file: "NotoSerifMalayalam[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ml_Mlym"  # Malayalam
diff --git a/ofl/notoserifmalayalam/upstream.yaml b/ofl/notoserifmalayalam/upstream.yaml
deleted file mode 100644
index ef81ad2f56db60a715c4d11c492d96005dc14175..0000000000000000000000000000000000000000
--- a/ofl/notoserifmalayalam/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/malayalam/releases/download/NotoSerifMalayalam-v2.104/NotoSerifMalayalam-v2.104.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifMalayalam/googlefonts/variable-ttf/NotoSerifMalayalam[wght].ttf: NotoSerifMalayalam[wght].ttf
diff --git a/ofl/notoserifolduyghur/METADATA.pb b/ofl/notoserifolduyghur/METADATA.pb
index 61df7500993b73aae80951e4f7fc07c2ef7c039d..01abafb19fb7a5efab390600c132d39427f51d5b 100644
--- a/ofl/notoserifolduyghur/METADATA.pb
+++ b/ofl/notoserifolduyghur/METADATA.pb
@@ -17,9 +17,26 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "old-uyghur"
 source {
-  repository_url: "https://github.com/notofonts/old-uyghur.git"
+  repository_url: "https://github.com/notofonts/old-uyghur"
   archive_url: "https://github.com/notofonts/old-uyghur/releases/download/NotoSerifOldUyghur-v1.003/NotoSerifOldUyghur-v1.003.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifOldUyghur/googlefonts/ttf/NotoSerifOldUyghur-Regular.ttf"
+    dest_file: "NotoSerifOldUyghur-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
-primary_script: "Ougr"
 languages: "oui_Ougr"  # Old Uyghur, Old Uyghur
+primary_script: "Ougr"
diff --git a/ofl/notoserifolduyghur/upstream.yaml b/ofl/notoserifolduyghur/upstream.yaml
deleted file mode 100644
index 309495e01107618ccf2d304e40f427aa285327a7..0000000000000000000000000000000000000000
--- a/ofl/notoserifolduyghur/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/old-uyghur/releases/download/NotoSerifOldUyghur-v1.003/NotoSerifOldUyghur-v1.003.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifOldUyghur/googlefonts/ttf/NotoSerifOldUyghur-Regular.ttf: NotoSerifOldUyghur-Regular.ttf
diff --git a/ofl/notoseriforiya/METADATA.pb b/ofl/notoseriforiya/METADATA.pb
index 43a4d1d90a8a9160b475097d5b9708b980b3387d..d1ea0014aee871cde37d4296df6d01175329dda0 100644
--- a/ofl/notoseriforiya/METADATA.pb
+++ b/ofl/notoseriforiya/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/oriya.git"
+  repository_url: "https://github.com/notofonts/oriya"
   archive_url: "https://github.com/notofonts/oriya/releases/download/NotoSerifOriya-v1.051/NotoSerifOriya-v1.051.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifOriya/googlefonts/variable-ttf/NotoSerifOriya[wght].ttf"
+    dest_file: "NotoSerifOriya[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "khr_Orya"  # Kharia, Odia
diff --git a/ofl/notoseriforiya/upstream.yaml b/ofl/notoseriforiya/upstream.yaml
deleted file mode 100644
index de1575efe0d565a526c3171094f1b1f76ec8193d..0000000000000000000000000000000000000000
--- a/ofl/notoseriforiya/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/oriya/releases/download/NotoSerifOriya-v1.051/NotoSerifOriya-v1.051.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSerifOriya/googlefonts/variable-ttf/NotoSerifOriya[wght].ttf: NotoSerifOriya[wght].ttf
diff --git a/ofl/notoserifottomansiyaq/METADATA.pb b/ofl/notoserifottomansiyaq/METADATA.pb
index 1e9ab5eaf07022817f7a1a70ece1fe2b3c1db2b4..ab8cb9839873a4dd9add56ebf4cc46e6596a8558 100644
--- a/ofl/notoserifottomansiyaq/METADATA.pb
+++ b/ofl/notoserifottomansiyaq/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "ottoman-siyaq-numbers"
 source {
-  repository_url: "https://github.com/notofonts/ottoman-siyaq-numbers.git"
+  repository_url: "https://github.com/notofonts/ottoman-siyaq-numbers"
   archive_url: "https://github.com/notofonts/ottoman-siyaq-numbers/releases/download/NotoSerifOttomanSiyaq-v1.006/NotoSerifOttomanSiyaq-v1.006.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifOttomanSiyaq/googlefonts/ttf/NotoSerifOttomanSiyaq-Regular.ttf"
+    dest_file: "NotoSerifOttomanSiyaq-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notoserifottomansiyaq/upstream.yaml b/ofl/notoserifottomansiyaq/upstream.yaml
deleted file mode 100644
index 0deeb5942a8567ecddbe9931ea9387068d20883a..0000000000000000000000000000000000000000
--- a/ofl/notoserifottomansiyaq/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/ottoman-siyaq-numbers/releases/download/NotoSerifOttomanSiyaq-v1.006/NotoSerifOttomanSiyaq-v1.006.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifOttomanSiyaq/googlefonts/ttf/NotoSerifOttomanSiyaq-Regular.ttf: NotoSerifOttomanSiyaq-Regular.ttf
diff --git a/ofl/notoserifsinhala/METADATA.pb b/ofl/notoserifsinhala/METADATA.pb
index d78b8cb2e2fcbc5854fdb3250b7c2113d3d69007..5a176ad62b5a02da063b955d3a1a9dc7045a1fbb 100644
--- a/ofl/notoserifsinhala/METADATA.pb
+++ b/ofl/notoserifsinhala/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/sinhala.git"
+  repository_url: "https://github.com/notofonts/sinhala"
   archive_url: "https://github.com/notofonts/sinhala/releases/download/NotoSerifSinhala-v2.007/NotoSerifSinhala-v2.007.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifSinhala/googlefonts/variable-ttf/NotoSerifSinhala[wdth,wght].ttf"
+    dest_file: "NotoSerifSinhala[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "pi_Sinh"  # Pali, Sinhala
diff --git a/ofl/notoserifsinhala/upstream.yaml b/ofl/notoserifsinhala/upstream.yaml
deleted file mode 100644
index 221bfd5d1fcd96a490d27e254df1db8317d035d0..0000000000000000000000000000000000000000
--- a/ofl/notoserifsinhala/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/sinhala/releases/download/NotoSerifSinhala-v2.007/NotoSerifSinhala-v2.007.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifSinhala/googlefonts/variable-ttf/NotoSerifSinhala[wdth,wght].ttf: NotoSerifSinhala[wdth,wght].ttf
diff --git a/ofl/notoseriftamil/METADATA.pb b/ofl/notoseriftamil/METADATA.pb
index 89945e68e711e0845f923d2f2f3ff1cc48d5e31e..63f2e8fa538b6433598c2719a3851468a0c55b50 100644
--- a/ofl/notoseriftamil/METADATA.pb
+++ b/ofl/notoseriftamil/METADATA.pb
@@ -36,8 +36,29 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/tamil.git"
+  repository_url: "https://github.com/notofonts/tamil"
   archive_url: "https://github.com/notofonts/tamil/releases/download/NotoSerifTamil-v2.004/NotoSerifTamil-v2.004.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifTamil/googlefonts/variable-ttf/NotoSerifTamil[wdth,wght].ttf"
+    dest_file: "NotoSerifTamil[wdth,wght].ttf"
+  }
+  files {
+    source_file: "NotoSerifTamil/googlefonts/variable-ttf/NotoSerifTamil-Italic[wdth,wght].ttf"
+    dest_file: "NotoSerifTamil-Italic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bfq_Taml"  # Badaga
diff --git a/ofl/notoseriftamil/upstream.yaml b/ofl/notoseriftamil/upstream.yaml
deleted file mode 100644
index 3e2089cee6668107039369f812bd0e0ad813e7eb..0000000000000000000000000000000000000000
--- a/ofl/notoseriftamil/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/notofonts/tamil/releases/download/NotoSerifTamil-v2.004/NotoSerifTamil-v2.004.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifTamil/googlefonts/variable-ttf/NotoSerifTamil[wdth,wght].ttf: NotoSerifTamil[wdth,wght].ttf
-  NotoSerifTamil/googlefonts/variable-ttf/NotoSerifTamil-Italic[wdth,wght].ttf: NotoSerifTamil-Italic[wdth,wght].ttf
diff --git a/ofl/notoseriftangut/METADATA.pb b/ofl/notoseriftangut/METADATA.pb
index bb9226c4cf42cfa972889971990e029faaccfb9c..10674b1e1e491bb7f939c060ea7fb9a3126bf843 100644
--- a/ofl/notoseriftangut/METADATA.pb
+++ b/ofl/notoseriftangut/METADATA.pb
@@ -17,8 +17,25 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tangut"
 source {
-  repository_url: "https://github.com/notofonts/tangut.git"
+  repository_url: "https://github.com/notofonts/tangut"
   archive_url: "https://github.com/notofonts/tangut/releases/download/NotoSerifTangut-v2.169/NotoSerifTangut-v2.169.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifTangut/googlefonts/ttf/NotoSerifTangut-Regular.ttf"
+    dest_file: "NotoSerifTangut-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "txg_Tang"  # Tangut
diff --git a/ofl/notoseriftangut/upstream.yaml b/ofl/notoseriftangut/upstream.yaml
deleted file mode 100644
index 6021941092d8857dfab6f78b586fa798ed072dff..0000000000000000000000000000000000000000
--- a/ofl/notoseriftangut/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tangut/releases/download/NotoSerifTangut-v2.169/NotoSerifTangut-v2.169.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoSerifTangut/googlefonts/ttf/NotoSerifTangut-Regular.ttf: NotoSerifTangut-Regular.ttf
diff --git a/ofl/notoseriftelugu/METADATA.pb b/ofl/notoseriftelugu/METADATA.pb
index b3f32465014601122e42c28508ec5b921bb09867..f87f636fa1143c7aa3f313fd8d8f7478d17e96f2 100644
--- a/ofl/notoseriftelugu/METADATA.pb
+++ b/ofl/notoseriftelugu/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/telugu.git"
+  repository_url: "https://github.com/notofonts/telugu"
   archive_url: "https://github.com/notofonts/telugu/releases/download/NotoSerifTelugu-v2.005/NotoSerifTelugu-v2.005.zip"
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifTelugu/googlefonts/variable/NotoSerifTelugu[wght].ttf"
+    dest_file: "NotoSerifTelugu[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "gon_Telu"  # Gondi, Telugu
diff --git a/ofl/notoseriftelugu/upstream.yaml b/ofl/notoseriftelugu/upstream.yaml
deleted file mode 100644
index be88846b45eee44990845a642a0bac96496299be..0000000000000000000000000000000000000000
--- a/ofl/notoseriftelugu/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/telugu/releases/download/NotoSerifTelugu-v2.005/NotoSerifTelugu-v2.005.zip
-branch: main
-files:
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  NotoSerifTelugu/googlefonts/variable/NotoSerifTelugu[wght].ttf: NotoSerifTelugu[wght].ttf
diff --git a/ofl/notoserifthai/METADATA.pb b/ofl/notoserifthai/METADATA.pb
index 9d85193b80e23b763634d14f8cfaf63d202d2c38..facf6c2fae5e1aef4d2f7df074a7b44397b171dd 100644
--- a/ofl/notoserifthai/METADATA.pb
+++ b/ofl/notoserifthai/METADATA.pb
@@ -27,8 +27,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/thai.git"
+  repository_url: "https://github.com/notofonts/thai"
   archive_url: "https://github.com/notofonts/thai/releases/download/NotoSerifThai-v2.002/NotoSerifThai-v2.002.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifThai/googlefonts/variable/NotoSerifThai[wdth,wght].ttf"
+    dest_file: "NotoSerifThai[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "kdt_Thai"  # Kuy
diff --git a/ofl/notoserifthai/upstream.yaml b/ofl/notoserifthai/upstream.yaml
deleted file mode 100644
index 7766ed1597f04b65c8a0b6445abdc07ffaf87031..0000000000000000000000000000000000000000
--- a/ofl/notoserifthai/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/thai/releases/download/NotoSerifThai-v2.002/NotoSerifThai-v2.002.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  NotoSerifThai/googlefonts/variable/NotoSerifThai[wdth,wght].ttf: NotoSerifThai[wdth,wght].ttf
diff --git a/ofl/notoseriftibetan/METADATA.pb b/ofl/notoseriftibetan/METADATA.pb
index c99dd722f77630450d0f9911c9428d56e63b25f2..4ef4b71d55844eddc4a1e26a105c03588a0e4fd9 100644
--- a/ofl/notoseriftibetan/METADATA.pb
+++ b/ofl/notoseriftibetan/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 900.0
 }
 source {
-  repository_url: "https://github.com/notofonts/tibetan.git"
+  repository_url: "https://github.com/notofonts/tibetan"
   archive_url: "https://github.com/notofonts/tibetan/releases/download/NotoSerifTibetan-v2.103/NotoSerifTibetan-v2.103.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifTibetan/googlefonts/variable-ttf/NotoSerifTibetan[wght].ttf"
+    dest_file: "NotoSerifTibetan[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "bft_Tibt"  # Balti, Tibetan
diff --git a/ofl/notoseriftibetan/upstream.yaml b/ofl/notoseriftibetan/upstream.yaml
deleted file mode 100644
index 143bbcc9b1f73007848cbdcfe8a2e802b874925e..0000000000000000000000000000000000000000
--- a/ofl/notoseriftibetan/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/tibetan/releases/download/NotoSerifTibetan-v2.103/NotoSerifTibetan-v2.103.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifTibetan/googlefonts/variable-ttf/NotoSerifTibetan[wght].ttf: NotoSerifTibetan[wght].ttf
diff --git a/ofl/notoseriftoto/METADATA.pb b/ofl/notoseriftoto/METADATA.pb
index 90a6286b4aeeeb2125ba2bf0e31c633af0a7bfe0..70f7066cbf4630d26805516dd8292c1473c478f3 100644
--- a/ofl/notoseriftoto/METADATA.pb
+++ b/ofl/notoseriftoto/METADATA.pb
@@ -22,8 +22,17 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/toto.git"
+  repository_url: "https://github.com/notofonts/toto"
   archive_url: "https://github.com/notofonts/toto/releases/download/NotoSerifToto-v2.001/NotoSerifToto-v2.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifToto/googlefonts/variable-ttf/NotoSerifToto[wght].ttf"
+    dest_file: "NotoSerifToto[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "txo_Toto"  # Toto
diff --git a/ofl/notoseriftoto/upstream.yaml b/ofl/notoseriftoto/upstream.yaml
deleted file mode 100644
index 129c419d0fe6602173b94df927a89a167a090037..0000000000000000000000000000000000000000
--- a/ofl/notoseriftoto/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/toto/releases/download/NotoSerifToto-v2.001/NotoSerifToto-v2.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSerifToto/googlefonts/variable-ttf/NotoSerifToto[wght].ttf: NotoSerifToto[wght].ttf
diff --git a/ofl/notoserifvithkuqi/METADATA.pb b/ofl/notoserifvithkuqi/METADATA.pb
index c89728d23f61878ab33781dc2ba2f9cfbacf3970..e713ee17efd92c8df264ad7ef3b6caacc18a3cc8 100644
--- a/ofl/notoserifvithkuqi/METADATA.pb
+++ b/ofl/notoserifvithkuqi/METADATA.pb
@@ -16,15 +16,24 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vithkuqi"
-languages: "sq_Vith" # Albanian, Vithkuqi
-primary_script: "Vith"
 axes {
   tag: "wght"
   min_value: 400.0
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/vithkuqi.git"
+  repository_url: "https://github.com/notofonts/vithkuqi"
   archive_url: "https://github.com/notofonts/vithkuqi/releases/download/NotoSerifVithkuqi-v1.005/NotoSerifVithkuqi-v1.005.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoSerifVithkuqi/googlefonts/variable-ttf/NotoSerifVithkuqi[wght].ttf"
+    dest_file: "NotoSerifVithkuqi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
+languages: "sq_Vith"  # Albanian, Vithkuqi
+primary_script: "Vith"
diff --git a/ofl/notoserifvithkuqi/upstream.yaml b/ofl/notoserifvithkuqi/upstream.yaml
deleted file mode 100644
index 665587e9a7ad869930db4e62ab940cf1ee5e679b..0000000000000000000000000000000000000000
--- a/ofl/notoserifvithkuqi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/notofonts/vithkuqi/releases/download/NotoSerifVithkuqi-v1.005/NotoSerifVithkuqi-v1.005.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  NotoSerifVithkuqi/googlefonts/variable-ttf/NotoSerifVithkuqi[wght].ttf: NotoSerifVithkuqi[wght].ttf
diff --git a/ofl/notoserifyezidi/METADATA.pb b/ofl/notoserifyezidi/METADATA.pb
index 4c07973002dde8a7b321b37393135615cbff400d..0d4ddfd4aa16a262e0171bdb35569fb1464b1e31 100644
--- a/ofl/notoserifyezidi/METADATA.pb
+++ b/ofl/notoserifyezidi/METADATA.pb
@@ -22,8 +22,25 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/yezidi.git"
+  repository_url: "https://github.com/notofonts/yezidi"
   archive_url: "https://github.com/notofonts/yezidi/releases/download/NotoSerifYezidi-v1.001/NotoSerifYezidi-v1.001.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoSerifYezidi/googlefonts/variable-ttf/NotoSerifYezidi[wght].ttf"
+    dest_file: "NotoSerifYezidi[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "ku_Yezi"  # Kurdish, Yezidi
diff --git a/ofl/notoserifyezidi/upstream.yaml b/ofl/notoserifyezidi/upstream.yaml
deleted file mode 100644
index f787cff89cf7961b3538c0aa5a0a1e1bb3b5e169..0000000000000000000000000000000000000000
--- a/ofl/notoserifyezidi/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/yezidi/releases/download/NotoSerifYezidi-v1.001/NotoSerifYezidi-v1.001.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoSerifYezidi/googlefonts/variable-ttf/NotoSerifYezidi[wght].ttf: NotoSerifYezidi[wght].ttf
diff --git a/ofl/nototraditionalnushu/METADATA.pb b/ofl/nototraditionalnushu/METADATA.pb
index 0960b9f9f8116923eabb091821c8d3c7e0c981cb..6274acaeeaeb18edee9035ed1abf874519fb5c22 100644
--- a/ofl/nototraditionalnushu/METADATA.pb
+++ b/ofl/nototraditionalnushu/METADATA.pb
@@ -22,8 +22,21 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/notofonts/nushu.git"
+  repository_url: "https://github.com/notofonts/nushu"
   archive_url: "https://github.com/notofonts/nushu/releases/download/NotoTraditionalNushu-v2.003/NotoTraditionalNushu-v2.003.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "NotoTraditionalNushu/googlefonts/variable-ttf/NotoTraditionalNushu[wght].ttf"
+    dest_file: "NotoTraditionalNushu[wght].ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 languages: "mis_Nshu"  # Xiangnan Tuhua
diff --git a/ofl/nototraditionalnushu/upstream.yaml b/ofl/nototraditionalnushu/upstream.yaml
deleted file mode 100644
index 0f7edb7f1796cab94eb9bc4e9d35b418c32b0bcf..0000000000000000000000000000000000000000
--- a/ofl/nototraditionalnushu/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/notofonts/nushu/releases/download/NotoTraditionalNushu-v2.003/NotoTraditionalNushu-v2.003.zip
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  NotoTraditionalNushu/googlefonts/variable-ttf/NotoTraditionalNushu[wght].ttf: NotoTraditionalNushu[wght].ttf
diff --git a/ofl/notoznamennymusicalnotation/METADATA.pb b/ofl/notoznamennymusicalnotation/METADATA.pb
index 61b7c859969319d1b272e937fc469e23afed73ea..7dbfafd7c4ca370be8731f23d9a135c04d59414c 100644
--- a/ofl/notoznamennymusicalnotation/METADATA.pb
+++ b/ofl/notoznamennymusicalnotation/METADATA.pb
@@ -19,8 +19,25 @@ subsets: "menu"
 subsets: "symbols"
 subsets: "znamenny"
 source {
-  repository_url: "https://github.com/notofonts/znamenny.git"
+  repository_url: "https://github.com/notofonts/znamenny"
   archive_url: "https://github.com/notofonts/znamenny/releases/download/NotoZnamennyMusicalNotation-v1.003/NotoZnamennyMusicalNotation-v1.003.zip"
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ARTICLE.en_us.html"
+    dest_file: "article/ARTICLE.en_us.html"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NotoZnamennyMusicalNotation/googlefonts/ttf/NotoZnamennyMusicalNotation-Regular.ttf"
+    dest_file: "NotoZnamennyMusicalNotation-Regular.ttf"
+  }
+  branch: "main"
 }
 is_noto: true
 sample_text {
diff --git a/ofl/notoznamennymusicalnotation/upstream.yaml b/ofl/notoznamennymusicalnotation/upstream.yaml
deleted file mode 100644
index 9a09f086600f97504e818ed9887ad008c53bfda4..0000000000000000000000000000000000000000
--- a/ofl/notoznamennymusicalnotation/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-archive: https://github.com/notofonts/znamenny/releases/download/NotoZnamennyMusicalNotation-v1.003/NotoZnamennyMusicalNotation-v1.003.zip
-branch: main
-files:
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ARTICLE.en_us.html: article/ARTICLE.en_us.html
-  OFL.txt: OFL.txt
-  NotoZnamennyMusicalNotation/googlefonts/ttf/NotoZnamennyMusicalNotation-Regular.ttf: NotoZnamennyMusicalNotation-Regular.ttf
diff --git a/ofl/nunito/METADATA.pb b/ofl/nunito/METADATA.pb
index ac790e9aa076dfff6f3bf6cf7d047426c096863b..b57dfdcdd0e4ce82d40f08f6af81e46e918e1760 100644
--- a/ofl/nunito/METADATA.pb
+++ b/ofl/nunito/METADATA.pb
@@ -33,6 +33,19 @@ axes {
   max_value: 1000.0
 }
 source {
-  repository_url: "https://github.com/googlefonts/nunito.git"
+  repository_url: "https://github.com/googlefonts/nunito"
   commit: "43d16f963c5c341c10efa0bfe7a82aa1bea8a938"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Nunito[wght].ttf"
+    dest_file: "Nunito[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Nunito-Italic[wght].ttf"
+    dest_file: "Nunito-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/nunito/upstream.yaml b/ofl/nunito/upstream.yaml
deleted file mode 100644
index 04b891cd41258910e66a3c2d230a6059723d7295..0000000000000000000000000000000000000000
--- a/ofl/nunito/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Nunito[wght].ttf: Nunito[wght].ttf
-  fonts/variable/Nunito-Italic[wght].ttf: Nunito-Italic[wght].ttf
diff --git a/ofl/nunitosans/METADATA.pb b/ofl/nunitosans/METADATA.pb
index bcb9721978346117615d2b5bf3d9ae469905285c..767ef849682e7d929eecf4654f4fc434ecadf969 100644
--- a/ofl/nunitosans/METADATA.pb
+++ b/ofl/nunitosans/METADATA.pb
@@ -54,4 +54,17 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/googlefonts/NunitoSans"
   commit: "058bd7a2f33d6ad5ef1df985b3db403622016a8c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/NunitoSans[YTLC,opsz,wdth,wght].ttf"
+    dest_file: "NunitoSans[YTLC,opsz,wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/NunitoSans-Italic[YTLC,opsz,wdth,wght].ttf"
+    dest_file: "NunitoSans-Italic[YTLC,opsz,wdth,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/nunitosans/upstream.yaml b/ofl/nunitosans/upstream.yaml
deleted file mode 100644
index 4d7a2f0aa6f3564ac45a8f57318a88a0f5dfb51e..0000000000000000000000000000000000000000
--- a/ofl/nunitosans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/NunitoSans[YTLC,opsz,wdth,wght].ttf: NunitoSans[YTLC,opsz,wdth,wght].ttf
-  fonts/variable/NunitoSans-Italic[YTLC,opsz,wdth,wght].ttf: NunitoSans-Italic[YTLC,opsz,wdth,wght].ttf
-archive:
diff --git a/ofl/nuosusil/METADATA.pb b/ofl/nuosusil/METADATA.pb
index bd1836c1face127aa94fc15306d7d3a4f181fbae..be6ee9873ea87a68839b418f3083adc54747d26a 100644
--- a/ofl/nuosusil/METADATA.pb
+++ b/ofl/nuosusil/METADATA.pb
@@ -19,5 +19,14 @@ subsets: "yi"
 source {
   repository_url: "https://github.com/silnrsi/font-nuosu"
   archive_url: "https://github.com/silnrsi/font-nuosu/releases/download/v2.300/NuosuSIL-2.300.zip"
+  files {
+    source_file: "NuosuSIL-2.300/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "NuosuSIL-2.300/NuosuSIL-Regular.ttf"
+    dest_file: "NuosuSIL-Regular.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Yiii"
diff --git a/ofl/nuosusil/upstream.yaml b/ofl/nuosusil/upstream.yaml
deleted file mode 100644
index 09b3ccfb82cdf292d142021e8fd4be22bf5afd26..0000000000000000000000000000000000000000
--- a/ofl/nuosusil/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/silnrsi/font-nuosu/releases/download/v2.300/NuosuSIL-2.300.zip
-branch: master
-files:
-  NuosuSIL-2.300/OFL.txt: OFL.txt
-  NuosuSIL-2.300/NuosuSIL-Regular.ttf: NuosuSIL-Regular.ttf
diff --git a/ofl/odormeanchey/METADATA.pb b/ofl/odormeanchey/METADATA.pb
index 81a9b3bd77a269287bdef16ee6d07c707f1527f7..03f10a25d5f2cb22b18c1e93bd591377d827218f 100644
--- a/ofl/odormeanchey/METADATA.pb
+++ b/ofl/odormeanchey/METADATA.pb
@@ -15,3 +15,15 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/OdorMeanChey"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/OdorMeanChey-Regular.ttf"
+    dest_file: "OdorMeanChey-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/odormeanchey/upstream.yaml b/ofl/odormeanchey/upstream.yaml
deleted file mode 100644
index 2155db362098984d7eac84258da642402908450e..0000000000000000000000000000000000000000
--- a/ofl/odormeanchey/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/OdorMeanChey-Regular.ttf: OdorMeanChey-Regular.ttf
-repository_url: https://github.com/danhhong/OdorMeanChey.git
diff --git a/ofl/offside/METADATA.pb b/ofl/offside/METADATA.pb
index 751fcf607d1bc82e556250f149455c5b304bf4de..5e3395f9c48360dbdcfc530cee303a3693991316 100644
--- a/ofl/offside/METADATA.pb
+++ b/ofl/offside/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/offside"
   commit: "025804545334bb6270119f43fb8fe7d05b31cd7d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Offside-Regular.ttf"
+    dest_file: "Offside-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/offside/upstream.yaml b/ofl/offside/upstream.yaml
deleted file mode 100644
index aebdc3178ec7f1872966b30820d679a319a069ee..0000000000000000000000000000000000000000
--- a/ofl/offside/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Offside-Regular.ttf: Offside-Regular.ttf
-archive:
diff --git a/ofl/oi/METADATA.pb b/ofl/oi/METADATA.pb
index 3446649b627778e7c089603704713e7a2a5344fc..f034429a306a9acf0f3dc84cb2dce38ac0eeffb2 100644
--- a/ofl/oi/METADATA.pb
+++ b/ofl/oi/METADATA.pb
@@ -20,5 +20,17 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "tamil"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/kosbarts/Oi"
+  files {
+    source_file: "fonts/ttf/Oi-Regular.ttf"
+    dest_file: "Oi-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/oi/upstream.yaml b/ofl/oi/upstream.yaml
deleted file mode 100644
index e4ee7fead5921c481457fde7838d3a28e329dea5..0000000000000000000000000000000000000000
--- a/ofl/oi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  fonts/ttf/Oi-Regular.ttf: Oi-Regular.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/kosbarts/Oi
diff --git a/ofl/ojuju/METADATA.pb b/ofl/ojuju/METADATA.pb
index 2b7291984cfa1323b59c87e10112e03ffed734de..d66e57114e4d95c0805a36ea2d10772f1f15629c 100644
--- a/ofl/ojuju/METADATA.pb
+++ b/ofl/ojuju/METADATA.pb
@@ -26,6 +26,19 @@ axes {
 source {
   repository_url: "https://github.com/jobosonchisa/ojuju"
   commit: "7f366504f204a579b27c99cb6c6272183100cde0"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Ojuju[wght].ttf"
+    dest_file: "Ojuju[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/ojuju/upstream.yaml b/ofl/ojuju/upstream.yaml
deleted file mode 100644
index a3d79e87449cfc4d22bff1c3d9cd5c8787bca77d..0000000000000000000000000000000000000000
--- a/ofl/ojuju/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Ojuju[wght].ttf: Ojuju[wght].ttf
-archive:
diff --git a/ofl/ole/METADATA.pb b/ofl/ole/METADATA.pb
index 3e4db75d2cd465f555df437e5de5b91be04dcc19..f6f288dc5d649a01302292170fa828eb026967a8 100644
--- a/ofl/ole/METADATA.pb
+++ b/ofl/ole/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/ole"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Ole-Regular.ttf"
+    dest_file: "Ole-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/ole/upstream.yaml b/ofl/ole/upstream.yaml
deleted file mode 100644
index c219ea6c5d5de8d495470fe423bea27915055842..0000000000000000000000000000000000000000
--- a/ofl/ole/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Ole-Regular.ttf: Ole-Regular.ttf
-repository_url: https://github.com/googlefonts/ole
diff --git a/ofl/onest/METADATA.pb b/ofl/onest/METADATA.pb
index 670c1553dc023015c4d28ed9c8ed2a86e3eb0c39..a975464810821c15a560dbb1c17391552534cc37 100644
--- a/ofl/onest/METADATA.pb
+++ b/ofl/onest/METADATA.pb
@@ -25,4 +25,13 @@ axes {
 source {
   repository_url: "https://github.com/simpals/onest"
   commit: "838e8c63a8e9efd5cb81cddcc7ffacb15bd9a596"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Onest[wght].ttf"
+    dest_file: "Onest[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/onest/upstream.yaml b/ofl/onest/upstream.yaml
deleted file mode 100644
index b97913cb17ca438558e29fb0410e8d7d0c0bd3b3..0000000000000000000000000000000000000000
--- a/ofl/onest/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Onest[wght].ttf: Onest[wght].ttf
-archive:
diff --git a/ofl/ooohbaby/METADATA.pb b/ofl/ooohbaby/METADATA.pb
index bb9e9be7349c3e0d40c352b485055d28c1232be2..3c3833e0a311334441546819fd2ef96ecf7c49bb 100644
--- a/ofl/ooohbaby/METADATA.pb
+++ b/ofl/ooohbaby/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/oooh-baby"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/OoohBaby-Regular.ttf"
+    dest_file: "OoohBaby-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/ooohbaby/upstream.yaml b/ofl/ooohbaby/upstream.yaml
deleted file mode 100644
index 69492f2e0e32a0e4f222a2392a1525233df28e45..0000000000000000000000000000000000000000
--- a/ofl/ooohbaby/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/OoohBaby-Regular.ttf: OoohBaby-Regular.ttf
-repository_url: https://github.com/googlefonts/oooh-baby
diff --git a/ofl/opensans/METADATA.pb b/ofl/opensans/METADATA.pb
index 7a525774818629e2f76e673154cf6c180d1b69aa..fba7c82e84575c36f42a9c12bc590b63d08ba2e2 100644
--- a/ofl/opensans/METADATA.pb
+++ b/ofl/opensans/METADATA.pb
@@ -45,6 +45,19 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/opensans"
   commit: "bd7e37632246368c60fdcbd374dbf9bad11969b6"
+  files {
+    source_file: "fonts/variable/OpenSans[wdth,wght].ttf"
+    dest_file: "OpenSans[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/OpenSans-Italic[wdth,wght].ttf"
+    dest_file: "OpenSans-Italic[wdth,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
 }
 fallbacks {
   axis_target {
diff --git a/ofl/opensans/upstream.yaml b/ofl/opensans/upstream.yaml
deleted file mode 100644
index 429b0ccce6b6474b7bd2fa20d085c44070c4cb7a..0000000000000000000000000000000000000000
--- a/ofl/opensans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  fonts/variable/OpenSans[wdth,wght].ttf: OpenSans[wdth,wght].ttf
-  fonts/variable/OpenSans-Italic[wdth,wght].ttf: OpenSans-Italic[wdth,wght].ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/orbit/METADATA.pb b/ofl/orbit/METADATA.pb
index 75648bf7d364465c2901917c2dc1cab03ba3cf4f..3e123f0b12b58e39e3644601e62b6615b31f32e7 100644
--- a/ofl/orbit/METADATA.pb
+++ b/ofl/orbit/METADATA.pb
@@ -19,5 +19,18 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/JAMO-TYPEFACE/Orbit"
   commit: "9f58ea557b9b3fd068f61f355f742fb58e741966"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Fonts/ttf/Orbit-Regular.ttf"
+    dest_file: "Orbit-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Kore"
diff --git a/ofl/orbit/upstream.yaml b/ofl/orbit/upstream.yaml
deleted file mode 100644
index 90c0da1887da0f6fad2de0b980fe8c05b178c7c0..0000000000000000000000000000000000000000
--- a/ofl/orbit/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Fonts/ttf/Orbit-Regular.ttf: Orbit-Regular.ttf
-archive:
diff --git a/ofl/orelegaone/METADATA.pb b/ofl/orelegaone/METADATA.pb
index 3a1817d5e5708693c92da2b7eb7037a13ee84486..4b58a56fb63c9306cbe3280290fb4fac6959cdbc 100644
--- a/ofl/orelegaone/METADATA.pb
+++ b/ofl/orelegaone/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "cyrillic-ext"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/JapanYoshi/Orelega"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "ttf/OrelegaOne-Regular.ttf"
+    dest_file: "OrelegaOne-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/orelegaone/upstream.yaml b/ofl/orelegaone/upstream.yaml
deleted file mode 100644
index d13df581f37b659afab0fb5e6ce33ac48d7219a6..0000000000000000000000000000000000000000
--- a/ofl/orelegaone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  ttf/OrelegaOne-Regular.ttf: OrelegaOne-Regular.ttf
-repository_url: https://github.com/JapanYoshi/Orelega.git
diff --git a/ofl/orienta/METADATA.pb b/ofl/orienta/METADATA.pb
index 35d879e2e166929ca1c8437e50b98fa5be022ffc..f0c3776d472250178b7bc5db562dc1cd852ba03a 100644
--- a/ofl/orienta/METADATA.pb
+++ b/ofl/orienta/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/orienta"
   commit: "18d3b4ce823c8a5b374023c559cf6d2b2bd505a2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Orienta-Regular.ttf"
+    dest_file: "Orienta-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/orienta/upstream.yaml b/ofl/orienta/upstream.yaml
deleted file mode 100644
index 9df8139f4b004d538feafffd80c743f4645b78ad..0000000000000000000000000000000000000000
--- a/ofl/orienta/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Orienta-Regular.ttf: Orienta-Regular.ttf
-archive:
diff --git a/ofl/oswald/METADATA.pb b/ofl/oswald/METADATA.pb
index 46c1a78b23e322e9631d5829957064b3c5bfbc38..c2c2e7bb3bf3f72b4498e68543f473a7712d952a 100644
--- a/ofl/oswald/METADATA.pb
+++ b/ofl/oswald/METADATA.pb
@@ -26,6 +26,15 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/OswaldFont"
   commit: "6e65651c229e897dc55fb8d17097ee7f75b2769b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Oswald[wght].ttf"
+    dest_file: "Oswald[wght].ttf"
+  }
+  branch: "main"
 }
 fallbacks {
   axis_target {
diff --git a/ofl/oswald/upstream.yaml b/ofl/oswald/upstream.yaml
deleted file mode 100644
index c92eb83499b68937f75e81a2ff2d8fca9cd881a1..0000000000000000000000000000000000000000
--- a/ofl/oswald/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Oswald[wght].ttf: Oswald[wght].ttf
-archive:
diff --git a/ofl/otomanopeeone/METADATA.pb b/ofl/otomanopeeone/METADATA.pb
index 778a5eaab7a0c68a354d83e176ad35d1d576af34..878f7df53a8a8c068cee410633a5ddf11f4536ed 100644
--- a/ofl/otomanopeeone/METADATA.pb
+++ b/ofl/otomanopeeone/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Gutenberg-Labo/Otomanopee"
+  files {
+    source_file: "fonts/ttf/OtomanopeeOne-Regular.ttf"
+    dest_file: "OtomanopeeOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/otomanopeeone/upstream.yaml b/ofl/otomanopeeone/upstream.yaml
deleted file mode 100644
index 23bc4d0000e6422b96808548bde5c07c7b545272..0000000000000000000000000000000000000000
--- a/ofl/otomanopeeone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/OtomanopeeOne-Regular.ttf: OtomanopeeOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Gutenberg-Labo/Otomanopee.git
diff --git a/ofl/outfit/METADATA.pb b/ofl/outfit/METADATA.pb
index d44dd22e3fe44d7fe6cdf72debb48b16999ee6ce..ecfbdae145b1580759562afbba3fa37e0cdecb25 100644
--- a/ofl/outfit/METADATA.pb
+++ b/ofl/outfit/METADATA.pb
@@ -23,4 +23,13 @@ axes {
 source {
   repository_url: "https://github.com/Outfitio/Outfit-Fonts"
   commit: "902773808eb372f70fb34e8946dd1ffe604efc79"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Outfit[wght].ttf"
+    dest_file: "Outfit[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/outfit/upstream.yaml b/ofl/outfit/upstream.yaml
deleted file mode 100644
index b2ea1dc0f03ede0e2b8d31078d374716dff93acb..0000000000000000000000000000000000000000
--- a/ofl/outfit/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Outfit[wght].ttf: Outfit[wght].ttf
-archive:
diff --git a/ofl/overpass/METADATA.pb b/ofl/overpass/METADATA.pb
index 6f379fb189683eca3a33be4c0e0f0c3acc528b2e..bdcb49f9264a054ae79a834cb6b1ca41a4667c5d 100644
--- a/ofl/overpass/METADATA.pb
+++ b/ofl/overpass/METADATA.pb
@@ -32,4 +32,20 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/RedHatOfficial/Overpass"
+  files {
+    source_file: "fonts/variable/Overpass[wght].ttf"
+    dest_file: "Overpass[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Overpass-Italic[wght].ttf"
+    dest_file: "Overpass-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 minisite_url: "https://overpassfont.org/"
diff --git a/ofl/overpass/upstream.yaml b/ofl/overpass/upstream.yaml
deleted file mode 100644
index 6d8a56fa9bedb5efd30f17a40204ce9ed5c69cb0..0000000000000000000000000000000000000000
--- a/ofl/overpass/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/Overpass[wght].ttf: Overpass[wght].ttf
-  fonts/variable/Overpass-Italic[wght].ttf: Overpass-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/RedHatOfficial/Overpass
diff --git a/ofl/overpassmono/METADATA.pb b/ofl/overpassmono/METADATA.pb
index 3722d14754005fad1a735fb22f703701f08f52ec..cb71784c32acbe307e9de00ab3a686d0b53885fa 100644
--- a/ofl/overpassmono/METADATA.pb
+++ b/ofl/overpassmono/METADATA.pb
@@ -23,3 +23,15 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/RedHatOfficial/Overpass"
+  files {
+    source_file: "fonts/variable_mono/OverpassMono[wght].ttf"
+    dest_file: "OverpassMono[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/overpassmono/upstream.yaml b/ofl/overpassmono/upstream.yaml
deleted file mode 100644
index f5ea6ade8b6f2cf107335555a6c6ceb92bacd19f..0000000000000000000000000000000000000000
--- a/ofl/overpassmono/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable_mono/OverpassMono[wght].ttf: OverpassMono[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/RedHatOfficial/Overpass
diff --git a/ofl/oxanium/METADATA.pb b/ofl/oxanium/METADATA.pb
index c9c8fa5cd3b34e4219beb48128dde44b0ee5a81b..7535c77549d9bcf3ab986ab03ded4a20a800bb4f 100644
--- a/ofl/oxanium/METADATA.pb
+++ b/ofl/oxanium/METADATA.pb
@@ -20,5 +20,45 @@ axes {
   min_value: 200.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/sevmeyer/oxanium"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-Bold.ttf"
+    dest_file: "static/Oxanium-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-ExtraBold.ttf"
+    dest_file: "static/Oxanium-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-ExtraLight.ttf"
+    dest_file: "static/Oxanium-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-Light.ttf"
+    dest_file: "static/Oxanium-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-Medium.ttf"
+    dest_file: "static/Oxanium-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-Regular.ttf"
+    dest_file: "static/Oxanium-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Oxanium-SemiBold.ttf"
+    dest_file: "static/Oxanium-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/variable/Oxanium[wght].ttf"
+    dest_file: "Oxanium[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/oxanium/upstream.yaml b/ofl/oxanium/upstream.yaml
deleted file mode 100644
index 3cbaa93664aa8ca2d04f42044f31409f76d2217b..0000000000000000000000000000000000000000
--- a/ofl/oxanium/upstream.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Oxanium-Bold.ttf: static/Oxanium-Bold.ttf
-  fonts/ttf/Oxanium-ExtraBold.ttf: static/Oxanium-ExtraBold.ttf
-  fonts/ttf/Oxanium-ExtraLight.ttf: static/Oxanium-ExtraLight.ttf
-  fonts/ttf/Oxanium-Light.ttf: static/Oxanium-Light.ttf
-  fonts/ttf/Oxanium-Medium.ttf: static/Oxanium-Medium.ttf
-  fonts/ttf/Oxanium-Regular.ttf: static/Oxanium-Regular.ttf
-  fonts/ttf/Oxanium-SemiBold.ttf: static/Oxanium-SemiBold.ttf
-  fonts/variable/Oxanium[wght].ttf: Oxanium[wght].ttf
-repository_url: https://github.com/sevmeyer/oxanium
diff --git a/ofl/padauk/METADATA.pb b/ofl/padauk/METADATA.pb
index fe3244d4113a712d56c81357551fc3bd33b810e7..85dd10cb1afcaac6ebe4ced1a119f63d5c8ba4f9 100644
--- a/ofl/padauk/METADATA.pb
+++ b/ofl/padauk/METADATA.pb
@@ -28,5 +28,18 @@ subsets: "myanmar"
 source {
   repository_url: "https://github.com/silnrsi/font-padauk"
   archive_url: "https://github.com/silnrsi/font-padauk/releases/download/v5.001/Padauk-5.001.zip"
+  files {
+    source_file: "Padauk-5.001/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Padauk-5.001/Padauk-Regular.ttf"
+    dest_file: "Padauk-Regular.ttf"
+  }
+  files {
+    source_file: "Padauk-5.001/Padauk-Bold.ttf"
+    dest_file: "Padauk-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Mymr"
diff --git a/ofl/padauk/upstream.yaml b/ofl/padauk/upstream.yaml
deleted file mode 100644
index 9e6ecd37c2cd9ba55c5e261fa7b2b8fca57cde41..0000000000000000000000000000000000000000
--- a/ofl/padauk/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/silnrsi/font-padauk/releases/download/v5.001/Padauk-5.001.zip
-branch: master
-files:
-  Padauk-5.001/OFL.txt: OFL.txt
-  Padauk-5.001/Padauk-Regular.ttf: Padauk-Regular.ttf
-  Padauk-5.001/Padauk-Bold.ttf: Padauk-Bold.ttf
diff --git a/ofl/padyakkeexpandedone/METADATA.pb b/ofl/padyakkeexpandedone/METADATA.pb
index f1b7208c88eada2a197c31b5bd7fed164ebd87aa..67caff69154a5d76088652a78948aedfbd034654 100644
--- a/ofl/padyakkeexpandedone/METADATA.pb
+++ b/ofl/padyakkeexpandedone/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/DunwichType/Padyakke_Libre"
   commit: "6b18f969591fb9d4767478137061cdd5b727a6b4"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/PadyakkeExpandedOne-Regular.ttf"
+    dest_file: "PadyakkeExpandedOne-Regular.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Knda"
 stroke: "SLAB_SERIF"
diff --git a/ofl/padyakkeexpandedone/upstream.yaml b/ofl/padyakkeexpandedone/upstream.yaml
deleted file mode 100644
index f2f002c5d06da6551beea0e32b25e3161f8eb597..0000000000000000000000000000000000000000
--- a/ofl/padyakkeexpandedone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/PadyakkeExpandedOne-Regular.ttf: PadyakkeExpandedOne-Regular.ttf
-archive:
diff --git a/ofl/palettemosaic/METADATA.pb b/ofl/palettemosaic/METADATA.pb
index 532567f7bed1a476323c9a9052eaee19c4492f63..e121096365a54334b3059bba8fb71d464b2257bc 100644
--- a/ofl/palettemosaic/METADATA.pb
+++ b/ofl/palettemosaic/METADATA.pb
@@ -17,6 +17,19 @@ subsets: "latin"
 subsets: "menu"
 source {
   repository_url: "https://github.com/shibuyafont/Palette-mosaic-font-mono"
+  files {
+    source_file: "fonts/ttf/PaletteMosaic-Regular.ttf"
+    dest_file: "PaletteMosaic-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 languages: "ja_Kana"  # Japanese, Katakana
 languages: "ja_Hira"  # Japanese, Hiragana
diff --git a/ofl/palettemosaic/upstream.yaml b/ofl/palettemosaic/upstream.yaml
deleted file mode 100644
index 79a61f2753fe56871785c704b33023cc0716a7ff..0000000000000000000000000000000000000000
--- a/ofl/palettemosaic/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/ttf/PaletteMosaic-Regular.ttf: PaletteMosaic-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/paprika/METADATA.pb b/ofl/paprika/METADATA.pb
index 15887ff3577f19d9eb1f17fad4d0243ba0c1ee34..e299463c5cc7b41699581a35d73a8715f8436e46 100644
--- a/ofl/paprika/METADATA.pb
+++ b/ofl/paprika/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/paprika"
   commit: "4297101a8717fd9ee5795b693f37f3c80bdd3d68"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Paprika-Regular.ttf"
+    dest_file: "Paprika-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/paprika/upstream.yaml b/ofl/paprika/upstream.yaml
deleted file mode 100644
index 518fc5f54f767f576e7a2c7c6e79aee1d51c68aa..0000000000000000000000000000000000000000
--- a/ofl/paprika/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Paprika-Regular.ttf: Paprika-Regular.ttf
-archive:
diff --git a/ofl/passionsconflict/METADATA.pb b/ofl/passionsconflict/METADATA.pb
index 03cb42299bb1c37e5138668819846f10e25b0c4c..47677fdef2548af0cc899f6abca3ec11863f379e 100644
--- a/ofl/passionsconflict/METADATA.pb
+++ b/ofl/passionsconflict/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/passions-conflict"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/PassionsConflict-Regular.ttf"
+    dest_file: "PassionsConflict-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/passionsconflict/upstream.yaml b/ofl/passionsconflict/upstream.yaml
deleted file mode 100644
index d08d8f40a1fed92221baf80507c4dcc2fcf776d3..0000000000000000000000000000000000000000
--- a/ofl/passionsconflict/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/PassionsConflict-Regular.ttf: PassionsConflict-Regular.ttf
-repository_url: https://github.com/googlefonts/passions-conflict
diff --git a/ofl/pathwayextreme/METADATA.pb b/ofl/pathwayextreme/METADATA.pb
index 5326fa816b717b55361015332fa34bd5c9a7b4e6..183bb5bf7f208d9711b1622ed1b14e9f8f8c5503 100644
--- a/ofl/pathwayextreme/METADATA.pb
+++ b/ofl/pathwayextreme/METADATA.pb
@@ -43,9 +43,22 @@ axes {
 }
 registry_default_overrides {
   key: "opsz"
-  value: 12
+  value: 12.0
 }
 source {
   repository_url: "https://github.com/etunni/Pathway-Variable-Font"
   commit: "4fa691f3898690d1f485839743ace01c5e6410da"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PathwayExtreme[opsz,wdth,wght].ttf"
+    dest_file: "PathwayExtreme[opsz,wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/PathwayExtreme-Italic[opsz,wdth,wght].ttf"
+    dest_file: "PathwayExtreme-Italic[opsz,wdth,wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/pathwayextreme/upstream.yaml b/ofl/pathwayextreme/upstream.yaml
deleted file mode 100644
index 8d494c0a9f90e167c92a35db2ca4d08b60a77512..0000000000000000000000000000000000000000
--- a/ofl/pathwayextreme/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PathwayExtreme[opsz,wdth,wght].ttf: PathwayExtreme[opsz,wdth,wght].ttf
-  fonts/variable/PathwayExtreme-Italic[opsz,wdth,wght].ttf: PathwayExtreme-Italic[opsz,wdth,wght].ttf
-archive:
diff --git a/ofl/pathwaygothicone/METADATA.pb b/ofl/pathwaygothicone/METADATA.pb
index ece578f5619919171ceda8f139207728affaf59c..d01e534b695b259af8d17d2290488ca056a1a214 100644
--- a/ofl/pathwaygothicone/METADATA.pb
+++ b/ofl/pathwaygothicone/METADATA.pb
@@ -18,4 +18,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/pathway-gothic"
   commit: "cb77ed5f79d4572096191b7c7dfb157b65abf748"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/PathwayGothicOne-Regular.ttf"
+    dest_file: "PathwayGothicOne-Regular.ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/pathwaygothicone/upstream.yaml b/ofl/pathwaygothicone/upstream.yaml
deleted file mode 100644
index 4acfc7018d36a792efa63f536a45109802b8da40..0000000000000000000000000000000000000000
--- a/ofl/pathwaygothicone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/PathwayGothicOne-Regular.ttf: PathwayGothicOne-Regular.ttf
-archive:
diff --git a/ofl/paytoneone/METADATA.pb b/ofl/paytoneone/METADATA.pb
index 83f95ae9ede80a803282a9efbd66504acf53ad33..133418ca20c35edf0b285afc39cd1c32ac459ef4 100644
--- a/ofl/paytoneone/METADATA.pb
+++ b/ofl/paytoneone/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/paytoneFont"
   commit: "b1438bc11966d48a1e9e8943b7b8a32dcb0c533c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/PaytoneOne-Regular.ttf"
+    dest_file: "PaytoneOne-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/paytoneone/upstream.yaml b/ofl/paytoneone/upstream.yaml
deleted file mode 100644
index c8acee304cc862adc7a3afcf990ad15f00762ed3..0000000000000000000000000000000000000000
--- a/ofl/paytoneone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/PaytoneOne-Regular.ttf: PaytoneOne-Regular.ttf
-archive:
diff --git a/ofl/petemoss/METADATA.pb b/ofl/petemoss/METADATA.pb
index 72d6a647d2188a9eb23b719b9df9ba85823eb94b..dbe24fd91f29c0069dbfc9424d049d11efef16e0 100644
--- a/ofl/petemoss/METADATA.pb
+++ b/ofl/petemoss/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/petemoss"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Petemoss-Regular.ttf"
+    dest_file: "Petemoss-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/petemoss/upstream.yaml b/ofl/petemoss/upstream.yaml
deleted file mode 100644
index 28b06d7f0b911e8c8a0655ad00cc5ac0159f4eca..0000000000000000000000000000000000000000
--- a/ofl/petemoss/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Petemoss-Regular.ttf: Petemoss-Regular.ttf
-repository_url: https://github.com/googlefonts/petemoss
diff --git a/ofl/phudu/METADATA.pb b/ofl/phudu/METADATA.pb
index 749cec04e17f79ccd6634958cc3a70c800fa9ba4..fd73ec0769d63f5300ed7db15c60b8fa2a50c1a4 100644
--- a/ofl/phudu/METADATA.pb
+++ b/ofl/phudu/METADATA.pb
@@ -25,6 +25,19 @@ axes {
 source {
   repository_url: "https://github.com/duongtrtype/DTPhudu"
   commit: "338aed71470e70e6d00a919489ca7da21792e7e6"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Phudu[wght].ttf"
+    dest_file: "Phudu[wght].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/phudu/upstream.yaml b/ofl/phudu/upstream.yaml
deleted file mode 100644
index c9145147740c052b2221cebb11dcee9576ae23c9..0000000000000000000000000000000000000000
--- a/ofl/phudu/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Phudu[wght].ttf: Phudu[wght].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/piazzolla/METADATA.pb b/ofl/piazzolla/METADATA.pb
index aa27ef034951f9a8d6f2c26fdfffa98729deecae..5c15ce8f0085b5beda7a1c222dd89108c5edec66 100644
--- a/ofl/piazzolla/METADATA.pb
+++ b/ofl/piazzolla/METADATA.pb
@@ -42,7 +42,20 @@ axes {
 source {
   repository_url: "https://github.com/huertatipografica/piazzolla"
   commit: "2c84615f45b98b75238401c53ef993e558082a63"
+  files {
+    source_file: "fonts/variable/ttf/Piazzolla[opsz,wght].ttf"
+    dest_file: "Piazzolla[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/ttf/Piazzolla-Italic[opsz,wght].ttf"
+    dest_file: "Piazzolla-Italic[opsz,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "google_prs"
 }
+minisite_url: "https://piazzolla.huertatipografica.com/"
 stroke: "SERIF"
 classifications: "DISPLAY"
-minisite_url: "https://piazzolla.huertatipografica.com/"
diff --git a/ofl/piazzolla/upstream.yaml b/ofl/piazzolla/upstream.yaml
deleted file mode 100644
index e3dcfdcfe8fd9c81aecb0a516ce17a37abdb654b..0000000000000000000000000000000000000000
--- a/ofl/piazzolla/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: google_prs
-files:
-  fonts/variable/ttf/Piazzolla[opsz,wght].ttf: Piazzolla[opsz,wght].ttf
-  fonts/variable/ttf/Piazzolla-Italic[opsz,wght].ttf: Piazzolla-Italic[opsz,wght].ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/pinyonscript/METADATA.pb b/ofl/pinyonscript/METADATA.pb
index 44b6a5feb36d709b2db30b4ab208b2d8cc9323c1..1f8b58b5b113a66a9718bea951e11af7ae063b12 100644
--- a/ofl/pinyonscript/METADATA.pb
+++ b/ofl/pinyonscript/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Pinyon"
   commit: "1a078122d06789407cc9bcb4c0dae058d6950730"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/PinyonScript-Regular.ttf"
+    dest_file: "PinyonScript-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/pinyonscript/upstream.yaml b/ofl/pinyonscript/upstream.yaml
deleted file mode 100644
index 4776a792a2fe649a8129a6b770fbf8d2ef4ec042..0000000000000000000000000000000000000000
--- a/ofl/pinyonscript/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/PinyonScript-Regular.ttf: PinyonScript-Regular.ttf
-archive:
diff --git a/ofl/pixelifysans/METADATA.pb b/ofl/pixelifysans/METADATA.pb
index 6fdd83a806fb887803612e42507c7f8e7f1f8ab1..8f6dddb3196757c5ec51f50d65e18f533b2594d3 100644
--- a/ofl/pixelifysans/METADATA.pb
+++ b/ofl/pixelifysans/METADATA.pb
@@ -24,6 +24,15 @@ axes {
 source {
   repository_url: "https://github.com/eifetx/Pixelify-Sans"
   commit: "b862e0925f58e77583ddb2e056a2d667f2f3544a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PixelifySans[wght].ttf"
+    dest_file: "PixelifySans[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/pixelifysans/upstream.yaml b/ofl/pixelifysans/upstream.yaml
deleted file mode 100644
index a7a2c0b9eb2a227068560f68054c9d0505d4f350..0000000000000000000000000000000000000000
--- a/ofl/pixelifysans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PixelifySans[wght].ttf: PixelifySans[wght].ttf
-archive:
diff --git a/ofl/platypi/METADATA.pb b/ofl/platypi/METADATA.pb
index a2d13b35a95556dbe05f2e4788db38e8d8e56850..78ba06db966c5e37bd128b198bd322c7169e7d62 100644
--- a/ofl/platypi/METADATA.pb
+++ b/ofl/platypi/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/d-sargent/platypi"
   commit: "8574bbbc965e398a8c3da7edd926edda82b63113"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Platypi[wght].ttf"
+    dest_file: "Platypi[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Platypi-Italic[wght].ttf"
+    dest_file: "Platypi-Italic[wght].ttf"
+  }
+  branch: "main"
 }
-stroke:"SERIF"
+stroke: "SERIF"
diff --git a/ofl/platypi/upstream.yaml b/ofl/platypi/upstream.yaml
deleted file mode 100644
index f57629038210947df618430df8b56bdfaa91ecea..0000000000000000000000000000000000000000
--- a/ofl/platypi/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Platypi[wght].ttf: Platypi[wght].ttf
-  fonts/variable/Platypi-Italic[wght].ttf: Platypi-Italic[wght].ttf
-archive:
diff --git a/ofl/playball/METADATA.pb b/ofl/playball/METADATA.pb
index 8292be2ebaacaa82640b7afb629ff15979362b8e..ba10d39fdd069868d4e2d3872ec55ac18594262b 100644
--- a/ofl/playball/METADATA.pb
+++ b/ofl/playball/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/play-ball"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Playball-Regular.ttf"
+    dest_file: "Playball-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/playball/upstream.yaml b/ofl/playball/upstream.yaml
deleted file mode 100644
index 50abe4f82c36a6bd402ee0bc877351bc6fcc7ae0..0000000000000000000000000000000000000000
--- a/ofl/playball/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Playball-Regular.ttf: Playball-Regular.ttf
-repository_url: https://github.com/googlefonts/play-ball
diff --git a/ofl/playfair/METADATA.pb b/ofl/playfair/METADATA.pb
index 9ddfe34770027aa28d07929d177c5898a2f5a759..7f604ff16d13cf9765714308219d03d0a2f2b5d3 100644
--- a/ofl/playfair/METADATA.pb
+++ b/ofl/playfair/METADATA.pb
@@ -46,6 +46,19 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Playfair"
   commit: "beae63554370252f8d45c3eb95f809fcba56af9c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Playfair-Italic[opsz,wdth,wght].ttf"
+    dest_file: "Playfair-Italic[opsz,wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Playfair[opsz,wdth,wght].ttf"
+    dest_file: "Playfair[opsz,wdth,wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/playfair/upstream.yaml b/ofl/playfair/upstream.yaml
deleted file mode 100644
index 9e9164bbb9fd2827f02a9e93b7f7beaf5e118f18..0000000000000000000000000000000000000000
--- a/ofl/playfair/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Playfair-Italic[opsz,wdth,wght].ttf: Playfair-Italic[opsz,wdth,wght].ttf
-  fonts/variable/Playfair[opsz,wdth,wght].ttf: Playfair[opsz,wdth,wght].ttf
-archive:
diff --git a/ofl/playpensans/METADATA.pb b/ofl/playpensans/METADATA.pb
index 08d57b52a405754e92213a56d67831942dc6c15f..04e279ed37c586651b5b00c69fb039c81c6d54de 100644
--- a/ofl/playpensans/METADATA.pb
+++ b/ofl/playpensans/METADATA.pb
@@ -26,6 +26,15 @@ axes {
 source {
   repository_url: "https://github.com/TypeTogether/Playpen-Sans"
   commit: "0de440c9453a4f2f971d89506df4ed1ba9124cb4"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PlaypenSans[wght].ttf"
+    dest_file: "PlaypenSans[wght].ttf"
+  }
+  branch: "main"
 }
+minisite_url: "https://www.type-together.com/making-playpen-sans"
 stroke: "SANS_SERIF"
-minisite_url: "https://www.type-together.com/making-playpen-sans"
\ No newline at end of file
diff --git a/ofl/playpensans/upstream.yaml b/ofl/playpensans/upstream.yaml
deleted file mode 100644
index 94d639f437951975009f47f65dbc8ac6dde560ed..0000000000000000000000000000000000000000
--- a/ofl/playpensans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PlaypenSans[wght].ttf: PlaypenSans[wght].ttf
-archive:
diff --git a/ofl/playwriteco/METADATA.pb b/ofl/playwriteco/METADATA.pb
index 359d54169f255211777815f67b902db972e0be5f..b30c7478424434a302729ee2bf100bb6921c6d5b 100644
--- a/ofl/playwriteco/METADATA.pb
+++ b/ofl/playwriteco/METADATA.pb
@@ -26,5 +26,14 @@ axes {
 source {
   repository_url: "https://github.com/TypeTogether/Playwrite/"
   commit: "7e7e3b8aa4d42f683a46a9941da81a2c132ba02f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts-models/fonts-CO/variable/PlaywriteCO[wght].ttf"
+    dest_file: "PlaywriteCO[wght].ttf"
+  }
+  branch: "lang-build"
 }
-display_name: "Playwrite Colombia"
\ No newline at end of file
+display_name: "Playwrite Colombia"
diff --git a/ofl/playwriteco/upstream.yaml b/ofl/playwriteco/upstream.yaml
deleted file mode 100644
index fb47aaf19b45f6e688bb0c45de973c8224a65708..0000000000000000000000000000000000000000
--- a/ofl/playwriteco/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: lang-build
-files:
-  OFL.txt: OFL.txt
-  fonts-models/fonts-CO/variable/PlaywriteCO[wght].ttf: PlaywriteCO[wght].ttf
-archive:
diff --git a/ofl/playwritefrtrad/METADATA.pb b/ofl/playwritefrtrad/METADATA.pb
index 533116fc30725f634d80d7349e5c80ced51d27f1..a9ae6e2f0af44ba6bafb1daa9b7f28e18d6d11dd 100644
--- a/ofl/playwritefrtrad/METADATA.pb
+++ b/ofl/playwritefrtrad/METADATA.pb
@@ -26,5 +26,14 @@ axes {
 source {
   repository_url: "https://github.com/TypeTogether/Playwrite/"
   commit: "7e7e3b8aa4d42f683a46a9941da81a2c132ba02f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts-models/fonts-FR_Trad/variable/PlaywriteFRTrad[wght].ttf"
+    dest_file: "PlaywriteFRTrad[wght].ttf"
+  }
+  branch: "lang-build"
 }
 display_name: "Playwrite France Traditional"
diff --git a/ofl/playwritefrtrad/upstream.yaml b/ofl/playwritefrtrad/upstream.yaml
deleted file mode 100644
index 54a41ace07ab6c6979774d5b1e378ce19ce3b347..0000000000000000000000000000000000000000
--- a/ofl/playwritefrtrad/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: lang-build
-files:
-  OFL.txt: OFL.txt
-  fonts-models/fonts-FR_Trad/variable/PlaywriteFRTrad[wght].ttf: PlaywriteFRTrad[wght].ttf
-archive:
diff --git a/ofl/playwritegbs/METADATA.pb b/ofl/playwritegbs/METADATA.pb
index 977cedac9f67ddd4c54ea10664420153a5be8040..f18ccbba0915c5a627133c9978f5e8c4b327a615 100644
--- a/ofl/playwritegbs/METADATA.pb
+++ b/ofl/playwritegbs/METADATA.pb
@@ -35,5 +35,18 @@ axes {
 source {
   repository_url: "https://github.com/TypeTogether/Playwrite/"
   commit: "7f0e083357d763db855e665a5d4e58c002b61943"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts-models/fonts-GB_S/variable/PlaywriteGBS[wght].ttf"
+    dest_file: "PlaywriteGBS[wght].ttf"
+  }
+  files {
+    source_file: "fonts-models/fonts-GB_S/variable/PlaywriteGBS-Italic[wght].ttf"
+    dest_file: "PlaywriteGBS-Italic[wght].ttf"
+  }
+  branch: "lang-build"
 }
-display_name: "Playwrite England Semijoin"
\ No newline at end of file
+display_name: "Playwrite England Semijoin"
diff --git a/ofl/playwritegbs/upstream.yaml b/ofl/playwritegbs/upstream.yaml
deleted file mode 100644
index cce180c0f37dac4f62e96fd465594351cb2e5116..0000000000000000000000000000000000000000
--- a/ofl/playwritegbs/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: lang-build
-files:
-  OFL.txt: OFL.txt
-  fonts-models/fonts-GB_S/variable/PlaywriteGBS[wght].ttf: PlaywriteGBS[wght].ttf
-  fonts-models/fonts-GB_S/variable/PlaywriteGBS-Italic[wght].ttf: PlaywriteGBS-Italic[wght].ttf
-archive:
diff --git a/ofl/plusjakartasans/METADATA.pb b/ofl/plusjakartasans/METADATA.pb
index ea9978d4e80f3047a20ac6f2e75ae05a8f87828e..bc1bbefd06aba7570bc1901d9f1d67495169fc5d 100644
--- a/ofl/plusjakartasans/METADATA.pb
+++ b/ofl/plusjakartasans/METADATA.pb
@@ -34,4 +34,17 @@ axes {
 source {
   repository_url: "https://github.com/tokotype/PlusJakartaSans"
   commit: "163c006ff169bbb932757276b98a26f36a1409d8"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PlusJakartaSans[wght].ttf"
+    dest_file: "PlusJakartaSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/PlusJakartaSans-Italic[wght].ttf"
+    dest_file: "PlusJakartaSans-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/plusjakartasans/upstream.yaml b/ofl/plusjakartasans/upstream.yaml
deleted file mode 100644
index a724e0e01393e14fb4160934102b645b13558de1..0000000000000000000000000000000000000000
--- a/ofl/plusjakartasans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PlusJakartaSans[wght].ttf: PlusJakartaSans[wght].ttf
-  fonts/variable/PlusJakartaSans-Italic[wght].ttf: PlusJakartaSans-Italic[wght].ttf
-archive:
diff --git a/ofl/poltawskinowy/METADATA.pb b/ofl/poltawskinowy/METADATA.pb
index 4dd344affd4baf0fa0c5c85b682b17a60dba710f..a78d9402bd71e3000743d2d3cc6269446fb250b5 100644
--- a/ofl/poltawskinowy/METADATA.pb
+++ b/ofl/poltawskinowy/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/kosmynkab/Poltawski-Nowy"
   commit: "6e5631b27a50d7f63bf0d1528060c34d882e1f40"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PoltawskiNowy[wght].ttf"
+    dest_file: "PoltawskiNowy[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/PoltawskiNowy-Italic[wght].ttf"
+    dest_file: "PoltawskiNowy-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 display_name: "Półtawski Nowy"
diff --git a/ofl/poltawskinowy/upstream.yaml b/ofl/poltawskinowy/upstream.yaml
deleted file mode 100644
index 343f839d5469c0ec3af04c2a103d23f3642c620c..0000000000000000000000000000000000000000
--- a/ofl/poltawskinowy/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PoltawskiNowy[wght].ttf: PoltawskiNowy[wght].ttf
-  fonts/variable/PoltawskiNowy-Italic[wght].ttf: PoltawskiNowy-Italic[wght].ttf
-archive:
diff --git a/ofl/pontanosans/METADATA.pb b/ofl/pontanosans/METADATA.pb
index 1ab57f47628cd6f70ecaa4d68d877e66c543cfcc..9a9cb86da36fdf786713b6cebfb24bc191b1017a 100644
--- a/ofl/pontanosans/METADATA.pb
+++ b/ofl/pontanosans/METADATA.pb
@@ -23,5 +23,14 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/PontanoSansFont"
   commit: "240072e22db75e84578dc80b757f589792f9e723"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PontanoSans[wght].ttf"
+    dest_file: "PontanoSans[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/pontanosans/upstream.yaml b/ofl/pontanosans/upstream.yaml
deleted file mode 100644
index 9901359d647ec50eb3fb6fd8c59b42e432713e12..0000000000000000000000000000000000000000
--- a/ofl/pontanosans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PontanoSans[wght].ttf: PontanoSans[wght].ttf
-archive:
diff --git a/ofl/pottaone/METADATA.pb b/ofl/pottaone/METADATA.pb
index b90cd0ae260ef1eb48e140404f724d23b3586e49..7cebe26cb93f5f4244d68de876405176b2748a46 100644
--- a/ofl/pottaone/METADATA.pb
+++ b/ofl/pottaone/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/go108go/Potta"
+  files {
+    source_file: "fonts/ttf/PottaOne-Regular.ttf"
+    dest_file: "PottaOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/pottaone/upstream.yaml b/ofl/pottaone/upstream.yaml
deleted file mode 100644
index eea61ddc81674874d7f12fa05f987bcfd0d4acad..0000000000000000000000000000000000000000
--- a/ofl/pottaone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/PottaOne-Regular.ttf: PottaOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/go108go/Potta.git
diff --git a/ofl/praise/METADATA.pb b/ofl/praise/METADATA.pb
index 53dfde1f17d2622245db6d43bd41eeb63d42a90b..0ce1e7686c33e6592c669eee7e893f02a4fa6093 100644
--- a/ofl/praise/METADATA.pb
+++ b/ofl/praise/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/praise-script"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Praise-Regular.ttf"
+    dest_file: "Praise-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/praise/upstream.yaml b/ofl/praise/upstream.yaml
deleted file mode 100644
index 0e6618bab552e0870a056f4a2841ec1c56a1a489..0000000000000000000000000000000000000000
--- a/ofl/praise/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Praise-Regular.ttf: Praise-Regular.ttf
-repository_url: https://github.com/googlefonts/praise-script
diff --git a/ofl/preahvihear/METADATA.pb b/ofl/preahvihear/METADATA.pb
index 91ea59f9bb90b3d95468c05c9a128c8fb31473d3..ac41dd5c24608a7117eceb31539baa2cd8e225eb 100644
--- a/ofl/preahvihear/METADATA.pb
+++ b/ofl/preahvihear/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Preahvihear"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Preahvihear-Regular.ttf"
+    dest_file: "Preahvihear-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/preahvihear/upstream.yaml b/ofl/preahvihear/upstream.yaml
deleted file mode 100644
index aa992901266e95e8c0b890624c9d0122d904a69d..0000000000000000000000000000000000000000
--- a/ofl/preahvihear/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Preahvihear-Regular.ttf: Preahvihear-Regular.ttf
-repository_url: https://github.com/danhhong/Preahvihear.git
diff --git a/ofl/protestguerrilla/METADATA.pb b/ofl/protestguerrilla/METADATA.pb
index cd6040b5c8bd2064d210e61bd47dadb7147544cd..63a09bd1c65faf0cbf37bdfa64f4e83d2a72cf82 100644
--- a/ofl/protestguerrilla/METADATA.pb
+++ b/ofl/protestguerrilla/METADATA.pb
@@ -21,5 +21,14 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/octaviopardo/Protest"
   commit: "094e74050a0547c8decd760b4f926321a5e72c6e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ProtestGuerrilla/ttf/ProtestGuerrilla-Regular.ttf"
+    dest_file: "ProtestGuerrilla-Regular.ttf"
+  }
+  branch: "master"
 }
-stroke:"SANS_SERIF"
+stroke: "SANS_SERIF"
diff --git a/ofl/protestguerrilla/upstream.yaml b/ofl/protestguerrilla/upstream.yaml
deleted file mode 100644
index ee566ab604d1b672424c8651991fea643795e72f..0000000000000000000000000000000000000000
--- a/ofl/protestguerrilla/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ProtestGuerrilla/ttf/ProtestGuerrilla-Regular.ttf: ProtestGuerrilla-Regular.ttf
-archive:
diff --git a/ofl/protestrevolution/METADATA.pb b/ofl/protestrevolution/METADATA.pb
index 63f5a63370d212553d68a522b7766a7a852e38bf..98b1840c42ec63748915e257a23b82695ad586b1 100644
--- a/ofl/protestrevolution/METADATA.pb
+++ b/ofl/protestrevolution/METADATA.pb
@@ -21,5 +21,14 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/octaviopardo/Protest"
   commit: "094e74050a0547c8decd760b4f926321a5e72c6e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ProtestRevolution/ttf/ProtestRevolution-Regular.ttf"
+    dest_file: "ProtestRevolution-Regular.ttf"
+  }
+  branch: "master"
 }
-stroke:"SANS_SERIF"
+stroke: "SANS_SERIF"
diff --git a/ofl/protestrevolution/upstream.yaml b/ofl/protestrevolution/upstream.yaml
deleted file mode 100644
index ae8ff658fc6a086181306fc36297500379893f9e..0000000000000000000000000000000000000000
--- a/ofl/protestrevolution/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ProtestRevolution/ttf/ProtestRevolution-Regular.ttf: ProtestRevolution-Regular.ttf
-archive:
diff --git a/ofl/protestriot/METADATA.pb b/ofl/protestriot/METADATA.pb
index 874d2afa5160418b4b266aac2f396f9696fd40f1..77e708496dd5c680fc4ca06b3c73ee161fc796f7 100644
--- a/ofl/protestriot/METADATA.pb
+++ b/ofl/protestriot/METADATA.pb
@@ -21,5 +21,14 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/octaviopardo/Protest"
   commit: "094e74050a0547c8decd760b4f926321a5e72c6e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ProtestRiot/ttf/ProtestRiot-Regular.ttf"
+    dest_file: "ProtestRiot-Regular.ttf"
+  }
+  branch: "master"
 }
-stroke:"SANS_SERIF"
+stroke: "SANS_SERIF"
diff --git a/ofl/protestriot/upstream.yaml b/ofl/protestriot/upstream.yaml
deleted file mode 100644
index 0465619cfe288b2aae03204f5ca7f8301dc51fff..0000000000000000000000000000000000000000
--- a/ofl/protestriot/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ProtestRiot/ttf/ProtestRiot-Regular.ttf: ProtestRiot-Regular.ttf
-archive:
diff --git a/ofl/proteststrike/METADATA.pb b/ofl/proteststrike/METADATA.pb
index 89ee8a03b623bd76f9a2a44c106b740181611608..59b646c57ec3c43ab83083976c0fc69402d44bc4 100644
--- a/ofl/proteststrike/METADATA.pb
+++ b/ofl/proteststrike/METADATA.pb
@@ -21,5 +21,14 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/octaviopardo/Protest"
   commit: "094e74050a0547c8decd760b4f926321a5e72c6e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ProtestStrike/ttf/ProtestStrike-Regular.ttf"
+    dest_file: "ProtestStrike-Regular.ttf"
+  }
+  branch: "master"
 }
-stroke:"SANS_SERIF"
+stroke: "SANS_SERIF"
diff --git a/ofl/proteststrike/upstream.yaml b/ofl/proteststrike/upstream.yaml
deleted file mode 100644
index 658f0a3cf3319c8ab8b456c96b2f2bd3652b38d7..0000000000000000000000000000000000000000
--- a/ofl/proteststrike/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ProtestStrike/ttf/ProtestStrike-Regular.ttf: ProtestStrike-Regular.ttf
-archive:
diff --git a/ofl/publicsans/METADATA.pb b/ofl/publicsans/METADATA.pb
index 59594dbb85560d16b3e46b056309be776da2d953..76320a7b79df7964887419b35e922d3bc9749672 100644
--- a/ofl/publicsans/METADATA.pb
+++ b/ofl/publicsans/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/uswds/public-sans"
   commit: "c7923167a592d941646f99fb7b5fba17aa7d69e1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/PublicSans[wght].ttf"
+    dest_file: "PublicSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/PublicSans-Italic[wght].ttf"
+    dest_file: "PublicSans-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://public-sans.digital.gov/"
diff --git a/ofl/publicsans/upstream.yaml b/ofl/publicsans/upstream.yaml
deleted file mode 100644
index eff12b3b0f398daa4862d8ccce7e3d2b1edc79c5..0000000000000000000000000000000000000000
--- a/ofl/publicsans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/PublicSans[wght].ttf: PublicSans[wght].ttf
-  fonts/variable/PublicSans-Italic[wght].ttf: PublicSans-Italic[wght].ttf
diff --git a/ofl/puppiesplay/METADATA.pb b/ofl/puppiesplay/METADATA.pb
index 6fea4cd7ce12808453cd1e4e44f18c87bbdde0c4..bab1abd6957d6a114abb618de6666188467ca431 100644
--- a/ofl/puppiesplay/METADATA.pb
+++ b/ofl/puppiesplay/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/puppies-play"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/PuppiesPlay-Regular.ttf"
+    dest_file: "PuppiesPlay-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/puppiesplay/upstream.yaml b/ofl/puppiesplay/upstream.yaml
deleted file mode 100644
index 9453b439f3fadae3214d38e4fd411fa8f005d529..0000000000000000000000000000000000000000
--- a/ofl/puppiesplay/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/PuppiesPlay-Regular.ttf: PuppiesPlay-Regular.ttf
-repository_url: https://github.com/googlefonts/puppies-play
diff --git a/ofl/qahiri/METADATA.pb b/ofl/qahiri/METADATA.pb
index 3963ba7822b007d17ee1e3a377dd9106ab8f059b..77966b988ed542f09f664586af14f5d61740245a 100644
--- a/ofl/qahiri/METADATA.pb
+++ b/ofl/qahiri/METADATA.pb
@@ -15,8 +15,17 @@ fonts {
 subsets: "arabic"
 subsets: "latin"
 subsets: "menu"
-primary_script: "Arab"
 source {
   repository_url: "https://github.com/alif-type/qahiri"
   commit: "2fbfe8ca2e5ed04b0455e15c717774766f174ad1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Qahiri-Regular.ttf"
+    dest_file: "Qahiri-Regular.ttf"
+  }
+  branch: "main"
 }
+primary_script: "Arab"
diff --git a/ofl/qahiri/upstream.yaml b/ofl/qahiri/upstream.yaml
deleted file mode 100644
index e33faec447f6d998ce75331c4318670c97d813fb..0000000000000000000000000000000000000000
--- a/ofl/qahiri/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  Qahiri-Regular.ttf: Qahiri-Regular.ttf
diff --git a/ofl/quicksand/METADATA.pb b/ofl/quicksand/METADATA.pb
index b2fcf51fc95fdef4c615e8a3e4638241e1530ab9..594101ec9c156029f4a41350a762c22902405ae9 100644
--- a/ofl/quicksand/METADATA.pb
+++ b/ofl/quicksand/METADATA.pb
@@ -21,3 +21,11 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/ThomasJockin/QuicksandFamily"
+  files {
+    source_file: "fonts/variable/Quicksand[wght].ttf"
+    dest_file: "Quicksand[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/quicksand/upstream.yaml b/ofl/quicksand/upstream.yaml
deleted file mode 100644
index 0cf8d4c30ec81cb925bea45a0cf814fc7248d23b..0000000000000000000000000000000000000000
--- a/ofl/quicksand/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: master
-files:
-  fonts/variable/Quicksand[wght].ttf: Quicksand[wght].ttf
-repository_url: https://github.com/ThomasJockin/QuicksandFamily
diff --git a/ofl/qwigley/METADATA.pb b/ofl/qwigley/METADATA.pb
index f8b7ce2a5c38a9e4e498edf1ab4bcbdec44502c5..5143101b308e7ead6999eaee7ee725d9e98e0d14 100644
--- a/ofl/qwigley/METADATA.pb
+++ b/ofl/qwigley/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/qwigley"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Qwigley-Regular.ttf"
+    dest_file: "Qwigley-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/qwigley/upstream.yaml b/ofl/qwigley/upstream.yaml
deleted file mode 100644
index d1cd23649e4ad5b9e52d96f21615e972a3bcdf51..0000000000000000000000000000000000000000
--- a/ofl/qwigley/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Qwigley-Regular.ttf: Qwigley-Regular.ttf
-repository_url: https://github.com/googlefonts/qwigley
diff --git a/ofl/qwitchergrypen/METADATA.pb b/ofl/qwitchergrypen/METADATA.pb
index 8372c65d12ea7bfa0b5d571a4e3b73470df6cb8e..40d20ba026d70afc1988140e775214435a283f27 100644
--- a/ofl/qwitchergrypen/METADATA.pb
+++ b/ofl/qwitchergrypen/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/qwitcher-grypen"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/QwitcherGrypen-Regular.ttf"
+    dest_file: "QwitcherGrypen-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/QwitcherGrypen-Bold.ttf"
+    dest_file: "QwitcherGrypen-Bold.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/qwitchergrypen/upstream.yaml b/ofl/qwitchergrypen/upstream.yaml
deleted file mode 100644
index 88f35d36a2dd1b70fe84b8754b24c52858572bd2..0000000000000000000000000000000000000000
--- a/ofl/qwitchergrypen/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/QwitcherGrypen-Regular.ttf: QwitcherGrypen-Regular.ttf
-  fonts/ttf/QwitcherGrypen-Bold.ttf: QwitcherGrypen-Bold.ttf
-repository_url: https://github.com/googlefonts/qwitcher-grypen
diff --git a/ofl/radiocanada/METADATA.pb b/ofl/radiocanada/METADATA.pb
index 6b787c89cc2025974494c52ac95d65c3ffcfc41d..ae5c267ebc171f7a03510d1940123f314a2d464f 100644
--- a/ofl/radiocanada/METADATA.pb
+++ b/ofl/radiocanada/METADATA.pb
@@ -39,4 +39,17 @@ axes {
 source {
   repository_url: "https://github.com/cbcrc/radiocanadafonts"
   commit: "61a4efa847d6361be8e9cd3c656b3256b29d4ff4"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/RadioCanada[wdth,wght].ttf"
+    dest_file: "RadioCanada[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/RadioCanada-Italic[wdth,wght].ttf"
+    dest_file: "RadioCanada-Italic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/radiocanada/upstream.yaml b/ofl/radiocanada/upstream.yaml
deleted file mode 100644
index 06494b2d1f4c855c92b85437bfb9e7e065f30083..0000000000000000000000000000000000000000
--- a/ofl/radiocanada/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/RadioCanada[wdth,wght].ttf: RadioCanada[wdth,wght].ttf
-  fonts/variable/RadioCanada-Italic[wdth,wght].ttf: RadioCanada-Italic[wdth,wght].ttf
diff --git a/ofl/rampartone/METADATA.pb b/ofl/rampartone/METADATA.pb
index 023cb4ac3c756040530f50bd2879b5b596025b37..4894d384e3928c48c83b0e4e92de42b8c693f2a7 100644
--- a/ofl/rampartone/METADATA.pb
+++ b/ofl/rampartone/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/Rampart"
+  files {
+    source_file: "fonts/ttf/RampartOne-Regular.ttf"
+    dest_file: "RampartOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/rampartone/upstream.yaml b/ofl/rampartone/upstream.yaml
deleted file mode 100644
index 743431bacd0c9cb7f0a71a3c6a52d004e19acb32..0000000000000000000000000000000000000000
--- a/ofl/rampartone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/RampartOne-Regular.ttf: RampartOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/Rampart
\ No newline at end of file
diff --git a/ofl/rasa/METADATA.pb b/ofl/rasa/METADATA.pb
index c43c009a2e1d470cf0b88b3d39a8a030bc9e1b55..7a630ae731ba4126671725e14c28ae8342079891 100644
--- a/ofl/rasa/METADATA.pb
+++ b/ofl/rasa/METADATA.pb
@@ -31,5 +31,25 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/rosettatype/yrsa-rasa"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/Rasa-DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/RasaVariable/RasaVF-Ups.ttf"
+    dest_file: "Rasa[wght].ttf"
+  }
+  files {
+    source_file: "fonts/RasaVariable/RasaVF-Its.ttf"
+    dest_file: "Rasa-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/rasa/upstream.yaml b/ofl/rasa/upstream.yaml
deleted file mode 100644
index 1d1efba77c255857998589f668d18b78d189df7f..0000000000000000000000000000000000000000
--- a/ofl/rasa/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/Rasa-DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/RasaVariable/RasaVF-Ups.ttf: Rasa[wght].ttf
-  fonts/RasaVariable/RasaVF-Its.ttf: Rasa-Italic[wght].ttf
-repository_url: https://github.com/rosettatype/yrsa-rasa.git
diff --git a/ofl/readexpro/METADATA.pb b/ofl/readexpro/METADATA.pb
index b6ee8cd11982e9c3a88a459452f8b54588557a4c..bb94bae0794208ad21e2dfc1db48776bc1c65781 100644
--- a/ofl/readexpro/METADATA.pb
+++ b/ofl/readexpro/METADATA.pb
@@ -30,5 +30,14 @@ axes {
 source {
   repository_url: "https://github.com/ThomasJockin/readexpro"
   commit: "6a4f24e40e424ec77badb04c101af81da96ed157"
+  files {
+    source_file: "fonts/variable/Readexpro[HEXP,wght].ttf"
+    dest_file: "ReadexPro[HEXP,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/readexpro/upstream.yaml b/ofl/readexpro/upstream.yaml
deleted file mode 100644
index 808fab74f758bab4403cbf2622277a7685cc643a..0000000000000000000000000000000000000000
--- a/ofl/readexpro/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  fonts/variable/Readexpro[HEXP,wght].ttf: ReadexPro[HEXP,wght].ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/recursive/METADATA.pb b/ofl/recursive/METADATA.pb
index 7f3d088f691ae78a71cad25de7f8cec78d691be7..703ed1a5c8d67b9f252ebaa0eda7d8ccd92aea1f 100644
--- a/ofl/recursive/METADATA.pb
+++ b/ofl/recursive/METADATA.pb
@@ -45,5 +45,14 @@ axes {
 source {
   repository_url: "https://github.com/arrowtype/recursive"
   commit: "071fc21f217781110d67e8d0bf5021f31cbdcb85"
+  files {
+    source_file: "fonts/recursive_for_googlefonts/Recursive[CASL,CRSV,MONO,slnt,wght].ttf"
+    dest_file: "Recursive[CASL,CRSV,MONO,slnt,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "main"
 }
 minisite_url: "https://recursive.design"
diff --git a/ofl/recursive/upstream.yaml b/ofl/recursive/upstream.yaml
deleted file mode 100644
index 3e33b48a1e5e2f2e6a27ede35b2c905b2cc9ba1e..0000000000000000000000000000000000000000
--- a/ofl/recursive/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  fonts/recursive_for_googlefonts/Recursive[CASL,CRSV,MONO,slnt,wght].ttf: Recursive[CASL,CRSV,MONO,slnt,wght].ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/redacted/METADATA.pb b/ofl/redacted/METADATA.pb
index b468e88b07c597a7e7ea3deb84a9178ee7ec2748..79e061831fa16b28b7b7c520db64da3f0e218c47 100644
--- a/ofl/redacted/METADATA.pb
+++ b/ofl/redacted/METADATA.pb
@@ -15,5 +15,17 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/christiannaths/redacted-font"
+  files {
+    source_file: "Redacted/fonts/ttf/Redacted-Regular.ttf"
+    dest_file: "Redacted-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/redacted/upstream.yaml b/ofl/redacted/upstream.yaml
deleted file mode 100644
index 4d8a47bc3ade977ec5d7425ec2465a9cdca310ea..0000000000000000000000000000000000000000
--- a/ofl/redacted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  Redacted/fonts/ttf/Redacted-Regular.ttf: Redacted-Regular.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/christiannaths/redacted-font
diff --git a/ofl/redactedscript/METADATA.pb b/ofl/redactedscript/METADATA.pb
index f8978f7a020eaffaa1bd41f1e7e390deb6eeccdc..444f5c951e7824d7e4f08f5f96f9f8cf8a315b14 100644
--- a/ofl/redactedscript/METADATA.pb
+++ b/ofl/redactedscript/METADATA.pb
@@ -33,5 +33,25 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/christiannaths/redacted-font"
+  files {
+    source_file: "RedactedScript/fonts/ttf/RedactedScript-Regular.ttf"
+    dest_file: "RedactedScript-Regular.ttf"
+  }
+  files {
+    source_file: "RedactedScript/fonts/ttf/RedactedScript-Light.ttf"
+    dest_file: "RedactedScript-Light.ttf"
+  }
+  files {
+    source_file: "RedactedScript/fonts/ttf/RedactedScript-Bold.ttf"
+    dest_file: "RedactedScript-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 classifications: "HANDWRITING"
 classifications: "SYMBOLS"
diff --git a/ofl/redactedscript/upstream.yaml b/ofl/redactedscript/upstream.yaml
deleted file mode 100644
index 8232c805a791249771aed627a331135860ab32a1..0000000000000000000000000000000000000000
--- a/ofl/redactedscript/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  RedactedScript/fonts/ttf/RedactedScript-Regular.ttf: RedactedScript-Regular.ttf
-  RedactedScript/fonts/ttf/RedactedScript-Light.ttf: RedactedScript-Light.ttf
-  RedactedScript/fonts/ttf/RedactedScript-Bold.ttf: RedactedScript-Bold.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/christiannaths/redacted-font
diff --git a/ofl/redditmono/METADATA.pb b/ofl/redditmono/METADATA.pb
index 4733bfcc1c0a687b2bfcbcf440f52087906e4d46..ed73f509cf386705e18dc6e0a25083fe8a009e32 100644
--- a/ofl/redditmono/METADATA.pb
+++ b/ofl/redditmono/METADATA.pb
@@ -24,6 +24,15 @@ axes {
 source {
   repository_url: "https://github.com/reddit/redditsans"
   commit: "60e19b50bde6de34b695591a8a047a6a3618a37c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/mono/variable/RedditMono[wght].ttf"
+    dest_file: "RedditMono[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "MONOSPACE"
diff --git a/ofl/redditmono/upstream.yaml b/ofl/redditmono/upstream.yaml
deleted file mode 100644
index 3f5cd0337586c91475581d70b0ba32668d50db0c..0000000000000000000000000000000000000000
--- a/ofl/redditmono/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/mono/variable/RedditMono[wght].ttf: RedditMono[wght].ttf
-archive:
diff --git a/ofl/redditsans/METADATA.pb b/ofl/redditsans/METADATA.pb
index 977ce0becd7a126e86fb35dec5369ad506e4b3e4..74007c36a1d81c824232cc8ee2521707d966d045 100644
--- a/ofl/redditsans/METADATA.pb
+++ b/ofl/redditsans/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/reddit/redditsans"
   commit: "60e19b50bde6de34b695591a8a047a6a3618a37c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/sans/variable/RedditSans[wght].ttf"
+    dest_file: "RedditSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/sans/variable/RedditSans-Italic[wght].ttf"
+    dest_file: "RedditSans-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/redditsans/upstream.yaml b/ofl/redditsans/upstream.yaml
deleted file mode 100644
index 263f8f5cad9ce30913733487b72ed21baabb3473..0000000000000000000000000000000000000000
--- a/ofl/redditsans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/sans/variable/RedditSans[wght].ttf: RedditSans[wght].ttf
-  fonts/sans/variable/RedditSans-Italic[wght].ttf: RedditSans-Italic[wght].ttf
-archive:
diff --git a/ofl/redditsanscondensed/METADATA.pb b/ofl/redditsanscondensed/METADATA.pb
index 17bd3f6919da3514405aa4aeefb33187307310ad..c7564f87a78259c75b3688ae151583f4a237698a 100644
--- a/ofl/redditsanscondensed/METADATA.pb
+++ b/ofl/redditsanscondensed/METADATA.pb
@@ -24,5 +24,14 @@ axes {
 source {
   repository_url: "https://github.com/reddit/redditsans"
   commit: "60e19b50bde6de34b695591a8a047a6a3618a37c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/sans-condensed/variable/RedditSansCondensed[wght].ttf"
+    dest_file: "RedditSansCondensed[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/redditsanscondensed/upstream.yaml b/ofl/redditsanscondensed/upstream.yaml
deleted file mode 100644
index 80b2c65d704a9d0f03ec7729a12fdb39bae6cac7..0000000000000000000000000000000000000000
--- a/ofl/redditsanscondensed/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/sans-condensed/variable/RedditSansCondensed[wght].ttf: RedditSansCondensed[wght].ttf
-archive:
diff --git a/ofl/redhatdisplay/METADATA.pb b/ofl/redhatdisplay/METADATA.pb
index b1516f26fcc38d31491d1aa3bc2d0d34f5d0d0a8..26031158119c46383512d333c9056c55f79692b9 100644
--- a/ofl/redhatdisplay/METADATA.pb
+++ b/ofl/redhatdisplay/METADATA.pb
@@ -32,6 +32,19 @@ axes {
 source {
   repository_url: "https://github.com/jeremymickel/RedHatFonts"
   commit: "d20968c93b62cedcc5ca4d2de2d8063c7efe35d1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/proportional/RedHatDisplay[wght].ttf"
+    dest_file: "RedHatDisplay[wght].ttf"
+  }
+  files {
+    source_file: "fonts/proportional/RedHatDisplay-Italic[wght].ttf"
+    dest_file: "RedHatDisplay-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/redhatdisplay/upstream.yaml b/ofl/redhatdisplay/upstream.yaml
deleted file mode 100644
index 512ab4d595233a99415a450ca0876a753fc57a97..0000000000000000000000000000000000000000
--- a/ofl/redhatdisplay/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/proportional/RedHatDisplay[wght].ttf: RedHatDisplay[wght].ttf
-  fonts/proportional/RedHatDisplay-Italic[wght].ttf: RedHatDisplay-Italic[wght].ttf
-archive:
diff --git a/ofl/redhatmono/METADATA.pb b/ofl/redhatmono/METADATA.pb
index 3341aafc41d14012fb80b5cc9e53e0fd2fa43d0a..b77283fa9a4b7655c1663a6467f2b98c90852717 100644
--- a/ofl/redhatmono/METADATA.pb
+++ b/ofl/redhatmono/METADATA.pb
@@ -33,4 +33,17 @@ axes {
 source {
   repository_url: "https://github.com/jeremymickel/RedHatFonts"
   commit: "d20968c93b62cedcc5ca4d2de2d8063c7efe35d1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/mono/RedHatMono[wght].ttf"
+    dest_file: "RedHatMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/mono/RedHatMono-Italic[wght].ttf"
+    dest_file: "RedHatMono-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/redhatmono/upstream.yaml b/ofl/redhatmono/upstream.yaml
deleted file mode 100644
index 9fa452a817b0582e0a2870182fc6270c58af6454..0000000000000000000000000000000000000000
--- a/ofl/redhatmono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/mono/RedHatMono[wght].ttf: RedHatMono[wght].ttf
-  fonts/mono/RedHatMono-Italic[wght].ttf: RedHatMono-Italic[wght].ttf
-archive:
diff --git a/ofl/redhattext/METADATA.pb b/ofl/redhattext/METADATA.pb
index 011780fd6e6642ea3d84f38294d7f1d7b1daf797..931fe3e85e3fe967e88aa380f9f51c371da91002 100644
--- a/ofl/redhattext/METADATA.pb
+++ b/ofl/redhattext/METADATA.pb
@@ -32,4 +32,17 @@ axes {
 source {
   repository_url: "https://github.com/jeremymickel/RedHatFonts"
   commit: "d20968c93b62cedcc5ca4d2de2d8063c7efe35d1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/proportional/RedHatText[wght].ttf"
+    dest_file: "RedHatText[wght].ttf"
+  }
+  files {
+    source_file: "fonts/proportional/RedHatText-Italic[wght].ttf"
+    dest_file: "RedHatText-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/redhattext/upstream.yaml b/ofl/redhattext/upstream.yaml
deleted file mode 100644
index f9e922e3d1c3e0b1c3d387af58bdf1066388e656..0000000000000000000000000000000000000000
--- a/ofl/redhattext/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/proportional/RedHatText[wght].ttf: RedHatText[wght].ttf
-  fonts/proportional/RedHatText-Italic[wght].ttf: RedHatText-Italic[wght].ttf
-archive:
diff --git a/ofl/redrose/METADATA.pb b/ofl/redrose/METADATA.pb
index 9150fa6fccdbec121d8dd8d2056613572822cab7..31368657de85baf04592995ba884ce998c3e97b1 100644
--- a/ofl/redrose/METADATA.pb
+++ b/ofl/redrose/METADATA.pb
@@ -21,5 +21,33 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/magictype/redrose"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/RedRose[wght].ttf"
+    dest_file: "RedRose[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/RedRose-Regular.ttf"
+    dest_file: "static/RedRose-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/RedRose-Bold.ttf"
+    dest_file: "static/RedRose-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/RedRose-Light.ttf"
+    dest_file: "static/RedRose-Light.ttf"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/redrose/upstream.yaml b/ofl/redrose/upstream.yaml
deleted file mode 100644
index 50234e513cffea9b85c1f62db97ad174f848d838..0000000000000000000000000000000000000000
--- a/ofl/redrose/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/RedRose[wght].ttf: RedRose[wght].ttf
-  fonts/ttf/RedRose-Regular.ttf: static/RedRose-Regular.ttf
-  fonts/ttf/RedRose-Bold.ttf: static/RedRose-Bold.ttf
-  fonts/ttf/RedRose-Light.ttf: static/RedRose-Light.ttf
-repository_url: https://github.com/magictype/redrose
diff --git a/ofl/reemkufi/METADATA.pb b/ofl/reemkufi/METADATA.pb
index 17a1551d9fc3bd2d16db1021ddc6c0bf5a48a1a8..0d1a32ef26980af76727687fddaecc7e15deadbd 100644
--- a/ofl/reemkufi/METADATA.pb
+++ b/ofl/reemkufi/METADATA.pb
@@ -23,7 +23,16 @@ axes {
   max_value: 700.0
 }
 source {
-  repository_url: "https://github.com/aliftype/reem-kufi.git"
+  repository_url: "https://github.com/aliftype/reem-kufi"
   archive_url: "https://github.com/aliftype/reem-kufi/releases/download/v1.6/ReemKufi-1.6.zip"
+  files {
+    source_file: "ReemKufi-1.6/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ReemKufi-1.6/ttf/ReemKufi.ttf"
+    dest_file: "ReemKufi[wght].ttf"
+  }
+  branch: "main"
 }
 primary_script: "Arab"
diff --git a/ofl/reemkufi/upstream.yaml b/ofl/reemkufi/upstream.yaml
deleted file mode 100644
index 1ebd08fa3c5c451d2880d4316298e30273664123..0000000000000000000000000000000000000000
--- a/ofl/reemkufi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/aliftype/reem-kufi/releases/download/v1.6/ReemKufi-1.6.zip
-branch: main
-files:
-  ReemKufi-1.6/OFL.txt: OFL.txt
-  ReemKufi-1.6/ttf/ReemKufi.ttf: ReemKufi[wght].ttf
diff --git a/ofl/reemkufifun/METADATA.pb b/ofl/reemkufifun/METADATA.pb
index 855bce89cff04b5d442430aeb7c2f586d569d3aa..762cd99e3cb546c0cb5f7c28e2a6220e52fb4203 100644
--- a/ofl/reemkufifun/METADATA.pb
+++ b/ofl/reemkufifun/METADATA.pb
@@ -25,5 +25,14 @@ axes {
 source {
   repository_url: "https://github.com/aliftype/reem-kufi"
   archive_url: "https://github.com/aliftype/reem-kufi/releases/download/v1.5/ReemKufi-1.5.zip"
+  files {
+    source_file: "ReemKufi-1.5/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ReemKufi-1.5/ttf/ReemKufiFun.ttf"
+    dest_file: "ReemKufiFun[wght].ttf"
+  }
+  branch: "main"
 }
 primary_script: "Arab"
diff --git a/ofl/reemkufifun/upstream.yaml b/ofl/reemkufifun/upstream.yaml
deleted file mode 100644
index 7e19af8a78757e44a96c473826f9d8d0b6b5d4c4..0000000000000000000000000000000000000000
--- a/ofl/reemkufifun/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/aliftype/reem-kufi/releases/download/v1.5/ReemKufi-1.5.zip
-branch: main
-files:
-  ReemKufi-1.5/OFL.txt: OFL.txt
-  ReemKufi-1.5/ttf/ReemKufiFun.ttf: ReemKufiFun[wght].ttf
diff --git a/ofl/reemkufiink/METADATA.pb b/ofl/reemkufiink/METADATA.pb
index a63eb8c336a7a93501650659df36881494270f0c..b3469eada7d9cc034307949ea34e6ec342bd663a 100644
--- a/ofl/reemkufiink/METADATA.pb
+++ b/ofl/reemkufiink/METADATA.pb
@@ -18,7 +18,16 @@ subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
 source {
-  repository_url: "https://github.com/aliftype/reem-kufi.git"
+  repository_url: "https://github.com/aliftype/reem-kufi"
   archive_url: "https://github.com/aliftype/reem-kufi/releases/download/v1.7/ReemKufi-1.7.zip"
+  files {
+    source_file: "ReemKufi-1.7/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ReemKufi-1.7/ttf/ReemKufiInk-Regular.ttf"
+    dest_file: "ReemKufiInk-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Arab"
diff --git a/ofl/reemkufiink/upstream.yaml b/ofl/reemkufiink/upstream.yaml
deleted file mode 100644
index 0aac8463b5964c916234221c131439e45c3ade7d..0000000000000000000000000000000000000000
--- a/ofl/reemkufiink/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/aliftype/reem-kufi/releases/download/v1.7/ReemKufi-1.7.zip
-branch: main
-files:
-  ReemKufi-1.7/OFL.txt: OFL.txt
-  ReemKufi-1.7/ttf/ReemKufiInk-Regular.ttf: ReemKufiInk-Regular.ttf
diff --git a/ofl/reggaeone/METADATA.pb b/ofl/reggaeone/METADATA.pb
index b366f363f349869478589048bb2591b9320cbf45..5b24749c5e0212fb3cb30a5abbd8b93de46acef3 100644
--- a/ofl/reggaeone/METADATA.pb
+++ b/ofl/reggaeone/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/Reggae"
+  files {
+    source_file: "fonts/ttf/ReggaeOne-Regular.ttf"
+    dest_file: "ReggaeOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/reggaeone/upstream.yaml b/ofl/reggaeone/upstream.yaml
deleted file mode 100644
index 777d9ec55ecf1e371d916ee89317ca74a00b789d..0000000000000000000000000000000000000000
--- a/ofl/reggaeone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/ReggaeOne-Regular.ttf: ReggaeOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/Reggae.git
diff --git a/ofl/rem/METADATA.pb b/ofl/rem/METADATA.pb
index 7c6d99d41cd8ae64925bb9e7a68afb6f1e7aeb03..e0b71d77489013e521bf7d654c47d5f9dd3020de 100644
--- a/ofl/rem/METADATA.pb
+++ b/ofl/rem/METADATA.pb
@@ -33,4 +33,21 @@ axes {
 source {
   repository_url: "https://github.com/octaviopardo/REM"
   commit: "b26d584ebdb3d8084355205d22c87e4e99658d56"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/REM[wght].ttf"
+    dest_file: "REM[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/REM-Italic[wght].ttf"
+    dest_file: "REM-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/rem/upstream.yaml b/ofl/rem/upstream.yaml
deleted file mode 100644
index c93d44a751a5d5b4312bffa0e01dc57cb5486a6d..0000000000000000000000000000000000000000
--- a/ofl/rem/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/REM[wght].ttf: REM[wght].ttf
-  fonts/variable/REM-Italic[wght].ttf: REM-Italic[wght].ttf
-archive:
diff --git a/ofl/rethinksans/METADATA.pb b/ofl/rethinksans/METADATA.pb
index 32022234e13c5a096cb2aef8f32b892911892dd0..c51ac6cb1155d92e1427b85e82e17d2e4aa95234 100644
--- a/ofl/rethinksans/METADATA.pb
+++ b/ofl/rethinksans/METADATA.pb
@@ -32,5 +32,18 @@ axes {
 source {
   repository_url: "https://github.com/hans-thiessen/Rethink-Sans"
   commit: "20d5980cd14ce827e82d7fc58d758f7cc5086c91"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/RethinkSans[wght].ttf"
+    dest_file: "RethinkSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/RethinkSans-Italic[wght].ttf"
+    dest_file: "RethinkSans-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/rethinksans/upstream.yaml b/ofl/rethinksans/upstream.yaml
deleted file mode 100644
index 99c603d01f069e521153af2ecb32da63dc1ee385..0000000000000000000000000000000000000000
--- a/ofl/rethinksans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/RethinkSans[wght].ttf: RethinkSans[wght].ttf
-  fonts/variable/RethinkSans-Italic[wght].ttf: RethinkSans-Italic[wght].ttf
diff --git a/ofl/roadrage/METADATA.pb b/ofl/roadrage/METADATA.pb
index e62bc5123358ea2266d112ab3115f2d4c0ee20a7..1ba08642630a8564897cfd32e522714cecc14f34 100644
--- a/ofl/roadrage/METADATA.pb
+++ b/ofl/roadrage/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/road-rage"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/RoadRage-Regular.ttf"
+    dest_file: "RoadRage-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/roadrage/upstream.yaml b/ofl/roadrage/upstream.yaml
deleted file mode 100644
index 5ef33abf54c609dbb54959345dbef2b8b6c07239..0000000000000000000000000000000000000000
--- a/ofl/roadrage/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/RoadRage-Regular.ttf: RoadRage-Regular.ttf
-repository_url: https://github.com/googlefonts/road-rage
diff --git a/ofl/roboto/METADATA.pb b/ofl/roboto/METADATA.pb
index 40d69d267cf521eb215faf262b16fce63f921c79..035e0af27edd022f7e48ec25ead921cb4d48d50e 100644
--- a/ofl/roboto/METADATA.pb
+++ b/ofl/roboto/METADATA.pb
@@ -44,4 +44,13 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/roboto-classic"
   archive_url: "https://github.com/googlefonts/roboto-classic/releases/download/v3.009/Roboto_v3.009.zip"
+  files {
+    source_file: "web/split/Roboto[wdth,wght].ttf"
+    dest_file: "Roboto[wdth,wght].ttf"
+  }
+  files {
+    source_file: "web/split/Roboto-Italic[wdth,wght].ttf"
+    dest_file: "Roboto-Italic[wdth,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/roboto/upstream.yaml b/ofl/roboto/upstream.yaml
deleted file mode 100644
index edcdb5e5be9e3e643afb6ae76828efcc11017b7d..0000000000000000000000000000000000000000
--- a/ofl/roboto/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/googlefonts/roboto-classic/releases/download/v3.009/Roboto_v3.009.zip
-branch: main
-files:
-  web/split/Roboto[wdth,wght].ttf: Roboto[wdth,wght].ttf
-  web/split/Roboto-Italic[wdth,wght].ttf: Roboto-Italic[wdth,wght].ttf
diff --git a/ofl/robotocondensed/METADATA.pb b/ofl/robotocondensed/METADATA.pb
index e2ab9443c0fbbbf6b579641d6934b5414dbef2ec..2e6689311599de88eaf3b7b954a0945ae83c093e 100644
--- a/ofl/robotocondensed/METADATA.pb
+++ b/ofl/robotocondensed/METADATA.pb
@@ -37,4 +37,13 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/roboto-classic"
   archive_url: "https://github.com/googlefonts/roboto-classic/releases/download/v3.008/Roboto_v3.008.zip"
+  files {
+    source_file: "Roboto_v3.008/web/condensed/RobotoCondensed[wght].ttf"
+    dest_file: "RobotoCondensed[wght].ttf"
+  }
+  files {
+    source_file: "Roboto_v3.008/web/condensed/RobotoCondensed-Italic[wght].ttf"
+    dest_file: "RobotoCondensed-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/robotocondensed/upstream.yaml b/ofl/robotocondensed/upstream.yaml
deleted file mode 100644
index dbfbeeb53e0c0f7aa5f042b5987c9541014ffaa1..0000000000000000000000000000000000000000
--- a/ofl/robotocondensed/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/googlefonts/roboto-classic/releases/download/v3.008/Roboto_v3.008.zip
-branch: main
-files:
-  Roboto_v3.008/web/condensed/RobotoCondensed[wght].ttf: RobotoCondensed[wght].ttf
-  Roboto_v3.008/web/condensed/RobotoCondensed-Italic[wght].ttf: RobotoCondensed-Italic[wght].ttf
diff --git a/ofl/robotoflex/METADATA.pb b/ofl/robotoflex/METADATA.pb
index e0f043bee7763624e87edd66ca2d8146066f976c..fbfb4275b8e1141a392b9a1145dc9e1b1647b447 100644
--- a/ofl/robotoflex/METADATA.pb
+++ b/ofl/robotoflex/METADATA.pb
@@ -84,25 +84,17 @@ axes {
   min_value: 100.0
   max_value: 1000.0
 }
-registry_default_overrides {
-  key: "XTRA"
-  value: 468.0
-}
 registry_default_overrides {
   key: "XOPQ"
   value: 96.0
 }
 registry_default_overrides {
-  key: "YOPQ"
-  value: 79.0
-}
-registry_default_overrides {
-  key: "YTLC"
-  value: 514.0
+  key: "XTRA"
+  value: 468.0
 }
 registry_default_overrides {
-  key: "YTUC"
-  value: 712.0
+  key: "YOPQ"
+  value: 79.0
 }
 registry_default_overrides {
   key: "YTDE"
@@ -112,7 +104,20 @@ registry_default_overrides {
   key: "YTFI"
   value: 738.0
 }
+registry_default_overrides {
+  key: "YTLC"
+  value: 514.0
+}
+registry_default_overrides {
+  key: "YTUC"
+  value: 712.0
+}
 source {
   repository_url: "https://github.com/googlefonts/Roboto-Flex"
-  archive_url: "https://github.com/googlefonts/roboto-flex/releases/download/3.100/roboto-flex-fonts.zip"
+  archive_url: "https://github.com/googlefonts/roboto-flex/releases/download/3.200/roboto-flex-fonts.zip"
+  files {
+    source_file: "roboto-flex-fonts/fonts/variable/RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf"
+    dest_file: "RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/robotoflex/upstream.yaml b/ofl/robotoflex/upstream.yaml
deleted file mode 100644
index 6bd451e125e3edd67e43eb305611f4bfee3bf224..0000000000000000000000000000000000000000
--- a/ofl/robotoflex/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-archive: https://github.com/googlefonts/roboto-flex/releases/download/3.200/roboto-flex-fonts.zip
-branch: main
-files:
-  roboto-flex-fonts/fonts/variable/RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf: RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf
diff --git a/ofl/robotoserif/METADATA.pb b/ofl/robotoserif/METADATA.pb
index 779eeaa8d65262702108b8e7375d1f68ce7a8c42..8210363aba1d261fc5364bb96e930e71240d44f7 100644
--- a/ofl/robotoserif/METADATA.pb
+++ b/ofl/robotoserif/METADATA.pb
@@ -50,5 +50,14 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/roboto-serif"
   archive_url: "https://github.com/googlefonts/roboto-serif/releases/download/v1.008/RobotoSerifFonts-v1.008.zip"
+  files {
+    source_file: "variable/RobotoSerif[GRAD,opsz,wdth,wght].ttf"
+    dest_file: "RobotoSerif[GRAD,opsz,wdth,wght].ttf"
+  }
+  files {
+    source_file: "variable/RobotoSerif-Italic[GRAD,opsz,wdth,wght].ttf"
+    dest_file: "RobotoSerif-Italic[GRAD,opsz,wdth,wght].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://fonts.withgoogle.com/roboto-serif"
diff --git a/ofl/robotoserif/upstream.yaml b/ofl/robotoserif/upstream.yaml
deleted file mode 100644
index 848a91184fa2d315250c27edc1e73c34f7a84a49..0000000000000000000000000000000000000000
--- a/ofl/robotoserif/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive: https://github.com/googlefonts/roboto-serif/releases/download/v1.008/RobotoSerifFonts-v1.008.zip
-branch: main
-files:
-  variable/RobotoSerif[GRAD,opsz,wdth,wght].ttf: RobotoSerif[GRAD,opsz,wdth,wght].ttf
-  variable/RobotoSerif-Italic[GRAD,opsz,wdth,wght].ttf: RobotoSerif-Italic[GRAD,opsz,wdth,wght].ttf
diff --git a/ofl/rock3d/METADATA.pb b/ofl/rock3d/METADATA.pb
index e056dcb31db5c333648826f2994de72f52588180..f58fea57ea720d0a3005a939af25edf5f641a7a1 100644
--- a/ofl/rock3d/METADATA.pb
+++ b/ofl/rock3d/METADATA.pb
@@ -15,6 +15,22 @@ fonts {
 subsets: "japanese"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/shibuyafont/3d-rock-font"
+  files {
+    source_file: "fonts/ttf/Rock3D-Regular.ttf"
+    dest_file: "Rock3D-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/rock3d/upstream.yaml b/ofl/rock3d/upstream.yaml
deleted file mode 100644
index 6ff33112b1d55f9c5a41499e15ec3680edb5935f..0000000000000000000000000000000000000000
--- a/ofl/rock3d/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Rock3D-Regular.ttf: Rock3D-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/shibuyafont/3d-rock-font.git
diff --git a/ofl/rocknrollone/METADATA.pb b/ofl/rocknrollone/METADATA.pb
index 6e44f0a63693223ca1a77773dc1e5602fcad7fc9..9c08cadc82acc9be4ef5fa0fb9122b3a4f272c23 100644
--- a/ofl/rocknrollone/METADATA.pb
+++ b/ofl/rocknrollone/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/RocknRoll"
+  files {
+    source_file: "fonts/ttf/RocknRollOne-Regular.ttf"
+    dest_file: "RocknRollOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/rocknrollone/upstream.yaml b/ofl/rocknrollone/upstream.yaml
deleted file mode 100644
index 5f98540220fe7c9cb502e74c0be662a59ce21df8..0000000000000000000000000000000000000000
--- a/ofl/rocknrollone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/RocknRollOne-Regular.ttf: RocknRollOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/RocknRoll.git
diff --git a/ofl/rokkitt/METADATA.pb b/ofl/rokkitt/METADATA.pb
index 35d2d158dbc5a859dc4d620023dd5385fa72c744..3b472843c40f710cc96763c958357332bd15682a 100644
--- a/ofl/rokkitt/METADATA.pb
+++ b/ofl/rokkitt/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/Fonthausen/RokkittFont"
   commit: "762d1439aaa7cf4a590f604451dfc2e1c6970b9f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Rokkitt-Italic[wght].ttf"
+    dest_file: "Rokkitt-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Rokkitt[wght].ttf"
+    dest_file: "Rokkitt[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SLAB_SERIF"
diff --git a/ofl/rokkitt/upstream.yaml b/ofl/rokkitt/upstream.yaml
deleted file mode 100644
index ca3acea5e8d41bca76de1b08204d01670eacb279..0000000000000000000000000000000000000000
--- a/ofl/rokkitt/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Rokkitt-Italic[wght].ttf: Rokkitt-Italic[wght].ttf
-  fonts/variable/Rokkitt[wght].ttf: Rokkitt[wght].ttf
-archive:
diff --git a/ofl/rosario/METADATA.pb b/ofl/rosario/METADATA.pb
index b79027590a90af3e1f992d10f25061d6ec3e9ac5..2d22973c30b084d64cef7392410398b900af334d 100644
--- a/ofl/rosario/METADATA.pb
+++ b/ofl/rosario/METADATA.pb
@@ -30,3 +30,19 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/Omnibus-Type/Rosario"
+  files {
+    source_file: "fonts/variable/Rosario[wght].ttf"
+    dest_file: "Rosario[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Rosario-Italic[wght].ttf"
+    dest_file: "Rosario-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/rosario/upstream.yaml b/ofl/rosario/upstream.yaml
deleted file mode 100644
index 5f0fd02c88dbc971c8ab090c2f58fcffbca2e430..0000000000000000000000000000000000000000
--- a/ofl/rosario/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/Rosario[wght].ttf: Rosario[wght].ttf
-  fonts/variable/Rosario-Italic[wght].ttf: Rosario-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Omnibus-Type/Rosario
diff --git a/ofl/rubik/METADATA.pb b/ofl/rubik/METADATA.pb
index 1a57155ec7829f4c5a0a153448a65ccd356ab948..85ccd6056c17a607999bb0697c06871e7ad4300d 100644
--- a/ofl/rubik/METADATA.pb
+++ b/ofl/rubik/METADATA.pb
@@ -36,4 +36,17 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/rubik"
   commit: "e337a5f69a9bea30e58d05bd40184d79cc099628"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Rubik-Italic[wght].ttf"
+    dest_file: "Rubik-Italic[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Rubik[wght].ttf"
+    dest_file: "Rubik[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubik/upstream.yaml b/ofl/rubik/upstream.yaml
deleted file mode 100644
index 50ddb1400618ef619b11e4ff4f41d8c32de00d08..0000000000000000000000000000000000000000
--- a/ofl/rubik/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Rubik-Italic[wght].ttf: Rubik-Italic[wght].ttf
-  fonts/variable/Rubik[wght].ttf: Rubik[wght].ttf
diff --git a/ofl/rubik80sfade/METADATA.pb b/ofl/rubik80sfade/METADATA.pb
index 805045feaa8f60a9a55d1b292738174559bee528..4990b3b859080c5922aff9638b4fd605ae0d9529 100644
--- a/ofl/rubik80sfade/METADATA.pb
+++ b/ofl/rubik80sfade/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "f68dfcddd341aaabe53aa924d634122bb8bf999d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "80sfade/fonts/ttf/Rubik80sFade-Regular.ttf"
+    dest_file: "Rubik80sFade-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubik80sfade/upstream.yaml b/ofl/rubik80sfade/upstream.yaml
deleted file mode 100644
index c22719b79af34ab37ff2ceaf39e4ea24991aaa1c..0000000000000000000000000000000000000000
--- a/ofl/rubik80sfade/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  80sfade/fonts/ttf/Rubik80sFade-Regular.ttf: Rubik80sFade-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikbeastly/METADATA.pb b/ofl/rubikbeastly/METADATA.pb
index e2a330e37c408045c020896d263ead07ae991cd2..57b2363a6cdecd3d192d8dc251d6dee2302a7902 100644
--- a/ofl/rubikbeastly/METADATA.pb
+++ b/ofl/rubikbeastly/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "beastly/fonts/ttf/RubikBeastly-Regular.ttf"
+    dest_file: "RubikBeastly-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikbeastly/upstream.yaml b/ofl/rubikbeastly/upstream.yaml
deleted file mode 100644
index 64fc3530955572f37e214399dbf7260dbd6a2501..0000000000000000000000000000000000000000
--- a/ofl/rubikbeastly/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  beastly/fonts/ttf/RubikBeastly-Regular.ttf: RubikBeastly-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rubikbrokenfax/METADATA.pb b/ofl/rubikbrokenfax/METADATA.pb
index 6e008a7b469da167e9ded3953f3f3861a71344c4..8361b13c5b3f47331f0d25e2781aa00a5483ce65 100644
--- a/ofl/rubikbrokenfax/METADATA.pb
+++ b/ofl/rubikbrokenfax/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "df817f272b98fb24d9c3b10323ac08ab74c08227"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "brokenfax/fonts/ttf/RubikBrokenFax-Regular.ttf"
+    dest_file: "RubikBrokenFax-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubikbrokenfax/upstream.yaml b/ofl/rubikbrokenfax/upstream.yaml
deleted file mode 100644
index 0f9db1b7dabd13a7824e10549d92eabdd9dfad50..0000000000000000000000000000000000000000
--- a/ofl/rubikbrokenfax/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  brokenfax/fonts/ttf/RubikBrokenFax-Regular.ttf: RubikBrokenFax-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikbubbles/METADATA.pb b/ofl/rubikbubbles/METADATA.pb
index f63032b13afe7511bda37a65961662146c9b9bb8..d1dee3080ee4fef2914e38296cca2cb72acc046a 100644
--- a/ofl/rubikbubbles/METADATA.pb
+++ b/ofl/rubikbubbles/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "bubbles/fonts/ttf/RubikBubbles-Regular.ttf"
+    dest_file: "RubikBubbles-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikbubbles/upstream.yaml b/ofl/rubikbubbles/upstream.yaml
deleted file mode 100644
index 4d445c778d63956377177471dcd1ac7ac12bbc6e..0000000000000000000000000000000000000000
--- a/ofl/rubikbubbles/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  bubbles/fonts/ttf/RubikBubbles-Regular.ttf: RubikBubbles-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rubikburned/METADATA.pb b/ofl/rubikburned/METADATA.pb
index 9d3c1515f27fc7d9b322f9794e76f41918243598..838bc5b3fce64c4444314b8ab75c16f4ea248a1f 100644
--- a/ofl/rubikburned/METADATA.pb
+++ b/ofl/rubikburned/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "f61d39563df1f583122af0866fc827666c2b385b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "burned/fonts/ttf/RubikBurned-Regular.ttf"
+    dest_file: "RubikBurned-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikburned/upstream.yaml b/ofl/rubikburned/upstream.yaml
deleted file mode 100644
index d812db02a03547209bbd99c02a692eaf85fef379..0000000000000000000000000000000000000000
--- a/ofl/rubikburned/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  burned/fonts/ttf/RubikBurned-Regular.ttf: RubikBurned-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikdirt/METADATA.pb b/ofl/rubikdirt/METADATA.pb
index fdefaa24886743d49b07b659e5faabea1eca0aca..61dd2a71936a852fa66fb8fca6eeedf377ec3ae2 100644
--- a/ofl/rubikdirt/METADATA.pb
+++ b/ofl/rubikdirt/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "f61d39563df1f583122af0866fc827666c2b385b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "dirt/fonts/ttf/RubikDirt-Regular.ttf"
+    dest_file: "RubikDirt-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikdirt/upstream.yaml b/ofl/rubikdirt/upstream.yaml
deleted file mode 100644
index 8730d155f2a05f5d16f87b0a5a4887f9a3bdbe82..0000000000000000000000000000000000000000
--- a/ofl/rubikdirt/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  dirt/fonts/ttf/RubikDirt-Regular.ttf: RubikDirt-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikdistressed/METADATA.pb b/ofl/rubikdistressed/METADATA.pb
index 422dd58942a30b1970deaafb73f2a18be4a24767..5ed43905a531e6909a8550e82172ede553b5f5a7 100644
--- a/ofl/rubikdistressed/METADATA.pb
+++ b/ofl/rubikdistressed/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "f61d39563df1f583122af0866fc827666c2b385b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "distressed/fonts/ttf/RubikDistressed-Regular.ttf"
+    dest_file: "RubikDistressed-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikdistressed/upstream.yaml b/ofl/rubikdistressed/upstream.yaml
deleted file mode 100644
index c1b831455d5218ea24c4fd7a8d123282f5bb1ba6..0000000000000000000000000000000000000000
--- a/ofl/rubikdistressed/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  distressed/fonts/ttf/RubikDistressed-Regular.ttf: RubikDistressed-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikdoodleshadow/METADATA.pb b/ofl/rubikdoodleshadow/METADATA.pb
index 2439617f8666d53b0ebb97b704dec7f48e450ece..0e342c0030fc489d2a7f72b7734542fc479dadfe 100644
--- a/ofl/rubikdoodleshadow/METADATA.pb
+++ b/ofl/rubikdoodleshadow/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "c70421b2f209e0aa88a84210d94da557602a5e56"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "doodleshadow/fonts/ttf/RubikDoodleShadow-Regular.ttf"
+    dest_file: "RubikDoodleShadow-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubikdoodleshadow/upstream.yaml b/ofl/rubikdoodleshadow/upstream.yaml
deleted file mode 100644
index 15f69d4fe88416470b4e1eddb357ca4c6c02c828..0000000000000000000000000000000000000000
--- a/ofl/rubikdoodleshadow/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  doodleshadow/fonts/ttf/RubikDoodleShadow-Regular.ttf: RubikDoodleShadow-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikdoodletriangles/METADATA.pb b/ofl/rubikdoodletriangles/METADATA.pb
index 64fcbf5b66a4a8f277442d44260d9cc34bacee05..3d347259ee011fa8e6057a5a888f02bdd2679dd9 100644
--- a/ofl/rubikdoodletriangles/METADATA.pb
+++ b/ofl/rubikdoodletriangles/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "409369746e32796524d9b0b6c9c5aa6445c83bcd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "doodletriangles/fonts/ttf/RubikDoodleTriangles-Regular.ttf"
+    dest_file: "RubikDoodleTriangles-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubikdoodletriangles/upstream.yaml b/ofl/rubikdoodletriangles/upstream.yaml
deleted file mode 100644
index 64001f1046df6b4651cb805ee133bedb67a37f08..0000000000000000000000000000000000000000
--- a/ofl/rubikdoodletriangles/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  doodletriangles/fonts/ttf/RubikDoodleTriangles-Regular.ttf: RubikDoodleTriangles-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikgemstones/METADATA.pb b/ofl/rubikgemstones/METADATA.pb
index 4ba9a6da35b59bd5c406e8048b0b8d5642abf46f..02dd8c88d53738781643623638c6d7a923b0860c 100644
--- a/ofl/rubikgemstones/METADATA.pb
+++ b/ofl/rubikgemstones/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "3a1ee9007cf7a5a4d2991fb4e6404ca97b141925"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "gemstones/fonts/ttf/RubikGemstones-Regular.ttf"
+    dest_file: "RubikGemstones-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikgemstones/upstream.yaml b/ofl/rubikgemstones/upstream.yaml
deleted file mode 100644
index a56dc2a886be817652a4f8ad1d61688f5091c8cb..0000000000000000000000000000000000000000
--- a/ofl/rubikgemstones/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  gemstones/fonts/ttf/RubikGemstones-Regular.ttf: RubikGemstones-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikglitch/METADATA.pb b/ofl/rubikglitch/METADATA.pb
index a8a5206e2059a494690f36c496fec81491a7e14a..75a0e9ebe5b6030e0d4948d242ddbbe4893c09c8 100644
--- a/ofl/rubikglitch/METADATA.pb
+++ b/ofl/rubikglitch/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "glitch/fonts/ttf/RubikGlitch-Regular.ttf"
+    dest_file: "RubikGlitch-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikglitch/upstream.yaml b/ofl/rubikglitch/upstream.yaml
deleted file mode 100644
index f4cea3530448191d7fc388fbe8dee5e1f22a44da..0000000000000000000000000000000000000000
--- a/ofl/rubikglitch/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  glitch/fonts/ttf/RubikGlitch-Regular.ttf: RubikGlitch-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rubikglitchpop/METADATA.pb b/ofl/rubikglitchpop/METADATA.pb
index 10c3a3ad2790c2f245006ae72cd0d7f6fc5d2e3a..5495eb3c15efef12fd66d9facb9f264429a73a61 100644
--- a/ofl/rubikglitchpop/METADATA.pb
+++ b/ofl/rubikglitchpop/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "c89f25696f8c15d3c180b087256591d43d6f46db"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "glitchpop/fonts/ttf/RubikGlitchPop-Regular.ttf"
+    dest_file: "RubikGlitchPop-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubikglitchpop/upstream.yaml b/ofl/rubikglitchpop/upstream.yaml
deleted file mode 100644
index 6d815e310d9942b06fe3b6bcdee66915ba26daa4..0000000000000000000000000000000000000000
--- a/ofl/rubikglitchpop/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  glitchpop/fonts/ttf/RubikGlitchPop-Regular.ttf: RubikGlitchPop-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikiso/METADATA.pb b/ofl/rubikiso/METADATA.pb
index e97130c6542792c6fa3534a1661b34de9b83ac5c..64e259caf5208b321305be30d1e7190e25e3effe 100644
--- a/ofl/rubikiso/METADATA.pb
+++ b/ofl/rubikiso/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "f61d39563df1f583122af0866fc827666c2b385b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "iso/fonts/ttf/RubikIso-Regular.ttf"
+    dest_file: "RubikIso-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikiso/upstream.yaml b/ofl/rubikiso/upstream.yaml
deleted file mode 100644
index 2eaecd4ad131995621b9c950de33f698b4149b64..0000000000000000000000000000000000000000
--- a/ofl/rubikiso/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  iso/fonts/ttf/RubikIso-Regular.ttf: RubikIso-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubiklines/METADATA.pb b/ofl/rubiklines/METADATA.pb
index 2759ba1552fac9ed2ca63842f5d665db0bf038e6..6674f549262e224b21b8f8dd24d43cbf60413053 100644
--- a/ofl/rubiklines/METADATA.pb
+++ b/ofl/rubiklines/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "6555502a8b48b1aa3b8c773d34a871a9fb84a2b8"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "lines/fonts/ttf/RubikLines-Regular.ttf"
+    dest_file: "RubikLines-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubiklines/upstream.yaml b/ofl/rubiklines/upstream.yaml
deleted file mode 100644
index d78042d17b62b55e1d329f024c263c657988effd..0000000000000000000000000000000000000000
--- a/ofl/rubiklines/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  lines/fonts/ttf/RubikLines-Regular.ttf: RubikLines-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikmaps/METADATA.pb b/ofl/rubikmaps/METADATA.pb
index ff82322219a94e7fe1b31b7da444830c763580ff..5a884a37ae472de72ff56fe37c905d05bab4e3cc 100644
--- a/ofl/rubikmaps/METADATA.pb
+++ b/ofl/rubikmaps/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "112698043433bee2d652b8fa1943ea2c19854550"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "maps/fonts/ttf/RubikMaps-Regular.ttf"
+    dest_file: "RubikMaps-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubikmaps/upstream.yaml b/ofl/rubikmaps/upstream.yaml
deleted file mode 100644
index d13f139e9ead9faf6df99bc74383319d70b65527..0000000000000000000000000000000000000000
--- a/ofl/rubikmaps/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  maps/fonts/ttf/RubikMaps-Regular.ttf: RubikMaps-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikmarkerhatch/METADATA.pb b/ofl/rubikmarkerhatch/METADATA.pb
index 42ddf525e05cd0e1a0bec55c394e02025952a535..9eff62134d0afbb6ccba6a639d2c65aa370e1fb9 100644
--- a/ofl/rubikmarkerhatch/METADATA.pb
+++ b/ofl/rubikmarkerhatch/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "6a9f34277f6656762de34970de67f70c1c42d9e2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "markerhatch/fonts/ttf/RubikMarkerHatch-Regular.ttf"
+    dest_file: "RubikMarkerHatch-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikmarkerhatch/upstream.yaml b/ofl/rubikmarkerhatch/upstream.yaml
deleted file mode 100644
index d81cd81c22da847900ffdefcab644728c69aa138..0000000000000000000000000000000000000000
--- a/ofl/rubikmarkerhatch/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  markerhatch/fonts/ttf/RubikMarkerHatch-Regular.ttf: RubikMarkerHatch-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikmaze/METADATA.pb b/ofl/rubikmaze/METADATA.pb
index 3c19ff4036ac560fec708978e14b3d9dd69cc630..6221ace83d3304edf819eb223cd9d8cf6aa615c4 100644
--- a/ofl/rubikmaze/METADATA.pb
+++ b/ofl/rubikmaze/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "f61d39563df1f583122af0866fc827666c2b385b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "maze/fonts/ttf/RubikMaze-Regular.ttf"
+    dest_file: "RubikMaze-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikmaze/upstream.yaml b/ofl/rubikmaze/upstream.yaml
deleted file mode 100644
index a3c8a5495c357de6e89f795af7f75bf7bb35c6b6..0000000000000000000000000000000000000000
--- a/ofl/rubikmaze/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  maze/fonts/ttf/RubikMaze-Regular.ttf: RubikMaze-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikmicrobe/METADATA.pb b/ofl/rubikmicrobe/METADATA.pb
index 3d9479d7acdb01025f312629862b51d5a44b33bd..99fff0be22cee5744ff0d558d34fc339289cb623 100644
--- a/ofl/rubikmicrobe/METADATA.pb
+++ b/ofl/rubikmicrobe/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "microbe/fonts/ttf/RubikMicrobe-Regular.ttf"
+    dest_file: "RubikMicrobe-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikmicrobe/upstream.yaml b/ofl/rubikmicrobe/upstream.yaml
deleted file mode 100644
index 0d9998742d8b029118715f09424a8377b37d9e0e..0000000000000000000000000000000000000000
--- a/ofl/rubikmicrobe/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  microbe/fonts/ttf/RubikMicrobe-Regular.ttf: RubikMicrobe-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rubikmoonrocks/METADATA.pb b/ofl/rubikmoonrocks/METADATA.pb
index 3aa0a16f36c9916adcfe467ca2d92401d7765069..fa9a49864d9ee3d47387cf0abe1cea1e5a7dc746 100644
--- a/ofl/rubikmoonrocks/METADATA.pb
+++ b/ofl/rubikmoonrocks/METADATA.pb
@@ -21,6 +21,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "moonrocks/fonts/ttf/RubikMoonrocks-Regular.ttf"
+    dest_file: "RubikMoonrocks-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/rubikmoonrocks/upstream.yaml b/ofl/rubikmoonrocks/upstream.yaml
deleted file mode 100644
index cc0832d66024b3c1c7f6c6fe2e32a6f49a84662f..0000000000000000000000000000000000000000
--- a/ofl/rubikmoonrocks/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  moonrocks/fonts/ttf/RubikMoonrocks-Regular.ttf: RubikMoonrocks-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rubikpixels/METADATA.pb b/ofl/rubikpixels/METADATA.pb
index 5166d51720f10ca96cb65c7d06d48ab7fa06697c..e2d29727fee80b633b5249501ae1c3cdeb928c8a 100644
--- a/ofl/rubikpixels/METADATA.pb
+++ b/ofl/rubikpixels/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "0c9d20f75e69991e2f3b075d978d9e23844027b6"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "pixels/fonts/ttf/RubikPixels-Regular.ttf"
+    dest_file: "RubikPixels-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikpixels/upstream.yaml b/ofl/rubikpixels/upstream.yaml
deleted file mode 100644
index c73b72ab1d12cfbf702c8871cacc1b838ef5c361..0000000000000000000000000000000000000000
--- a/ofl/rubikpixels/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  pixels/fonts/ttf/RubikPixels-Regular.ttf: RubikPixels-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikpuddles/METADATA.pb b/ofl/rubikpuddles/METADATA.pb
index 92cc094f9de47a68c6dc7fd5d9bcfed251d02b7e..96ad0536ed9a016879dc18dd7d631466672828cd 100644
--- a/ofl/rubikpuddles/METADATA.pb
+++ b/ofl/rubikpuddles/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "puddles/fonts/ttf/RubikPuddles-Regular.ttf"
+    dest_file: "RubikPuddles-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikpuddles/upstream.yaml b/ofl/rubikpuddles/upstream.yaml
deleted file mode 100644
index e7b3ff7fbdc70da9995e0718d2fd2c361fa6a9e0..0000000000000000000000000000000000000000
--- a/ofl/rubikpuddles/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  puddles/fonts/ttf/RubikPuddles-Regular.ttf: RubikPuddles-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rubikscribble/METADATA.pb b/ofl/rubikscribble/METADATA.pb
index 88e8bf4411f6f8d5594007e58e4310aa16f6080d..d08570b47e53eaa4d053fba6573652cdd458fdd3 100644
--- a/ofl/rubikscribble/METADATA.pb
+++ b/ofl/rubikscribble/METADATA.pb
@@ -23,5 +23,18 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "bad54a1074926c9b2b0111db2bed0b65393f4426"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "scribble/fonts/ttf/RubikScribble-Regular.ttf"
+    dest_file: "RubikScribble-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
diff --git a/ofl/rubikscribble/upstream.yaml b/ofl/rubikscribble/upstream.yaml
deleted file mode 100644
index 431ea40b6c7723759478b41090708462fd6c3eec..0000000000000000000000000000000000000000
--- a/ofl/rubikscribble/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  scribble/fonts/ttf/RubikScribble-Regular.ttf: RubikScribble-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikspraypaint/METADATA.pb b/ofl/rubikspraypaint/METADATA.pb
index 46198d96a702dcea7d59dc32b23cc8bc27305126..2abbb43d7fed2da01a453565c07384767aa2fef9 100644
--- a/ofl/rubikspraypaint/METADATA.pb
+++ b/ofl/rubikspraypaint/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "3a1ee9007cf7a5a4d2991fb4e6404ca97b141925"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "spraypaint/fonts/ttf/RubikSprayPaint-Regular.ttf"
+    dest_file: "RubikSprayPaint-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikspraypaint/upstream.yaml b/ofl/rubikspraypaint/upstream.yaml
deleted file mode 100644
index fd0bf6bd08345df2f44d55230bc487f8d062900c..0000000000000000000000000000000000000000
--- a/ofl/rubikspraypaint/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  spraypaint/fonts/ttf/RubikSprayPaint-Regular.ttf: RubikSprayPaint-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikstorm/METADATA.pb b/ofl/rubikstorm/METADATA.pb
index f9608698a14d5fc01d96a84748f33b904ccf2802..553180a44104070da002deaabf5336073f362f48 100644
--- a/ofl/rubikstorm/METADATA.pb
+++ b/ofl/rubikstorm/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "bc320bc8232696b7a88109217eee5ca1194aabbb"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "storm/fonts/ttf/RubikStorm-Regular.ttf"
+    dest_file: "RubikStorm-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikstorm/upstream.yaml b/ofl/rubikstorm/upstream.yaml
deleted file mode 100644
index d64dd6803f8ab37d5a4e5845576873bf7fafb32b..0000000000000000000000000000000000000000
--- a/ofl/rubikstorm/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  storm/fonts/ttf/RubikStorm-Regular.ttf: RubikStorm-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikvinyl/METADATA.pb b/ofl/rubikvinyl/METADATA.pb
index e3de995faac4e16244d708025591605524235145..3a7c6595b8da9ff1583e3422472042e37b2733fe 100644
--- a/ofl/rubikvinyl/METADATA.pb
+++ b/ofl/rubikvinyl/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "3a1ee9007cf7a5a4d2991fb4e6404ca97b141925"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "vinyl/fonts/ttf/RubikVinyl-Regular.ttf"
+    dest_file: "RubikVinyl-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikvinyl/upstream.yaml b/ofl/rubikvinyl/upstream.yaml
deleted file mode 100644
index 8944118c229e4b21dc6742f2ef27393b6f16c862..0000000000000000000000000000000000000000
--- a/ofl/rubikvinyl/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  vinyl/fonts/ttf/RubikVinyl-Regular.ttf: RubikVinyl-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/rubikwetpaint/METADATA.pb b/ofl/rubikwetpaint/METADATA.pb
index 0465ed9a6893c03e501d374182e89e3569a9f38d..517e001f6a9617f6946b76812831e3ee6749384f 100644
--- a/ofl/rubikwetpaint/METADATA.pb
+++ b/ofl/rubikwetpaint/METADATA.pb
@@ -21,4 +21,17 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/NaN-xyz/Rubik-Filtered"
   commit: "50fec619b373f40dfd839408e77c5b3a616e972d"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "wetpaint/fonts/ttf/RubikWetPaint-Regular.ttf"
+    dest_file: "RubikWetPaint-Regular.ttf"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
diff --git a/ofl/rubikwetpaint/upstream.yaml b/ofl/rubikwetpaint/upstream.yaml
deleted file mode 100644
index f08ed4ff1e179c9dd6110874fcbcb00cd1e69d3b..0000000000000000000000000000000000000000
--- a/ofl/rubikwetpaint/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  wetpaint/fonts/ttf/RubikWetPaint-Regular.ttf: RubikWetPaint-Regular.ttf
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/rugeboogie/METADATA.pb b/ofl/rugeboogie/METADATA.pb
index 947cae64f82e095cc3cd19f457dcc0e3a5645e09..5678aa1f00e9a5438ab8004b22f99f765bc01480 100644
--- a/ofl/rugeboogie/METADATA.pb
+++ b/ofl/rugeboogie/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/ruge-boogie"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/RugeBoogie-Regular.ttf"
+    dest_file: "RugeBoogie-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/rugeboogie/upstream.yaml b/ofl/rugeboogie/upstream.yaml
deleted file mode 100644
index b15077986224750e23be86e86e0e4cc288dfb820..0000000000000000000000000000000000000000
--- a/ofl/rugeboogie/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/RugeBoogie-Regular.ttf: RugeBoogie-Regular.ttf
-repository_url: https://github.com/googlefonts/ruge-boogie
diff --git a/ofl/ruthie/METADATA.pb b/ofl/ruthie/METADATA.pb
index 77eee156cf6032bc9066acd742387987b8d8de29..32a397e84bbc5436c04b606c58e418d3d40ec2ed 100644
--- a/ofl/ruthie/METADATA.pb
+++ b/ofl/ruthie/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/ruthie"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Ruthie-Regular.ttf"
+    dest_file: "Ruthie-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/ruthie/upstream.yaml b/ofl/ruthie/upstream.yaml
deleted file mode 100644
index 0be6945d3edbe9fefac397558984d46141f92170..0000000000000000000000000000000000000000
--- a/ofl/ruthie/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Ruthie-Regular.ttf: Ruthie-Regular.ttf
-repository_url: https://github.com/googlefonts/ruthie
diff --git a/ofl/ruwudu/METADATA.pb b/ofl/ruwudu/METADATA.pb
index 54927f15098b7e5a8dc594ae8a3a96757a0f7acd..c98a447d84aeaf0ecaebe4bb7398a3d5fc8b6079 100644
--- a/ofl/ruwudu/METADATA.pb
+++ b/ofl/ruwudu/METADATA.pb
@@ -46,5 +46,26 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-ruwudu"
   archive_url: "https://github.com/silnrsi/font-ruwudu/releases/download/v3.000/Ruwudu-3.000.zip"
+  files {
+    source_file: "Ruwudu-3.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Ruwudu-3.000/Ruwudu-Regular.ttf"
+    dest_file: "Ruwudu-Regular.ttf"
+  }
+  files {
+    source_file: "Ruwudu-3.000/Ruwudu-Medium.ttf"
+    dest_file: "Ruwudu-Medium.ttf"
+  }
+  files {
+    source_file: "Ruwudu-3.000/Ruwudu-SemiBold.ttf"
+    dest_file: "Ruwudu-SemiBold.ttf"
+  }
+  files {
+    source_file: "Ruwudu-3.000/Ruwudu-Bold.ttf"
+    dest_file: "Ruwudu-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/ruwudu/upstream.yaml b/ofl/ruwudu/upstream.yaml
deleted file mode 100644
index fc10e488bd2256e1d483347e453cf04b01fbc885..0000000000000000000000000000000000000000
--- a/ofl/ruwudu/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-ruwudu/releases/download/v3.000/Ruwudu-3.000.zip
-branch: master
-files:
-  Ruwudu-3.000/OFL.txt: OFL.txt
-  Ruwudu-3.000/Ruwudu-Regular.ttf: Ruwudu-Regular.ttf
-  Ruwudu-3.000/Ruwudu-Medium.ttf: Ruwudu-Medium.ttf
-  Ruwudu-3.000/Ruwudu-SemiBold.ttf: Ruwudu-SemiBold.ttf
-  Ruwudu-3.000/Ruwudu-Bold.ttf: Ruwudu-Bold.ttf
diff --git a/ofl/saira/METADATA.pb b/ofl/saira/METADATA.pb
index 5c49ff64dddeae9331bee84770af01bdde4289a1..5ea41cfbf95a9a9e9923bec20555bd5ed533cc4d 100644
--- a/ofl/saira/METADATA.pb
+++ b/ofl/saira/METADATA.pb
@@ -35,5 +35,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/Omnibus-Type/Saira"
+  files {
+    source_file: "Saira/fonts/variable/Saira[wdth,wght].ttf"
+    dest_file: "Saira[wdth,wght].ttf"
+  }
+  files {
+    source_file: "Saira/fonts/variable/Saira-Italic[wdth,wght].ttf"
+    dest_file: "Saira-Italic[wdth,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/saira/upstream.yaml b/ofl/saira/upstream.yaml
deleted file mode 100644
index 4fb280b1960cd39993eb74a9e80e4f8259179a61..0000000000000000000000000000000000000000
--- a/ofl/saira/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  Saira/fonts/variable/Saira[wdth,wght].ttf: Saira[wdth,wght].ttf
-  Saira/fonts/variable/Saira-Italic[wdth,wght].ttf: Saira-Italic[wdth,wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Omnibus-Type/Saira
diff --git a/ofl/sancreek/METADATA.pb b/ofl/sancreek/METADATA.pb
index 9c7031ef93fe5b199771b9596f31591fe5820b02..36a8e65b653a1eeb4c396b67b56ffdfe4611c77a 100644
--- a/ofl/sancreek/METADATA.pb
+++ b/ofl/sancreek/METADATA.pb
@@ -20,6 +20,15 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/googlefonts/sancreek"
   commit: "6a26130542b916d49c5ed3e06ec5edfe68743d8a"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Sancreek-Regular.ttf"
+    dest_file: "Sancreek-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/sancreek/upstream.yaml b/ofl/sancreek/upstream.yaml
deleted file mode 100644
index 1c33235a36ca021be135616bc1588cc359c51d55..0000000000000000000000000000000000000000
--- a/ofl/sancreek/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Sancreek-Regular.ttf: Sancreek-Regular.ttf
-archive:
diff --git a/ofl/sassyfrass/METADATA.pb b/ofl/sassyfrass/METADATA.pb
index ec9adda9ff251187c6cf802f5298856e7722d7ef..90e88cb3a8e4680eff6b520e74a2d489d70e0c07 100644
--- a/ofl/sassyfrass/METADATA.pb
+++ b/ofl/sassyfrass/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/sassy-frass"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/SassyFrass-Regular.ttf"
+    dest_file: "SassyFrass-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/sassyfrass/upstream.yaml b/ofl/sassyfrass/upstream.yaml
deleted file mode 100644
index 6adaa162c1659f883bab80b288cadb62cf723c71..0000000000000000000000000000000000000000
--- a/ofl/sassyfrass/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/SassyFrass-Regular.ttf: SassyFrass-Regular.ttf
-repository_url: https://github.com/googlefonts/sassy-frass
diff --git a/ofl/scheherazadenew/METADATA.pb b/ofl/scheherazadenew/METADATA.pb
index a604e71bb4dfa905d0d5bcafe67fe790343d26c9..59297408a0223f027f9acc703565770887689c01 100644
--- a/ofl/scheherazadenew/METADATA.pb
+++ b/ofl/scheherazadenew/METADATA.pb
@@ -46,5 +46,26 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/silnrsi/font-scheherazade"
   archive_url: "https://github.com/silnrsi/font-scheherazade/releases/download/v4.000/ScheherazadeNew-4.000.zip"
+  files {
+    source_file: "ScheherazadeNew-4.000/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "ScheherazadeNew-4.000/ScheherazadeNew-Regular.ttf"
+    dest_file: "ScheherazadeNew-Regular.ttf"
+  }
+  files {
+    source_file: "ScheherazadeNew-4.000/ScheherazadeNew-Medium.ttf"
+    dest_file: "ScheherazadeNew-Medium.ttf"
+  }
+  files {
+    source_file: "ScheherazadeNew-4.000/ScheherazadeNew-SemiBold.ttf"
+    dest_file: "ScheherazadeNew-SemiBold.ttf"
+  }
+  files {
+    source_file: "ScheherazadeNew-4.000/ScheherazadeNew-Bold.ttf"
+    dest_file: "ScheherazadeNew-Bold.ttf"
+  }
+  branch: "master"
 }
 primary_script: "Arab"
diff --git a/ofl/scheherazadenew/upstream.yaml b/ofl/scheherazadenew/upstream.yaml
deleted file mode 100644
index 539d017aa9efef278bff51e5e5c23d6a5899436d..0000000000000000000000000000000000000000
--- a/ofl/scheherazadenew/upstream.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-archive: https://github.com/silnrsi/font-scheherazade/releases/download/v4.000/ScheherazadeNew-4.000.zip
-branch: master
-files:
-  ScheherazadeNew-4.000/OFL.txt: OFL.txt
-  ScheherazadeNew-4.000/ScheherazadeNew-Regular.ttf: ScheherazadeNew-Regular.ttf
-  ScheherazadeNew-4.000/ScheherazadeNew-Medium.ttf: ScheherazadeNew-Medium.ttf
-  ScheherazadeNew-4.000/ScheherazadeNew-SemiBold.ttf: ScheherazadeNew-SemiBold.ttf
-  ScheherazadeNew-4.000/ScheherazadeNew-Bold.ttf: ScheherazadeNew-Bold.ttf
diff --git a/ofl/schibstedgrotesk/METADATA.pb b/ofl/schibstedgrotesk/METADATA.pb
index fa20ec7938bad9fd374cdcec745eeff519365e17..6a51718ef7d1ab57189b843e316a22d36bacdf19 100644
--- a/ofl/schibstedgrotesk/METADATA.pb
+++ b/ofl/schibstedgrotesk/METADATA.pb
@@ -32,4 +32,17 @@ axes {
 source {
   repository_url: "https://github.com/schibsted/schibsted-grotesk"
   commit: "d485f61f105e1b3935f4d21dfb4d371359798603"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/SchibstedGrotesk[wght].ttf"
+    dest_file: "SchibstedGrotesk[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/SchibstedGrotesk-Italic[wght].ttf"
+    dest_file: "SchibstedGrotesk-Italic[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/schibstedgrotesk/upstream.yaml b/ofl/schibstedgrotesk/upstream.yaml
deleted file mode 100644
index 4235d52005281594adb7abbc735f138344179c7b..0000000000000000000000000000000000000000
--- a/ofl/schibstedgrotesk/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/SchibstedGrotesk[wght].ttf: SchibstedGrotesk[wght].ttf
-  fonts/variable/SchibstedGrotesk-Italic[wght].ttf: SchibstedGrotesk-Italic[wght].ttf
-archive:
diff --git a/ofl/secularone/METADATA.pb b/ofl/secularone/METADATA.pb
index 8bb750ab32d7a556cbdd926b3f77461c9e1dc68a..5067a79ca6bc7525265f227652fc5a322697fa81 100644
--- a/ofl/secularone/METADATA.pb
+++ b/ofl/secularone/METADATA.pb
@@ -19,4 +19,13 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/secular"
   commit: "7b6bf2d21cfc4bedfc320014224ef5713adc57a9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/SecularOne-Regular.ttf"
+    dest_file: "SecularOne-Regular.ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/secularone/upstream.yaml b/ofl/secularone/upstream.yaml
deleted file mode 100644
index 7a9a199b377af265034c409cd8f7bd7a2d41401a..0000000000000000000000000000000000000000
--- a/ofl/secularone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/SecularOne-Regular.ttf: SecularOne-Regular.ttf
-archive:
diff --git a/ofl/sedan/METADATA.pb b/ofl/sedan/METADATA.pb
index 14d780c438bebfecdc0795dbcfd4852598451d95..d29bf211a6deb7a879ad4024a97c7ce939968a6e 100644
--- a/ofl/sedan/METADATA.pb
+++ b/ofl/sedan/METADATA.pb
@@ -27,6 +27,23 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/sedan"
   commit: "35a4019d7c2547b58177cff9a65b91e47dd79546"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Sedan-Regular.ttf"
+    dest_file: "Sedan-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Sedan-Italic.ttf"
+    dest_file: "Sedan-Italic.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/sedan/upstream.yaml b/ofl/sedan/upstream.yaml
deleted file mode 100644
index fa843b4c541d74517b46e37364bc2953a4dd6490..0000000000000000000000000000000000000000
--- a/ofl/sedan/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Sedan-Regular.ttf: Sedan-Regular.ttf
-  fonts/ttf/Sedan-Italic.ttf: Sedan-Italic.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/sedansc/METADATA.pb b/ofl/sedansc/METADATA.pb
index 07a78d072c40dea56705d1c250c66fe3263126db..279dd7d5bdff392f70a225fd78a24b30d43a9f83 100644
--- a/ofl/sedansc/METADATA.pb
+++ b/ofl/sedansc/METADATA.pb
@@ -18,6 +18,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/sedan"
   commit: "35a4019d7c2547b58177cff9a65b91e47dd79546"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/SedanSC-Regular.ttf"
+    dest_file: "SedanSC-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/sedansc/upstream.yaml b/ofl/sedansc/upstream.yaml
deleted file mode 100644
index 20dca79a523e1e3e4dcf603b047c33b567dab412..0000000000000000000000000000000000000000
--- a/ofl/sedansc/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/SedanSC-Regular.ttf: SedanSC-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/sen/METADATA.pb b/ofl/sen/METADATA.pb
index c070851ac02b253a956acf7b210afb3f862c8f48..982abca9871582a9c792ef506f80b442d7fdc6ae 100644
--- a/ofl/sen/METADATA.pb
+++ b/ofl/sen/METADATA.pb
@@ -23,4 +23,13 @@ axes {
 source {
   repository_url: "https://github.com/philatype/Sen/"
   commit: "8a0a0d7648fb466ebbab3a00b0e07046b0814727"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Sen[wght].ttf"
+    dest_file: "Sen[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/sen/upstream.yaml b/ofl/sen/upstream.yaml
deleted file mode 100644
index 8c6ee8c7bf7fc57f045e1252a72fba85acbf769f..0000000000000000000000000000000000000000
--- a/ofl/sen/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Sen[wght].ttf: Sen[wght].ttf
-archive:
diff --git a/ofl/sendflowers/METADATA.pb b/ofl/sendflowers/METADATA.pb
index 7307522e24e730df3a205eb5256c8457f3a8fcfb..d42d1842cf5108fa4be51b4e629bc3239f20f7a9 100644
--- a/ofl/sendflowers/METADATA.pb
+++ b/ofl/sendflowers/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/send-flowers"
   commit: "5cee2ce8a5ce832b12d409fee214f54164916e92"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/SendFlowers-Regular.ttf"
+    dest_file: "SendFlowers-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/sendflowers/upstream.yaml b/ofl/sendflowers/upstream.yaml
deleted file mode 100644
index 8c9fe230a87b28dc5e76cbf0c60a55634a6734e7..0000000000000000000000000000000000000000
--- a/ofl/sendflowers/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/SendFlowers-Regular.ttf: SendFlowers-Regular.ttf
diff --git a/ofl/seymourone/METADATA.pb b/ofl/seymourone/METADATA.pb
index 2083c529aa8d1f680394be76657ccc4c1bf52abc..92dd8a732506e42c05f5f381ce6f0c051ac02ee3 100644
--- a/ofl/seymourone/METADATA.pb
+++ b/ofl/seymourone/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/seymourFont"
   commit: "67aa8dc604b252424e431a73ff50011cc474d881"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/SeymourOne-Regular.ttf"
+    dest_file: "SeymourOne-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/seymourone/upstream.yaml b/ofl/seymourone/upstream.yaml
deleted file mode 100644
index c64813f5047021e011796c292f6586c0ffbf17ef..0000000000000000000000000000000000000000
--- a/ofl/seymourone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/SeymourOne-Regular.ttf: SeymourOne-Regular.ttf
-archive:
diff --git a/ofl/shalimar/METADATA.pb b/ofl/shalimar/METADATA.pb
index 5a455a3d2fb0a25e140d8e0390ac899f8749cc47..0e04d16d27db6ca10ed30df7fdb83af1d3cda3e7 100644
--- a/ofl/shalimar/METADATA.pb
+++ b/ofl/shalimar/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/shalimar"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Shalimar-Regular.ttf"
+    dest_file: "Shalimar-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/shalimar/upstream.yaml b/ofl/shalimar/upstream.yaml
deleted file mode 100644
index 18d94492720f6551829460512b36a8ed27e6c9f7..0000000000000000000000000000000000000000
--- a/ofl/shalimar/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Shalimar-Regular.ttf: Shalimar-Regular.ttf
-repository_url: https://github.com/googlefonts/shalimar
diff --git a/ofl/shantellsans/METADATA.pb b/ofl/shantellsans/METADATA.pb
index 1abe0ccec4076c8e3b5088d69c0971ee47f2aa74..f8611842f580c0a3caf00da7a7c9859cf1f00719 100644
--- a/ofl/shantellsans/METADATA.pb
+++ b/ofl/shantellsans/METADATA.pb
@@ -50,6 +50,23 @@ axes {
 source {
   repository_url: "https://github.com/arrowtype/shantell-sans"
   commit: "eb212fc669479ba32740440fab2e4207057c37b2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/shantell_sans-for-googlefonts/ShantellSans[BNCE,INFM,SPAC,wght].ttf"
+    dest_file: "ShantellSans[BNCE,INFM,SPAC,wght].ttf"
+  }
+  files {
+    source_file: "fonts/shantell_sans-for-googlefonts/ShantellSans-Italic[BNCE,INFM,SPAC,wght].ttf"
+    dest_file: "ShantellSans-Italic[BNCE,INFM,SPAC,wght].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://www.shantellsans.com"
 stroke: "SANS_SERIF"
diff --git a/ofl/shantellsans/upstream.yaml b/ofl/shantellsans/upstream.yaml
deleted file mode 100644
index 4e275fb417339d53e9bf75d559d37ebe8fcdb90b..0000000000000000000000000000000000000000
--- a/ofl/shantellsans/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/shantell_sans-for-googlefonts/ShantellSans[BNCE,INFM,SPAC,wght].ttf: ShantellSans[BNCE,INFM,SPAC,wght].ttf
-  fonts/shantell_sans-for-googlefonts/ShantellSans-Italic[BNCE,INFM,SPAC,wght].ttf: ShantellSans-Italic[BNCE,INFM,SPAC,wght].ttf
-archive:
diff --git a/ofl/shanti/METADATA.pb b/ofl/shanti/METADATA.pb
index 81d44661e0a9d481ecdfd7bd62f69fddee570b3a..bbe2b9570c5a8a7fb09f70431504ef8b8bd71d63 100644
--- a/ofl/shanti/METADATA.pb
+++ b/ofl/shanti/METADATA.pb
@@ -18,5 +18,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/ShantiFont"
   commit: "511bc905381c9863b3dc241fc47523d1c3ba382f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Shanti-Regular.ttf"
+    dest_file: "Shanti-Regular.ttf"
+  }
+  branch: "master"
 }
-stroke:"SANS_SERIF"
+stroke: "SANS_SERIF"
diff --git a/ofl/shanti/upstream.yaml b/ofl/shanti/upstream.yaml
deleted file mode 100644
index 60f9a76f4f0bbab1b6d8a748c5efeb977ac0f90f..0000000000000000000000000000000000000000
--- a/ofl/shanti/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Shanti-Regular.ttf: Shanti-Regular.ttf
-archive:
diff --git a/ofl/shipporiantique/METADATA.pb b/ofl/shipporiantique/METADATA.pb
index 2216ec591717841640d437a2ac66dce793ff0867..1d71d205faba8bfab6901937bded46cdaa9affb7 100644
--- a/ofl/shipporiantique/METADATA.pb
+++ b/ofl/shipporiantique/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontdasu/ShipporiAntique"
+  files {
+    source_file: "fonts/ttf/ShipporiAntique-Regular.ttf"
+    dest_file: "ShipporiAntique-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/shipporiantique/upstream.yaml b/ofl/shipporiantique/upstream.yaml
deleted file mode 100644
index 00fc9c8a58ecf92483bdb7930759dc7ff4d9eb3a..0000000000000000000000000000000000000000
--- a/ofl/shipporiantique/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/ShipporiAntique-Regular.ttf: ShipporiAntique-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontdasu/ShipporiAntique.git
diff --git a/ofl/shipporiantiqueb1/METADATA.pb b/ofl/shipporiantiqueb1/METADATA.pb
index 40df27599f62853f09c2e93fd688b32bf4bad276..69d10ba2e16317affaeb96a2bc2a7f3b9f693192 100644
--- a/ofl/shipporiantiqueb1/METADATA.pb
+++ b/ofl/shipporiantiqueb1/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontdasu/ShipporiAntique"
+  files {
+    source_file: "fonts/ttf/ShipporiAntiqueB1-Regular.ttf"
+    dest_file: "ShipporiAntiqueB1-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "B1_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/shipporiantiqueb1/upstream.yaml b/ofl/shipporiantiqueb1/upstream.yaml
deleted file mode 100644
index cda45b759f6e9b451394be70d05c5f1b89c93e2a..0000000000000000000000000000000000000000
--- a/ofl/shipporiantiqueb1/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/ShipporiAntiqueB1-Regular.ttf: ShipporiAntiqueB1-Regular.ttf
-  OFL.txt: OFL.txt
-  B1_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontdasu/ShipporiAntique.git
diff --git a/ofl/shipporimincho/METADATA.pb b/ofl/shipporimincho/METADATA.pb
index e5f9fb89bb5463df95789846602d1565cfe21cd2..dff8d1f95a83ecb2bae98ae0b7cd0c3b82bc9176 100644
--- a/ofl/shipporimincho/METADATA.pb
+++ b/ofl/shipporimincho/METADATA.pb
@@ -52,3 +52,35 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontdasu/ShipporiMincho"
+  files {
+    source_file: "fonts/ttf/ShipporiMincho-Regular.ttf"
+    dest_file: "ShipporiMincho-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMincho-Medium.ttf"
+    dest_file: "ShipporiMincho-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMincho-SemiBold.ttf"
+    dest_file: "ShipporiMincho-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMincho-Bold.ttf"
+    dest_file: "ShipporiMincho-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMincho-ExtraBold.ttf"
+    dest_file: "ShipporiMincho-ExtraBold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/shipporimincho/upstream.yaml b/ofl/shipporimincho/upstream.yaml
deleted file mode 100644
index a66ec504ec5908629528848cf24aef3404547265..0000000000000000000000000000000000000000
--- a/ofl/shipporimincho/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: master
-files:
-  fonts/ttf/ShipporiMincho-Regular.ttf: ShipporiMincho-Regular.ttf
-  fonts/ttf/ShipporiMincho-Medium.ttf: ShipporiMincho-Medium.ttf
-  fonts/ttf/ShipporiMincho-SemiBold.ttf: ShipporiMincho-SemiBold.ttf
-  fonts/ttf/ShipporiMincho-Bold.ttf: ShipporiMincho-Bold.ttf
-  fonts/ttf/ShipporiMincho-ExtraBold.ttf: ShipporiMincho-ExtraBold.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontdasu/ShipporiMincho
\ No newline at end of file
diff --git a/ofl/shipporiminchob1/METADATA.pb b/ofl/shipporiminchob1/METADATA.pb
index c305296c87c585d532aa90e0bd306503d0f68ffb..b177020cc9ced7fd691b1eab0f6fc2ea39edbc40 100644
--- a/ofl/shipporiminchob1/METADATA.pb
+++ b/ofl/shipporiminchob1/METADATA.pb
@@ -52,3 +52,35 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontdasu/ShipporiMincho"
+  files {
+    source_file: "fonts/ttf/ShipporiMinchoB1-Regular.ttf"
+    dest_file: "ShipporiMinchoB1-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMinchoB1-Medium.ttf"
+    dest_file: "ShipporiMinchoB1-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMinchoB1-SemiBold.ttf"
+    dest_file: "ShipporiMinchoB1-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMinchoB1-Bold.ttf"
+    dest_file: "ShipporiMinchoB1-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ShipporiMinchoB1-ExtraBold.ttf"
+    dest_file: "ShipporiMinchoB1-ExtraBold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/shipporiminchob1/upstream.yaml b/ofl/shipporiminchob1/upstream.yaml
deleted file mode 100644
index ba2a6b0388c8e119c66d917a3d7e0f765a83e83d..0000000000000000000000000000000000000000
--- a/ofl/shipporiminchob1/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: master
-files:
-  fonts/ttf/ShipporiMinchoB1-Regular.ttf: ShipporiMinchoB1-Regular.ttf
-  fonts/ttf/ShipporiMinchoB1-Medium.ttf: ShipporiMinchoB1-Medium.ttf
-  fonts/ttf/ShipporiMinchoB1-SemiBold.ttf: ShipporiMinchoB1-SemiBold.ttf
-  fonts/ttf/ShipporiMinchoB1-Bold.ttf: ShipporiMinchoB1-Bold.ttf
-  fonts/ttf/ShipporiMinchoB1-ExtraBold.ttf: ShipporiMinchoB1-ExtraBold.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontdasu/ShipporiMincho
\ No newline at end of file
diff --git a/ofl/shizuru/METADATA.pb b/ofl/shizuru/METADATA.pb
index 9b7b1be815be98be50d790ca5dba657a974958cf..fc03fa337ae50a9616d8cea1f62e491c541a6e99 100644
--- a/ofl/shizuru/METADATA.pb
+++ b/ofl/shizuru/METADATA.pb
@@ -15,6 +15,22 @@ fonts {
 subsets: "japanese"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/shibuyafont/shizuru-font"
+  files {
+    source_file: "fonts/ttf/ShizuruFont-Regular.ttf"
+    dest_file: "Shizuru-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/shizuru/upstream.yaml b/ofl/shizuru/upstream.yaml
deleted file mode 100644
index 4bf10b02575f9d7a39080bb0fd6216cf252c7cde..0000000000000000000000000000000000000000
--- a/ofl/shizuru/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/ShizuruFont-Regular.ttf: Shizuru-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/shibuyafont/shizuru-font.git
diff --git a/ofl/sigmar/METADATA.pb b/ofl/sigmar/METADATA.pb
index a254c588eb0f2906cf2c099589862ec7fab8935b..727a1d71c6b02cd9b46e73695631ba1517dc8ba8 100644
--- a/ofl/sigmar/METADATA.pb
+++ b/ofl/sigmar/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/sigmarone"
   commit: "1fb4311d78953da0f943e0e4b806acdd076af81b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Sigmar-Regular.ttf"
+    dest_file: "Sigmar-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/sigmar/upstream.yaml b/ofl/sigmar/upstream.yaml
deleted file mode 100644
index 07f2c32be53a8187a5f6dcef57366c9cc715b5cb..0000000000000000000000000000000000000000
--- a/ofl/sigmar/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Sigmar-Regular.ttf: Sigmar-Regular.ttf
-archive:
diff --git a/ofl/signika/METADATA.pb b/ofl/signika/METADATA.pb
index 89ab5a17d94374c0cba50aa586d4f01520d7d51d..de813cf8b2e148b4ad5c546a958b9195fa962e08 100644
--- a/ofl/signika/METADATA.pb
+++ b/ofl/signika/METADATA.pb
@@ -29,4 +29,13 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Signika"
   commit: "7361a224d1d77274af1ea11dd06448c54c16f598"
+  files {
+    source_file: "fonts/variable/Signika[GRAD,wght].ttf"
+    dest_file: "Signika[GRAD,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
 }
diff --git a/ofl/signika/upstream.yaml b/ofl/signika/upstream.yaml
deleted file mode 100644
index 3836dc16e258904c26c6975f166234f6a975d95c..0000000000000000000000000000000000000000
--- a/ofl/signika/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  fonts/variable/Signika[GRAD,wght].ttf: Signika[GRAD,wght].ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/signikanegative/METADATA.pb b/ofl/signikanegative/METADATA.pb
index 22ffb0371373686ba2068c7122fe747016098e8c..8a539624845760ae52814a6850837b3f5f9066db 100644
--- a/ofl/signikanegative/METADATA.pb
+++ b/ofl/signikanegative/METADATA.pb
@@ -21,3 +21,15 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/aaronbell/signika"
+  files {
+    source_file: "fonts/variable_negative/SignikaNegative[wght].ttf"
+    dest_file: "SignikaNegative[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/signikanegative/upstream.yaml b/ofl/signikanegative/upstream.yaml
deleted file mode 100644
index 5970cd74804856288285bf06827565d408e6f2e9..0000000000000000000000000000000000000000
--- a/ofl/signikanegative/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable_negative/SignikaNegative[wght].ttf: SignikaNegative[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/aaronbell/signika
diff --git a/ofl/silkscreen/METADATA.pb b/ofl/silkscreen/METADATA.pb
index d6efacf9d43798081eefb5224994fde5df95bb13..6d10fddf3c0d60362c62f56c231993da4ba2a452 100644
--- a/ofl/silkscreen/METADATA.pb
+++ b/ofl/silkscreen/METADATA.pb
@@ -27,6 +27,19 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/googlefonts/silkscreen"
   commit: "8f254a7d67a37f8da1f4f82d9c4281458f5c554c"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Silkscreen-Regular.ttf"
+    dest_file: "Silkscreen-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Silkscreen-Bold.ttf"
+    dest_file: "Silkscreen-Bold.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/silkscreen/upstream.yaml b/ofl/silkscreen/upstream.yaml
deleted file mode 100644
index ddda08f460eada1fd468a2dd4c3a6a54d20a3f8c..0000000000000000000000000000000000000000
--- a/ofl/silkscreen/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Silkscreen-Regular.ttf: Silkscreen-Regular.ttf
-  fonts/ttf/Silkscreen-Bold.ttf: Silkscreen-Bold.ttf
-archive:
diff --git a/ofl/sixtyfour/METADATA.pb b/ofl/sixtyfour/METADATA.pb
index 16fa16048da2306b5c51f3c32019acf6c109c73e..c6def90fb6362ead5683419f355e42e681232687 100644
--- a/ofl/sixtyfour/METADATA.pb
+++ b/ofl/sixtyfour/METADATA.pb
@@ -30,7 +30,20 @@ axes {
 source {
   repository_url: "https://github.com/jenskutilek/homecomputer-fonts"
   commit: "09b2f79d686453d3bc160d04a687488e66962c43"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Sixtyfour/fonts/variable/Sixtyfour[BLED,SCAN].ttf"
+    dest_file: "Sixtyfour[BLED,SCAN].ttf"
+  }
+  branch: "master"
 }
+minisite_url: "https://jenskutilek.github.io/homecomputer-fonts/documentation/demo-sixtyfour.html"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
-minisite_url: "https://jenskutilek.github.io/homecomputer-fonts/documentation/demo-sixtyfour.html"
diff --git a/ofl/sixtyfour/upstream.yaml b/ofl/sixtyfour/upstream.yaml
deleted file mode 100644
index 6d6031aedade49a27f5203aa815f639ccc702b71..0000000000000000000000000000000000000000
--- a/ofl/sixtyfour/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Sixtyfour/fonts/variable/Sixtyfour[BLED,SCAN].ttf: Sixtyfour[BLED,SCAN].ttf
-archive:
diff --git a/ofl/slacksideone/METADATA.pb b/ofl/slacksideone/METADATA.pb
index 9ff25bca663e9215788785144971ba1806118a59..709462170560dbdf82d5b2d85c9a47e59d016150 100644
--- a/ofl/slacksideone/METADATA.pb
+++ b/ofl/slacksideone/METADATA.pb
@@ -16,8 +16,24 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
-languages: "ja_Kana"
-languages: "ja_Hira"
+source {
+  repository_url: "https://github.com/ManiackersDesign/slackside"
+  files {
+    source_file: "fonts/ttf/SlacksideOne-Regular.ttf"
+    dest_file: "SlacksideOne-Regular.ttf"
+  }
+  files {
+    source_file: "ofl.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/slacksideone/upstream.yaml b/ofl/slacksideone/upstream.yaml
deleted file mode 100644
index 44b14132756d8078a5a895ed7d101f4cbafea5a7..0000000000000000000000000000000000000000
--- a/ofl/slacksideone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/SlacksideOne-Regular.ttf: SlacksideOne-Regular.ttf
-  ofl.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/ManiackersDesign/slackside.git
diff --git a/ofl/smooch/METADATA.pb b/ofl/smooch/METADATA.pb
index a057ee78f93cb19fd0c7673c9edf90e8ffa36008..db44541a2306174ad9455795edfaaf3447ea04bf 100644
--- a/ofl/smooch/METADATA.pb
+++ b/ofl/smooch/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/smooch"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Smooch-Regular.ttf"
+    dest_file: "Smooch-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/smooch/upstream.yaml b/ofl/smooch/upstream.yaml
deleted file mode 100644
index 8c5ec5e790be74abad7a2469d0e589dd5b79a3cc..0000000000000000000000000000000000000000
--- a/ofl/smooch/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Smooch-Regular.ttf: Smooch-Regular.ttf
-repository_url: https://github.com/googlefonts/smooch
diff --git a/ofl/smoochsans/METADATA.pb b/ofl/smoochsans/METADATA.pb
index c54e767725d883691fa4210bb7bd16bc8e4eaf2e..f48cb985096f53e4b925e7c7b13b28a44b0508ff 100644
--- a/ofl/smoochsans/METADATA.pb
+++ b/ofl/smoochsans/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/googlefonts/smooch-sans"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/SmoochSans[wght].ttf"
+    dest_file: "SmoochSans[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/smoochsans/upstream.yaml b/ofl/smoochsans/upstream.yaml
deleted file mode 100644
index 7e309a304fa20b67d9fc71492554cc596a234c56..0000000000000000000000000000000000000000
--- a/ofl/smoochsans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/SmoochSans[wght].ttf: SmoochSans[wght].ttf
-repository_url: https://github.com/googlefonts/smooch-sans
diff --git a/ofl/sofiasans/METADATA.pb b/ofl/sofiasans/METADATA.pb
index d2e4bd7b5e5a378258fe49263cfd85572f588930..215312c32cb8c3f6bd2eab7c2fdfdc6b75c1a3a9 100644
--- a/ofl/sofiasans/METADATA.pb
+++ b/ofl/sofiasans/METADATA.pb
@@ -35,5 +35,22 @@ axes {
 source {
   repository_url: "https://github.com/lettersoup/Sofia-Sans"
   commit: "185877d082cebb40facd65143326147431863688"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Normal/SofiaSans[wght].ttf"
+    dest_file: "SofiaSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Normal/SofiaSans-Italic[wght].ttf"
+    dest_file: "SofiaSans-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 minisite_url: "https://www.lettersoup.de/sofia-sans/"
diff --git a/ofl/sofiasans/upstream.yaml b/ofl/sofiasans/upstream.yaml
deleted file mode 100644
index 28082220bf8c5a828c309c98ce2f2ad4c9306684..0000000000000000000000000000000000000000
--- a/ofl/sofiasans/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Normal/SofiaSans[wght].ttf: SofiaSans[wght].ttf
-  fonts/variable/Normal/SofiaSans-Italic[wght].ttf: SofiaSans-Italic[wght].ttf
-archive:
diff --git a/ofl/sofiasanscondensed/METADATA.pb b/ofl/sofiasanscondensed/METADATA.pb
index f7772d07be94a0f9d713b6415282b14593f9cd4b..e056bb8d9a9330666feae6de16d07cb42560ee4c 100644
--- a/ofl/sofiasanscondensed/METADATA.pb
+++ b/ofl/sofiasanscondensed/METADATA.pb
@@ -35,5 +35,22 @@ axes {
 source {
   repository_url: "https://github.com/lettersoup/Sofia-Sans"
   commit: "185877d082cebb40facd65143326147431863688"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Condensed/SofiaSansCondensed[wght].ttf"
+    dest_file: "SofiaSansCondensed[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Condensed/SofiaSansCondensed-Italic[wght].ttf"
+    dest_file: "SofiaSansCondensed-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 minisite_url: "https://www.lettersoup.de/sofia-sans/"
diff --git a/ofl/sofiasanscondensed/upstream.yaml b/ofl/sofiasanscondensed/upstream.yaml
deleted file mode 100644
index 0fe89cdbdd59dfdf6a58d3af3a46e307a01252b0..0000000000000000000000000000000000000000
--- a/ofl/sofiasanscondensed/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Condensed/SofiaSansCondensed[wght].ttf: SofiaSansCondensed[wght].ttf
-  fonts/variable/Condensed/SofiaSansCondensed-Italic[wght].ttf: SofiaSansCondensed-Italic[wght].ttf
-archive:
diff --git a/ofl/sofiasansextracondensed/METADATA.pb b/ofl/sofiasansextracondensed/METADATA.pb
index 58fa8743502f8832a4a948d0d0d24146eb329e9f..490253011940bdd1d738966c9e9e62a3a07cbae9 100644
--- a/ofl/sofiasansextracondensed/METADATA.pb
+++ b/ofl/sofiasansextracondensed/METADATA.pb
@@ -35,5 +35,22 @@ axes {
 source {
   repository_url: "https://github.com/lettersoup/Sofia-Sans"
   commit: "185877d082cebb40facd65143326147431863688"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Extra-Condensed/SofiaSansExtraCondensed[wght].ttf"
+    dest_file: "SofiaSansExtraCondensed[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Extra-Condensed/SofiaSansExtraCondensed-Italic[wght].ttf"
+    dest_file: "SofiaSansExtraCondensed-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 minisite_url: "https://www.lettersoup.de/sofia-sans/"
diff --git a/ofl/sofiasansextracondensed/upstream.yaml b/ofl/sofiasansextracondensed/upstream.yaml
deleted file mode 100644
index 066b172f29b6ecc51504deda280fc85b287d6344..0000000000000000000000000000000000000000
--- a/ofl/sofiasansextracondensed/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Extra-Condensed/SofiaSansExtraCondensed[wght].ttf: SofiaSansExtraCondensed[wght].ttf
-  fonts/variable/Extra-Condensed/SofiaSansExtraCondensed-Italic[wght].ttf: SofiaSansExtraCondensed-Italic[wght].ttf
-archive:
diff --git a/ofl/sofiasanssemicondensed/METADATA.pb b/ofl/sofiasanssemicondensed/METADATA.pb
index fda3a9870e430a441e676d277c121f0041e219b9..9e2948723dd1b65176c5c0efb8d8c6aaa5a63afd 100644
--- a/ofl/sofiasanssemicondensed/METADATA.pb
+++ b/ofl/sofiasanssemicondensed/METADATA.pb
@@ -35,5 +35,22 @@ axes {
 source {
   repository_url: "https://github.com/lettersoup/Sofia-Sans"
   commit: "185877d082cebb40facd65143326147431863688"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Semi-Condensed/SofiaSansSemiCondensed[wght].ttf"
+    dest_file: "SofiaSansSemiCondensed[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Semi-Condensed/SofiaSansSemiCondensed-Italic[wght].ttf"
+    dest_file: "SofiaSansSemiCondensed-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 minisite_url: "https://www.lettersoup.de/sofia-sans/"
diff --git a/ofl/sofiasanssemicondensed/upstream.yaml b/ofl/sofiasanssemicondensed/upstream.yaml
deleted file mode 100644
index 3af1e32a855b6485f615a0ae847f3544b30e19b0..0000000000000000000000000000000000000000
--- a/ofl/sofiasanssemicondensed/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Semi-Condensed/SofiaSansSemiCondensed[wght].ttf: SofiaSansSemiCondensed[wght].ttf
-  fonts/variable/Semi-Condensed/SofiaSansSemiCondensed-Italic[wght].ttf: SofiaSansSemiCondensed-Italic[wght].ttf
-archive:
diff --git a/ofl/solitreo/METADATA.pb b/ofl/solitreo/METADATA.pb
index 9056db3039dec1aea9fa99f57467fc3aa08e0412..ce6b87d426ae50874103910fc40cbc79391fb872 100644
--- a/ofl/solitreo/METADATA.pb
+++ b/ofl/solitreo/METADATA.pb
@@ -17,7 +17,20 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 source {
-  repository_url: "https://github.com/ladinoprojects/solitreo.git"
+  repository_url: "https://github.com/ladinoprojects/solitreo"
   commit: "9b03239708d7d37e86cb2594cf9360121be0740e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Solitreo-Regular.ttf"
+    dest_file: "Solitreo-Regular.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Hebr"
diff --git a/ofl/solitreo/upstream.yaml b/ofl/solitreo/upstream.yaml
deleted file mode 100644
index bd691d36fff166252884c73b96b564080cea794b..0000000000000000000000000000000000000000
--- a/ofl/solitreo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Solitreo-Regular.ttf: Solitreo-Regular.ttf
diff --git a/ofl/sometypemono/METADATA.pb b/ofl/sometypemono/METADATA.pb
index 89f8d86f52ed38122b8830ec1ea72fdb60ae1903..eb78313b82ceee0296e9030745c400051793f27a 100644
--- a/ofl/sometypemono/METADATA.pb
+++ b/ofl/sometypemono/METADATA.pb
@@ -32,6 +32,19 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/sometype-mono"
   commit: "cf583c22bc6279d23e587e3ca310e131dd277286"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/SometypeMono[wght].ttf"
+    dest_file: "SometypeMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/SometypeMono-Italic[wght].ttf"
+    dest_file: "SometypeMono-Italic[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "MONOSPACE"
diff --git a/ofl/sometypemono/upstream.yaml b/ofl/sometypemono/upstream.yaml
deleted file mode 100644
index 9ef000ba6b96b86ae0a18f3cce1334115c16eee8..0000000000000000000000000000000000000000
--- a/ofl/sometypemono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/SometypeMono[wght].ttf: SometypeMono[wght].ttf
-  fonts/variable/SometypeMono-Italic[wght].ttf: SometypeMono-Italic[wght].ttf
diff --git a/ofl/sono/METADATA.pb b/ofl/sono/METADATA.pb
index 8fca5e132c1330831c38b99c9d6f813c00b8f960..048f66b2794578fdb2a279bc000ee995624a02ce 100644
--- a/ofl/sono/METADATA.pb
+++ b/ofl/sono/METADATA.pb
@@ -34,6 +34,15 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/sursly/sono"
   commit: "0e7274983bb034e232c9903f9d827ba4d595a888"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/sono[MONO,wght].ttf"
+    dest_file: "sono[MONO,wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "MONOSPACE"
diff --git a/ofl/sono/upstream.yaml b/ofl/sono/upstream.yaml
deleted file mode 100644
index 99981c9c3777a6c1aa013e26e0fa841c8bd55193..0000000000000000000000000000000000000000
--- a/ofl/sono/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/sono[MONO,wght].ttf: sono[MONO,wght].ttf
-archive:
diff --git a/ofl/spacegrotesk/METADATA.pb b/ofl/spacegrotesk/METADATA.pb
index 5df34b800c5b0f534f8a340b05be04867ed08ae3..480d7563b1aa53a864fc032a203d099c02238f68 100644
--- a/ofl/spacegrotesk/METADATA.pb
+++ b/ofl/spacegrotesk/METADATA.pb
@@ -21,4 +21,36 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/floriankarsten/space-grotesk"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/SpaceGrotesk[wght].ttf"
+    dest_file: "SpaceGrotesk[wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/static/SpaceGrotesk-Bold.ttf"
+    dest_file: "static/SpaceGrotesk-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/static/SpaceGrotesk-Light.ttf"
+    dest_file: "static/SpaceGrotesk-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/static/SpaceGrotesk-Medium.ttf"
+    dest_file: "static/SpaceGrotesk-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/static/SpaceGrotesk-Regular.ttf"
+    dest_file: "static/SpaceGrotesk-Regular.ttf"
+  }
+  branch: "master"
+}
 minisite_url: "https://floriankarsten.github.io/space-grotesk"
diff --git a/ofl/spacegrotesk/upstream.yaml b/ofl/spacegrotesk/upstream.yaml
deleted file mode 100644
index c2991578d42c25f4eec59e520f1cf1beb0bc8f0c..0000000000000000000000000000000000000000
--- a/ofl/spacegrotesk/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/SpaceGrotesk[wght].ttf: SpaceGrotesk[wght].ttf
-  fonts/ttf/static/SpaceGrotesk-Bold.ttf: static/SpaceGrotesk-Bold.ttf
-  fonts/ttf/static/SpaceGrotesk-Light.ttf: static/SpaceGrotesk-Light.ttf
-  fonts/ttf/static/SpaceGrotesk-Medium.ttf: static/SpaceGrotesk-Medium.ttf
-  fonts/ttf/static/SpaceGrotesk-Regular.ttf: static/SpaceGrotesk-Regular.ttf
-repository_url: https://github.com/floriankarsten/space-grotesk
diff --git a/ofl/splash/METADATA.pb b/ofl/splash/METADATA.pb
index ed9a5ba91b7e58174b2f8c382d5be358a4018998..26168bbd3bed46e5d19883637caefc6e3477de9f 100644
--- a/ofl/splash/METADATA.pb
+++ b/ofl/splash/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/splash"
   commit: "7653a0b5fcccd37a920ba9a4da8f1680c0203af2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Splash-Regular.ttf"
+    dest_file: "Splash-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/splash/upstream.yaml b/ofl/splash/upstream.yaml
deleted file mode 100644
index 044c86aa235d5127854dca24a830add214af6b6a..0000000000000000000000000000000000000000
--- a/ofl/splash/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Splash-Regular.ttf: Splash-Regular.ttf
diff --git a/ofl/splinesans/METADATA.pb b/ofl/splinesans/METADATA.pb
index 81c953fd2999f67c730035c878de87d216cfc7a7..4dc92e608812093d773c7aeeaa8daed4ac069c1d 100644
--- a/ofl/splinesans/METADATA.pb
+++ b/ofl/splinesans/METADATA.pb
@@ -23,4 +23,13 @@ axes {
 source {
   repository_url: "https://github.com/SorkinType/SplineSans"
   commit: "d524ab0d587c5067a17284918cd5f144ac521ec9"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/SplineSans[wght].ttf"
+    dest_file: "SplineSans[wght].ttf"
+  }
+  branch: "main"
 }
diff --git a/ofl/splinesans/upstream.yaml b/ofl/splinesans/upstream.yaml
deleted file mode 100644
index c5bc609fe3f86c4513f235d2ef6bd03f0d426164..0000000000000000000000000000000000000000
--- a/ofl/splinesans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/SplineSans[wght].ttf: SplineSans[wght].ttf
-archive:
diff --git a/ofl/splinesansmono/METADATA.pb b/ofl/splinesansmono/METADATA.pb
index debef701a14314f688870ba0dce07bc7c2abe660..76cb16745bc0d7e99c78c8f84ad4240dce660ba3 100644
--- a/ofl/splinesansmono/METADATA.pb
+++ b/ofl/splinesansmono/METADATA.pb
@@ -33,6 +33,19 @@ axes {
 source {
   repository_url: "https://github.com/SorkinType/SplineSansMono"
   commit: "97fed7e4bc166ad9c93d3af9c4c7ebf3104a57ed"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/SplineSansMono[wght].ttf"
+    dest_file: "SplineSansMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/SplineSansMono-Italic[wght].ttf"
+    dest_file: "SplineSansMono-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "MONOSPACE"
diff --git a/ofl/splinesansmono/upstream.yaml b/ofl/splinesansmono/upstream.yaml
deleted file mode 100644
index 54d02a61c07cef420a5a614423ef81a91aca9783..0000000000000000000000000000000000000000
--- a/ofl/splinesansmono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/SplineSansMono[wght].ttf: SplineSansMono[wght].ttf
-  fonts/variable/SplineSansMono-Italic[wght].ttf: SplineSansMono-Italic[wght].ttf
diff --git a/ofl/squarepeg/METADATA.pb b/ofl/squarepeg/METADATA.pb
index 3595f7d49adc11b89543766a94026c1352df6fa7..10034c91e356dc93d30d08ff54205745ee3bf85b 100644
--- a/ofl/squarepeg/METADATA.pb
+++ b/ofl/squarepeg/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/square-peg"
   commit: "ec1628592761b8b9e7713b6d2b463fb9724c6e8e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/SquarePeg-Regular.ttf"
+    dest_file: "SquarePeg-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/squarepeg/upstream.yaml b/ofl/squarepeg/upstream.yaml
deleted file mode 100644
index 167a9a5b0ec142ba8c8944d010f42bd7ca052ec5..0000000000000000000000000000000000000000
--- a/ofl/squarepeg/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/SquarePeg-Regular.ttf: SquarePeg-Regular.ttf
diff --git a/ofl/stick/METADATA.pb b/ofl/stick/METADATA.pb
index 8f17ad7af9bc9a65ccae05eac09414e10593e10f..4bb4f42d917e90baa946082085dda70f96cba09c 100644
--- a/ofl/stick/METADATA.pb
+++ b/ofl/stick/METADATA.pb
@@ -17,5 +17,21 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/Stick"
+  files {
+    source_file: "fonts/ttf/Stick-Regular.ttf"
+    dest_file: "Stick-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/stick/upstream.yaml b/ofl/stick/upstream.yaml
deleted file mode 100644
index d1843e74d5fd471f5f33164462a9b78fa8af77c8..0000000000000000000000000000000000000000
--- a/ofl/stick/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/Stick-Regular.ttf: Stick-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/Stick.git
diff --git a/ofl/sticknobills/METADATA.pb b/ofl/sticknobills/METADATA.pb
index 6548aab6326e8cd5a66115db5857eeddc606b55b..45c808c9d9acdb8e9c5476d53dfbe5023e81d597 100644
--- a/ofl/sticknobills/METADATA.pb
+++ b/ofl/sticknobills/METADATA.pb
@@ -21,5 +21,21 @@ axes {
   min_value: 200.0
   max_value: 800.0
 }
+source {
+  repository_url: "https://github.com/mooniak/stick-no-bills-font"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/StickNoBills[wght].ttf"
+    dest_file: "StickNoBills[wght].ttf"
+  }
+  branch: "main"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/sticknobills/upstream.yaml b/ofl/sticknobills/upstream.yaml
deleted file mode 100644
index feeafa76cafe818367f761e902d399867defaf9c..0000000000000000000000000000000000000000
--- a/ofl/sticknobills/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/StickNoBills[wght].ttf: StickNoBills[wght].ttf
-repository_url: https://github.com/mooniak/stick-no-bills-font.git
diff --git a/ofl/stixtwomath/METADATA.pb b/ofl/stixtwomath/METADATA.pb
index 71f702a16f77da434dfaacb767fd5af164fb0c38..322d75ef62e182fca4f19d7541a881ca475c155a 100644
--- a/ofl/stixtwomath/METADATA.pb
+++ b/ofl/stixtwomath/METADATA.pb
@@ -19,3 +19,19 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/stipub/stixfonts"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/static_ttf/STIXTwoMath-Regular.ttf"
+    dest_file: "STIXTwoMath-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/stixtwomath/upstream.yaml b/ofl/stixtwomath/upstream.yaml
deleted file mode 100644
index f2c5dcb5217683312d826600e580d278c9855185..0000000000000000000000000000000000000000
--- a/ofl/stixtwomath/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/static_ttf/STIXTwoMath-Regular.ttf: STIXTwoMath-Regular.ttf
-repository_url: https://github.com/stipub/stixfonts
diff --git a/ofl/stixtwotext/METADATA.pb b/ofl/stixtwotext/METADATA.pb
index ec287355a3c48ae905d0f374aaebc23b7a62ddbe..94c2deaa6cf576e70f51a5573e70f5508a1693ea 100644
--- a/ofl/stixtwotext/METADATA.pb
+++ b/ofl/stixtwotext/METADATA.pb
@@ -33,3 +33,23 @@ axes {
   min_value: 400.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/stipub/stixfonts"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable_ttf/STIXTwoText[wght].ttf"
+    dest_file: "STIXTwoText[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable_ttf/STIXTwoText-Italic[wght].ttf"
+    dest_file: "STIXTwoText-Italic[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/stixtwotext/upstream.yaml b/ofl/stixtwotext/upstream.yaml
deleted file mode 100644
index 4284085042962a8609e8890d945a09a6e48e8b9e..0000000000000000000000000000000000000000
--- a/ofl/stixtwotext/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable_ttf/STIXTwoText[wght].ttf: STIXTwoText[wght].ttf
-  fonts/variable_ttf/STIXTwoText-Italic[wght].ttf: STIXTwoText-Italic[wght].ttf
-repository_url: https://github.com/stipub/stixfonts
diff --git a/ofl/strait/METADATA.pb b/ofl/strait/METADATA.pb
index d10c8b0b7e601108d8d61165a8d9810db69adc7f..78d8ad639ecf820df21043bed93fb49dc463c1d0 100644
--- a/ofl/strait/METADATA.pb
+++ b/ofl/strait/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/Strait"
   commit: "527c8d122601563758492117058d6727aa58cd32"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Strait-Regular.ttf"
+    dest_file: "Strait-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/strait/upstream.yaml b/ofl/strait/upstream.yaml
deleted file mode 100644
index 2309cf121d29e7cd9ee4e517dcc53ab92406b437..0000000000000000000000000000000000000000
--- a/ofl/strait/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Strait-Regular.ttf: Strait-Regular.ttf
-archive:
diff --git a/ofl/stylescript/METADATA.pb b/ofl/stylescript/METADATA.pb
index 2e610065ba06951e1b58ff080bafa1b862d3eec5..4a74a7cd40c4b90f712a414d8ea510d0766982c7 100644
--- a/ofl/stylescript/METADATA.pb
+++ b/ofl/stylescript/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/style-script"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/StyleScript-Regular.ttf"
+    dest_file: "StyleScript-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/stylescript/upstream.yaml b/ofl/stylescript/upstream.yaml
deleted file mode 100644
index b03ee68eaa69ec6692bec2c3fdce989af20760a0..0000000000000000000000000000000000000000
--- a/ofl/stylescript/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/StyleScript-Regular.ttf: StyleScript-Regular.ttf
-repository_url: https://github.com/googlefonts/style-script
diff --git a/ofl/suwannaphum/METADATA.pb b/ofl/suwannaphum/METADATA.pb
index ef95625578ef1dcc199ffb3d294e7fd7c716ad43..1ffe5369e6f180c0962dfaeeb2b85f88fb80f86f 100644
--- a/ofl/suwannaphum/METADATA.pb
+++ b/ofl/suwannaphum/METADATA.pb
@@ -51,3 +51,31 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Suwannaphum"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Suwannaphum-Thin.ttf"
+    dest_file: "Suwannaphum-Thin.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Suwannaphum-Light.ttf"
+    dest_file: "Suwannaphum-Light.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Suwannaphum-Regular.ttf"
+    dest_file: "Suwannaphum-Regular.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Suwannaphum-Bold.ttf"
+    dest_file: "Suwannaphum-Bold.ttf"
+  }
+  files {
+    source_file: "Release/ttf/Suwannaphum-Black.ttf"
+    dest_file: "Suwannaphum-Black.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/suwannaphum/upstream.yaml b/ofl/suwannaphum/upstream.yaml
deleted file mode 100644
index 6f07a4631fc9b754a977f27ad68211fa1cedac19..0000000000000000000000000000000000000000
--- a/ofl/suwannaphum/upstream.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Suwannaphum-Thin.ttf: Suwannaphum-Thin.ttf
-  Release/ttf/Suwannaphum-Light.ttf: Suwannaphum-Light.ttf
-  Release/ttf/Suwannaphum-Regular.ttf: Suwannaphum-Regular.ttf
-  Release/ttf/Suwannaphum-Bold.ttf: Suwannaphum-Bold.ttf
-  Release/ttf/Suwannaphum-Black.ttf: Suwannaphum-Black.ttf
-repository_url: https://github.com/danhhong/Suwannaphum.git
diff --git a/ofl/syne/METADATA.pb b/ofl/syne/METADATA.pb
index 16bead4e7aa193a16a4b004d00a2cf4c1dcb6e18..db4475395b4e1c200657d41dd9d018555d6d909b 100644
--- a/ofl/syne/METADATA.pb
+++ b/ofl/syne/METADATA.pb
@@ -25,6 +25,15 @@ axes {
 source {
   repository_url: "https://gitlab.com/bonjour-monde/fonderie/syne-typeface"
   commit: "d9098c0a72125d411dbb225a2e5a61dc15265ffc"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Syne[wght].ttf"
+    dest_file: "Syne[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/syne/upstream.yaml b/ofl/syne/upstream.yaml
deleted file mode 100644
index 087191cedf2fb594d310ed94183c9d7c37cb69de..0000000000000000000000000000000000000000
--- a/ofl/syne/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Syne[wght].ttf: Syne[wght].ttf
diff --git a/ofl/tacone/METADATA.pb b/ofl/tacone/METADATA.pb
index cc978da35749306e344f84f0e3635a86026639d6..5d0b83f460d0dc72423bdc2859fbb7b19aed906b 100644
--- a/ofl/tacone/METADATA.pb
+++ b/ofl/tacone/METADATA.pb
@@ -21,6 +21,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/Afrotype/tac"
   commit: "5e8ff11215e3c3abfaffb94557c623a3ce5a5a07"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/TacOne-Regular.ttf"
+    dest_file: "TacOne-Regular.ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/tacone/upstream.yaml b/ofl/tacone/upstream.yaml
deleted file mode 100644
index c004a1df73eebe1965e6845a308ac5caeaeaa4cf..0000000000000000000000000000000000000000
--- a/ofl/tacone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/TacOne-Regular.ttf: TacOne-Regular.ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/taiheritagepro/METADATA.pb b/ofl/taiheritagepro/METADATA.pb
index eb96540c4d13e66c68b216342580894c2c55e785..10754dadab6ea0f2603644008c6761c5d7560483 100644
--- a/ofl/taiheritagepro/METADATA.pb
+++ b/ofl/taiheritagepro/METADATA.pb
@@ -29,6 +29,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/silnrsi/font-taiheritagepro"
   archive_url: "https://github.com/silnrsi/font-taiheritagepro/releases/download/v2.600/TaiHeritagePro-2.600.zip"
+  files {
+    source_file: "TaiHeritagePro-2.600/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "TaiHeritagePro-2.600/TaiHeritagePro-Regular.ttf"
+    dest_file: "TaiHeritagePro-Regular.ttf"
+  }
+  files {
+    source_file: "TaiHeritagePro-2.600/TaiHeritagePro-Bold.ttf"
+    dest_file: "TaiHeritagePro-Bold.ttf"
+  }
+  branch: "master"
 }
+languages: "blt_Tavt"  # Tai Dam
 primary_script: "Tavt"
-languages: "blt_Tavt"
diff --git a/ofl/taiheritagepro/upstream.yaml b/ofl/taiheritagepro/upstream.yaml
deleted file mode 100644
index 84e43dbdb072e14fd085b2b4083566e10c1f6e02..0000000000000000000000000000000000000000
--- a/ofl/taiheritagepro/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive: https://github.com/silnrsi/font-taiheritagepro/releases/download/v2.600/TaiHeritagePro-2.600.zip
-branch: master
-files:
-  TaiHeritagePro-2.600/OFL.txt: OFL.txt
-  TaiHeritagePro-2.600/TaiHeritagePro-Regular.ttf: TaiHeritagePro-Regular.ttf
-  TaiHeritagePro-2.600/TaiHeritagePro-Bold.ttf: TaiHeritagePro-Bold.ttf
diff --git a/ofl/tapestry/METADATA.pb b/ofl/tapestry/METADATA.pb
index 5431e7a0cc7ab30c5acc7b315a91a8cbf6fab132..8fe01e55b3d4f6e061cbdd1df201361559319c20 100644
--- a/ofl/tapestry/METADATA.pb
+++ b/ofl/tapestry/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/tapestry"
   commit: "b38b62f1a12633abf4c2a11fad398afdd162427b"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Tapestry-Regular.ttf"
+    dest_file: "Tapestry-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/tapestry/upstream.yaml b/ofl/tapestry/upstream.yaml
deleted file mode 100644
index 13d98e05026cc89adce43357e741d4074d8bacb1..0000000000000000000000000000000000000000
--- a/ofl/tapestry/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Tapestry-Regular.ttf: Tapestry-Regular.ttf
diff --git a/ofl/taprom/METADATA.pb b/ofl/taprom/METADATA.pb
index 2d04ce775f50f1c899c8186e4ddfeb64b2ed7281..d25dfa5cb24e742642ab82f68749c2e89f6a7e2b 100644
--- a/ofl/taprom/METADATA.pb
+++ b/ofl/taprom/METADATA.pb
@@ -15,3 +15,15 @@ fonts {
 subsets: "khmer"
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/danhhong/Taprom"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "Release/ttf/Taprom-Regular.ttf"
+    dest_file: "Taprom-Regular.ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/taprom/upstream.yaml b/ofl/taprom/upstream.yaml
deleted file mode 100644
index 5237be6f48c9f5dedce0411810b42d17d768c360..0000000000000000000000000000000000000000
--- a/ofl/taprom/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  Release/ttf/Taprom-Regular.ttf: Taprom-Regular.ttf
-repository_url: https://github.com/danhhong/Taprom.git
diff --git a/ofl/teachers/METADATA.pb b/ofl/teachers/METADATA.pb
index acda429b109991aa5db34b00b1bd8bacc7c765a8..e49906cdb0b752a92e88f4db0fd4226e133a2887 100644
--- a/ofl/teachers/METADATA.pb
+++ b/ofl/teachers/METADATA.pb
@@ -33,5 +33,18 @@ axes {
 source {
   repository_url: "https://github.com/chankfonts/Teachers-fonts"
   commit: "f903bca18f4ecb61ee43f6a33e30a91e21449836"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Teachers[wght].ttf"
+    dest_file: "Teachers[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Teachers-Italic[wght].ttf"
+    dest_file: "Teachers-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
diff --git a/ofl/teachers/upstream.yaml b/ofl/teachers/upstream.yaml
deleted file mode 100644
index 7bde7f9f318cf71effcb1b294d4af28c4c735282..0000000000000000000000000000000000000000
--- a/ofl/teachers/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Teachers[wght].ttf: Teachers[wght].ttf
-  fonts/variable/Teachers-Italic[wght].ttf: Teachers-Italic[wght].ttf
-archive:
diff --git a/ofl/teko/METADATA.pb b/ofl/teko/METADATA.pb
index ff580f923962915141c12796386e2338dd993561..47e30a5f2ee52312668bf992d6b038b9c7cf8ebb 100644
--- a/ofl/teko/METADATA.pb
+++ b/ofl/teko/METADATA.pb
@@ -24,6 +24,15 @@ axes {
 source {
   repository_url: "https://www.github.com/googlefonts/teko"
   commit: "6715caf853f342eef57ea367b6c2991cd3928398"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Teko[wght].ttf"
+    dest_file: "Teko[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/teko/upstream.yaml b/ofl/teko/upstream.yaml
deleted file mode 100644
index 5b2bcfa06b33adf7314c06e442d1c27b013b1893..0000000000000000000000000000000000000000
--- a/ofl/teko/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Teko[wght].ttf: Teko[wght].ttf
diff --git a/ofl/tektur/METADATA.pb b/ofl/tektur/METADATA.pb
index d1d38d26e8cb5ba28f1b96e5515bdd8f8fb6241e..1d07d5405f1325466d47f0219b66e1c06f896379 100644
--- a/ofl/tektur/METADATA.pb
+++ b/ofl/tektur/METADATA.pb
@@ -33,6 +33,15 @@ axes {
 source {
   repository_url: "https://github.com/hyvyys/Tektur"
   commit: "0313e9612ed814c7a480fa54c7b295452b966954"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Tektur[wdth,wght].ttf"
+    dest_file: "Tektur[wdth,wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/tektur/upstream.yaml b/ofl/tektur/upstream.yaml
deleted file mode 100644
index 851918c4c332b87ab93e7f5085e6b58e317f6e11..0000000000000000000000000000000000000000
--- a/ofl/tektur/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Tektur[wdth,wght].ttf: Tektur[wdth,wght].ttf
diff --git a/ofl/texturina/METADATA.pb b/ofl/texturina/METADATA.pb
index 4ee451b213576d41f6d7d4818dd02f1ecfb66a65..efcb2fc3d71e9ad70d3bca9014ea7c894bd92fec 100644
--- a/ofl/texturina/METADATA.pb
+++ b/ofl/texturina/METADATA.pb
@@ -39,5 +39,165 @@ registry_default_overrides {
   key: "opsz"
   value: 12.0
 }
+source {
+  repository_url: "https://github.com/Omnibus-Type/Texturina"
+  files {
+    source_file: "fonts/variable/Texturina[opsz,wght].ttf"
+    dest_file: "Texturina[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Texturina-Italic[opsz,wght].ttf"
+    dest_file: "Texturina-Italic[opsz,wght].ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Black.ttf"
+    dest_file: "static/Texturina-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-BlackItalic.ttf"
+    dest_file: "static/Texturina-BlackItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Bold.ttf"
+    dest_file: "static/Texturina-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-BoldItalic.ttf"
+    dest_file: "static/Texturina-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-ExtraBold.ttf"
+    dest_file: "static/Texturina-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-ExtraBoldItalic.ttf"
+    dest_file: "static/Texturina-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-ExtraLight.ttf"
+    dest_file: "static/Texturina-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-ExtraLightItalic.ttf"
+    dest_file: "static/Texturina-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Italic.ttf"
+    dest_file: "static/Texturina-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Light.ttf"
+    dest_file: "static/Texturina-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-LightItalic.ttf"
+    dest_file: "static/Texturina-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Medium.ttf"
+    dest_file: "static/Texturina-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-MediumItalic.ttf"
+    dest_file: "static/Texturina-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Regular.ttf"
+    dest_file: "static/Texturina-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-SemiBold.ttf"
+    dest_file: "static/Texturina-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-SemiBoldItalic.ttf"
+    dest_file: "static/Texturina-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-Thin.ttf"
+    dest_file: "static/Texturina-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina-ThinItalic.ttf"
+    dest_file: "static/Texturina-ThinItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Black.ttf"
+    dest_file: "static/Texturina72pt-Black.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-BlackItalic.ttf"
+    dest_file: "static/Texturina72pt-BlackItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Bold.ttf"
+    dest_file: "static/Texturina72pt-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-BoldItalic.ttf"
+    dest_file: "static/Texturina72pt-BoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-ExtraBold.ttf"
+    dest_file: "static/Texturina72pt-ExtraBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-ExtraBoldItalic.ttf"
+    dest_file: "static/Texturina72pt-ExtraBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-ExtraLight.ttf"
+    dest_file: "static/Texturina72pt-ExtraLight.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-ExtraLightItalic.ttf"
+    dest_file: "static/Texturina72pt-ExtraLightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Italic.ttf"
+    dest_file: "static/Texturina72pt-Italic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Light.ttf"
+    dest_file: "static/Texturina72pt-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-LightItalic.ttf"
+    dest_file: "static/Texturina72pt-LightItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Medium.ttf"
+    dest_file: "static/Texturina72pt-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-MediumItalic.ttf"
+    dest_file: "static/Texturina72pt-MediumItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Regular.ttf"
+    dest_file: "static/Texturina72pt-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-SemiBold.ttf"
+    dest_file: "static/Texturina72pt-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-SemiBoldItalic.ttf"
+    dest_file: "static/Texturina72pt-SemiBoldItalic.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-Thin.ttf"
+    dest_file: "static/Texturina72pt-Thin.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/Texturina72pt-ThinItalic.ttf"
+    dest_file: "static/Texturina72pt-ThinItalic.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/texturina/upstream.yaml b/ofl/texturina/upstream.yaml
deleted file mode 100644
index 8d3289772e71b524e10665a440aeb232d856bd1a..0000000000000000000000000000000000000000
--- a/ofl/texturina/upstream.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-branch: master
-files:
-  fonts/variable/Texturina[opsz,wght].ttf: Texturina[opsz,wght].ttf
-  fonts/variable/Texturina-Italic[opsz,wght].ttf: Texturina-Italic[opsz,wght].ttf
-  fonts/ttf/Texturina-Black.ttf: static/Texturina-Black.ttf
-  fonts/ttf/Texturina-BlackItalic.ttf: static/Texturina-BlackItalic.ttf
-  fonts/ttf/Texturina-Bold.ttf: static/Texturina-Bold.ttf
-  fonts/ttf/Texturina-BoldItalic.ttf: static/Texturina-BoldItalic.ttf
-  fonts/ttf/Texturina-ExtraBold.ttf: static/Texturina-ExtraBold.ttf
-  fonts/ttf/Texturina-ExtraBoldItalic.ttf: static/Texturina-ExtraBoldItalic.ttf
-  fonts/ttf/Texturina-ExtraLight.ttf: static/Texturina-ExtraLight.ttf
-  fonts/ttf/Texturina-ExtraLightItalic.ttf: static/Texturina-ExtraLightItalic.ttf
-  fonts/ttf/Texturina-Italic.ttf: static/Texturina-Italic.ttf
-  fonts/ttf/Texturina-Light.ttf: static/Texturina-Light.ttf
-  fonts/ttf/Texturina-LightItalic.ttf: static/Texturina-LightItalic.ttf
-  fonts/ttf/Texturina-Medium.ttf: static/Texturina-Medium.ttf
-  fonts/ttf/Texturina-MediumItalic.ttf: static/Texturina-MediumItalic.ttf
-  fonts/ttf/Texturina-Regular.ttf: static/Texturina-Regular.ttf
-  fonts/ttf/Texturina-SemiBold.ttf: static/Texturina-SemiBold.ttf
-  fonts/ttf/Texturina-SemiBoldItalic.ttf: static/Texturina-SemiBoldItalic.ttf
-  fonts/ttf/Texturina-Thin.ttf: static/Texturina-Thin.ttf
-  fonts/ttf/Texturina-ThinItalic.ttf: static/Texturina-ThinItalic.ttf
-  fonts/ttf/Texturina72pt-Black.ttf: static/Texturina72pt-Black.ttf
-  fonts/ttf/Texturina72pt-BlackItalic.ttf: static/Texturina72pt-BlackItalic.ttf
-  fonts/ttf/Texturina72pt-Bold.ttf: static/Texturina72pt-Bold.ttf
-  fonts/ttf/Texturina72pt-BoldItalic.ttf: static/Texturina72pt-BoldItalic.ttf
-  fonts/ttf/Texturina72pt-ExtraBold.ttf: static/Texturina72pt-ExtraBold.ttf
-  fonts/ttf/Texturina72pt-ExtraBoldItalic.ttf: static/Texturina72pt-ExtraBoldItalic.ttf
-  fonts/ttf/Texturina72pt-ExtraLight.ttf: static/Texturina72pt-ExtraLight.ttf
-  fonts/ttf/Texturina72pt-ExtraLightItalic.ttf: static/Texturina72pt-ExtraLightItalic.ttf
-  fonts/ttf/Texturina72pt-Italic.ttf: static/Texturina72pt-Italic.ttf
-  fonts/ttf/Texturina72pt-Light.ttf: static/Texturina72pt-Light.ttf
-  fonts/ttf/Texturina72pt-LightItalic.ttf: static/Texturina72pt-LightItalic.ttf
-  fonts/ttf/Texturina72pt-Medium.ttf: static/Texturina72pt-Medium.ttf
-  fonts/ttf/Texturina72pt-MediumItalic.ttf: static/Texturina72pt-MediumItalic.ttf
-  fonts/ttf/Texturina72pt-Regular.ttf: static/Texturina72pt-Regular.ttf
-  fonts/ttf/Texturina72pt-SemiBold.ttf: static/Texturina72pt-SemiBold.ttf
-  fonts/ttf/Texturina72pt-SemiBoldItalic.ttf: static/Texturina72pt-SemiBoldItalic.ttf
-  fonts/ttf/Texturina72pt-Thin.ttf: static/Texturina72pt-Thin.ttf
-  fonts/ttf/Texturina72pt-ThinItalic.ttf: static/Texturina72pt-ThinItalic.ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Omnibus-Type/Texturina
diff --git a/ofl/thenautigal/METADATA.pb b/ofl/thenautigal/METADATA.pb
index c5e201bb35345fe06e8eca7699f6ab79ba0ba6b3..9d9bf4f45deb6a509fee89f9f732da33cd985383 100644
--- a/ofl/thenautigal/METADATA.pb
+++ b/ofl/thenautigal/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/the-nautigal"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/TheNautigal-Regular.ttf"
+    dest_file: "TheNautigal-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/TheNautigal-Bold.ttf"
+    dest_file: "TheNautigal-Bold.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/thenautigal/upstream.yaml b/ofl/thenautigal/upstream.yaml
deleted file mode 100644
index 511e73e643a731eaa4137b9b4852ed0d8d11fb92..0000000000000000000000000000000000000000
--- a/ofl/thenautigal/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/TheNautigal-Regular.ttf: TheNautigal-Regular.ttf
-  fonts/ttf/TheNautigal-Bold.ttf: TheNautigal-Bold.ttf
-repository_url: https://github.com/googlefonts/the-nautigal
diff --git a/ofl/tiltneon/METADATA.pb b/ofl/tiltneon/METADATA.pb
index 40f09cba2da98e74a8605adf3ec98a6e8b0e6b1c..4dc4d536b7bbed2721f8028b306ef72460a54433 100644
--- a/ofl/tiltneon/METADATA.pb
+++ b/ofl/tiltneon/METADATA.pb
@@ -29,6 +29,19 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Tilt-Fonts"
   commit: "0773dc9f490aabba0c19c15d290b575b62245970"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/TiltNeon[XROT,YROT].ttf"
+    dest_file: "TiltNeon[XROT,YROT].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 minisite_url: "https://fonts.withgoogle.com/tilt"
 stroke: "SANS_SERIF"
diff --git a/ofl/tiltneon/upstream.yaml b/ofl/tiltneon/upstream.yaml
deleted file mode 100644
index a79238b68ad64de740781f809d759cd74b18ae73..0000000000000000000000000000000000000000
--- a/ofl/tiltneon/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/TiltNeon[XROT,YROT].ttf: TiltNeon[XROT,YROT].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/tiltprism/METADATA.pb b/ofl/tiltprism/METADATA.pb
index 15261ee48f069aff675afcdcc1d7d09610613d3f..d802df26ba479333444c32f1916f9959909ba53a 100644
--- a/ofl/tiltprism/METADATA.pb
+++ b/ofl/tiltprism/METADATA.pb
@@ -29,6 +29,19 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Tilt-Fonts"
   commit: "0773dc9f490aabba0c19c15d290b575b62245970"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/TiltPrism[XROT,YROT].ttf"
+    dest_file: "TiltPrism[XROT,YROT].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 minisite_url: "https://fonts.withgoogle.com/tilt"
 stroke: "SANS_SERIF"
diff --git a/ofl/tiltprism/upstream.yaml b/ofl/tiltprism/upstream.yaml
deleted file mode 100644
index 95ad97a73b4de56dcca951b60bbfb93e48f60890..0000000000000000000000000000000000000000
--- a/ofl/tiltprism/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/TiltPrism[XROT,YROT].ttf: TiltPrism[XROT,YROT].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/tiltwarp/METADATA.pb b/ofl/tiltwarp/METADATA.pb
index df7ef741ebd1b2215749d72ce33275629d73f2e4..37cc8f77a024c9c64257979caf167ce5a3eed15c 100644
--- a/ofl/tiltwarp/METADATA.pb
+++ b/ofl/tiltwarp/METADATA.pb
@@ -29,6 +29,19 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/Tilt-Fonts"
   commit: "0773dc9f490aabba0c19c15d290b575b62245970"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/TiltWarp[XROT,YROT].ttf"
+    dest_file: "TiltWarp[XROT,YROT].ttf"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
 }
 minisite_url: "https://fonts.withgoogle.com/tilt"
 stroke: "SANS_SERIF"
diff --git a/ofl/tiltwarp/upstream.yaml b/ofl/tiltwarp/upstream.yaml
deleted file mode 100644
index 334d605d06a1a3404606598bc93b44a1053d73bc..0000000000000000000000000000000000000000
--- a/ofl/tiltwarp/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/TiltWarp[XROT,YROT].ttf: TiltWarp[XROT,YROT].ttf
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-archive:
diff --git a/ofl/tirobangla/METADATA.pb b/ofl/tirobangla/METADATA.pb
index 84bd6964e50aad8cdd582cb2934b807fd6ecad5a..da56984deb716d75cdfbc73172f6e1f1c402b62c 100644
--- a/ofl/tirobangla/METADATA.pb
+++ b/ofl/tirobangla/METADATA.pb
@@ -28,5 +28,22 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
   commit: "98b5d3a01c534b7029af04a59d31e0d7d90be15a"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroBangla/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroBangla/TTF/TiroBangla-Regular.ttf"
+    dest_file: "TiroBangla-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroBangla/TTF/TiroBangla-Italic.ttf"
+    dest_file: "TiroBangla-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Beng"
diff --git a/ofl/tirobangla/upstream.yaml b/ofl/tirobangla/upstream.yaml
deleted file mode 100644
index 077ad93f327226ae837269a71278cbf5e2018544..0000000000000000000000000000000000000000
--- a/ofl/tirobangla/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroBangla/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroBangla/TTF/TiroBangla-Regular.ttf: TiroBangla-Regular.ttf
-  fonts/TiroBangla/TTF/TiroBangla-Italic.ttf: TiroBangla-Italic.ttf
diff --git a/ofl/tirodevanagarihindi/METADATA.pb b/ofl/tirodevanagarihindi/METADATA.pb
index 0f8dd41191e95018d5a692d81b2b191e551cadda..8e06f913565c3d3987a2e3db7e10740a4e7e5b52 100644
--- a/ofl/tirodevanagarihindi/METADATA.pb
+++ b/ofl/tirodevanagarihindi/METADATA.pb
@@ -27,5 +27,22 @@ subsets: "latin-ext"
 subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroDevaHindi/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroDevaHindi/TTF/TiroDevaHindi-Regular.ttf"
+    dest_file: "TiroDevaHindi-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroDevaHindi/TTF/TiroDevaHindi-Italic.ttf"
+    dest_file: "TiroDevaHindi-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Deva"
diff --git a/ofl/tirodevanagarihindi/upstream.yaml b/ofl/tirodevanagarihindi/upstream.yaml
deleted file mode 100644
index 9ab8dbc557958047f3d3fe18772b447bc2221e4f..0000000000000000000000000000000000000000
--- a/ofl/tirodevanagarihindi/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroDevaHindi/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroDevaHindi/TTF/TiroDevaHindi-Regular.ttf: TiroDevaHindi-Regular.ttf
-  fonts/TiroDevaHindi/TTF/TiroDevaHindi-Italic.ttf: TiroDevaHindi-Italic.ttf
diff --git a/ofl/tirodevanagarimarathi/METADATA.pb b/ofl/tirodevanagarimarathi/METADATA.pb
index 297bafa88bc0659b73d6d1dca10203e9f1c4ec18..ac398d309d8621fec334df3dfe6193a895bc9fa8 100644
--- a/ofl/tirodevanagarimarathi/METADATA.pb
+++ b/ofl/tirodevanagarimarathi/METADATA.pb
@@ -27,5 +27,22 @@ subsets: "latin-ext"
 subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroDevaMarathi/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroDevaMarathi/TTF/TiroDevaMarathi-Regular.ttf"
+    dest_file: "TiroDevaMarathi-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroDevaMarathi/TTF/TiroDevaMarathi-Italic.ttf"
+    dest_file: "TiroDevaMarathi-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Deva"
diff --git a/ofl/tirodevanagarimarathi/upstream.yaml b/ofl/tirodevanagarimarathi/upstream.yaml
deleted file mode 100644
index 6806ad746e3d05ee69538f8f6a1d64081dfca48a..0000000000000000000000000000000000000000
--- a/ofl/tirodevanagarimarathi/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroDevaMarathi/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroDevaMarathi/TTF/TiroDevaMarathi-Regular.ttf: TiroDevaMarathi-Regular.ttf
-  fonts/TiroDevaMarathi/TTF/TiroDevaMarathi-Italic.ttf: TiroDevaMarathi-Italic.ttf
diff --git a/ofl/tirodevanagarisanskrit/METADATA.pb b/ofl/tirodevanagarisanskrit/METADATA.pb
index ecbfd3a7c3a380838c1d7def5cd22a2f4fb5bedb..968455cf01ffdd38bf71802ab8aad50154ad6bd6 100644
--- a/ofl/tirodevanagarisanskrit/METADATA.pb
+++ b/ofl/tirodevanagarisanskrit/METADATA.pb
@@ -27,5 +27,22 @@ subsets: "latin-ext"
 subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroDevaSanskrit/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroDevaSanskrit/TTF/TiroDevaSanskrit-Regular.ttf"
+    dest_file: "TiroDevaSanskrit-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroDevaSanskrit/TTF/TiroDevaSanskrit-Italic.ttf"
+    dest_file: "TiroDevaSanskrit-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Deva"
diff --git a/ofl/tirodevanagarisanskrit/upstream.yaml b/ofl/tirodevanagarisanskrit/upstream.yaml
deleted file mode 100644
index c0ff390fcd06cbf9f183c72c8aa2b0b233cab40e..0000000000000000000000000000000000000000
--- a/ofl/tirodevanagarisanskrit/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroDevaSanskrit/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroDevaSanskrit/TTF/TiroDevaSanskrit-Regular.ttf: TiroDevaSanskrit-Regular.ttf
-  fonts/TiroDevaSanskrit/TTF/TiroDevaSanskrit-Italic.ttf: TiroDevaSanskrit-Italic.ttf
diff --git a/ofl/tirogurmukhi/METADATA.pb b/ofl/tirogurmukhi/METADATA.pb
index ae830be86c9dd361504a84e1d5a687f71915b81d..281530b7abcfb3b23b1dfd20736c6e018f088c61 100644
--- a/ofl/tirogurmukhi/METADATA.pb
+++ b/ofl/tirogurmukhi/METADATA.pb
@@ -28,5 +28,22 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
   commit: "98b5d3a01c534b7029af04a59d31e0d7d90be15a"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroGurmukhi/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroGurmukhi/TTF/TiroGurmukhi-Regular.ttf"
+    dest_file: "TiroGurmukhi-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroGurmukhi/TTF/TiroGurmukhi-Italic.ttf"
+    dest_file: "TiroGurmukhi-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Guru"
diff --git a/ofl/tirogurmukhi/upstream.yaml b/ofl/tirogurmukhi/upstream.yaml
deleted file mode 100644
index 152c7bc68d04bcd2a3fdf50142a1b15ebb6d17aa..0000000000000000000000000000000000000000
--- a/ofl/tirogurmukhi/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroGurmukhi/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroGurmukhi/TTF/TiroGurmukhi-Regular.ttf: TiroGurmukhi-Regular.ttf
-  fonts/TiroGurmukhi/TTF/TiroGurmukhi-Italic.ttf: TiroGurmukhi-Italic.ttf
diff --git a/ofl/tirokannada/METADATA.pb b/ofl/tirokannada/METADATA.pb
index 10575a26216c55a3cb26d474a8cce3a7576de45e..c09ed5b55a7fce71915e1e815da5d6e481c962ef 100644
--- a/ofl/tirokannada/METADATA.pb
+++ b/ofl/tirokannada/METADATA.pb
@@ -28,5 +28,22 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
   commit: "98b5d3a01c534b7029af04a59d31e0d7d90be15a"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroKannada/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroKannada/TTF/TiroKannada-Regular.ttf"
+    dest_file: "TiroKannada-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroKannada/TTF/TiroKannada-Italic.ttf"
+    dest_file: "TiroKannada-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Knda"
diff --git a/ofl/tirokannada/upstream.yaml b/ofl/tirokannada/upstream.yaml
deleted file mode 100644
index 0a96ae224f63423849d5697a2172d5410a6cc9c1..0000000000000000000000000000000000000000
--- a/ofl/tirokannada/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroKannada/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroKannada/TTF/TiroKannada-Regular.ttf: TiroKannada-Regular.ttf
-  fonts/TiroKannada/TTF/TiroKannada-Italic.ttf: TiroKannada-Italic.ttf
diff --git a/ofl/tirotamil/METADATA.pb b/ofl/tirotamil/METADATA.pb
index 18d104dfe18970df00223363bb4411bf64cf65ca..c5c81ea44973b307994b3e92bfb0e18ecdbfb0da 100644
--- a/ofl/tirotamil/METADATA.pb
+++ b/ofl/tirotamil/METADATA.pb
@@ -28,5 +28,22 @@ subsets: "tamil"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
   commit: "98b5d3a01c534b7029af04a59d31e0d7d90be15a"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroTamil/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroTamil/TTF/TiroTamil-Regular.ttf"
+    dest_file: "TiroTamil-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroTamil/TTF/TiroTamil-Italic.ttf"
+    dest_file: "TiroTamil-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Taml"
diff --git a/ofl/tirotamil/upstream.yaml b/ofl/tirotamil/upstream.yaml
deleted file mode 100644
index abe8ed801bd96e27079b7fc7ba6fd3d7bebb4141..0000000000000000000000000000000000000000
--- a/ofl/tirotamil/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroTamil/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroTamil/TTF/TiroTamil-Regular.ttf: TiroTamil-Regular.ttf
-  fonts/TiroTamil/TTF/TiroTamil-Italic.ttf: TiroTamil-Italic.ttf
diff --git a/ofl/tirotelugu/METADATA.pb b/ofl/tirotelugu/METADATA.pb
index f249b91e9ba86b3d962c6eca19777621d0391a3b..bb046a703d57bdce06169b98c6ad2095d61114ba 100644
--- a/ofl/tirotelugu/METADATA.pb
+++ b/ofl/tirotelugu/METADATA.pb
@@ -28,5 +28,22 @@ subsets: "telugu"
 source {
   repository_url: "https://github.com/TiroTypeworks/Indigo"
   commit: "24f67ca20ca4720eb4302592f2e0f6ec21042a5d"
+  files {
+    source_file: "fonts/OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "docs/descriptions/TiroTelugu/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TiroTelugu/TTF/TiroTelugu-Regular.ttf"
+    dest_file: "TiroTelugu-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/TiroTelugu/TTF/TiroTelugu-Italic.ttf"
+    dest_file: "TiroTelugu-Italic.ttf"
+  }
+  branch: "main"
 }
 primary_script: "Telu"
diff --git a/ofl/tirotelugu/upstream.yaml b/ofl/tirotelugu/upstream.yaml
deleted file mode 100644
index e27c8d3de6ce8e381f89755627f78f7d9c4aa3e9..0000000000000000000000000000000000000000
--- a/ofl/tirotelugu/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  fonts/OFL.txt: OFL.txt
-  docs/descriptions/TiroTelugu/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TiroTelugu/TTF/TiroTelugu-Regular.ttf: TiroTelugu-Regular.ttf
-  fonts/TiroTelugu/TTF/TiroTelugu-Italic.ttf: TiroTelugu-Italic.ttf
-archive:
diff --git a/ofl/tourney/METADATA.pb b/ofl/tourney/METADATA.pb
index 61bf04fb0f327aa029a508de5fdc93dfb464227b..f275739b614f323193e6229b4d13d9019c359929 100644
--- a/ofl/tourney/METADATA.pb
+++ b/ofl/tourney/METADATA.pb
@@ -35,5 +35,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/Etcetera-Type-Co/Tourney"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Tourney-Italic[wdth,wght].ttf"
+    dest_file: "Tourney-Italic[wdth,wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Tourney[wdth,wght].ttf"
+    dest_file: "Tourney[wdth,wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/tourney/upstream.yaml b/ofl/tourney/upstream.yaml
deleted file mode 100644
index 34c94fa60a41bfeb7b1cf2f3cc38c52488050e41..0000000000000000000000000000000000000000
--- a/ofl/tourney/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Tourney-Italic[wdth,wght].ttf: Tourney-Italic[wdth,wght].ttf
-  fonts/variable/Tourney[wdth,wght].ttf: Tourney[wdth,wght].ttf
-repository_url: https://github.com/Etcetera-Type-Co/Tourney
diff --git a/ofl/trainone/METADATA.pb b/ofl/trainone/METADATA.pb
index 346ec5a4dba0ac0a409de1828267ea2967e36288..01e5293cca24db92ad4cc657ff7237347ec24384 100644
--- a/ofl/trainone/METADATA.pb
+++ b/ofl/trainone/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/fontworks-fonts/Train"
+  files {
+    source_file: "fonts/ttf/TrainOne-Regular.ttf"
+    dest_file: "TrainOne-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/trainone/upstream.yaml b/ofl/trainone/upstream.yaml
deleted file mode 100644
index 60f514285ccd6ccaf84e3726bc43b5d9009b57e0..0000000000000000000000000000000000000000
--- a/ofl/trainone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/TrainOne-Regular.ttf: TrainOne-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/fontworks-fonts/Train.git
diff --git a/ofl/trocchi/METADATA.pb b/ofl/trocchi/METADATA.pb
index 2263d5691c7bae2cbb55f939f984f9d1cf0d6732..39997d0018dae810d5328195f491a3c7110bda4f 100644
--- a/ofl/trocchi/METADATA.pb
+++ b/ofl/trocchi/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/m4rc1e/Trocchi"
   commit: "543ac4fee3173ed80706c4caf5398b8bb3439ae1"
+  files {
+    source_file: "fonts/ttf/Trocchi-Regular.ttf"
+    dest_file: "Trocchi-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/trocchi/upstream.yaml b/ofl/trocchi/upstream.yaml
deleted file mode 100644
index 028ba342fd60e370768520c0ad267af284e85a42..0000000000000000000000000000000000000000
--- a/ofl/trocchi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  fonts/ttf/Trocchi-Regular.ttf: Trocchi-Regular.ttf
-  OFL.txt: OFL.txt
diff --git a/ofl/truculenta/METADATA.pb b/ofl/truculenta/METADATA.pb
index cbeb1a41b99ce853ebd9e466e4c11a48538bf11f..5acc4fc26436d9229ec96b15fbd307bafd94cb65 100644
--- a/ofl/truculenta/METADATA.pb
+++ b/ofl/truculenta/METADATA.pb
@@ -31,3 +31,15 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/Omnibus-Type/Truculenta"
+  files {
+    source_file: "fonts/variable/Truculenta[opsz,wdth,wght].ttf"
+    dest_file: "Truculenta[opsz,wdth,wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/truculenta/upstream.yaml b/ofl/truculenta/upstream.yaml
deleted file mode 100644
index 0b727edf081f2fd6e511ba2b47489de7973f2bfb..0000000000000000000000000000000000000000
--- a/ofl/truculenta/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  fonts/variable/Truculenta[opsz,wdth,wght].ttf: Truculenta[opsz,wdth,wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/Omnibus-Type/Truculenta
diff --git a/ofl/tsukimirounded/METADATA.pb b/ofl/tsukimirounded/METADATA.pb
index fa40aba4ad2fb98548d5ada16e47e5e4ca19e63c..9c59a9185f9a902d44d9f421f39f447627bfd525 100644
--- a/ofl/tsukimirounded/METADATA.pb
+++ b/ofl/tsukimirounded/METADATA.pb
@@ -52,8 +52,40 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
-languages: "ja_Kana"
-languages: "ja_Hira"
+source {
+  repository_url: "https://github.com/mt-funa/Tsukimi-Rounded"
+  files {
+    source_file: "fonts/ttf/TsukimiRounded-Light.ttf"
+    dest_file: "TsukimiRounded-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/TsukimiRounded-Regular.ttf"
+    dest_file: "TsukimiRounded-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/TsukimiRounded-Medium.ttf"
+    dest_file: "TsukimiRounded-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/TsukimiRounded-SemiBold.ttf"
+    dest_file: "TsukimiRounded-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/TsukimiRounded-Bold.ttf"
+    dest_file: "TsukimiRounded-Bold.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/tsukimirounded/upstream.yaml b/ofl/tsukimirounded/upstream.yaml
deleted file mode 100644
index d3e01b9d224302b36866ba9420ee50f3c99a36f0..0000000000000000000000000000000000000000
--- a/ofl/tsukimirounded/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: master
-files:
-  fonts/ttf/TsukimiRounded-Light.ttf: TsukimiRounded-Light.ttf
-  fonts/ttf/TsukimiRounded-Regular.ttf: TsukimiRounded-Regular.ttf
-  fonts/ttf/TsukimiRounded-Medium.ttf: TsukimiRounded-Medium.ttf
-  fonts/ttf/TsukimiRounded-SemiBold.ttf: TsukimiRounded-SemiBold.ttf
-  fonts/ttf/TsukimiRounded-Bold.ttf: TsukimiRounded-Bold.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/mt-funa/Tsukimi-Rounded.git
diff --git a/ofl/twinklestar/METADATA.pb b/ofl/twinklestar/METADATA.pb
index 987043c628c526745841921f04e10c308b353979..d681a86fa0c00357f5cc410b58cf12eddf3c08bc 100644
--- a/ofl/twinklestar/METADATA.pb
+++ b/ofl/twinklestar/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/twinkle-star"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/TwinkleStar-Regular.ttf"
+    dest_file: "TwinkleStar-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/twinklestar/upstream.yaml b/ofl/twinklestar/upstream.yaml
deleted file mode 100644
index da5da7ea87c74475ac18de5f56167331c02591ba..0000000000000000000000000000000000000000
--- a/ofl/twinklestar/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/TwinkleStar-Regular.ttf: TwinkleStar-Regular.ttf
-repository_url: https://github.com/googlefonts/twinkle-star
diff --git a/ofl/unbounded/METADATA.pb b/ofl/unbounded/METADATA.pb
index 32fdf8ac88c82e106fdd463f6b425696139bbd4f..9dd8e82dc0c9cbd48dceeed3dbf5f6e415bdb1df 100644
--- a/ofl/unbounded/METADATA.pb
+++ b/ofl/unbounded/METADATA.pb
@@ -26,5 +26,18 @@ axes {
 source {
   repository_url: "https://github.com/googlefonts/unbounded"
   commit: "f3ec43228a864a72487e41552e2140efab9884ea"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Unbounded[wght].ttf"
+    dest_file: "Unbounded[wght].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://unbounded.polkadot.network/"
diff --git a/ofl/unbounded/upstream.yaml b/ofl/unbounded/upstream.yaml
deleted file mode 100644
index f30cd9037c1b5d71106de2473deec69fa7274768..0000000000000000000000000000000000000000
--- a/ofl/unbounded/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-archive:
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Unbounded[wght].ttf: Unbounded[wght].ttf
diff --git a/ofl/unicaone/METADATA.pb b/ofl/unicaone/METADATA.pb
index 09a4930c368dbdb6490c7c5c010763709f8cc492..9c1067bde638390e7de69283a1970a8f3270520a 100644
--- a/ofl/unicaone/METADATA.pb
+++ b/ofl/unicaone/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/etunni/unica"
   commit: "e92da87539ff465aab50b7767512080bf71e39f1"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/UnicaOne-Regular.ttf"
+    dest_file: "UnicaOne-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/unicaone/upstream.yaml b/ofl/unicaone/upstream.yaml
deleted file mode 100644
index 75c110d093ccfe7eb4d00e109a1f2373288309d5..0000000000000000000000000000000000000000
--- a/ofl/unicaone/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/UnicaOne-Regular.ttf: UnicaOne-Regular.ttf
-archive:
diff --git a/ofl/unlock/METADATA.pb b/ofl/unlock/METADATA.pb
index 9e42de55df268163ff4b1017853a7dabcccf1fa0..9b32ec98c747dafaeec6fedeb654b08ea2f93571 100644
--- a/ofl/unlock/METADATA.pb
+++ b/ofl/unlock/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/unlock"
   commit: "cf3defaec0849f2d59a9db60eb810ffa32d07eee"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Unlock-Regular.ttf"
+    dest_file: "Unlock-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/unlock/upstream.yaml b/ofl/unlock/upstream.yaml
deleted file mode 100644
index a2bf761ab412f8c2b69e691d54a4f62acc147171..0000000000000000000000000000000000000000
--- a/ofl/unlock/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Unlock-Regular.ttf: Unlock-Regular.ttf
-archive:
diff --git a/ofl/updock/METADATA.pb b/ofl/updock/METADATA.pb
index afe52583457775d4331c64633ffefeffba02f7e8..1830a598a464bb1b04534f15802a31c73689bbce 100644
--- a/ofl/updock/METADATA.pb
+++ b/ofl/updock/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/updock"
   commit: "392c2404f3860e8f06f63aa4dfc91eec3831d294"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Updock-Regular.ttf"
+    dest_file: "Updock-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/updock/upstream.yaml b/ofl/updock/upstream.yaml
deleted file mode 100644
index fc0ebef8d2119621cb97edbee04eb6a0233fd7d7..0000000000000000000000000000000000000000
--- a/ofl/updock/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Updock-Regular.ttf: Updock-Regular.ttf
diff --git a/ofl/urbanist/METADATA.pb b/ofl/urbanist/METADATA.pb
index 4bded1f7bd492c551511d35696dfa204f6d712a5..7a411c4985c18c64c14600a76c55b092e443429e 100644
--- a/ofl/urbanist/METADATA.pb
+++ b/ofl/urbanist/METADATA.pb
@@ -29,5 +29,21 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/coreyhu/Urbanist"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Urbanist[wght].ttf"
+    dest_file: "Urbanist[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Urbanist-Italic[wght].ttf"
+    dest_file: "Urbanist-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/urbanist/upstream.yaml b/ofl/urbanist/upstream.yaml
deleted file mode 100644
index 75447794d813a08942971ef90ce8d9a548e007ad..0000000000000000000000000000000000000000
--- a/ofl/urbanist/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Urbanist[wght].ttf: Urbanist[wght].ttf
-  fonts/variable/Urbanist-Italic[wght].ttf: Urbanist-Italic[wght].ttf
-repository_url: https://github.com/coreyhu/Urbanist
diff --git a/ofl/varelaround/METADATA.pb b/ofl/varelaround/METADATA.pb
index 4c1690f5aae740a95b250e8d5e7022fd5ff25a8c..eb4b59cecd35924e94beff0588f20c7f21673a0f 100644
--- a/ofl/varelaround/METADATA.pb
+++ b/ofl/varelaround/METADATA.pb
@@ -20,4 +20,13 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/m4rc1e/Varela-Round-Hebrew"
   commit: "9bb2c89690095dd41f0f74d4954d3196eeaed68e"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/VarelaRound-Regular.ttf"
+    dest_file: "VarelaRound-Regular.ttf"
+  }
+  branch: "gf-mastering"
 }
diff --git a/ofl/varelaround/upstream.yaml b/ofl/varelaround/upstream.yaml
deleted file mode 100644
index bfa840527391a260123745b49638b58526a0804d..0000000000000000000000000000000000000000
--- a/ofl/varelaround/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: gf-mastering
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/VarelaRound-Regular.ttf: VarelaRound-Regular.ttf
diff --git a/ofl/vazirmatn/METADATA.pb b/ofl/vazirmatn/METADATA.pb
index bb41bf69499196fc7576458efb2704bc837846f1..5c5ca8af25aaed9e3d9d18b9bf5e77237321203c 100644
--- a/ofl/vazirmatn/METADATA.pb
+++ b/ofl/vazirmatn/METADATA.pb
@@ -24,4 +24,13 @@ axes {
 source {
   repository_url: "https://github.com/rastikerdar/vazirmatn"
   commit: "14f8686945b97ac535bdb144a7c3794431d894d2"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Vazirmatn[wght].ttf"
+    dest_file: "Vazirmatn[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/vazirmatn/upstream.yaml b/ofl/vazirmatn/upstream.yaml
deleted file mode 100644
index 09cc6a4eed43258ad0b5f8c79d0eeabfaf4333e7..0000000000000000000000000000000000000000
--- a/ofl/vazirmatn/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Vazirmatn[wght].ttf: Vazirmatn[wght].ttf
-archive:
diff --git a/ofl/victormono/METADATA.pb b/ofl/victormono/METADATA.pb
index fdb2ab8c4717c8e897f97a376bd85533456ab3ac..1db3d672f51ee793d1dc7f22cda7b06d98ceeca9 100644
--- a/ofl/victormono/METADATA.pb
+++ b/ofl/victormono/METADATA.pb
@@ -37,6 +37,23 @@ axes {
 source {
   repository_url: "https://github.com/rubjo/victor-mono-font"
   archive_url: "https://github.com/rubjo/victor-mono-font/releases/download/v1.561/victor-mono-font-fonts.zip"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/VictorMono[wght].ttf"
+    dest_file: "VictorMono[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/VictorMono-Italic[wght].ttf"
+    dest_file: "VictorMono-Italic[wght].ttf"
+  }
+  branch: "main"
 }
 minisite_url: "https://rubjo.github.io/victor-mono"
 stroke: "SANS_SERIF"
diff --git a/ofl/victormono/upstream.yaml b/ofl/victormono/upstream.yaml
deleted file mode 100644
index 7d8a4d62c2cc324f448c619de7d6dc2d81188ac0..0000000000000000000000000000000000000000
--- a/ofl/victormono/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-archive: https://github.com/rubjo/victor-mono-font/releases/download/v1.561/victor-mono-font-fonts.zip
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/VictorMono[wght].ttf: VictorMono[wght].ttf
-  fonts/variable/VictorMono-Italic[wght].ttf: VictorMono-Italic[wght].ttf
diff --git a/ofl/vinasans/METADATA.pb b/ofl/vinasans/METADATA.pb
index 91754c56a6ff70e438cd910ca0da7ff5c6ec0735..89524f72918e1d6b2c9527c78a37542c2b786384 100644
--- a/ofl/vinasans/METADATA.pb
+++ b/ofl/vinasans/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/nguyentype/vinasans"
   commit: "e99f043b3542ccaf24a21f04601942ca8bc28d53"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/VinaSans-Regular.ttf"
+    dest_file: "VinaSans-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/vinasans/upstream.yaml b/ofl/vinasans/upstream.yaml
deleted file mode 100644
index bd152727749f3fe84f7ddd5b0541f850c5953fb6..0000000000000000000000000000000000000000
--- a/ofl/vinasans/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/VinaSans-Regular.ttf: VinaSans-Regular.ttf
-archive:
diff --git a/ofl/vollkorn/METADATA.pb b/ofl/vollkorn/METADATA.pb
index 1d53f5fd48571d4b5aee0dd6c7cd00068798e07b..3d83029fa58bd2915b504da4e4bd99d7883ac9b6 100644
--- a/ofl/vollkorn/METADATA.pb
+++ b/ofl/vollkorn/METADATA.pb
@@ -33,4 +33,20 @@ axes {
   min_value: 400.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/FAlthausen/Vollkorn-Typeface"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Vollkorn[wght].ttf"
+    dest_file: "Vollkorn[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/Vollkorn-Italic[wght].ttf"
+    dest_file: "Vollkorn-Italic[wght].ttf"
+  }
+  branch: "master"
+}
 minisite_url: "http://vollkorn-typeface.com/"
diff --git a/ofl/vollkorn/upstream.yaml b/ofl/vollkorn/upstream.yaml
deleted file mode 100644
index 42ae94be733de3bf1d51293b7ff40b995533a18a..0000000000000000000000000000000000000000
--- a/ofl/vollkorn/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Vollkorn[wght].ttf: Vollkorn[wght].ttf
-  fonts/variable/Vollkorn-Italic[wght].ttf: Vollkorn-Italic[wght].ttf
-repository_url: https://github.com/FAlthausen/Vollkorn-Typeface
diff --git a/ofl/voltaire/METADATA.pb b/ofl/voltaire/METADATA.pb
index 19020d8a8a175602cda3caff6e07b32340ffe41c..3889f1c2ab0460a40ab0354dac7b0418b9d534af 100644
--- a/ofl/voltaire/METADATA.pb
+++ b/ofl/voltaire/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/SorkinType/Voltaire"
   commit: "0954355156a43a9dc7d53c32a7bedc63a187d456"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Voltaire-Regular.ttf"
+    dest_file: "Voltaire-Regular.ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/voltaire/upstream.yaml b/ofl/voltaire/upstream.yaml
deleted file mode 100644
index 300e58a6ddc80e8b09f2207ac4d04ae0986f65a3..0000000000000000000000000000000000000000
--- a/ofl/voltaire/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Voltaire-Regular.ttf: Voltaire-Regular.ttf
-archive:
diff --git a/ofl/vujahdayscript/METADATA.pb b/ofl/vujahdayscript/METADATA.pb
index 5591a667637042ced75a1d47a435bda32480497b..b1c4a7d8b93cf572218121d560e3e84bc9eb2ba5 100644
--- a/ofl/vujahdayscript/METADATA.pb
+++ b/ofl/vujahdayscript/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/vujahday"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/VujahdayScript-Regular.ttf"
+    dest_file: "VujahdayScript-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/vujahdayscript/upstream.yaml b/ofl/vujahdayscript/upstream.yaml
deleted file mode 100644
index 1d20e49771c44f0169ede38eae5e6b276b9e120c..0000000000000000000000000000000000000000
--- a/ofl/vujahdayscript/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/VujahdayScript-Regular.ttf: VujahdayScript-Regular.ttf
-repository_url: https://github.com/googlefonts/vujahday
diff --git a/ofl/warnes/METADATA.pb b/ofl/warnes/METADATA.pb
index d17e865ef1a7f3fb4cce8eda8c1b71c134cf2b91..5639218b11d5bed742464aba99981397dc5258a3 100644
--- a/ofl/warnes/METADATA.pb
+++ b/ofl/warnes/METADATA.pb
@@ -18,6 +18,15 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/etunni/warnes"
   commit: "ec72daae3a0a1542706f636b9165f70874599cc5"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Warnes-Regular.ttf"
+    dest_file: "Warnes-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/warnes/upstream.yaml b/ofl/warnes/upstream.yaml
deleted file mode 100644
index c807144b6b0ffdbcd9fcc36d818db7c438f6b712..0000000000000000000000000000000000000000
--- a/ofl/warnes/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Warnes-Regular.ttf: Warnes-Regular.ttf
-archive:
diff --git a/ofl/waterbrush/METADATA.pb b/ofl/waterbrush/METADATA.pb
index a3430677d92b012f7d74b3eddab35a2ff1ca5490..84d2b916a6b2b9eae9a8dc89772c246f1adaa16e 100644
--- a/ofl/waterbrush/METADATA.pb
+++ b/ofl/waterbrush/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/water-brush"
   commit: "b7a36104b4ba7d489ba4f34a14c7e39dccbab86f"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/WaterBrush-Regular.ttf"
+    dest_file: "WaterBrush-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/waterbrush/upstream.yaml b/ofl/waterbrush/upstream.yaml
deleted file mode 100644
index ec7a663cdfaf27c385300b0f061858e33cd8c66b..0000000000000000000000000000000000000000
--- a/ofl/waterbrush/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/WaterBrush-Regular.ttf: WaterBrush-Regular.ttf
diff --git a/ofl/waterfall/METADATA.pb b/ofl/waterfall/METADATA.pb
index cd1edaafa5997dbdde7b198b2a8a3983bac7e3aa..21dcd34528de66cf065afb42e2ef72d19f120635 100644
--- a/ofl/waterfall/METADATA.pb
+++ b/ofl/waterfall/METADATA.pb
@@ -16,5 +16,21 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/waterfall"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Waterfall-Regular.ttf"
+    dest_file: "Waterfall-Regular.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/waterfall/upstream.yaml b/ofl/waterfall/upstream.yaml
deleted file mode 100644
index ce1fd5b8c08d3d1241557508b5afb7703513ca57..0000000000000000000000000000000000000000
--- a/ofl/waterfall/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Waterfall-Regular.ttf: Waterfall-Regular.ttf
-repository_url: https://github.com/googlefonts/waterfall
diff --git a/ofl/wavefont/METADATA.pb b/ofl/wavefont/METADATA.pb
index 6eca02b4529f538230d82c63cf36810b957efa40..16242adecf691617df4af6051fbbc83dffd4b766 100644
--- a/ofl/wavefont/METADATA.pb
+++ b/ofl/wavefont/METADATA.pb
@@ -39,6 +39,15 @@ registry_default_overrides {
 source {
   repository_url: "https://github.com/dy/wavefont"
   commit: "91649d7bede2a302b8b820dbccc2401672400cdd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/variable/Wavefont[ROND,YELA,wght].ttf"
+    dest_file: "Wavefont[ROND,YELA,wght].ttf"
+  }
+  branch: "master"
 }
 sample_text {
   masthead_full: "111198765432111987654432111"
diff --git a/ofl/wavefont/upstream.yaml b/ofl/wavefont/upstream.yaml
deleted file mode 100644
index a395e6467724e07dcc6f933af6dd92e6109ad05d..0000000000000000000000000000000000000000
--- a/ofl/wavefont/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-archive:
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/variable/Wavefont[ROND,YELA,wght].ttf: Wavefont[ROND,YELA,wght].ttf
diff --git a/ofl/whisper/METADATA.pb b/ofl/whisper/METADATA.pb
index d46940a6651d841801253269bc80d57873b6fc89..f209b6d381c11fdf2286cb2d13ae42dc583c9234 100644
--- a/ofl/whisper/METADATA.pb
+++ b/ofl/whisper/METADATA.pb
@@ -19,6 +19,19 @@ subsets: "vietnamese"
 source {
   repository_url: "https://github.com/googlefonts/whisper"
   commit: "e546c2e4c06f4d04a8e5400ac64aba88b1cca511"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/Whisper-Regular.ttf"
+    dest_file: "Whisper-Regular.ttf"
+  }
+  branch: "master"
 }
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/whisper/upstream.yaml b/ofl/whisper/upstream.yaml
deleted file mode 100644
index da646d5e9ca37b23d3da1fcb0af10645759e2a01..0000000000000000000000000000000000000000
--- a/ofl/whisper/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/Whisper-Regular.ttf: Whisper-Regular.ttf
diff --git a/ofl/windsong/METADATA.pb b/ofl/windsong/METADATA.pb
index 767cc8084df5692a3cff024bba70980b80889987..28bf659278240ea2807afcc7d6d860c097501eea 100644
--- a/ofl/windsong/METADATA.pb
+++ b/ofl/windsong/METADATA.pb
@@ -25,5 +25,25 @@ subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
 subsets: "vietnamese"
+source {
+  repository_url: "https://github.com/googlefonts/windsong"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/WindSong-Regular.ttf"
+    dest_file: "WindSong-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/WindSong-Medium.ttf"
+    dest_file: "WindSong-Medium.ttf"
+  }
+  branch: "master"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/windsong/upstream.yaml b/ofl/windsong/upstream.yaml
deleted file mode 100644
index 3f2279e02a7d18ce8b404c2c008e021308311767..0000000000000000000000000000000000000000
--- a/ofl/windsong/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/WindSong-Regular.ttf: WindSong-Regular.ttf
-  fonts/ttf/WindSong-Medium.ttf: WindSong-Medium.ttf
-repository_url: https://github.com/googlefonts/windsong
diff --git a/ofl/wireone/METADATA.pb b/ofl/wireone/METADATA.pb
index 1244c273d36058d902c9645c079943840eb74ad3..5b481c4db09c1ef9205b66c3d09e54c088c2d182 100644
--- a/ofl/wireone/METADATA.pb
+++ b/ofl/wireone/METADATA.pb
@@ -14,5 +14,21 @@ fonts {
 }
 subsets: "latin"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/cyrealtype/Wire-One"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/TTF/WireOne-Regular.ttf"
+    dest_file: "WireOne-Regular.ttf"
+  }
+  branch: "master"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/wireone/upstream.yaml b/ofl/wireone/upstream.yaml
deleted file mode 100644
index 4056c1bae3e179bd63bec916217025b9194efbde..0000000000000000000000000000000000000000
--- a/ofl/wireone/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/TTF/WireOne-Regular.ttf: WireOne-Regular.ttf
-repository_url: https://github.com/cyrealtype/Wire-One
diff --git a/ofl/wixmadefordisplay/METADATA.pb b/ofl/wixmadefordisplay/METADATA.pb
index 6dd8a32f097c24351688a3ce5555cde125228ae0..4493ce0283efb305f5c84ae591ef247bd144c79c 100644
--- a/ofl/wixmadefordisplay/METADATA.pb
+++ b/ofl/wixmadefordisplay/METADATA.pb
@@ -26,6 +26,11 @@ axes {
 source {
   repository_url: "https://github.com/wix/wixmadefor"
   archive_url: "https://github.com/wix/wixmadefor/releases/download/3.100/wixmadefor-fonts.zip"
+  files {
+    source_file: "wixmadefor-fonts/fonts/variable/WixMadeforDisplay[wght].ttf"
+    dest_file: "WixMadeforDisplay[wght].ttf"
+  }
+  branch: "main"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/wixmadefordisplay/upstream.yaml b/ofl/wixmadefordisplay/upstream.yaml
deleted file mode 100644
index 3435fd179d6628a4fdd9df2ada60cc312c5f33b8..0000000000000000000000000000000000000000
--- a/ofl/wixmadefordisplay/upstream.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-archive: https://github.com/wix/wixmadefor/releases/download/3.100/wixmadefor-fonts.zip
-branch: main
-files:
-  wixmadefor-fonts/fonts/variable/WixMadeforDisplay[wght].ttf: WixMadeforDisplay[wght].ttf
diff --git a/ofl/workbench/METADATA.pb b/ofl/workbench/METADATA.pb
index 5bea59c1543e09cf15e8ea11ea1897586e67a34b..31e06dbd8cbe267ae4d9073b2a8bfe91aa8bb4ff 100644
--- a/ofl/workbench/METADATA.pb
+++ b/ofl/workbench/METADATA.pb
@@ -29,7 +29,20 @@ axes {
 source {
   repository_url: "https://github.com/jenskutilek/homecomputer-fonts"
   commit: "09b2f79d686453d3bc160d04a687488e66962c43"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "Workbench/fonts/variable/Workbench[BLED,SCAN].ttf"
+    dest_file: "Workbench[BLED,SCAN].ttf"
+  }
+  branch: "master"
 }
+minisite_url: "https://jenskutilek.github.io/homecomputer-fonts/documentation/demo-workbench.html"
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
-minisite_url: "https://jenskutilek.github.io/homecomputer-fonts/documentation/demo-workbench.html"
\ No newline at end of file
diff --git a/ofl/workbench/upstream.yaml b/ofl/workbench/upstream.yaml
deleted file mode 100644
index c4160892bc123084e6e572355c83d092513fc802..0000000000000000000000000000000000000000
--- a/ofl/workbench/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  Workbench/fonts/variable/Workbench[BLED,SCAN].ttf: Workbench[BLED,SCAN].ttf
-archive:
diff --git a/ofl/worksans/METADATA.pb b/ofl/worksans/METADATA.pb
index cfaca830110bb1ae344a7de960e47acfeb3297f7..37ce6d72edb9adb30f9f250e537d60fb84cfe265 100644
--- a/ofl/worksans/METADATA.pb
+++ b/ofl/worksans/METADATA.pb
@@ -30,3 +30,19 @@ axes {
   min_value: 100.0
   max_value: 900.0
 }
+source {
+  repository_url: "https://github.com/weiweihuanghuang/Work-Sans"
+  files {
+    source_file: "fonts/variable/WorkSans[wght].ttf"
+    dest_file: "WorkSans[wght].ttf"
+  }
+  files {
+    source_file: "fonts/variable/WorkSans-Italic[wght].ttf"
+    dest_file: "WorkSans-Italic[wght].ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  branch: "master"
+}
diff --git a/ofl/worksans/upstream.yaml b/ofl/worksans/upstream.yaml
deleted file mode 100644
index 9d481a4b5425a3e835c0d888a9a5a06a747d68c7..0000000000000000000000000000000000000000
--- a/ofl/worksans/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/variable/WorkSans[wght].ttf: WorkSans[wght].ttf
-  fonts/variable/WorkSans-Italic[wght].ttf: WorkSans-Italic[wght].ttf
-  OFL.txt: OFL.txt
-repository_url: https://github.com/weiweihuanghuang/Work-Sans
\ No newline at end of file
diff --git a/ofl/yaldevi/METADATA.pb b/ofl/yaldevi/METADATA.pb
index 038166a32eb1a8d335adf88977b46f727c1e2a38..f6b583b12b304343307c802665be2e033e1cc521 100644
--- a/ofl/yaldevi/METADATA.pb
+++ b/ofl/yaldevi/METADATA.pb
@@ -21,3 +21,19 @@ axes {
   min_value: 200.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/mooniak/yaldevi-font"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/Yaldevi[wght].ttf"
+    dest_file: "Yaldevi[wght].ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/yaldevi/upstream.yaml b/ofl/yaldevi/upstream.yaml
deleted file mode 100644
index 7e773d2710914d523357c838c6979150ecb953dc..0000000000000000000000000000000000000000
--- a/ofl/yaldevi/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/Yaldevi[wght].ttf: Yaldevi[wght].ttf
-repository_url: https://github.com/mooniak/yaldevi-font.git
diff --git a/ofl/yanonekaffeesatz/METADATA.pb b/ofl/yanonekaffeesatz/METADATA.pb
index e6ed4bca787cef0eea6175aaeaf041bec7371d1c..35fa07d1bae2b2f072ec6dda6b67e12c388b6fbd 100644
--- a/ofl/yanonekaffeesatz/METADATA.pb
+++ b/ofl/yanonekaffeesatz/METADATA.pb
@@ -28,6 +28,19 @@ axes {
 source {
   repository_url: "https://github.com/yanone/kaffeesatz"
   commit: "104c0ced99e8390bf5b138c5ca6065c0f5fcc333"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/variable/YanoneKaffeesatz[wght].ttf"
+    dest_file: "YanoneKaffeesatz[wght].ttf"
+  }
+  branch: "master"
 }
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/yanonekaffeesatz/upstream.yaml b/ofl/yanonekaffeesatz/upstream.yaml
deleted file mode 100644
index bc7004c4fde07a55108861621e57fc8814c275fd..0000000000000000000000000000000000000000
--- a/ofl/yanonekaffeesatz/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/variable/YanoneKaffeesatz[wght].ttf: YanoneKaffeesatz[wght].ttf
-archive:
diff --git a/ofl/yarndings12/METADATA.pb b/ofl/yarndings12/METADATA.pb
index 343614f2d2608cbd41ab9f8bb34ecbdd5a59b6bc..1f9de617ffe7a35444e043663900ca2dcea4b940 100644
--- a/ofl/yarndings12/METADATA.pb
+++ b/ofl/yarndings12/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-yarndings"
   commit: "200cc40a30ffbe590807cdfc8b8e17d0d63c43ff"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Yarndings12-Regular.ttf"
+    dest_file: "Yarndings12-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/yarndings12/upstream.yaml b/ofl/yarndings12/upstream.yaml
deleted file mode 100644
index 32395fbdda437b9e11c24f5a78c4244824fcad3b..0000000000000000000000000000000000000000
--- a/ofl/yarndings12/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Yarndings12-Regular.ttf: Yarndings12-Regular.ttf
-archive:
diff --git a/ofl/yarndings12charted/METADATA.pb b/ofl/yarndings12charted/METADATA.pb
index 0bf6ef8cc029eb92391d5e42ea772c3c457807b5..dc48d1d302bfd972f41e8c762cb5a63e7f0d7472 100644
--- a/ofl/yarndings12charted/METADATA.pb
+++ b/ofl/yarndings12charted/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-yarndings"
   commit: "200cc40a30ffbe590807cdfc8b8e17d0d63c43ff"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Yarndings12Charted-Regular.ttf"
+    dest_file: "Yarndings12Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/yarndings12charted/upstream.yaml b/ofl/yarndings12charted/upstream.yaml
deleted file mode 100644
index 3b79cbe1aee44a5f799899254985096ba43eedc2..0000000000000000000000000000000000000000
--- a/ofl/yarndings12charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Yarndings12Charted-Regular.ttf: Yarndings12Charted-Regular.ttf
-archive:
diff --git a/ofl/yarndings20/METADATA.pb b/ofl/yarndings20/METADATA.pb
index a7c90f2e89f2662ccbf1663d8dd2a073fa466258..d9f4c68756a39d2a2b11cd1a33e67b809332d665 100644
--- a/ofl/yarndings20/METADATA.pb
+++ b/ofl/yarndings20/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-yarndings"
   commit: "200cc40a30ffbe590807cdfc8b8e17d0d63c43ff"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Yarndings20-Regular.ttf"
+    dest_file: "Yarndings20-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/yarndings20/upstream.yaml b/ofl/yarndings20/upstream.yaml
deleted file mode 100644
index bd27019ff31ecc028f760e366b870327081ff45a..0000000000000000000000000000000000000000
--- a/ofl/yarndings20/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Yarndings20-Regular.ttf: Yarndings20-Regular.ttf
-archive:
diff --git a/ofl/yarndings20charted/METADATA.pb b/ofl/yarndings20charted/METADATA.pb
index 15e33e1bb4bc1e6f7f1820efbf5b52183b9d9654..a6a5df313ec985342c901c633c1ad5dabf66691e 100644
--- a/ofl/yarndings20charted/METADATA.pb
+++ b/ofl/yarndings20charted/METADATA.pb
@@ -19,6 +19,15 @@ subsets: "symbols"
 source {
   repository_url: "https://github.com/scfried/soft-type-yarndings"
   commit: "200cc40a30ffbe590807cdfc8b8e17d0d63c43ff"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/Yarndings20Charted-Regular.ttf"
+    dest_file: "Yarndings20Charted-Regular.ttf"
+  }
+  branch: "main"
 }
 classifications: "DISPLAY"
 classifications: "SYMBOLS"
diff --git a/ofl/yarndings20charted/upstream.yaml b/ofl/yarndings20charted/upstream.yaml
deleted file mode 100644
index 6e1a179a30519097fdde729a10ef1597cbf12bb5..0000000000000000000000000000000000000000
--- a/ofl/yarndings20charted/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/Yarndings20Charted-Regular.ttf: Yarndings20Charted-Regular.ttf
-archive:
diff --git a/ofl/yomogi/METADATA.pb b/ofl/yomogi/METADATA.pb
index e9cbc0b1b087b60a0a33fde8490f073e885e4104..b2b8eed0c1299079021db736092bed5761bd115c 100644
--- a/ofl/yomogi/METADATA.pb
+++ b/ofl/yomogi/METADATA.pb
@@ -20,5 +20,18 @@ subsets: "menu"
 subsets: "vietnamese"
 source {
   repository_url: "https://github.com/satsuyako/YomogiFont"
+  files {
+    source_file: "fonts/ttf/Yomogi-Regular.ttf"
+    dest_file: "Yomogi-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "ver3.00"
 }
 primary_script: "Hira"
diff --git a/ofl/yomogi/upstream.yaml b/ofl/yomogi/upstream.yaml
deleted file mode 100644
index a63f895bc71bf45b5ceaa087b90f8f98768ddfec..0000000000000000000000000000000000000000
--- a/ofl/yomogi/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: ver3.00
-files:
-  fonts/ttf/Yomogi-Regular.ttf: Yomogi-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
diff --git a/ofl/youngserif/METADATA.pb b/ofl/youngserif/METADATA.pb
index 35ad2ad694aca902443c97dbf68aa66244210c70..a476d264706b964069c391fbba2fb4183e9ad4e6 100644
--- a/ofl/youngserif/METADATA.pb
+++ b/ofl/youngserif/METADATA.pb
@@ -18,5 +18,14 @@ subsets: "menu"
 source {
   repository_url: "https://github.com/noirblancrouge/YoungSerif"
   commit: "8d67638d5ae1aa9e339d53326cd608e186d03dbd"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "fonts/ttf/YoungSerif-Regular.ttf"
+    dest_file: "YoungSerif-Regular.ttf"
+  }
+  branch: "master"
 }
 stroke: "SERIF"
diff --git a/ofl/youngserif/upstream.yaml b/ofl/youngserif/upstream.yaml
deleted file mode 100644
index 22f12e930b57962e0396994abda319ebd1a4d25a..0000000000000000000000000000000000000000
--- a/ofl/youngserif/upstream.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  fonts/ttf/YoungSerif-Regular.ttf: YoungSerif-Regular.ttf
-archive:
diff --git a/ofl/yrsa/METADATA.pb b/ofl/yrsa/METADATA.pb
index d320ed836cb74bc3303b169d866d0b7fd15792ac..de2c980e94d124581399c73396463d5bfa891d5a 100644
--- a/ofl/yrsa/METADATA.pb
+++ b/ofl/yrsa/METADATA.pb
@@ -30,3 +30,23 @@ axes {
   min_value: 300.0
   max_value: 700.0
 }
+source {
+  repository_url: "https://github.com/rosettatype/yrsa-rasa"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "documentation/Yrsa-DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/YrsaVariable/YrsaVF-Ups.ttf"
+    dest_file: "Yrsa[wght].ttf"
+  }
+  files {
+    source_file: "fonts/YrsaVariable/YrsaVF-Its.ttf"
+    dest_file: "Yrsa-Italic[wght].ttf"
+  }
+  branch: "master"
+}
diff --git a/ofl/yrsa/upstream.yaml b/ofl/yrsa/upstream.yaml
deleted file mode 100644
index c57fbb1f45b576c3bad65bbcbf08a2d765d7556a..0000000000000000000000000000000000000000
--- a/ofl/yrsa/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  documentation/Yrsa-DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/YrsaVariable/YrsaVF-Ups.ttf: Yrsa[wght].ttf
-  fonts/YrsaVariable/YrsaVF-Its.ttf: Yrsa-Italic[wght].ttf
-repository_url: https://github.com/rosettatype/yrsa-rasa.git
diff --git a/ofl/ysabeau/METADATA.pb b/ofl/ysabeau/METADATA.pb
index eb2e514f7e9da309cef770d0bf713f2b1553d550..532b8387c527dc97f599b8319582761659fe8f77 100644
--- a/ofl/ysabeau/METADATA.pb
+++ b/ofl/ysabeau/METADATA.pb
@@ -38,4 +38,21 @@ axes {
 source {
   repository_url: "https://github.com/CatharsisFonts/Ysabeau"
   commit: "8e2ca3573545176256d370f891604bc453029568"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/Ysabeau[wght].ttf"
+    dest_file: "Ysabeau[wght].ttf"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/Ysabeau-Italic[wght].ttf"
+    dest_file: "Ysabeau-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/ysabeau/upstream.yaml b/ofl/ysabeau/upstream.yaml
deleted file mode 100644
index dbaecde7f4c22f4f52c1bae36beb73fa01b68a31..0000000000000000000000000000000000000000
--- a/ofl/ysabeau/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/googlefonts/variable/Ysabeau[wght].ttf: Ysabeau[wght].ttf
-  fonts/googlefonts/variable/Ysabeau-Italic[wght].ttf: Ysabeau-Italic[wght].ttf
-archive:
diff --git a/ofl/ysabeauinfant/METADATA.pb b/ofl/ysabeauinfant/METADATA.pb
index f59d6c26737ac60fff9c2b7601c5ccc26143f9b6..25bb9333c14c337d653b5c3839a8c94541d4c7ef 100644
--- a/ofl/ysabeauinfant/METADATA.pb
+++ b/ofl/ysabeauinfant/METADATA.pb
@@ -38,4 +38,21 @@ axes {
 source {
   repository_url: "https://github.com/CatharsisFonts/Ysabeau"
   commit: "8e2ca3573545176256d370f891604bc453029568"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/YsabeauInfant[wght].ttf"
+    dest_file: "YsabeauInfant[wght].ttf"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/YsabeauInfant-Italic[wght].ttf"
+    dest_file: "YsabeauInfant-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/ysabeauinfant/upstream.yaml b/ofl/ysabeauinfant/upstream.yaml
deleted file mode 100644
index 51e892b1451e9efcbe1707f985a76606ad61a66f..0000000000000000000000000000000000000000
--- a/ofl/ysabeauinfant/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/googlefonts/variable/YsabeauInfant[wght].ttf: YsabeauInfant[wght].ttf
-  fonts/googlefonts/variable/YsabeauInfant-Italic[wght].ttf: YsabeauInfant-Italic[wght].ttf
-archive:
diff --git a/ofl/ysabeauoffice/METADATA.pb b/ofl/ysabeauoffice/METADATA.pb
index e106031ea1ff257ad8000519c2b14dc6e7bbc38d..7c4e894bf07372360a72480cdfec333a2c57fcf2 100644
--- a/ofl/ysabeauoffice/METADATA.pb
+++ b/ofl/ysabeauoffice/METADATA.pb
@@ -38,4 +38,21 @@ axes {
 source {
   repository_url: "https://github.com/CatharsisFonts/Ysabeau"
   commit: "8e2ca3573545176256d370f891604bc453029568"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/YsabeauOffice[wght].ttf"
+    dest_file: "YsabeauOffice[wght].ttf"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/YsabeauOffice-Italic[wght].ttf"
+    dest_file: "YsabeauOffice-Italic[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/ysabeauoffice/upstream.yaml b/ofl/ysabeauoffice/upstream.yaml
deleted file mode 100644
index b2dd23b9f5b7192909471e952e0414b73b7f1198..0000000000000000000000000000000000000000
--- a/ofl/ysabeauoffice/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/googlefonts/variable/YsabeauOffice[wght].ttf: YsabeauOffice[wght].ttf
-  fonts/googlefonts/variable/YsabeauOffice-Italic[wght].ttf: YsabeauOffice-Italic[wght].ttf
-archive:
diff --git a/ofl/ysabeausc/METADATA.pb b/ofl/ysabeausc/METADATA.pb
index 1511cda113a09da8eaf51bc532313b8619b20589..a0fcf55dee8e73cdec2e7c15a3b38ae1862f5d51 100644
--- a/ofl/ysabeausc/METADATA.pb
+++ b/ofl/ysabeausc/METADATA.pb
@@ -29,4 +29,17 @@ axes {
 source {
   repository_url: "https://github.com/CatharsisFonts/Ysabeau"
   commit: "8e2ca3573545176256d370f891604bc453029568"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/googlefonts/variable/YsabeauSC[wght].ttf"
+    dest_file: "YsabeauSC[wght].ttf"
+  }
+  branch: "master"
 }
diff --git a/ofl/ysabeausc/upstream.yaml b/ofl/ysabeausc/upstream.yaml
deleted file mode 100644
index b5be58fd2be90b9dea7cd03276d1ea82dd752663..0000000000000000000000000000000000000000
--- a/ofl/ysabeausc/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/googlefonts/variable/YsabeauSC[wght].ttf: YsabeauSC[wght].ttf
-archive:
diff --git a/ofl/yujiboku/METADATA.pb b/ofl/yujiboku/METADATA.pb
index a2d050774511cb16585e6ee2bc1d86b61ab6d18b..03afa2af32e07844c4e07ca1f78185a8788e4717 100644
--- a/ofl/yujiboku/METADATA.pb
+++ b/ofl/yujiboku/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Kinutafontfactory/Yuji"
+  files {
+    source_file: "fonts/ttf/YujiBoku-Regular.ttf"
+    dest_file: "YujiBoku-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "boku_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/yujiboku/upstream.yaml b/ofl/yujiboku/upstream.yaml
deleted file mode 100644
index 0863301d921ccfaebe295f658a1ef03942c50c30..0000000000000000000000000000000000000000
--- a/ofl/yujiboku/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/YujiBoku-Regular.ttf: YujiBoku-Regular.ttf
-  OFL.txt: OFL.txt
-  boku_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Kinutafontfactory/Yuji.git
diff --git a/ofl/yujihentaiganaakari/METADATA.pb b/ofl/yujihentaiganaakari/METADATA.pb
index b3e6cc0f2e2e120b0055715ef8272183e14c4449..2716e52cd171749abb618d00cd54e345661a21b9 100644
--- a/ofl/yujihentaiganaakari/METADATA.pb
+++ b/ofl/yujihentaiganaakari/METADATA.pb
@@ -16,6 +16,22 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Kinutafontfactory/Yuji"
+  files {
+    source_file: "fonts/ttf/YujiHentaiganaAkari-Regular.ttf"
+    dest_file: "YujiHentaiganaAkari-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "akari_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/yujihentaiganaakari/upstream.yaml b/ofl/yujihentaiganaakari/upstream.yaml
deleted file mode 100644
index 14693e88b407561372ebb4ac841d3080b392a7f4..0000000000000000000000000000000000000000
--- a/ofl/yujihentaiganaakari/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/YujiHentaiganaAkari-Regular.ttf: YujiHentaiganaAkari-Regular.ttf
-  OFL.txt: OFL.txt
-  akari_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Kinutafontfactory/Yuji.git
diff --git a/ofl/yujihentaiganaakebono/METADATA.pb b/ofl/yujihentaiganaakebono/METADATA.pb
index 9bf3bb1f178f2260e0156a1acdef2d9403d20911..3c36b08ab243f86ae756599d0b16fdb480267fcd 100644
--- a/ofl/yujihentaiganaakebono/METADATA.pb
+++ b/ofl/yujihentaiganaakebono/METADATA.pb
@@ -16,6 +16,22 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Kinutafontfactory/Yuji"
+  files {
+    source_file: "fonts/ttf/YujiHentaiganaAkebono-Regular.ttf"
+    dest_file: "YujiHentaiganaAkebono-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "akebono_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
+languages: "ja_Kana"  # Japanese, Katakana
+languages: "ja_Hira"  # Japanese, Hiragana
 primary_script: "Hira"
-languages: "ja_Kana"
-languages: "ja_Hira"
diff --git a/ofl/yujihentaiganaakebono/upstream.yaml b/ofl/yujihentaiganaakebono/upstream.yaml
deleted file mode 100644
index f377b3fd341b960247acba8bec58356ff187475d..0000000000000000000000000000000000000000
--- a/ofl/yujihentaiganaakebono/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/YujiHentaiganaAkebono-Regular.ttf: YujiHentaiganaAkebono-Regular.ttf
-  OFL.txt: OFL.txt
-  akebono_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Kinutafontfactory/Yuji.git
diff --git a/ofl/yujimai/METADATA.pb b/ofl/yujimai/METADATA.pb
index 11ab36b356f7b219eeaa7fa049d14bd56250c765..fceb5d11d0be66ea6f182ce46d807c56bd6ab2c9 100644
--- a/ofl/yujimai/METADATA.pb
+++ b/ofl/yujimai/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Kinutafontfactory/Yuji"
+  files {
+    source_file: "fonts/ttf/YujiMai-Regular.ttf"
+    dest_file: "YujiMai-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "mai_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/yujimai/upstream.yaml b/ofl/yujimai/upstream.yaml
deleted file mode 100644
index 9a853d1c126b4d202317885be5bad419e3a12ae2..0000000000000000000000000000000000000000
--- a/ofl/yujimai/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/YujiMai-Regular.ttf: YujiMai-Regular.ttf
-  OFL.txt: OFL.txt
-  mai_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Kinutafontfactory/Yuji.git
diff --git a/ofl/yujisyuku/METADATA.pb b/ofl/yujisyuku/METADATA.pb
index cd182afbaee4ec2e6b73d7c3145a08bf20a1125a..e6359ac5c3f53de6d44fe950b8c0e9708a93a605 100644
--- a/ofl/yujisyuku/METADATA.pb
+++ b/ofl/yujisyuku/METADATA.pb
@@ -17,3 +17,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/Kinutafontfactory/Yuji"
+  files {
+    source_file: "fonts/ttf/YujiSyuku-Regular.ttf"
+    dest_file: "YujiSyuku-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "syuku_DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/yujisyuku/upstream.yaml b/ofl/yujisyuku/upstream.yaml
deleted file mode 100644
index 5b77494cd6791e7fa18aa1f3998091a8b16475e7..0000000000000000000000000000000000000000
--- a/ofl/yujisyuku/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/YujiSyuku-Regular.ttf: YujiSyuku-Regular.ttf
-  OFL.txt: OFL.txt
-  syuku_DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/Kinutafontfactory/Yuji.git
diff --git a/ofl/yuseimagic/METADATA.pb b/ofl/yuseimagic/METADATA.pb
index abfb86823e789f0b81a63438da9f65f05dfd8c45..c427c5cd05f8478c0628429aa4c89f910599799e 100644
--- a/ofl/yuseimagic/METADATA.pb
+++ b/ofl/yuseimagic/METADATA.pb
@@ -16,3 +16,19 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/tanukifont/YuseiMagic"
+  files {
+    source_file: "fonts/ttf/YuseiMagic-Regular.ttf"
+    dest_file: "YuseiMagic-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "master"
+}
diff --git a/ofl/yuseimagic/upstream.yaml b/ofl/yuseimagic/upstream.yaml
deleted file mode 100644
index 978d20979d81d4ad9f4591163174bd670fbe2b6c..0000000000000000000000000000000000000000
--- a/ofl/yuseimagic/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: master
-files:
-  fonts/ttf/YuseiMagic-Regular.ttf: YuseiMagic-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/tanukifont/YuseiMagic.git
diff --git a/ofl/zenantique/METADATA.pb b/ofl/zenantique/METADATA.pb
index 85a8d0c62fb9b487f7822165e05f16e377a7ee2f..db66bba1fbc6c339bd2436f7397ff3764fe53937 100644
--- a/ofl/zenantique/METADATA.pb
+++ b/ofl/zenantique/METADATA.pb
@@ -18,4 +18,20 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-antique"
+  files {
+    source_file: "fonts/ttf/ZenAntique-Regular.ttf"
+    dest_file: "ZenAntique-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
diff --git a/ofl/zenantique/upstream.yaml b/ofl/zenantique/upstream.yaml
deleted file mode 100644
index e496478f057064be719608fe42b207e57b46f338..0000000000000000000000000000000000000000
--- a/ofl/zenantique/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenAntique-Regular.ttf: ZenAntique-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-antique
diff --git a/ofl/zenantiquesoft/METADATA.pb b/ofl/zenantiquesoft/METADATA.pb
index 3b97178648928a21c56ad454109b49411d6e8466..cdcb6b0d135fb59a9ea0d15f07fb7109e5b7a3ad 100644
--- a/ofl/zenantiquesoft/METADATA.pb
+++ b/ofl/zenantiquesoft/METADATA.pb
@@ -18,4 +18,20 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-antique"
+  files {
+    source_file: "fonts/ttf/ZenAntiqueSoft-Regular.ttf"
+    dest_file: "ZenAntiqueSoft-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
diff --git a/ofl/zenantiquesoft/upstream.yaml b/ofl/zenantiquesoft/upstream.yaml
deleted file mode 100644
index 2b554a18a0d51dc5dfd7b329b91370995b7ba59c..0000000000000000000000000000000000000000
--- a/ofl/zenantiquesoft/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenAntiqueSoft-Regular.ttf: ZenAntiqueSoft-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-antique
diff --git a/ofl/zendots/METADATA.pb b/ofl/zendots/METADATA.pb
index ccf291549d79fed548feafc7223ab9ed361ad4e5..82f0b162a33c9afe331c7bb391ce61b8506533db 100644
--- a/ofl/zendots/METADATA.pb
+++ b/ofl/zendots/METADATA.pb
@@ -15,5 +15,21 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-dots"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/ZenDots-Regular.ttf"
+    dest_file: "ZenDots-Regular.ttf"
+  }
+  branch: "main"
+}
 stroke: "SANS_SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/zendots/upstream.yaml b/ofl/zendots/upstream.yaml
deleted file mode 100644
index ee5c8b492aa7b7be78e1f45c5da134f37b99e4cc..0000000000000000000000000000000000000000
--- a/ofl/zendots/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/ZenDots-Regular.ttf: ZenDots-Regular.ttf
-repository_url: https://github.com/googlefonts/zen-dots
diff --git a/ofl/zenkakugothicantique/METADATA.pb b/ofl/zenkakugothicantique/METADATA.pb
index aa2e6b220ea1f4714e8a71389ef3a99da97ae6ee..f7babd71cd5507a15316b584e8e62c7135bd841b 100644
--- a/ofl/zenkakugothicantique/METADATA.pb
+++ b/ofl/zenkakugothicantique/METADATA.pb
@@ -53,4 +53,36 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-kakugothic"
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicAntique-Light.ttf"
+    dest_file: "ZenKakuGothicAntique-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicAntique-Regular.ttf"
+    dest_file: "ZenKakuGothicAntique-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicAntique-Medium.ttf"
+    dest_file: "ZenKakuGothicAntique-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicAntique-Bold.ttf"
+    dest_file: "ZenKakuGothicAntique-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicAntique-Black.ttf"
+    dest_file: "ZenKakuGothicAntique-Black.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
diff --git a/ofl/zenkakugothicantique/upstream.yaml b/ofl/zenkakugothicantique/upstream.yaml
deleted file mode 100644
index fc13613bfaeffb334949f1cf7ec3e5ec9a6df6d2..0000000000000000000000000000000000000000
--- a/ofl/zenkakugothicantique/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenKakuGothicAntique-Light.ttf: ZenKakuGothicAntique-Light.ttf
-  fonts/ttf/ZenKakuGothicAntique-Regular.ttf: ZenKakuGothicAntique-Regular.ttf
-  fonts/ttf/ZenKakuGothicAntique-Medium.ttf: ZenKakuGothicAntique-Medium.ttf
-  fonts/ttf/ZenKakuGothicAntique-Bold.ttf: ZenKakuGothicAntique-Bold.ttf
-  fonts/ttf/ZenKakuGothicAntique-Black.ttf: ZenKakuGothicAntique-Black.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-kakugothic.git
diff --git a/ofl/zenkakugothicnew/METADATA.pb b/ofl/zenkakugothicnew/METADATA.pb
index 40a7d34093802de177198bbdcb195d6e19a8c480..0bc8bdb5d5427748a364c94c826e4dc78226b02c 100644
--- a/ofl/zenkakugothicnew/METADATA.pb
+++ b/ofl/zenkakugothicnew/METADATA.pb
@@ -53,4 +53,36 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-kakugothic"
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicNew-Light.ttf"
+    dest_file: "ZenKakuGothicNew-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicNew-Regular.ttf"
+    dest_file: "ZenKakuGothicNew-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicNew-Medium.ttf"
+    dest_file: "ZenKakuGothicNew-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicNew-Bold.ttf"
+    dest_file: "ZenKakuGothicNew-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenKakuGothicNew-Black.ttf"
+    dest_file: "ZenKakuGothicNew-Black.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
diff --git a/ofl/zenkakugothicnew/upstream.yaml b/ofl/zenkakugothicnew/upstream.yaml
deleted file mode 100644
index ea6cdc0a20059da58491a383fed75146b20ac885..0000000000000000000000000000000000000000
--- a/ofl/zenkakugothicnew/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenKakuGothicNew-Light.ttf: ZenKakuGothicNew-Light.ttf
-  fonts/ttf/ZenKakuGothicNew-Regular.ttf: ZenKakuGothicNew-Regular.ttf
-  fonts/ttf/ZenKakuGothicNew-Medium.ttf: ZenKakuGothicNew-Medium.ttf
-  fonts/ttf/ZenKakuGothicNew-Bold.ttf: ZenKakuGothicNew-Bold.ttf
-  fonts/ttf/ZenKakuGothicNew-Black.ttf: ZenKakuGothicNew-Black.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-kakugothic.git
diff --git a/ofl/zenkurenaido/METADATA.pb b/ofl/zenkurenaido/METADATA.pb
index aa906e125b400fa0e726f0535abcb7d401fb3e7d..05da90dcc0fafb35fbc98503421d7e73498ee7d8 100644
--- a/ofl/zenkurenaido/METADATA.pb
+++ b/ofl/zenkurenaido/METADATA.pb
@@ -18,4 +18,20 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-kurenaido"
+  files {
+    source_file: "fonts/ttf/ZenKurenaido-Regular.ttf"
+    dest_file: "ZenKurenaido-Regular.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
diff --git a/ofl/zenkurenaido/upstream.yaml b/ofl/zenkurenaido/upstream.yaml
deleted file mode 100644
index ee7d122fa43ccb453cacd14f56138b7e33e57d48..0000000000000000000000000000000000000000
--- a/ofl/zenkurenaido/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenKurenaido-Regular.ttf: ZenKurenaido-Regular.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-kurenaido
diff --git a/ofl/zenloop/METADATA.pb b/ofl/zenloop/METADATA.pb
index a3b032206f3d5462cbd53bc294204ac15f9c5b3e..a99dc3b46bd2f0cb5c1d3f2c292a0264646117e6 100644
--- a/ofl/zenloop/METADATA.pb
+++ b/ofl/zenloop/METADATA.pb
@@ -24,5 +24,25 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-loop"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/ZenLoop-Regular.ttf"
+    dest_file: "ZenLoop-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenLoop-Italic.ttf"
+    dest_file: "ZenLoop-Italic.ttf"
+  }
+  branch: "main"
+}
 classifications: "DISPLAY"
 classifications: "HANDWRITING"
diff --git a/ofl/zenloop/upstream.yaml b/ofl/zenloop/upstream.yaml
deleted file mode 100644
index fbe37f3048b72e8c628c46a968665c99cc2d3819..0000000000000000000000000000000000000000
--- a/ofl/zenloop/upstream.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/ZenLoop-Regular.ttf: ZenLoop-Regular.ttf
-  fonts/ttf/ZenLoop-Italic.ttf: ZenLoop-Italic.ttf
-repository_url: https://github.com/googlefonts/zen-loop
diff --git a/ofl/zenmarugothic/METADATA.pb b/ofl/zenmarugothic/METADATA.pb
index 56f23adcaa5e59724499660a0129ba9581680d2f..7232383c766166f22d601336477873e1462f2289 100644
--- a/ofl/zenmarugothic/METADATA.pb
+++ b/ofl/zenmarugothic/METADATA.pb
@@ -54,6 +54,38 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-marugothic"
+  files {
+    source_file: "fonts/ttf/ZenMaruGothic-Light.ttf"
+    dest_file: "ZenMaruGothic-Light.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenMaruGothic-Regular.ttf"
+    dest_file: "ZenMaruGothic-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenMaruGothic-Medium.ttf"
+    dest_file: "ZenMaruGothic-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenMaruGothic-Bold.ttf"
+    dest_file: "ZenMaruGothic-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenMaruGothic-Black.ttf"
+    dest_file: "ZenMaruGothic-Black.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
 stroke: "SERIF"
 classifications: "DISPLAY"
diff --git a/ofl/zenmarugothic/upstream.yaml b/ofl/zenmarugothic/upstream.yaml
deleted file mode 100644
index a55ed4a980509b21614ab72e735175b3997ee6b3..0000000000000000000000000000000000000000
--- a/ofl/zenmarugothic/upstream.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenMaruGothic-Light.ttf: ZenMaruGothic-Light.ttf
-  fonts/ttf/ZenMaruGothic-Regular.ttf: ZenMaruGothic-Regular.ttf
-  fonts/ttf/ZenMaruGothic-Medium.ttf: ZenMaruGothic-Medium.ttf
-  fonts/ttf/ZenMaruGothic-Bold.ttf: ZenMaruGothic-Bold.ttf
-  fonts/ttf/ZenMaruGothic-Black.ttf: ZenMaruGothic-Black.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-marugothic
-archive:
diff --git a/ofl/zenoldmincho/METADATA.pb b/ofl/zenoldmincho/METADATA.pb
index 5f1c4a1eae78678248b45378dd5e1075571f78a1..f68060c2c65d97c351550241b2aa8eb25d71a560 100644
--- a/ofl/zenoldmincho/METADATA.pb
+++ b/ofl/zenoldmincho/METADATA.pb
@@ -54,4 +54,36 @@ subsets: "japanese"
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-oldmincho"
+  files {
+    source_file: "fonts/ttf/ZenOldMincho-Regular.ttf"
+    dest_file: "ZenOldMincho-Regular.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenOldMincho-Medium.ttf"
+    dest_file: "ZenOldMincho-Medium.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenOldMincho-SemiBold.ttf"
+    dest_file: "ZenOldMincho-SemiBold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenOldMincho-Bold.ttf"
+    dest_file: "ZenOldMincho-Bold.ttf"
+  }
+  files {
+    source_file: "fonts/ttf/ZenOldMincho-Black.ttf"
+    dest_file: "ZenOldMincho-Black.ttf"
+  }
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  branch: "main"
+}
 primary_script: "Jpan"
diff --git a/ofl/zenoldmincho/upstream.yaml b/ofl/zenoldmincho/upstream.yaml
deleted file mode 100644
index 755759d01c74bd23b63f536c88b41fb1e062d544..0000000000000000000000000000000000000000
--- a/ofl/zenoldmincho/upstream.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-branch: main
-files:
-  fonts/ttf/ZenOldMincho-Regular.ttf: ZenOldMincho-Regular.ttf
-  fonts/ttf/ZenOldMincho-Medium.ttf: ZenOldMincho-Medium.ttf
-  fonts/ttf/ZenOldMincho-SemiBold.ttf: ZenOldMincho-SemiBold.ttf
-  fonts/ttf/ZenOldMincho-Bold.ttf: ZenOldMincho-Bold.ttf
-  fonts/ttf/ZenOldMincho-Black.ttf: ZenOldMincho-Black.ttf
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-repository_url: https://github.com/googlefonts/zen-oldmincho.git
diff --git a/ofl/zentokyozoo/METADATA.pb b/ofl/zentokyozoo/METADATA.pb
index 776f74a34183d9b9c1862b03fae19ea6eb21ad18..90f48a831f1b4fc34bbeaa7863023a80dae97c15 100644
--- a/ofl/zentokyozoo/METADATA.pb
+++ b/ofl/zentokyozoo/METADATA.pb
@@ -15,3 +15,19 @@ fonts {
 subsets: "latin"
 subsets: "latin-ext"
 subsets: "menu"
+source {
+  repository_url: "https://github.com/googlefonts/zen-tokyo-zoo"
+  files {
+    source_file: "OFL.txt"
+    dest_file: "OFL.txt"
+  }
+  files {
+    source_file: "DESCRIPTION.en_us.html"
+    dest_file: "DESCRIPTION.en_us.html"
+  }
+  files {
+    source_file: "fonts/ttf/ZenTokyoZoo-Regular.ttf"
+    dest_file: "ZenTokyoZoo-Regular.ttf"
+  }
+  branch: "main"
+}
diff --git a/ofl/zentokyozoo/upstream.yaml b/ofl/zentokyozoo/upstream.yaml
deleted file mode 100644
index 117a430c204e0661e5491adf2c703c4d5247f87e..0000000000000000000000000000000000000000
--- a/ofl/zentokyozoo/upstream.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-branch: main
-files:
-  OFL.txt: OFL.txt
-  DESCRIPTION.en_us.html: DESCRIPTION.en_us.html
-  fonts/ttf/ZenTokyoZoo-Regular.ttf: ZenTokyoZoo-Regular.ttf
-repository_url: https://github.com/googlefonts/zen-tokyo-zoo