From 66f91f10f8e8590367c541bcb5adbe66c933f15f Mon Sep 17 00:00:00 2001
From: Simon Cozens <simon@simon-cozens.org>
Date: Wed, 3 Apr 2024 21:49:42 +0100
Subject: [PATCH] Merge upstream.yaml into METADATA.pb [skip ci]

---
 ofl/abeezee/METADATA.pb                       |  16 ++
 ofl/abeezee/upstream.yaml                     |   6 -
 ofl/aboreto/METADATA.pb                       |   9 +
 ofl/aboreto/upstream.yaml                     |   5 -
 ofl/abyssinicasil/METADATA.pb                 |   9 +
 ofl/abyssinicasil/upstream.yaml               |   5 -
 ofl/adlamdisplay/METADATA.pb                  |  13 ++
 ofl/adlamdisplay/upstream.yaml                |   6 -
 ofl/adventpro/METADATA.pb                     |  17 ++
 ofl/adventpro/upstream.yaml                   |   7 -
 ofl/afacad/METADATA.pb                        |  13 ++
 ofl/afacad/upstream.yaml                      |   6 -
 ofl/agbalumo/METADATA.pb                      |  15 +-
 ofl/agbalumo/upstream.yaml                    |   6 -
 ofl/agdasima/METADATA.pb                      |  17 ++
 ofl/agdasima/upstream.yaml                    |   7 -
 ofl/akatab/METADATA.pb                        |  31 ++-
 ofl/akatab/upstream.yaml                      |  10 -
 ofl/akayakanadaka/METADATA.pb                 |  16 ++
 ofl/akayakanadaka/upstream.yaml               |   6 -
 ofl/akayatelivigala/METADATA.pb               |  16 ++
 ofl/akayatelivigala/upstream.yaml             |   6 -
 ofl/akshar/METADATA.pb                        |  13 ++
 ofl/akshar/upstream.yaml                      |   6 -
 ofl/alatsi/METADATA.pb                        |   9 +
 ofl/alatsi/upstream.yaml                      |   5 -
 ofl/albertsans/METADATA.pb                    |  13 ++
 ofl/albertsans/upstream.yaml                  |   6 -
 ofl/alegreya/METADATA.pb                      |  19 +-
 ofl/alegreya/upstream.yaml                    |   6 -
 ofl/aleo/METADATA.pb                          |  13 ++
 ofl/aleo/upstream.yaml                        |   6 -
 ofl/alexandria/METADATA.pb                    |  13 ++
 ofl/alexandria/upstream.yaml                  |   6 -
 ofl/alexbrush/METADATA.pb                     |   5 +
 ofl/alexbrush/upstream.yaml                   |   4 -
 ofl/alice/METADATA.pb                         |  12 ++
 ofl/alice/upstream.yaml                       |   5 -
 ofl/alike/METADATA.pb                         |   9 +
 ofl/alike/upstream.yaml                       |   5 -
 ofl/alikeangular/METADATA.pb                  |   9 +
 ofl/alikeangular/upstream.yaml                |   5 -
 ofl/alkalami/METADATA.pb                      |   9 +
 ofl/alkalami/upstream.yaml                    |   5 -
 ofl/alkatra/METADATA.pb                       |  13 ++
 ofl/alkatra/upstream.yaml                     |   6 -
 ofl/allison/METADATA.pb                       |  16 ++
 ofl/allison/upstream.yaml                     |   6 -
 ofl/allura/METADATA.pb                        |   5 +
 ofl/allura/upstream.yaml                      |   4 -
 ofl/alumnisans/METADATA.pb                    |  16 ++
 ofl/alumnisans/upstream.yaml                  |   6 -
 ofl/alumnisanscollegiateone/METADATA.pb       |  17 ++
 ofl/alumnisanscollegiateone/upstream.yaml     |   7 -
 ofl/alumnisansinlineone/METADATA.pb           |  17 ++
 ofl/alumnisansinlineone/upstream.yaml         |   6 -
 ofl/alumnisanspinstripe/METADATA.pb           |  17 ++
 ofl/alumnisanspinstripe/upstream.yaml         |   7 -
 ofl/amiriquran/METADATA.pb                    |  11 +-
 ofl/amiriquran/upstream.yaml                  |   7 -
 ofl/andadapro/METADATA.pb                     |  16 ++
 ofl/andadapro/upstream.yaml                   |   6 -
 ofl/andika/METADATA.pb                        |  21 ++
 ofl/andika/upstream.yaml                      |   8 -
 ofl/anekbangla/METADATA.pb                    |  13 ++
 ofl/anekbangla/upstream.yaml                  |   5 -
 ofl/anekdevanagari/METADATA.pb                |  13 ++
 ofl/anekdevanagari/upstream.yaml              |   5 -
 ofl/anekgujarati/METADATA.pb                  |  13 ++
 ofl/anekgujarati/upstream.yaml                |   5 -
 ofl/anekgurmukhi/METADATA.pb                  |  13 ++
 ofl/anekgurmukhi/upstream.yaml                |   5 -
 ofl/anekkannada/METADATA.pb                   |  13 ++
 ofl/anekkannada/upstream.yaml                 |   5 -
 ofl/aneklatin/METADATA.pb                     |  13 ++
 ofl/aneklatin/upstream.yaml                   |   5 -
 ofl/anekmalayalam/METADATA.pb                 |  13 ++
 ofl/anekmalayalam/upstream.yaml               |   5 -
 ofl/anekodia/METADATA.pb                      |  13 ++
 ofl/anekodia/upstream.yaml                    |   5 -
 ofl/anektamil/METADATA.pb                     |  13 ++
 ofl/anektamil/upstream.yaml                   |   5 -
 ofl/anektelugu/METADATA.pb                    |  13 ++
 ofl/anektelugu/upstream.yaml                  |   5 -
 ofl/angkor/METADATA.pb                        |  12 ++
 ofl/angkor/upstream.yaml                      |   5 -
 ofl/annapurnasil/METADATA.pb                  |  13 ++
 ofl/annapurnasil/upstream.yaml                |   6 -
 ofl/anta/METADATA.pb                          |  13 ++
 ofl/anta/upstream.yaml                        |   6 -
 ofl/anton/METADATA.pb                         |  16 ++
 ofl/anton/upstream.yaml                       |   6 -
 ofl/antonio/METADATA.pb                       |  16 ++
 ofl/antonio/upstream.yaml                     |   6 -
 ofl/anuphan/METADATA.pb                       |  13 ++
 ofl/anuphan/upstream.yaml                     |   6 -
 ofl/anybody/METADATA.pb                       |  13 ++
 ofl/anybody/upstream.yaml                     |   6 -
 ofl/aoboshione/METADATA.pb                    |  20 +-
 ofl/aoboshione/upstream.yaml                  |   6 -
 ofl/archivo/METADATA.pb                       |  16 ++
 ofl/archivo/upstream.yaml                     |   6 -
 ofl/archivonarrow/METADATA.pb                 |  13 ++
 ofl/archivonarrow/upstream.yaml               |   6 -
 ofl/arefruqaaink/METADATA.pb                  |  13 ++
 ofl/arefruqaaink/upstream.yaml                |   6 -
 ofl/areyouserious/METADATA.pb                 |  16 ++
 ofl/areyouserious/upstream.yaml               |   6 -
 ofl/arima/METADATA.pb                         |  13 ++
 ofl/arima/upstream.yaml                       |   6 -
 ofl/arizonia/METADATA.pb                      |  13 ++
 ofl/arizonia/upstream.yaml                    |   5 -
 ofl/aronesans/METADATA.pb                     |  14 +-
 ofl/aronesans/upstream.yaml                   |   6 -
 ofl/artifika/METADATA.pb                      |  13 ++
 ofl/artifika/upstream.yaml                    |   6 -
 ofl/asap/METADATA.pb                          |  13 ++
 ofl/asap/upstream.yaml                        |   6 -
 ofl/asapcondensed/METADATA.pb                 |  69 +++++++
 ofl/asapcondensed/upstream.yaml               |  20 --
 ofl/asset/METADATA.pb                         |  13 ++
 ofl/asset/upstream.yaml                       |   6 -
 ofl/assistant/METADATA.pb                     |  36 ++++
 ofl/assistant/upstream.yaml                   |  11 -
 ofl/atkinsonhyperlegible/METADATA.pb          |  28 +++
 ofl/atkinsonhyperlegible/upstream.yaml        |   9 -
 ofl/aubrey/METADATA.pb                        |  16 ++
 ofl/aubrey/upstream.yaml                      |   6 -
 ofl/average/METADATA.pb                       |   9 +
 ofl/average/upstream.yaml                     |   5 -
 ofl/azeretmono/METADATA.pb                    |  16 ++
 ofl/azeretmono/upstream.yaml                  |   6 -
 ofl/babylonica/METADATA.pb                    |  13 ++
 ofl/babylonica/upstream.yaml                  |   5 -
 ofl/bacasimeantique/METADATA.pb               |  13 ++
 ofl/bacasimeantique/upstream.yaml             |   6 -
 ofl/bagelfatone/METADATA.pb                   |  13 ++
 ofl/bagelfatone/upstream.yaml                 |   6 -
 ofl/bakbakone/METADATA.pb                     |  12 ++
 ofl/bakbakone/upstream.yaml                   |   5 -
 ofl/baloo2/METADATA.pb                        |  16 ++
 ofl/baloo2/upstream.yaml                      |   6 -
 ofl/baloobhai2/METADATA.pb                    |  16 ++
 ofl/baloobhai2/upstream.yaml                  |   6 -
 ofl/baloobhaijaan2/METADATA.pb                |  13 ++
 ofl/baloobhaijaan2/upstream.yaml              |   6 -
 ofl/baloobhaina2/METADATA.pb                  |  16 ++
 ofl/baloobhaina2/upstream.yaml                |   6 -
 ofl/baloochettan2/METADATA.pb                 |  16 ++
 ofl/baloochettan2/upstream.yaml               |   6 -
 ofl/balooda2/METADATA.pb                      |  16 ++
 ofl/balooda2/upstream.yaml                    |   6 -
 ofl/baloopaaji2/METADATA.pb                   |  16 ++
 ofl/baloopaaji2/upstream.yaml                 |   6 -
 ofl/balootamma2/METADATA.pb                   |  16 ++
 ofl/balootamma2/upstream.yaml                 |   6 -
 ofl/balootammudu2/METADATA.pb                 |  16 ++
 ofl/balootammudu2/upstream.yaml               |   6 -
 ofl/baloothambi2/METADATA.pb                  |  16 ++
 ofl/baloothambi2/upstream.yaml                |   6 -
 ofl/balsamiqsans/METADATA.pb                  |  17 ++
 ofl/balsamiqsans/upstream.yaml                |   7 -
 ofl/bangers/METADATA.pb                       |   9 +
 ofl/bangers/upstream.yaml                     |   5 -
 ofl/baskervville/METADATA.pb                  |  13 ++
 ofl/baskervville/upstream.yaml                |   6 -
 ofl/battambang/METADATA.pb                    |  28 +++
 ofl/battambang/upstream.yaml                  |   9 -
 ofl/bayon/METADATA.pb                         |  14 +-
 ofl/bayon/upstream.yaml                       |   5 -
 ofl/beaurivage/METADATA.pb                    |  16 ++
 ofl/beaurivage/upstream.yaml                  |   6 -
 ofl/belanosima/METADATA.pb                    |  21 ++
 ofl/belanosima/upstream.yaml                  |   8 -
 ofl/belleza/METADATA.pb                       |   9 +
 ofl/belleza/upstream.yaml                     |   5 -
 ofl/benne/METADATA.pb                         |  16 ++
 ofl/benne/upstream.yaml                       |   6 -
 ofl/besley/METADATA.pb                        |  18 +-
 ofl/besley/upstream.yaml                      |   6 -
 ofl/bevan/METADATA.pb                         |  16 ++
 ofl/bevan/upstream.yaml                       |   6 -
 ofl/bevietnampro/METADATA.pb                  |  80 ++++++++
 ofl/bevietnampro/upstream.yaml                |  22 --
 ofl/bhutukaexpandedone/METADATA.pb            |  16 ++
 ofl/bhutukaexpandedone/upstream.yaml          |   6 -
 ofl/bigshouldersdisplay/METADATA.pb           |  16 ++
 ofl/bigshouldersdisplay/upstream.yaml         |   6 -
 ofl/bigshouldersinlinedisplay/METADATA.pb     |  16 ++
 ofl/bigshouldersinlinedisplay/upstream.yaml   |   6 -
 ofl/bigshouldersinlinetext/METADATA.pb        |  16 ++
 ofl/bigshouldersinlinetext/upstream.yaml      |   6 -
 ofl/bigshouldersstencildisplay/METADATA.pb    |  16 ++
 ofl/bigshouldersstencildisplay/upstream.yaml  |   6 -
 ofl/bigshouldersstenciltext/METADATA.pb       |  16 ++
 ofl/bigshouldersstenciltext/upstream.yaml     |   6 -
 ofl/bigshoulderstext/METADATA.pb              |  16 ++
 ofl/bigshoulderstext/upstream.yaml            |   6 -
 ofl/bilbo/METADATA.pb                         |  16 ++
 ofl/bilbo/upstream.yaml                       |   6 -
 ofl/biorhyme/METADATA.pb                      |   9 +
 ofl/biorhyme/upstream.yaml                    |   5 -
 ofl/birthstone/METADATA.pb                    |  16 ++
 ofl/birthstone/upstream.yaml                  |   6 -
 ofl/birthstonebounce/METADATA.pb              |  20 ++
 ofl/birthstonebounce/upstream.yaml            |   7 -
 ofl/bitter/METADATA.pb                        |  16 ++
 ofl/bitter/upstream.yaml                      |   6 -
 ofl/bizudgothic/METADATA.pb                   |  13 ++
 ofl/bizudgothic/upstream.yaml                 |   5 -
 ofl/bizudmincho/METADATA.pb                   |  11 +-
 ofl/bizudmincho/upstream.yaml                 |   5 -
 ofl/bizudpgothic/METADATA.pb                  |  13 ++
 ofl/bizudpgothic/upstream.yaml                |   6 -
 ofl/bizudpmincho/METADATA.pb                  |  11 +-
 ofl/bizudpmincho/upstream.yaml                |   5 -
 ofl/blackopsone/METADATA.pb                   |   9 +
 ofl/blackopsone/upstream.yaml                 |   5 -
 ofl/blaka/METADATA.pb                         |  13 ++
 ofl/blaka/upstream.yaml                       |   6 -
 ofl/blakahollow/METADATA.pb                   |  13 ++
 ofl/blakahollow/upstream.yaml                 |   6 -
 ofl/blakaink/METADATA.pb                      |  13 ++
 ofl/blakaink/upstream.yaml                    |   6 -
 ofl/bodonimoda/METADATA.pb                    |  15 +-
 ofl/bodonimoda/upstream.yaml                  |   6 -
 ofl/bokor/METADATA.pb                         |  12 ++
 ofl/bokor/upstream.yaml                       |   5 -
 ofl/bonanova/METADATA.pb                      |  20 ++
 ofl/bonanova/upstream.yaml                    |   7 -
 ofl/bonheurroyale/METADATA.pb                 |  16 ++
 ofl/bonheurroyale/upstream.yaml               |   6 -
 ofl/borel/METADATA.pb                         |   9 +
 ofl/borel/upstream.yaml                       |   5 -
 ofl/braahone/METADATA.pb                      |   9 +
 ofl/braahone/upstream.yaml                    |   5 -
 ofl/brawler/METADATA.pb                       |  20 ++
 ofl/brawler/upstream.yaml                     |   7 -
 ofl/bricolagegrotesque/METADATA.pb            |   9 +
 ofl/bricolagegrotesque/upstream.yaml          |   5 -
 ofl/brunoace/METADATA.pb                      |  13 ++
 ofl/brunoace/upstream.yaml                    |   6 -
 ofl/brunoacesc/METADATA.pb                    |  13 ++
 ofl/brunoacesc/upstream.yaml                  |   6 -
 ofl/brygada1918/METADATA.pb                   |  16 ++
 ofl/brygada1918/upstream.yaml                 |   6 -
 ofl/cairo/METADATA.pb                         |   9 +
 ofl/cairo/upstream.yaml                       |   5 -
 ofl/cairoplay/METADATA.pb                     |   9 +
 ofl/cairoplay/upstream.yaml                   |   5 -
 ofl/calistoga/METADATA.pb                     |   9 +
 ofl/calistoga/upstream.yaml                   |   5 -
 ofl/caprasimo/METADATA.pb                     |  13 ++
 ofl/caprasimo/upstream.yaml                   |   6 -
 ofl/caramel/METADATA.pb                       |  16 ++
 ofl/caramel/upstream.yaml                     |   6 -
 ofl/carattere/METADATA.pb                     |  16 ++
 ofl/carattere/upstream.yaml                   |   6 -
 ofl/carlito/METADATA.pb                       |  21 ++
 ofl/carlito/upstream.yaml                     |   8 -
 ofl/castoro/METADATA.pb                       |  17 ++
 ofl/castoro/upstream.yaml                     |   7 -
 ofl/castorotitling/METADATA.pb                |  13 ++
 ofl/castorotitling/upstream.yaml              |   6 -
 ofl/caveat/METADATA.pb                        |  20 ++
 ofl/caveat/upstream.yaml                      |   7 -
 ofl/changa/METADATA.pb                        |  12 ++
 ofl/changa/upstream.yaml                      |   5 -
 ofl/charissil/METADATA.pb                     |  21 ++
 ofl/charissil/upstream.yaml                   |   8 -
 ofl/cherish/METADATA.pb                       |  16 ++
 ofl/cherish/upstream.yaml                     |   6 -
 ofl/cherrybombone/METADATA.pb                 |  20 +-
 ofl/cherrybombone/upstream.yaml               |   6 -
 ofl/chilanka/METADATA.pb                      |  11 +-
 ofl/chilanka/upstream.yaml                    |   7 -
 ofl/chivo/METADATA.pb                         |  13 ++
 ofl/chivo/upstream.yaml                       |   6 -
 ofl/chivomono/METADATA.pb                     |  13 ++
 ofl/chivomono/upstream.yaml                   |   6 -
 ofl/chokokutai/METADATA.pb                    |  20 +-
 ofl/chokokutai/upstream.yaml                  |   6 -
 ofl/climatecrisis/METADATA.pb                 |   9 +
 ofl/climatecrisis/upstream.yaml               |   5 -
 ofl/comforter/METADATA.pb                     |  16 ++
 ofl/comforter/upstream.yaml                   |   6 -
 ofl/comforterbrush/METADATA.pb                |  16 ++
 ofl/comforterbrush/upstream.yaml              |   6 -
 ofl/comme/METADATA.pb                         |   9 +
 ofl/comme/upstream.yaml                       |   5 -
 ofl/commissioner/METADATA.pb                  |   9 +
 ofl/commissioner/upstream.yaml                |   5 -
 ofl/corinthia/METADATA.pb                     |  20 ++
 ofl/corinthia/upstream.yaml                   |   7 -
 ofl/cormorant/METADATA.pb                     |  13 ++
 ofl/cormorant/upstream.yaml                   |   6 -
 ofl/cormorantgaramond/METADATA.pb             |  45 +++++
 ofl/cormorantgaramond/upstream.yaml           |  14 --
 ofl/cormorantinfant/METADATA.pb               |  45 +++++
 ofl/cormorantinfant/upstream.yaml             |  14 --
 ofl/cormorantsc/METADATA.pb                   |  25 +++
 ofl/cormorantsc/upstream.yaml                 |   9 -
 ofl/cormorantunicase/METADATA.pb              |  25 +++
 ofl/cormorantunicase/upstream.yaml            |   9 -
 ofl/crimsontext/METADATA.pb                   |  29 +++
 ofl/crimsontext/upstream.yaml                 |   9 -
 ofl/cuprum/METADATA.pb                        |  32 +++
 ofl/cuprum/upstream.yaml                      |  10 -
 ofl/daibannasil/METADATA.pb                   |  45 +++++
 ofl/daibannasil/upstream.yaml                 |  14 --
 ofl/dancingscript/METADATA.pb                 |  12 ++
 ofl/dancingscript/upstream.yaml               |   5 -
 ofl/danfo/METADATA.pb                         |   9 +
 ofl/danfo/upstream.yaml                       |   5 -
 ofl/dangrek/METADATA.pb                       |  12 ++
 ofl/dangrek/upstream.yaml                     |   5 -
 ofl/darkergrotesque/METADATA.pb               |   9 +
 ofl/darkergrotesque/upstream.yaml             |   5 -
 ofl/darumadropone/METADATA.pb                 |  20 +-
 ofl/darumadropone/upstream.yaml               |   6 -
 ofl/davidlibre/METADATA.pb                    |  17 ++
 ofl/davidlibre/upstream.yaml                  |   7 -
 ofl/delagothicone/METADATA.pb                 |  16 ++
 ofl/delagothicone/upstream.yaml               |   6 -
 ofl/delicioushandrawn/METADATA.pb             |   9 +
 ofl/delicioushandrawn/upstream.yaml           |   5 -
 ofl/denkone/METADATA.pb                       |   9 +
 ofl/denkone/upstream.yaml                     |   5 -
 ofl/diphylleia/METADATA.pb                    |  13 ++
 ofl/diphylleia/upstream.yaml                  |   6 -
 ofl/diplomata/METADATA.pb                     |   9 +
 ofl/diplomata/upstream.yaml                   |   5 -
 ofl/diplomatasc/METADATA.pb                   |   9 +
 ofl/diplomatasc/upstream.yaml                 |   5 -
 ofl/dmsans/METADATA.pb                        |  13 ++
 ofl/dmsans/upstream.yaml                      |   6 -
 ofl/dongle/METADATA.pb                        |  24 +++
 ofl/dongle/upstream.yaml                      |   8 -
 ofl/dosis/METADATA.pb                         |  12 ++
 ofl/dosis/upstream.yaml                       |   5 -
 ofl/dotgothic16/METADATA.pb                   |  16 ++
 ofl/dotgothic16/upstream.yaml                 |   6 -
 ofl/dynapuff/METADATA.pb                      |   9 +
 ofl/dynapuff/upstream.yaml                    |   5 -
 ofl/eczar/METADATA.pb                         |  13 ++
 ofl/eczar/upstream.yaml                       |   5 -
 ofl/edunswactfoundation/METADATA.pb           |   9 +
 ofl/edunswactfoundation/upstream.yaml         |   5 -
 ofl/eduqldbeginner/METADATA.pb                |   9 +
 ofl/eduqldbeginner/upstream.yaml              |   5 -
 ofl/edusabeginner/METADATA.pb                 |   9 +
 ofl/edusabeginner/upstream.yaml               |   5 -
 ofl/edutasbeginner/METADATA.pb                |   9 +
 ofl/edutasbeginner/upstream.yaml              |   5 -
 ofl/eduvicwantbeginner/METADATA.pb            |   9 +
 ofl/eduvicwantbeginner/upstream.yaml          |   5 -
 ofl/elmessiri/METADATA.pb                     |  14 +-
 ofl/elmessiri/upstream.yaml                   |   5 -
 ofl/ephesis/METADATA.pb                       |  16 ++
 ofl/ephesis/upstream.yaml                     |   6 -
 ofl/estonia/METADATA.pb                       |  16 ++
 ofl/estonia/upstream.yaml                     |   6 -
 ofl/exo2/METADATA.pb                          |  13 ++
 ofl/exo2/upstream.yaml                        |   6 -
 ofl/expletussans/METADATA.pb                  |  16 ++
 ofl/expletussans/upstream.yaml                |   6 -
 ofl/explora/METADATA.pb                       |  12 ++
 ofl/explora/upstream.yaml                     |   5 -
 ofl/familjengrotesk/METADATA.pb               |  13 ++
 ofl/familjengrotesk/upstream.yaml             |   6 -
 ofl/fasterone/METADATA.pb                     |   9 +
 ofl/fasterone/upstream.yaml                   |   5 -
 ofl/fasthand/METADATA.pb                      |  12 ++
 ofl/fasthand/upstream.yaml                    |   5 -
 ofl/faunaone/METADATA.pb                      |   9 +
 ofl/faunaone/upstream.yaml                    |   5 -
 ofl/faustina/METADATA.pb                      |  12 ++
 ofl/faustina/upstream.yaml                    |   5 -
 ofl/festive/METADATA.pb                       |  16 ++
 ofl/festive/upstream.yaml                     |   6 -
 ofl/figtree/METADATA.pb                       |  13 ++
 ofl/figtree/upstream.yaml                     |   6 -
 ofl/finlandica/METADATA.pb                    |  13 ++
 ofl/finlandica/upstream.yaml                  |   6 -
 ofl/fjallaone/METADATA.pb                     |   9 +
 ofl/fjallaone/upstream.yaml                   |   5 -
 ofl/fleurdeleah/METADATA.pb                   |  16 ++
 ofl/fleurdeleah/upstream.yaml                 |   6 -
 ofl/flowblock/METADATA.pb                     |  12 ++
 ofl/flowblock/upstream.yaml                   |   5 -
 ofl/flowcircular/METADATA.pb                  |  12 ++
 ofl/flowcircular/upstream.yaml                |   5 -
 ofl/flowrounded/METADATA.pb                   |  12 ++
 ofl/flowrounded/upstream.yaml                 |   5 -
 ofl/foldit/METADATA.pb                        |   5 +
 ofl/foldit/upstream.yaml                      |   4 -
 ofl/frankruhllibre/METADATA.pb                |   9 +
 ofl/frankruhllibre/upstream.yaml              |   5 -
 ofl/fredoka/METADATA.pb                       |   9 +
 ofl/fredoka/upstream.yaml                     |   4 -
 ofl/freehand/METADATA.pb                      |  12 ++
 ofl/freehand/upstream.yaml                    |   5 -
 ofl/fruktur/METADATA.pb                       |  13 ++
 ofl/fruktur/upstream.yaml                     |   6 -
 ofl/fuggles/METADATA.pb                       |  16 ++
 ofl/fuggles/upstream.yaml                     |   6 -
 ofl/fuzzybubbles/METADATA.pb                  |  20 ++
 ofl/fuzzybubbles/upstream.yaml                |   7 -
 ofl/gabarito/METADATA.pb                      |   9 +
 ofl/gabarito/upstream.yaml                    |   5 -
 ofl/gabriela/METADATA.pb                      |   9 +
 ofl/gabriela/upstream.yaml                    |   5 -
 ofl/gajrajone/METADATA.pb                     |  13 ++
 ofl/gajrajone/upstream.yaml                   |   6 -
 ofl/gantari/METADATA.pb                       |  13 ++
 ofl/gantari/upstream.yaml                     |   6 -
 ofl/gasoekone/METADATA.pb                     |  13 ++
 ofl/gasoekone/upstream.yaml                   |   6 -
 ofl/gelasio/METADATA.pb                       |  13 ++
 ofl/gelasio/upstream.yaml                     |   6 -
 ofl/gemunulibre/METADATA.pb                   |  16 ++
 ofl/gemunulibre/upstream.yaml                 |   6 -
 ofl/genos/METADATA.pb                         |  20 ++
 ofl/genos/upstream.yaml                       |   7 -
 ofl/gentiumbookplus/METADATA.pb               |  21 ++
 ofl/gentiumbookplus/upstream.yaml             |   8 -
 ofl/gentiumplus/METADATA.pb                   |  21 ++
 ofl/gentiumplus/upstream.yaml                 |   8 -
 ofl/geologica/METADATA.pb                     |  15 +-
 ofl/geologica/upstream.yaml                   |   6 -
 ofl/georama/METADATA.pb                       |  20 ++
 ofl/georama/upstream.yaml                     |   7 -
 ofl/gideonroman/METADATA.pb                   |  16 ++
 ofl/gideonroman/upstream.yaml                 |   6 -
 ofl/gildadisplay/METADATA.pb                  |   9 +
 ofl/gildadisplay/upstream.yaml                |   5 -
 ofl/gloock/METADATA.pb                        |   9 +
 ofl/gloock/upstream.yaml                      |   5 -
 ofl/glory/METADATA.pb                         |  20 ++
 ofl/glory/upstream.yaml                       |   7 -
 ofl/gluten/METADATA.pb                        |   9 +
 ofl/gluten/upstream.yaml                      |   5 -
 ofl/golostext/METADATA.pb                     |   9 +
 ofl/golostext/upstream.yaml                   |   5 -
 ofl/gowunbatang/METADATA.pb                   |  20 ++
 ofl/gowunbatang/upstream.yaml                 |   7 -
 ofl/gowundodum/METADATA.pb                    |  16 ++
 ofl/gowundodum/upstream.yaml                  |   6 -
 ofl/grandifloraone/METADATA.pb                |  13 ++
 ofl/grandifloraone/upstream.yaml              |   6 -
 ofl/grapenuts/METADATA.pb                     |  16 ++
 ofl/grapenuts/upstream.yaml                   |   6 -
 ofl/greatvibes/METADATA.pb                    |  12 ++
 ofl/greatvibes/upstream.yaml                  |   6 -
 ofl/grechenfuemen/METADATA.pb                 |  16 ++
 ofl/grechenfuemen/upstream.yaml               |   6 -
 ofl/greyqo/METADATA.pb                        |  16 ++
 ofl/greyqo/upstream.yaml                      |   6 -
 ofl/gruppo/METADATA.pb                        |   9 +
 ofl/gruppo/upstream.yaml                      |   5 -
 ofl/gulzar/METADATA.pb                        |  13 ++
 ofl/gulzar/upstream.yaml                      |   5 -
 ofl/gwendolyn/METADATA.pb                     |  20 ++
 ofl/gwendolyn/upstream.yaml                   |   7 -
 ofl/hachimarupop/METADATA.pb                  |  16 ++
 ofl/hachimarupop/upstream.yaml                |   6 -
 ofl/hahmlet/METADATA.pb                       |  16 ++
 ofl/hahmlet/upstream.yaml                     |   6 -
 ofl/handjet/METADATA.pb                       |   9 +
 ofl/handjet/upstream.yaml                     |   5 -
 ofl/hankengrotesk/METADATA.pb                 |  17 ++
 ofl/hankengrotesk/upstream.yaml               |   7 -
 ofl/hanuman/METADATA.pb                       |  28 +++
 ofl/hanuman/upstream.yaml                     |   9 -
 ofl/harmattan/METADATA.pb                     |  21 ++
 ofl/harmattan/upstream.yaml                   |   8 -
 ofl/hedvigletterssans/METADATA.pb             |   9 +
 ofl/hedvigletterssans/upstream.yaml           |   5 -
 ofl/hedviglettersserif/METADATA.pb            |  11 +-
 ofl/hedviglettersserif/upstream.yaml          |   5 -
 ofl/heebo/METADATA.pb                         |   9 +
 ofl/heebo/upstream.yaml                       |   5 -
 ofl/heptaslab/METADATA.pb                     |   8 +
 ofl/heptaslab/upstream.yaml                   |   4 -
 ofl/hinamincho/METADATA.pb                    |  13 ++
 ofl/hinamincho/upstream.yaml                  |   5 -
 ofl/honk/METADATA.pb                          |  21 +-
 ofl/honk/upstream.yaml                        |   6 -
 ofl/hubballi/METADATA.pb                      |  16 ++
 ofl/hubballi/upstream.yaml                    |   6 -
 ofl/hurricane/METADATA.pb                     |  16 ++
 ofl/hurricane/upstream.yaml                   |   6 -
 ofl/ibarrarealnova/METADATA.pb                |  44 ++++
 ofl/ibarrarealnova/upstream.yaml              |  13 --
 ofl/ibmplexmono/METADATA.pb                   |  65 ++++++
 ofl/ibmplexmono/upstream.yaml                 |  19 --
 ofl/ibmplexsans/METADATA.pb                   |  68 +++++++
 ofl/ibmplexsans/upstream.yaml                 |  19 --
 ofl/ibmplexsansarabic/METADATA.pb             |  40 ++++
 ofl/ibmplexsansarabic/upstream.yaml           |  12 --
 ofl/ibmplexsanscondensed/METADATA.pb          |  68 +++++++
 ofl/ibmplexsanscondensed/upstream.yaml        |  19 --
 ofl/ibmplexsansdevanagari/METADATA.pb         |  40 ++++
 ofl/ibmplexsansdevanagari/upstream.yaml       |  12 --
 ofl/ibmplexsanshebrew/METADATA.pb             |  40 ++++
 ofl/ibmplexsanshebrew/upstream.yaml           |  12 --
 ofl/ibmplexsansjp/METADATA.pb                 |  37 ++++
 ofl/ibmplexsansjp/upstream.yaml               |  12 --
 ofl/ibmplexsanskr/METADATA.pb                 |  40 ++++
 ofl/ibmplexsanskr/upstream.yaml               |  12 --
 ofl/ibmplexsansthai/METADATA.pb               |  40 ++++
 ofl/ibmplexsansthai/upstream.yaml             |  12 --
 ofl/ibmplexsansthailooped/METADATA.pb         |  40 ++++
 ofl/ibmplexsansthailooped/upstream.yaml       |  12 --
 ofl/ibmplexserif/METADATA.pb                  |  68 +++++++
 ofl/ibmplexserif/upstream.yaml                |  19 --
 ofl/imbue/METADATA.pb                         | 120 +++++++++++
 ofl/imbue/upstream.yaml                       |  32 ---
 ofl/imperialscript/METADATA.pb                |  16 ++
 ofl/imperialscript/upstream.yaml              |   6 -
 ofl/imprima/METADATA.pb                       |   9 +
 ofl/imprima/upstream.yaml                     |   5 -
 ofl/inclusivesans/METADATA.pb                 |  13 ++
 ofl/inclusivesans/upstream.yaml               |   6 -
 ofl/ingriddarling/METADATA.pb                 |  13 ++
 ofl/ingriddarling/upstream.yaml               |   5 -
 ofl/inspiration/METADATA.pb                   |  16 ++
 ofl/inspiration/upstream.yaml                 |   6 -
 ofl/instrumentsans/METADATA.pb                |  13 ++
 ofl/instrumentsans/upstream.yaml              |   6 -
 ofl/instrumentserif/METADATA.pb               |  13 ++
 ofl/instrumentserif/upstream.yaml             |   6 -
 ofl/intertight/METADATA.pb                    |  13 ++
 ofl/intertight/upstream.yaml                  |   6 -
 ofl/islandmoments/METADATA.pb                 |  16 ++
 ofl/islandmoments/upstream.yaml               |   6 -
 ofl/italianno/METADATA.pb                     |  16 ++
 ofl/italianno/upstream.yaml                   |   6 -
 ofl/jacquard12/METADATA.pb                    |   9 +
 ofl/jacquard12/upstream.yaml                  |   5 -
 ofl/jacquard12charted/METADATA.pb             |   9 +
 ofl/jacquard12charted/upstream.yaml           |   5 -
 ofl/jacquard24/METADATA.pb                    |   9 +
 ofl/jacquard24/upstream.yaml                  |   5 -
 ofl/jacquard24charted/METADATA.pb             |   9 +
 ofl/jacquard24charted/upstream.yaml           |   5 -
 ofl/jacquardabastarda9/METADATA.pb            |  11 +-
 ofl/jacquardabastarda9/upstream.yaml          |   5 -
 ofl/jacquardabastarda9charted/METADATA.pb     |  11 +-
 ofl/jacquardabastarda9charted/upstream.yaml   |   5 -
 ofl/jaro/METADATA.pb                          |   9 +
 ofl/jaro/upstream.yaml                        |   5 -
 ofl/jersey10/METADATA.pb                      |   9 +
 ofl/jersey10/upstream.yaml                    |   5 -
 ofl/jersey10charted/METADATA.pb               |   9 +
 ofl/jersey10charted/upstream.yaml             |   5 -
 ofl/jersey15/METADATA.pb                      |   9 +
 ofl/jersey15/upstream.yaml                    |   5 -
 ofl/jersey15charted/METADATA.pb               |   9 +
 ofl/jersey15charted/upstream.yaml             |   5 -
 ofl/jersey20/METADATA.pb                      |   9 +
 ofl/jersey20/upstream.yaml                    |   5 -
 ofl/jersey20charted/METADATA.pb               |   9 +
 ofl/jersey20charted/upstream.yaml             |   5 -
 ofl/jersey25/METADATA.pb                      |   9 +
 ofl/jersey25/upstream.yaml                    |   5 -
 ofl/jetbrainsmono/METADATA.pb                 |  72 +++++++
 ofl/jetbrainsmono/upstream.yaml               |  20 --
 ofl/joan/METADATA.pb                          |   9 +
 ofl/joan/upstream.yaml                        |   5 -
 ofl/josefinslab/METADATA.pb                   |  56 ++++++
 ofl/josefinslab/upstream.yaml                 |  16 --
 ofl/jost/METADATA.pb                          |  12 ++
 ofl/jost/upstream.yaml                        |   5 -
 ofl/jotione/METADATA.pb                       |   9 +
 ofl/jotione/upstream.yaml                     |   5 -
 ofl/julee/METADATA.pb                         |   9 +
 ofl/julee/upstream.yaml                       |   5 -
 ofl/kablammo/METADATA.pb                      |  13 ++
 ofl/kablammo/upstream.yaml                    |   6 -
 ofl/kaiseidecol/METADATA.pb                   |  24 +++
 ofl/kaiseidecol/upstream.yaml                 |   8 -
 ofl/kaiseiharunoumi/METADATA.pb               |  24 +++
 ofl/kaiseiharunoumi/upstream.yaml             |   8 -
 ofl/kaiseiopti/METADATA.pb                    |  24 +++
 ofl/kaiseiopti/upstream.yaml                  |   8 -
 ofl/kaiseitokumin/METADATA.pb                 |  28 +++
 ofl/kaiseitokumin/upstream.yaml               |   9 -
 ofl/kalnia/METADATA.pb                        |  13 ++
 ofl/kalnia/upstream.yaml                      |   6 -
 ofl/kameron/METADATA.pb                       |   9 +
 ofl/kameron/upstream.yaml                     |   5 -
 ofl/kantumruypro/METADATA.pb                  |  13 ++
 ofl/kantumruypro/upstream.yaml                |   6 -
 ofl/kapakana/METADATA.pb                      |  28 ++-
 ofl/kapakana/upstream.yaml                    |   8 -
 ofl/karantina/METADATA.pb                     |  24 +++
 ofl/karantina/upstream.yaml                   |   8 -
 ofl/karla/METADATA.pb                         |  13 ++
 ofl/karla/upstream.yaml                       |   6 -
 ofl/kayphodu/METADATA.pb                      |  21 ++
 ofl/kayphodu/upstream.yaml                    |   8 -
 ofl/kdamthmorpro/METADATA.pb                  |   9 +
 ofl/kdamthmorpro/upstream.yaml                |   5 -
 ofl/kings/METADATA.pb                         |  16 ++
 ofl/kings/upstream.yaml                       |   6 -
 ofl/kiteone/METADATA.pb                       |   9 +
 ofl/kiteone/upstream.yaml                     |   5 -
 ofl/kiwimaru/METADATA.pb                      |  24 +++
 ofl/kiwimaru/upstream.yaml                    |   8 -
 ofl/kleeone/METADATA.pb                       |  20 ++
 ofl/kleeone/upstream.yaml                     |   7 -
 ofl/kodemono/METADATA.pb                      |  15 +-
 ofl/kodemono/upstream.yaml                    |   6 -
 ofl/kohsantepheap/METADATA.pb                 |  28 +++
 ofl/kohsantepheap/upstream.yaml               |   9 -
 ofl/kolkerbrush/METADATA.pb                   |  16 ++
 ofl/kolkerbrush/upstream.yaml                 |   6 -
 ofl/konkhmersleokchher/METADATA.pb            |   9 +
 ofl/konkhmersleokchher/upstream.yaml          |   5 -
 ofl/koulen/METADATA.pb                        |  14 +-
 ofl/koulen/upstream.yaml                      |   5 -
 ofl/kufam/METADATA.pb                         |  20 ++
 ofl/kufam/upstream.yaml                       |   7 -
 ofl/kumbhsans/METADATA.pb                     |   9 +
 ofl/kumbhsans/upstream.yaml                   |   5 -
 ofl/labrada/METADATA.pb                       |  13 ++
 ofl/labrada/upstream.yaml                     |   6 -
 ofl/langar/METADATA.pb                        |  16 ++
 ofl/langar/upstream.yaml                      |   6 -
 ofl/lateef/METADATA.pb                        |  33 +++
 ofl/lateef/upstream.yaml                      |  11 -
 ofl/lavishlyyours/METADATA.pb                 |  13 ++
 ofl/lavishlyyours/upstream.yaml               |   5 -
 ofl/leaguegothic/METADATA.pb                  |  12 ++
 ofl/leaguegothic/upstream.yaml                |   5 -
 ofl/leaguespartan/METADATA.pb                 |  12 ++
 ofl/leaguespartan/upstream.yaml               |   5 -
 ofl/lemon/METADATA.pb                         |   9 +
 ofl/lemon/upstream.yaml                       |   5 -
 ofl/lexend/METADATA.pb                        |  12 ++
 ofl/lexend/upstream.yaml                      |   5 -
 ofl/lexenddeca/METADATA.pb                    |  12 ++
 ofl/lexenddeca/upstream.yaml                  |   5 -
 ofl/lexendexa/METADATA.pb                     |  12 ++
 ofl/lexendexa/upstream.yaml                   |   5 -
 ofl/lexendgiga/METADATA.pb                    |  12 ++
 ofl/lexendgiga/upstream.yaml                  |   5 -
 ofl/lexendmega/METADATA.pb                    |  12 ++
 ofl/lexendmega/upstream.yaml                  |   5 -
 ofl/lexendpeta/METADATA.pb                    |  12 ++
 ofl/lexendpeta/upstream.yaml                  |   5 -
 ofl/lexendtera/METADATA.pb                    |  12 ++
 ofl/lexendtera/upstream.yaml                  |   5 -
 ofl/lexendzetta/METADATA.pb                   |  12 ++
 ofl/lexendzetta/upstream.yaml                 |   5 -
 ofl/librebarcode128/METADATA.pb               |  12 ++
 ofl/librebarcode128/upstream.yaml             |   5 -
 ofl/librebarcode128text/METADATA.pb           |  12 ++
 ofl/librebarcode128text/upstream.yaml         |   5 -
 ofl/librebarcode39/METADATA.pb                |  12 ++
 ofl/librebarcode39/upstream.yaml              |   5 -
 ofl/librebarcode39extended/METADATA.pb        |  12 ++
 ofl/librebarcode39extended/upstream.yaml      |   5 -
 ofl/librebarcode39extendedtext/METADATA.pb    |  12 ++
 ofl/librebarcode39extendedtext/upstream.yaml  |   5 -
 ofl/librebarcode39text/METADATA.pb            |  12 ++
 ofl/librebarcode39text/upstream.yaml          |   5 -
 ofl/librebarcodeean13text/METADATA.pb         |  12 ++
 ofl/librebarcodeean13text/upstream.yaml       |   5 -
 ofl/librebodoni/METADATA.pb                   |  13 ++
 ofl/librebodoni/upstream.yaml                 |   6 -
 ofl/librefranklin/METADATA.pb                 |  88 ++++++++
 ofl/librefranklin/upstream.yaml               |  24 ---
 ofl/licorice/METADATA.pb                      |  16 ++
 ofl/licorice/upstream.yaml                    |   6 -
 ofl/linefont/METADATA.pb                      |  11 +-
 ofl/linefont/upstream.yaml                    |   5 -
 ofl/lisubosa/METADATA.pb                      |  69 +++++++
 ofl/lisubosa/upstream.yaml                    |  20 --
 ofl/literata/METADATA.pb                      |  13 ++
 ofl/literata/upstream.yaml                    |   6 -
 ofl/liujianmaocao/METADATA.pb                 |  16 ++
 ofl/liujianmaocao/upstream.yaml               |   6 -
 ofl/lora/METADATA.pb                          |  15 +-
 ofl/lora/upstream.yaml                        |   6 -
 ofl/lovelight/METADATA.pb                     |  16 ++
 ofl/lovelight/upstream.yaml                   |   6 -
 ofl/loversquarrel/METADATA.pb                 |  16 ++
 ofl/loversquarrel/upstream.yaml               |   6 -
 ofl/lugrasimo/METADATA.pb                     |  13 ++
 ofl/lugrasimo/upstream.yaml                   |   6 -
 ofl/lumanosimo/METADATA.pb                    |  13 ++
 ofl/lumanosimo/upstream.yaml                  |   6 -
 ofl/lunasima/METADATA.pb                      |  17 ++
 ofl/lunasima/upstream.yaml                    |   7 -
 ofl/luxuriousroman/METADATA.pb                |  16 ++
 ofl/luxuriousroman/upstream.yaml              |   6 -
 ofl/luxuriousscript/METADATA.pb               |  16 ++
 ofl/luxuriousscript/upstream.yaml             |   6 -
 ofl/mada/METADATA.pb                          |   9 +
 ofl/mada/upstream.yaml                        |   5 -
 ofl/madimione/METADATA.pb                     |  13 ++
 ofl/madimione/upstream.yaml                   |   6 -
 ofl/mako/METADATA.pb                          |   9 +
 ofl/mako/upstream.yaml                        |   5 -
 ofl/manjari/METADATA.pb                       |  15 +-
 ofl/manjari/upstream.yaml                     |   8 -
 ofl/mansalva/METADATA.pb                      |   9 +
 ofl/mansalva/upstream.yaml                    |   5 -
 ofl/marhey/METADATA.pb                        |  13 ++
 ofl/marhey/upstream.yaml                      |   6 -
 ofl/marmelad/METADATA.pb                      |   9 +
 ofl/marmelad/upstream.yaml                    |   5 -
 ofl/martianmono/METADATA.pb                   |   9 +
 ofl/martianmono/upstream.yaml                 |   5 -
 ofl/mate/METADATA.pb                          |  13 ++
 ofl/mate/upstream.yaml                        |   6 -
 ofl/matesc/METADATA.pb                        |   9 +
 ofl/matesc/upstream.yaml                      |   5 -
 ofl/meaculpa/METADATA.pb                      |  16 ++
 ofl/meaculpa/upstream.yaml                    |   6 -
 ofl/meowscript/METADATA.pb                    |  16 ++
 ofl/meowscript/upstream.yaml                  |   6 -
 ofl/merienda/METADATA.pb                      |   9 +
 ofl/merienda/upstream.yaml                    |   5 -
 ofl/metal/METADATA.pb                         |  12 ++
 ofl/metal/upstream.yaml                       |   5 -
 ofl/metrophobic/METADATA.pb                   |   9 +
 ofl/metrophobic/upstream.yaml                 |   5 -
 ofl/michroma/METADATA.pb                      |   9 +
 ofl/michroma/upstream.yaml                    |   5 -
 ofl/micro5/METADATA.pb                        |   9 +
 ofl/micro5/upstream.yaml                      |   5 -
 ofl/micro5charted/METADATA.pb                 |   9 +
 ofl/micro5charted/upstream.yaml               |   5 -
 ofl/mingzat/METADATA.pb                       |  11 +-
 ofl/mingzat/upstream.yaml                     |   5 -
 ofl/mochiypopone/METADATA.pb                  |  16 ++
 ofl/mochiypopone/upstream.yaml                |   6 -
 ofl/mochiypoppone/METADATA.pb                 |  16 ++
 ofl/mochiypoppone/upstream.yaml               |   6 -
 ofl/moiraione/METADATA.pb                     |  13 ++
 ofl/moiraione/upstream.yaml                   |   6 -
 ofl/monda/METADATA.pb                         |  20 ++
 ofl/monda/upstream.yaml                       |   7 -
 ofl/monofett/METADATA.pb                      |   9 +
 ofl/monofett/upstream.yaml                    |   5 -
 ofl/monomaniacone/METADATA.pb                 |  20 +-
 ofl/monomaniacone/upstream.yaml               |   6 -
 ofl/montaguslab/METADATA.pb                   |  16 ++
 ofl/montaguslab/upstream.yaml                 |   6 -
 ofl/montecarlo/METADATA.pb                    |  16 ++
 ofl/montecarlo/upstream.yaml                  |   6 -
 ofl/moolahlah/METADATA.pb                     |  16 ++
 ofl/moolahlah/upstream.yaml                   |   6 -
 ofl/mooli/METADATA.pb                         |   9 +
 ofl/mooli/upstream.yaml                       |   5 -
 ofl/moondance/METADATA.pb                     |  16 ++
 ofl/moondance/upstream.yaml                   |   6 -
 ofl/moul/METADATA.pb                          |  12 ++
 ofl/moul/upstream.yaml                        |   5 -
 ofl/moulpali/METADATA.pb                      |  12 ++
 ofl/moulpali/upstream.yaml                    |   5 -
 ofl/mplus1/METADATA.pb                        |  16 ++
 ofl/mplus1/upstream.yaml                      |   6 -
 ofl/mplus1code/METADATA.pb                    |  16 ++
 ofl/mplus1code/upstream.yaml                  |   6 -
 ofl/mplus2/METADATA.pb                        |  16 ++
 ofl/mplus2/upstream.yaml                      |   6 -
 ofl/mpluscodelatin/METADATA.pb                |  16 ++
 ofl/mpluscodelatin/upstream.yaml              |   6 -
 ofl/msmadi/METADATA.pb                        |  13 ++
 ofl/msmadi/upstream.yaml                      |   5 -
 ofl/mulish/METADATA.pb                        |  20 ++
 ofl/mulish/upstream.yaml                      |   7 -
 ofl/murecho/METADATA.pb                       |  12 ++
 ofl/murecho/upstream.yaml                     |   5 -
 ofl/museomoderno/METADATA.pb                  |  13 ++
 ofl/museomoderno/upstream.yaml                |   6 -
 ofl/mynerve/METADATA.pb                       |   9 +
 ofl/mynerve/upstream.yaml                     |   5 -
 ofl/mysoul/METADATA.pb                        |  13 ++
 ofl/mysoul/upstream.yaml                      |   5 -
 ofl/nabla/METADATA.pb                         |   5 +
 ofl/nabla/upstream.yaml                       |   4 -
 ofl/namdhinggo/METADATA.pb                    |  25 +++
 ofl/namdhinggo/upstream.yaml                  |   9 -
 ofl/narnoor/METADATA.pb                       |  25 +++
 ofl/narnoor/upstream.yaml                     |   9 -
 ofl/neonderthaw/METADATA.pb                   |  16 ++
 ofl/neonderthaw/upstream.yaml                 |   6 -
 ofl/nerkoone/METADATA.pb                      |  20 ++
 ofl/nerkoone/upstream.yaml                    |   7 -
 ofl/newsreader/METADATA.pb                    | 188 ++++++++++++++++++
 ofl/newsreader/upstream.yaml                  |  49 -----
 ofl/newtegomin/METADATA.pb                    |  16 ++
 ofl/newtegomin/upstream.yaml                  |   6 -
 ofl/nokora/METADATA.pb                        |  28 +++
 ofl/nokora/upstream.yaml                      |   9 -
 ofl/norican/METADATA.pb                       |   9 +
 ofl/norican/upstream.yaml                     |   5 -
 ofl/notocoloremoji/METADATA.pb                |   9 +
 ofl/notocoloremoji/upstream.yaml              |   4 -
 ofl/notoemoji/METADATA.pb                     |  11 +-
 ofl/notoemoji/upstream.yaml                   |   4 -
 ofl/notokufiarabic/METADATA.pb                |  19 +-
 ofl/notokufiarabic/upstream.yaml              |   7 -
 ofl/notomusic/METADATA.pb                     |  19 +-
 ofl/notomusic/upstream.yaml                   |   7 -
 ofl/notonaskharabic/METADATA.pb               |  21 +-
 ofl/notonaskharabic/upstream.yaml             |   7 -
 ofl/notonastaliqurdu/METADATA.pb              |  19 +-
 ofl/notonastaliqurdu/upstream.yaml            |   7 -
 ofl/notorashihebrew/METADATA.pb               |  11 +-
 ofl/notorashihebrew/upstream.yaml             |   5 -
 ofl/notosans/METADATA.pb                      |  33 ++-
 ofl/notosans/upstream.yaml                    |   8 -
 ofl/notosansadlam/METADATA.pb                 |  11 +-
 ofl/notosansadlam/upstream.yaml               |   5 -
 ofl/notosansadlamunjoined/METADATA.pb         |  11 +-
 ofl/notosansadlamunjoined/upstream.yaml       |   5 -
 ofl/notosansanatolianhieroglyphs/METADATA.pb  |  19 +-
 .../upstream.yaml                             |   7 -
 ofl/notosansarabic/METADATA.pb                |  21 +-
 ofl/notosansarabic/upstream.yaml              |   7 -
 ofl/notosansarmenian/METADATA.pb              |  19 +-
 ofl/notosansarmenian/upstream.yaml            |   7 -
 ofl/notosansavestan/METADATA.pb               |  19 +-
 ofl/notosansavestan/upstream.yaml             |   7 -
 ofl/notosansbalinese/METADATA.pb              |  11 +-
 ofl/notosansbalinese/upstream.yaml            |   5 -
 ofl/notosansbamum/METADATA.pb                 |  19 +-
 ofl/notosansbamum/upstream.yaml               |   7 -
 ofl/notosansbassavah/METADATA.pb              |  15 +-
 ofl/notosansbassavah/upstream.yaml            |   6 -
 ofl/notosansbatak/METADATA.pb                 |  19 +-
 ofl/notosansbatak/upstream.yaml               |   7 -
 ofl/notosansbengali/METADATA.pb               |  11 +-
 ofl/notosansbengali/upstream.yaml             |   5 -
 ofl/notosansbhaiksuki/METADATA.pb             |  19 +-
 ofl/notosansbhaiksuki/upstream.yaml           |   7 -
 ofl/notosansbrahmi/METADATA.pb                |  19 +-
 ofl/notosansbrahmi/upstream.yaml              |   7 -
 ofl/notosansbuginese/METADATA.pb              |  19 +-
 ofl/notosansbuginese/upstream.yaml            |   7 -
 ofl/notosansbuhid/METADATA.pb                 |  11 +-
 ofl/notosansbuhid/upstream.yaml               |   5 -
 ofl/notosanscanadianaboriginal/METADATA.pb    |  19 +-
 ofl/notosanscanadianaboriginal/upstream.yaml  |   7 -
 ofl/notosanscarian/METADATA.pb                |  19 +-
 ofl/notosanscarian/upstream.yaml              |   7 -
 ofl/notosanscaucasianalbanian/METADATA.pb     |  15 +-
 ofl/notosanscaucasianalbanian/upstream.yaml   |   6 -
 ofl/notosanschakma/METADATA.pb                |  19 +-
 ofl/notosanschakma/upstream.yaml              |   7 -
 ofl/notosanscham/METADATA.pb                  |  19 +-
 ofl/notosanscham/upstream.yaml                |   7 -
 ofl/notosanscherokee/METADATA.pb              |  19 +-
 ofl/notosanscherokee/upstream.yaml            |   7 -
 ofl/notosanschorasmian/METADATA.pb            |  19 +-
 ofl/notosanschorasmian/upstream.yaml          |   7 -
 ofl/notosanscoptic/METADATA.pb                |  19 +-
 ofl/notosanscoptic/upstream.yaml              |   7 -
 ofl/notosanscuneiform/METADATA.pb             |  19 +-
 ofl/notosanscuneiform/upstream.yaml           |   7 -
 ofl/notosanscypriot/METADATA.pb               |  19 +-
 ofl/notosanscypriot/upstream.yaml             |   7 -
 ofl/notosanscyprominoan/METADATA.pb           |  19 +-
 ofl/notosanscyprominoan/upstream.yaml         |   7 -
 ofl/notosansdeseret/METADATA.pb               |  19 +-
 ofl/notosansdeseret/upstream.yaml             |   7 -
 ofl/notosansdevanagari/METADATA.pb            |  19 +-
 ofl/notosansdevanagari/upstream.yaml          |   7 -
 ofl/notosansduployan/METADATA.pb              |  25 ++-
 ofl/notosansduployan/upstream.yaml            |   8 -
 ofl/notosansegyptianhieroglyphs/METADATA.pb   |  19 +-
 ofl/notosansegyptianhieroglyphs/upstream.yaml |   7 -
 ofl/notosanselbasan/METADATA.pb               |  19 +-
 ofl/notosanselbasan/upstream.yaml             |   7 -
 ofl/notosanselymaic/METADATA.pb               |  19 +-
 ofl/notosanselymaic/upstream.yaml             |   7 -
 ofl/notosansethiopic/METADATA.pb              |  19 +-
 ofl/notosansethiopic/upstream.yaml            |   7 -
 ofl/notosansgeorgian/METADATA.pb              |  19 +-
 ofl/notosansgeorgian/upstream.yaml            |   7 -
 ofl/notosansglagolitic/METADATA.pb            |  19 +-
 ofl/notosansglagolitic/upstream.yaml          |   7 -
 ofl/notosansgothic/METADATA.pb                |  19 +-
 ofl/notosansgothic/upstream.yaml              |   7 -
 ofl/notosansgrantha/METADATA.pb               |  15 +-
 ofl/notosansgrantha/upstream.yaml             |   6 -
 ofl/notosansgujarati/METADATA.pb              |  19 +-
 ofl/notosansgujarati/upstream.yaml            |   7 -
 ofl/notosansgunjalagondi/METADATA.pb          |  19 +-
 ofl/notosansgunjalagondi/upstream.yaml        |   7 -
 ofl/notosansgurmukhi/METADATA.pb              |  19 +-
 ofl/notosansgurmukhi/upstream.yaml            |   7 -
 ofl/notosanshanifirohingya/METADATA.pb        |  19 +-
 ofl/notosanshanifirohingya/upstream.yaml      |   7 -
 ofl/notosanshanunoo/METADATA.pb               |  15 +-
 ofl/notosanshanunoo/upstream.yaml             |   6 -
 ofl/notosanshatran/METADATA.pb                |  19 +-
 ofl/notosanshatran/upstream.yaml              |   7 -
 ofl/notosanshebrew/METADATA.pb                |  11 +-
 ofl/notosanshebrew/upstream.yaml              |   5 -
 ofl/notosansimperialaramaic/METADATA.pb       |  19 +-
 ofl/notosansimperialaramaic/upstream.yaml     |   7 -
 ofl/notosansindicsiyaqnumbers/METADATA.pb     |  19 +-
 ofl/notosansindicsiyaqnumbers/upstream.yaml   |   7 -
 ofl/notosansinscriptionalpahlavi/METADATA.pb  |  19 +-
 .../upstream.yaml                             |   7 -
 ofl/notosansinscriptionalparthian/METADATA.pb |  19 +-
 .../upstream.yaml                             |   7 -
 ofl/notosansjavanese/METADATA.pb              |  19 +-
 ofl/notosansjavanese/upstream.yaml            |   7 -
 ofl/notosanskaithi/METADATA.pb                |  19 +-
 ofl/notosanskaithi/upstream.yaml              |   7 -
 ofl/notosanskannada/METADATA.pb               |  15 +-
 ofl/notosanskannada/upstream.yaml             |   6 -
 ofl/notosanskawi/METADATA.pb                  |  19 +-
 ofl/notosanskawi/upstream.yaml                |   7 -
 ofl/notosanskayahli/METADATA.pb               |  15 +-
 ofl/notosanskayahli/upstream.yaml             |   6 -
 ofl/notosanskharoshthi/METADATA.pb            |  19 +-
 ofl/notosanskharoshthi/upstream.yaml          |   7 -
 ofl/notosanskhmer/METADATA.pb                 |  19 +-
 ofl/notosanskhmer/upstream.yaml               |   7 -
 ofl/notosanskhojki/METADATA.pb                |  19 +-
 ofl/notosanskhojki/upstream.yaml              |   7 -
 ofl/notosanskhudawadi/METADATA.pb             |  19 +-
 ofl/notosanskhudawadi/upstream.yaml           |   7 -
 ofl/notosanslao/METADATA.pb                   |  19 +-
 ofl/notosanslao/upstream.yaml                 |   7 -
 ofl/notosanslaolooped/METADATA.pb             |  19 +-
 ofl/notosanslaolooped/upstream.yaml           |   7 -
 ofl/notosanslepcha/METADATA.pb                |  19 +-
 ofl/notosanslepcha/upstream.yaml              |   7 -
 ofl/notosanslimbu/METADATA.pb                 |  17 +-
 ofl/notosanslimbu/upstream.yaml               |   6 -
 ofl/notosanslineara/METADATA.pb               |  21 +-
 ofl/notosanslineara/upstream.yaml             |   7 -
 ofl/notosanslinearb/METADATA.pb               |  19 +-
 ofl/notosanslinearb/upstream.yaml             |   7 -
 ofl/notosanslisu/METADATA.pb                  |  11 +-
 ofl/notosanslisu/upstream.yaml                |   5 -
 ofl/notosanslycian/METADATA.pb                |  19 +-
 ofl/notosanslycian/upstream.yaml              |   7 -
 ofl/notosanslydian/METADATA.pb                |  19 +-
 ofl/notosanslydian/upstream.yaml              |   7 -
 ofl/notosansmahajani/METADATA.pb              |  19 +-
 ofl/notosansmahajani/upstream.yaml            |   7 -
 ofl/notosansmalayalam/METADATA.pb             |  19 +-
 ofl/notosansmalayalam/upstream.yaml           |   7 -
 ofl/notosansmandaic/METADATA.pb               |  19 +-
 ofl/notosansmandaic/upstream.yaml             |   7 -
 ofl/notosansmanichaean/METADATA.pb            |  19 +-
 ofl/notosansmanichaean/upstream.yaml          |   7 -
 ofl/notosansmarchen/METADATA.pb               |  19 +-
 ofl/notosansmarchen/upstream.yaml             |   7 -
 ofl/notosansmasaramgondi/METADATA.pb          |  19 +-
 ofl/notosansmasaramgondi/upstream.yaml        |   7 -
 ofl/notosansmayannumerals/METADATA.pb         |  19 +-
 ofl/notosansmayannumerals/upstream.yaml       |   7 -
 ofl/notosansmedefaidrin/METADATA.pb           |  15 +-
 ofl/notosansmedefaidrin/upstream.yaml         |   6 -
 ofl/notosansmeeteimayek/METADATA.pb           |  19 +-
 ofl/notosansmeeteimayek/upstream.yaml         |   7 -
 ofl/notosansmendekikakui/METADATA.pb          |  15 +-
 ofl/notosansmendekikakui/upstream.yaml        |   6 -
 ofl/notosansmeroitic/METADATA.pb              |  19 +-
 ofl/notosansmeroitic/upstream.yaml            |   7 -
 ofl/notosansmiao/METADATA.pb                  |  15 +-
 ofl/notosansmiao/upstream.yaml                |   6 -
 ofl/notosansmodi/METADATA.pb                  |  19 +-
 ofl/notosansmodi/upstream.yaml                |   7 -
 ofl/notosansmongolian/METADATA.pb             |  19 +-
 ofl/notosansmongolian/upstream.yaml           |   7 -
 ofl/notosansmono/METADATA.pb                  |  29 ++-
 ofl/notosansmono/upstream.yaml                |   7 -
 ofl/notosansmro/METADATA.pb                   |  15 +-
 ofl/notosansmro/upstream.yaml                 |   6 -
 ofl/notosansmultani/METADATA.pb               |  19 +-
 ofl/notosansmultani/upstream.yaml             |   7 -
 ofl/notosansmyanmar/METADATA.pb               |  15 +-
 ofl/notosansmyanmar/upstream.yaml             |   6 -
 ofl/notosansnabataean/METADATA.pb             |  19 +-
 ofl/notosansnabataean/upstream.yaml           |   7 -
 ofl/notosansnagmundari/METADATA.pb            |  23 ++-
 ofl/notosansnagmundari/upstream.yaml          |   7 -
 ofl/notosansnandinagari/METADATA.pb           |  19 +-
 ofl/notosansnandinagari/upstream.yaml         |   7 -
 ofl/notosansnewa/METADATA.pb                  |  19 +-
 ofl/notosansnewa/upstream.yaml                |   7 -
 ofl/notosansnewtailue/METADATA.pb             |  19 +-
 ofl/notosansnewtailue/upstream.yaml           |   7 -
 ofl/notosansnko/METADATA.pb                   |  19 +-
 ofl/notosansnko/upstream.yaml                 |   7 -
 ofl/notosansnkounjoined/METADATA.pb           |  19 +-
 ofl/notosansnkounjoined/upstream.yaml         |   7 -
 ofl/notosansnushu/METADATA.pb                 |  15 +-
 ofl/notosansnushu/upstream.yaml               |   6 -
 ofl/notosansogham/METADATA.pb                 |  19 +-
 ofl/notosansogham/upstream.yaml               |   7 -
 ofl/notosansolchiki/METADATA.pb               |  21 +-
 ofl/notosansolchiki/upstream.yaml             |   7 -
 ofl/notosansoldhungarian/METADATA.pb          |  19 +-
 ofl/notosansoldhungarian/upstream.yaml        |   7 -
 ofl/notosansolditalic/METADATA.pb             |  19 +-
 ofl/notosansolditalic/upstream.yaml           |   7 -
 ofl/notosansoldnortharabian/METADATA.pb       |  19 +-
 ofl/notosansoldnortharabian/upstream.yaml     |   7 -
 ofl/notosansoldpermic/METADATA.pb             |  21 +-
 ofl/notosansoldpermic/upstream.yaml           |   7 -
 ofl/notosansoldpersian/METADATA.pb            |  19 +-
 ofl/notosansoldpersian/upstream.yaml          |   7 -
 ofl/notosansoldsogdian/METADATA.pb            |  19 +-
 ofl/notosansoldsogdian/upstream.yaml          |   7 -
 ofl/notosansoldsoutharabian/METADATA.pb       |  19 +-
 ofl/notosansoldsoutharabian/upstream.yaml     |   7 -
 ofl/notosansoldturkic/METADATA.pb             |  19 +-
 ofl/notosansoldturkic/upstream.yaml           |   7 -
 ofl/notosansoriya/METADATA.pb                 |  19 +-
 ofl/notosansoriya/upstream.yaml               |   7 -
 ofl/notosansosage/METADATA.pb                 |  19 +-
 ofl/notosansosage/upstream.yaml               |   7 -
 ofl/notosansosmanya/METADATA.pb               |  19 +-
 ofl/notosansosmanya/upstream.yaml             |   7 -
 ofl/notosanspahawhhmong/METADATA.pb           |  19 +-
 ofl/notosanspahawhhmong/upstream.yaml         |   7 -
 ofl/notosanspalmyrene/METADATA.pb             |  19 +-
 ofl/notosanspalmyrene/upstream.yaml           |   7 -
 ofl/notosanspaucinhau/METADATA.pb             |  19 +-
 ofl/notosanspaucinhau/upstream.yaml           |   7 -
 ofl/notosansphagspa/METADATA.pb               |  21 +-
 ofl/notosansphagspa/upstream.yaml             |   7 -
 ofl/notosansphoenician/METADATA.pb            |  19 +-
 ofl/notosansphoenician/upstream.yaml          |   7 -
 ofl/notosanspsalterpahlavi/METADATA.pb        |  19 +-
 ofl/notosanspsalterpahlavi/upstream.yaml      |   7 -
 ofl/notosansrejang/METADATA.pb                |  19 +-
 ofl/notosansrejang/upstream.yaml              |   7 -
 ofl/notosansrunic/METADATA.pb                 |  19 +-
 ofl/notosansrunic/upstream.yaml               |   7 -
 ofl/notosanssamaritan/METADATA.pb             |  19 +-
 ofl/notosanssamaritan/upstream.yaml           |   7 -
 ofl/notosanssaurashtra/METADATA.pb            |  19 +-
 ofl/notosanssaurashtra/upstream.yaml          |   7 -
 ofl/notosanssharada/METADATA.pb               |  19 +-
 ofl/notosanssharada/upstream.yaml             |   7 -
 ofl/notosansshavian/METADATA.pb               |  19 +-
 ofl/notosansshavian/upstream.yaml             |   7 -
 ofl/notosanssiddham/METADATA.pb               |  19 +-
 ofl/notosanssiddham/upstream.yaml             |   7 -
 ofl/notosanssignwriting/METADATA.pb           |  19 +-
 ofl/notosanssignwriting/upstream.yaml         |   7 -
 ofl/notosanssinhala/METADATA.pb               |  19 +-
 ofl/notosanssinhala/upstream.yaml             |   7 -
 ofl/notosanssogdian/METADATA.pb               |  19 +-
 ofl/notosanssogdian/upstream.yaml             |   7 -
 ofl/notosanssorasompeng/METADATA.pb           |  19 +-
 ofl/notosanssorasompeng/upstream.yaml         |   7 -
 ofl/notosanssoyombo/METADATA.pb               |  19 +-
 ofl/notosanssoyombo/upstream.yaml             |   7 -
 ofl/notosanssundanese/METADATA.pb             |  19 +-
 ofl/notosanssundanese/upstream.yaml           |   7 -
 ofl/notosanssylotinagri/METADATA.pb           |  21 +-
 ofl/notosanssylotinagri/upstream.yaml         |   7 -
 ofl/notosanssymbols/METADATA.pb               |  37 +++-
 ofl/notosanssymbols/upstream.yaml             |   7 -
 ofl/notosanssymbols2/METADATA.pb              |  19 +-
 ofl/notosanssymbols2/upstream.yaml            |   7 -
 ofl/notosanssyriac/METADATA.pb                |  19 +-
 ofl/notosanssyriac/upstream.yaml              |   7 -
 ofl/notosanssyriaceastern/METADATA.pb         |  31 ++-
 ofl/notosanssyriaceastern/upstream.yaml       |   7 -
 ofl/notosanstagalog/METADATA.pb               |  19 +-
 ofl/notosanstagalog/upstream.yaml             |   7 -
 ofl/notosanstagbanwa/METADATA.pb              |  19 +-
 ofl/notosanstagbanwa/upstream.yaml            |   7 -
 ofl/notosanstaile/METADATA.pb                 |  19 +-
 ofl/notosanstaile/upstream.yaml               |   7 -
 ofl/notosanstaitham/METADATA.pb               |  19 +-
 ofl/notosanstaitham/upstream.yaml             |   7 -
 ofl/notosanstaiviet/METADATA.pb               |  19 +-
 ofl/notosanstaiviet/upstream.yaml             |   7 -
 ofl/notosanstakri/METADATA.pb                 |  19 +-
 ofl/notosanstakri/upstream.yaml               |   7 -
 ofl/notosanstamil/METADATA.pb                 |  19 +-
 ofl/notosanstamil/upstream.yaml               |   7 -
 ofl/notosanstamilsupplement/METADATA.pb       |  17 +-
 ofl/notosanstamilsupplement/upstream.yaml     |   6 -
 ofl/notosanstangsa/METADATA.pb                |  19 +-
 ofl/notosanstangsa/upstream.yaml              |   7 -
 ofl/notosanstelugu/METADATA.pb                |  19 +-
 ofl/notosanstelugu/upstream.yaml              |   7 -
 ofl/notosansthaana/METADATA.pb                |  19 +-
 ofl/notosansthaana/upstream.yaml              |   7 -
 ofl/notosansthai/METADATA.pb                  |  19 +-
 ofl/notosansthai/upstream.yaml                |   7 -
 ofl/notosansthailooped/METADATA.pb            |  43 +++-
 ofl/notosansthailooped/upstream.yaml          |  13 --
 ofl/notosanstifinagh/METADATA.pb              |  19 +-
 ofl/notosanstifinagh/upstream.yaml            |   7 -
 ofl/notosanstirhuta/METADATA.pb               |  19 +-
 ofl/notosanstirhuta/upstream.yaml             |   7 -
 ofl/notosansugaritic/METADATA.pb              |  19 +-
 ofl/notosansugaritic/upstream.yaml            |   7 -
 ofl/notosansvai/METADATA.pb                   |  19 +-
 ofl/notosansvai/upstream.yaml                 |   7 -
 ofl/notosansvithkuqi/METADATA.pb              |  23 ++-
 ofl/notosansvithkuqi/upstream.yaml            |   7 -
 ofl/notosanswancho/METADATA.pb                |  19 +-
 ofl/notosanswancho/upstream.yaml              |   7 -
 ofl/notosanswarangciti/METADATA.pb            |  19 +-
 ofl/notosanswarangciti/upstream.yaml          |   7 -
 ofl/notosansyi/METADATA.pb                    |  19 +-
 ofl/notosansyi/upstream.yaml                  |   7 -
 ofl/notosanszanabazarsquare/METADATA.pb       |  19 +-
 ofl/notosanszanabazarsquare/upstream.yaml     |   7 -
 ofl/notoserif/METADATA.pb                     |  33 ++-
 ofl/notoserif/upstream.yaml                   |   8 -
 ofl/notoserifahom/METADATA.pb                 |  19 +-
 ofl/notoserifahom/upstream.yaml               |   7 -
 ofl/notoserifarmenian/METADATA.pb             |  19 +-
 ofl/notoserifarmenian/upstream.yaml           |   7 -
 ofl/notoserifbalinese/METADATA.pb             |  13 +-
 ofl/notoserifbalinese/upstream.yaml           |   5 -
 ofl/notoserifbengali/METADATA.pb              |  11 +-
 ofl/notoserifbengali/upstream.yaml            |   5 -
 ofl/notoserifdevanagari/METADATA.pb           |  19 +-
 ofl/notoserifdevanagari/upstream.yaml         |   7 -
 ofl/notoserifdogra/METADATA.pb                |  19 +-
 ofl/notoserifdogra/upstream.yaml              |   7 -
 ofl/notoserifethiopic/METADATA.pb             |  19 +-
 ofl/notoserifethiopic/upstream.yaml           |   7 -
 ofl/notoserifgeorgian/METADATA.pb             |  19 +-
 ofl/notoserifgeorgian/upstream.yaml           |   7 -
 ofl/notoserifgrantha/METADATA.pb              |  19 +-
 ofl/notoserifgrantha/upstream.yaml            |   7 -
 ofl/notoserifgujarati/METADATA.pb             |  19 +-
 ofl/notoserifgujarati/upstream.yaml           |   7 -
 ofl/notoserifgurmukhi/METADATA.pb             |  19 +-
 ofl/notoserifgurmukhi/upstream.yaml           |   7 -
 ofl/notoserifhebrew/METADATA.pb               |  11 +-
 ofl/notoserifhebrew/upstream.yaml             |   5 -
 ofl/notoserifhentaigana/METADATA.pb           |  19 +-
 ofl/notoserifhentaigana/upstream.yaml         |   7 -
 ofl/notoserifkannada/METADATA.pb              |  19 +-
 ofl/notoserifkannada/upstream.yaml            |   7 -
 ofl/notoserifkhitansmallscript/METADATA.pb    |  19 +-
 ofl/notoserifkhitansmallscript/upstream.yaml  |   7 -
 ofl/notoserifkhmer/METADATA.pb                |  19 +-
 ofl/notoserifkhmer/upstream.yaml              |   7 -
 ofl/notoserifkhojki/METADATA.pb               |  19 +-
 ofl/notoserifkhojki/upstream.yaml             |   7 -
 ofl/notoseriflao/METADATA.pb                  |  19 +-
 ofl/notoseriflao/upstream.yaml                |   7 -
 ofl/notoserifmakasar/METADATA.pb              |  23 ++-
 ofl/notoserifmakasar/upstream.yaml            |   7 -
 ofl/notoserifmalayalam/METADATA.pb            |  19 +-
 ofl/notoserifmalayalam/upstream.yaml          |   7 -
 ofl/notoserifolduyghur/METADATA.pb            |  21 +-
 ofl/notoserifolduyghur/upstream.yaml          |   7 -
 ofl/notoseriforiya/METADATA.pb                |  11 +-
 ofl/notoseriforiya/upstream.yaml              |   5 -
 ofl/notoserifottomansiyaq/METADATA.pb         |  19 +-
 ofl/notoserifottomansiyaq/upstream.yaml       |   7 -
 ofl/notoserifsinhala/METADATA.pb              |  19 +-
 ofl/notoserifsinhala/upstream.yaml            |   7 -
 ofl/notoseriftamil/METADATA.pb                |  23 ++-
 ofl/notoseriftamil/upstream.yaml              |   8 -
 ofl/notoseriftangut/METADATA.pb               |  19 +-
 ofl/notoseriftangut/upstream.yaml             |   7 -
 ofl/notoseriftelugu/METADATA.pb               |  19 +-
 ofl/notoseriftelugu/upstream.yaml             |   7 -
 ofl/notoserifthai/METADATA.pb                 |  19 +-
 ofl/notoserifthai/upstream.yaml               |   7 -
 ofl/notoseriftibetan/METADATA.pb              |  19 +-
 ofl/notoseriftibetan/upstream.yaml            |   7 -
 ofl/notoseriftoto/METADATA.pb                 |  11 +-
 ofl/notoseriftoto/upstream.yaml               |   5 -
 ofl/notoserifvithkuqi/METADATA.pb             |  15 +-
 ofl/notoserifvithkuqi/upstream.yaml           |   5 -
 ofl/notoserifyezidi/METADATA.pb               |  19 +-
 ofl/notoserifyezidi/upstream.yaml             |   7 -
 ofl/nototraditionalnushu/METADATA.pb          |  15 +-
 ofl/nototraditionalnushu/upstream.yaml        |   6 -
 ofl/notoznamennymusicalnotation/METADATA.pb   |  19 +-
 ofl/notoznamennymusicalnotation/upstream.yaml |   7 -
 ofl/nunito/METADATA.pb                        |  15 +-
 ofl/nunito/upstream.yaml                      |   5 -
 ofl/nunitosans/METADATA.pb                    |  13 ++
 ofl/nunitosans/upstream.yaml                  |   6 -
 ofl/nuosusil/METADATA.pb                      |   9 +
 ofl/nuosusil/upstream.yaml                    |   5 -
 ofl/odormeanchey/METADATA.pb                  |  12 ++
 ofl/odormeanchey/upstream.yaml                |   5 -
 ofl/offside/METADATA.pb                       |   9 +
 ofl/offside/upstream.yaml                     |   5 -
 ofl/oi/METADATA.pb                            |  12 ++
 ofl/oi/upstream.yaml                          |   5 -
 ofl/ojuju/METADATA.pb                         |  13 ++
 ofl/ojuju/upstream.yaml                       |   6 -
 ofl/ole/METADATA.pb                           |  16 ++
 ofl/ole/upstream.yaml                         |   6 -
 ofl/onest/METADATA.pb                         |   9 +
 ofl/onest/upstream.yaml                       |   5 -
 ofl/ooohbaby/METADATA.pb                      |  16 ++
 ofl/ooohbaby/upstream.yaml                    |   6 -
 ofl/opensans/METADATA.pb                      |  13 ++
 ofl/opensans/upstream.yaml                    |   6 -
 ofl/orbit/METADATA.pb                         |  13 ++
 ofl/orbit/upstream.yaml                       |   6 -
 ofl/orelegaone/METADATA.pb                    |  16 ++
 ofl/orelegaone/upstream.yaml                  |   6 -
 ofl/orienta/METADATA.pb                       |   9 +
 ofl/orienta/upstream.yaml                     |   5 -
 ofl/oswald/METADATA.pb                        |   9 +
 ofl/oswald/upstream.yaml                      |   5 -
 ofl/otomanopeeone/METADATA.pb                 |  16 ++
 ofl/otomanopeeone/upstream.yaml               |   6 -
 ofl/outfit/METADATA.pb                        |   9 +
 ofl/outfit/upstream.yaml                      |   5 -
 ofl/overpass/METADATA.pb                      |  16 ++
 ofl/overpass/upstream.yaml                    |   6 -
 ofl/overpassmono/METADATA.pb                  |  12 ++
 ofl/overpassmono/upstream.yaml                |   5 -
 ofl/oxanium/METADATA.pb                       |  40 ++++
 ofl/oxanium/upstream.yaml                     |  12 --
 ofl/padauk/METADATA.pb                        |  13 ++
 ofl/padauk/upstream.yaml                      |   6 -
 ofl/padyakkeexpandedone/METADATA.pb           |  13 ++
 ofl/padyakkeexpandedone/upstream.yaml         |   6 -
 ofl/palettemosaic/METADATA.pb                 |  13 ++
 ofl/palettemosaic/upstream.yaml               |   5 -
 ofl/paprika/METADATA.pb                       |   9 +
 ofl/paprika/upstream.yaml                     |   5 -
 ofl/passionsconflict/METADATA.pb              |  16 ++
 ofl/passionsconflict/upstream.yaml            |   6 -
 ofl/pathwayextreme/METADATA.pb                |  15 +-
 ofl/pathwayextreme/upstream.yaml              |   6 -
 ofl/pathwaygothicone/METADATA.pb              |   9 +
 ofl/pathwaygothicone/upstream.yaml            |   5 -
 ofl/paytoneone/METADATA.pb                    |   9 +
 ofl/paytoneone/upstream.yaml                  |   5 -
 ofl/petemoss/METADATA.pb                      |  16 ++
 ofl/petemoss/upstream.yaml                    |   6 -
 ofl/phudu/METADATA.pb                         |  13 ++
 ofl/phudu/upstream.yaml                       |   6 -
 ofl/piazzolla/METADATA.pb                     |  15 +-
 ofl/piazzolla/upstream.yaml                   |   5 -
 ofl/pinyonscript/METADATA.pb                  |   9 +
 ofl/pinyonscript/upstream.yaml                |   5 -
 ofl/pixelifysans/METADATA.pb                  |   9 +
 ofl/pixelifysans/upstream.yaml                |   5 -
 ofl/platypi/METADATA.pb                       |  15 +-
 ofl/platypi/upstream.yaml                     |   6 -
 ofl/playball/METADATA.pb                      |  16 ++
 ofl/playball/upstream.yaml                    |   6 -
 ofl/playfair/METADATA.pb                      |  13 ++
 ofl/playfair/upstream.yaml                    |   6 -
 ofl/playpensans/METADATA.pb                   |  11 +-
 ofl/playpensans/upstream.yaml                 |   5 -
 ofl/playwriteco/METADATA.pb                   |  11 +-
 ofl/playwriteco/upstream.yaml                 |   5 -
 ofl/playwritefrtrad/METADATA.pb               |   9 +
 ofl/playwritefrtrad/upstream.yaml             |   5 -
 ofl/playwritegbs/METADATA.pb                  |  15 +-
 ofl/playwritegbs/upstream.yaml                |   6 -
 ofl/plusjakartasans/METADATA.pb               |  13 ++
 ofl/plusjakartasans/upstream.yaml             |   6 -
 ofl/poltawskinowy/METADATA.pb                 |  13 ++
 ofl/poltawskinowy/upstream.yaml               |   6 -
 ofl/pontanosans/METADATA.pb                   |   9 +
 ofl/pontanosans/upstream.yaml                 |   5 -
 ofl/pottaone/METADATA.pb                      |  16 ++
 ofl/pottaone/upstream.yaml                    |   6 -
 ofl/praise/METADATA.pb                        |  16 ++
 ofl/praise/upstream.yaml                      |   6 -
 ofl/preahvihear/METADATA.pb                   |  12 ++
 ofl/preahvihear/upstream.yaml                 |   5 -
 ofl/protestguerrilla/METADATA.pb              |  11 +-
 ofl/protestguerrilla/upstream.yaml            |   5 -
 ofl/protestrevolution/METADATA.pb             |  11 +-
 ofl/protestrevolution/upstream.yaml           |   5 -
 ofl/protestriot/METADATA.pb                   |  11 +-
 ofl/protestriot/upstream.yaml                 |   5 -
 ofl/proteststrike/METADATA.pb                 |  11 +-
 ofl/proteststrike/upstream.yaml               |   5 -
 ofl/publicsans/METADATA.pb                    |  13 ++
 ofl/publicsans/upstream.yaml                  |   6 -
 ofl/puppiesplay/METADATA.pb                   |  16 ++
 ofl/puppiesplay/upstream.yaml                 |   6 -
 ofl/qahiri/METADATA.pb                        |  11 +-
 ofl/qahiri/upstream.yaml                      |   4 -
 ofl/quicksand/METADATA.pb                     |   8 +
 ofl/quicksand/upstream.yaml                   |   4 -
 ofl/qwigley/METADATA.pb                       |  16 ++
 ofl/qwigley/upstream.yaml                     |   6 -
 ofl/qwitchergrypen/METADATA.pb                |  20 ++
 ofl/qwitchergrypen/upstream.yaml              |   7 -
 ofl/radiocanada/METADATA.pb                   |  13 ++
 ofl/radiocanada/upstream.yaml                 |   6 -
 ofl/rampartone/METADATA.pb                    |  16 ++
 ofl/rampartone/upstream.yaml                  |   6 -
 ofl/rasa/METADATA.pb                          |  20 ++
 ofl/rasa/upstream.yaml                        |   7 -
 ofl/readexpro/METADATA.pb                     |   9 +
 ofl/readexpro/upstream.yaml                   |   5 -
 ofl/recursive/METADATA.pb                     |   9 +
 ofl/recursive/upstream.yaml                   |   5 -
 ofl/redacted/METADATA.pb                      |  12 ++
 ofl/redacted/upstream.yaml                    |   5 -
 ofl/redactedscript/METADATA.pb                |  20 ++
 ofl/redactedscript/upstream.yaml              |   7 -
 ofl/redditmono/METADATA.pb                    |   9 +
 ofl/redditmono/upstream.yaml                  |   5 -
 ofl/redditsans/METADATA.pb                    |  13 ++
 ofl/redditsans/upstream.yaml                  |   6 -
 ofl/redditsanscondensed/METADATA.pb           |   9 +
 ofl/redditsanscondensed/upstream.yaml         |   5 -
 ofl/redhatdisplay/METADATA.pb                 |  13 ++
 ofl/redhatdisplay/upstream.yaml               |   6 -
 ofl/redhatmono/METADATA.pb                    |  13 ++
 ofl/redhatmono/upstream.yaml                  |   6 -
 ofl/redhattext/METADATA.pb                    |  13 ++
 ofl/redhattext/upstream.yaml                  |   6 -
 ofl/redrose/METADATA.pb                       |  28 +++
 ofl/redrose/upstream.yaml                     |   9 -
 ofl/reemkufi/METADATA.pb                      |  11 +-
 ofl/reemkufi/upstream.yaml                    |   5 -
 ofl/reemkufifun/METADATA.pb                   |   9 +
 ofl/reemkufifun/upstream.yaml                 |   5 -
 ofl/reemkufiink/METADATA.pb                   |  11 +-
 ofl/reemkufiink/upstream.yaml                 |   5 -
 ofl/reggaeone/METADATA.pb                     |  16 ++
 ofl/reggaeone/upstream.yaml                   |   6 -
 ofl/rem/METADATA.pb                           |  17 ++
 ofl/rem/upstream.yaml                         |   7 -
 ofl/rethinksans/METADATA.pb                   |  13 ++
 ofl/rethinksans/upstream.yaml                 |   6 -
 ofl/roadrage/METADATA.pb                      |  16 ++
 ofl/roadrage/upstream.yaml                    |   6 -
 ofl/roboto/METADATA.pb                        |   9 +
 ofl/roboto/upstream.yaml                      |   5 -
 ofl/robotocondensed/METADATA.pb               |   9 +
 ofl/robotocondensed/upstream.yaml             |   5 -
 ofl/robotoflex/METADATA.pb                    |  31 +--
 ofl/robotoflex/upstream.yaml                  |   4 -
 ofl/robotoserif/METADATA.pb                   |   9 +
 ofl/robotoserif/upstream.yaml                 |   5 -
 ofl/rock3d/METADATA.pb                        |  20 +-
 ofl/rock3d/upstream.yaml                      |   6 -
 ofl/rocknrollone/METADATA.pb                  |  16 ++
 ofl/rocknrollone/upstream.yaml                |   6 -
 ofl/rokkitt/METADATA.pb                       |  13 ++
 ofl/rokkitt/upstream.yaml                     |   6 -
 ofl/rosario/METADATA.pb                       |  16 ++
 ofl/rosario/upstream.yaml                     |   6 -
 ofl/rubik/METADATA.pb                         |  13 ++
 ofl/rubik/upstream.yaml                       |   6 -
 ofl/rubik80sfade/METADATA.pb                  |  13 ++
 ofl/rubik80sfade/upstream.yaml                |   6 -
 ofl/rubikbeastly/METADATA.pb                  |  13 ++
 ofl/rubikbeastly/upstream.yaml                |   5 -
 ofl/rubikbrokenfax/METADATA.pb                |  13 ++
 ofl/rubikbrokenfax/upstream.yaml              |   6 -
 ofl/rubikbubbles/METADATA.pb                  |  13 ++
 ofl/rubikbubbles/upstream.yaml                |   5 -
 ofl/rubikburned/METADATA.pb                   |  13 ++
 ofl/rubikburned/upstream.yaml                 |   6 -
 ofl/rubikdirt/METADATA.pb                     |  13 ++
 ofl/rubikdirt/upstream.yaml                   |   6 -
 ofl/rubikdistressed/METADATA.pb               |  13 ++
 ofl/rubikdistressed/upstream.yaml             |   6 -
 ofl/rubikdoodleshadow/METADATA.pb             |  13 ++
 ofl/rubikdoodleshadow/upstream.yaml           |   6 -
 ofl/rubikdoodletriangles/METADATA.pb          |  13 ++
 ofl/rubikdoodletriangles/upstream.yaml        |   6 -
 ofl/rubikgemstones/METADATA.pb                |  13 ++
 ofl/rubikgemstones/upstream.yaml              |   6 -
 ofl/rubikglitch/METADATA.pb                   |  13 ++
 ofl/rubikglitch/upstream.yaml                 |   5 -
 ofl/rubikglitchpop/METADATA.pb                |  13 ++
 ofl/rubikglitchpop/upstream.yaml              |   6 -
 ofl/rubikiso/METADATA.pb                      |  13 ++
 ofl/rubikiso/upstream.yaml                    |   6 -
 ofl/rubiklines/METADATA.pb                    |  13 ++
 ofl/rubiklines/upstream.yaml                  |   6 -
 ofl/rubikmaps/METADATA.pb                     |  13 ++
 ofl/rubikmaps/upstream.yaml                   |   6 -
 ofl/rubikmarkerhatch/METADATA.pb              |  13 ++
 ofl/rubikmarkerhatch/upstream.yaml            |   6 -
 ofl/rubikmaze/METADATA.pb                     |  13 ++
 ofl/rubikmaze/upstream.yaml                   |   6 -
 ofl/rubikmicrobe/METADATA.pb                  |  13 ++
 ofl/rubikmicrobe/upstream.yaml                |   5 -
 ofl/rubikmoonrocks/METADATA.pb                |  13 ++
 ofl/rubikmoonrocks/upstream.yaml              |   5 -
 ofl/rubikpixels/METADATA.pb                   |  13 ++
 ofl/rubikpixels/upstream.yaml                 |   6 -
 ofl/rubikpuddles/METADATA.pb                  |  13 ++
 ofl/rubikpuddles/upstream.yaml                |   5 -
 ofl/rubikscribble/METADATA.pb                 |  13 ++
 ofl/rubikscribble/upstream.yaml               |   6 -
 ofl/rubikspraypaint/METADATA.pb               |  13 ++
 ofl/rubikspraypaint/upstream.yaml             |   6 -
 ofl/rubikstorm/METADATA.pb                    |  13 ++
 ofl/rubikstorm/upstream.yaml                  |   6 -
 ofl/rubikvinyl/METADATA.pb                    |  13 ++
 ofl/rubikvinyl/upstream.yaml                  |   6 -
 ofl/rubikwetpaint/METADATA.pb                 |  13 ++
 ofl/rubikwetpaint/upstream.yaml               |   5 -
 ofl/rugeboogie/METADATA.pb                    |  16 ++
 ofl/rugeboogie/upstream.yaml                  |   6 -
 ofl/ruthie/METADATA.pb                        |  16 ++
 ofl/ruthie/upstream.yaml                      |   6 -
 ofl/ruwudu/METADATA.pb                        |  21 ++
 ofl/ruwudu/upstream.yaml                      |   8 -
 ofl/saira/METADATA.pb                         |  16 ++
 ofl/saira/upstream.yaml                       |   6 -
 ofl/sancreek/METADATA.pb                      |   9 +
 ofl/sancreek/upstream.yaml                    |   5 -
 ofl/sassyfrass/METADATA.pb                    |  16 ++
 ofl/sassyfrass/upstream.yaml                  |   6 -
 ofl/scheherazadenew/METADATA.pb               |  21 ++
 ofl/scheherazadenew/upstream.yaml             |   8 -
 ofl/schibstedgrotesk/METADATA.pb              |  13 ++
 ofl/schibstedgrotesk/upstream.yaml            |   6 -
 ofl/secularone/METADATA.pb                    |   9 +
 ofl/secularone/upstream.yaml                  |   5 -
 ofl/sedan/METADATA.pb                         |  17 ++
 ofl/sedan/upstream.yaml                       |   7 -
 ofl/sedansc/METADATA.pb                       |  13 ++
 ofl/sedansc/upstream.yaml                     |   6 -
 ofl/sen/METADATA.pb                           |   9 +
 ofl/sen/upstream.yaml                         |   5 -
 ofl/sendflowers/METADATA.pb                   |  13 ++
 ofl/sendflowers/upstream.yaml                 |   5 -
 ofl/seymourone/METADATA.pb                    |   9 +
 ofl/seymourone/upstream.yaml                  |   5 -
 ofl/shalimar/METADATA.pb                      |  16 ++
 ofl/shalimar/upstream.yaml                    |   6 -
 ofl/shantellsans/METADATA.pb                  |  17 ++
 ofl/shantellsans/upstream.yaml                |   7 -
 ofl/shanti/METADATA.pb                        |  11 +-
 ofl/shanti/upstream.yaml                      |   5 -
 ofl/shipporiantique/METADATA.pb               |  16 ++
 ofl/shipporiantique/upstream.yaml             |   6 -
 ofl/shipporiantiqueb1/METADATA.pb             |  16 ++
 ofl/shipporiantiqueb1/upstream.yaml           |   6 -
 ofl/shipporimincho/METADATA.pb                |  32 +++
 ofl/shipporimincho/upstream.yaml              |  10 -
 ofl/shipporiminchob1/METADATA.pb              |  32 +++
 ofl/shipporiminchob1/upstream.yaml            |  10 -
 ofl/shizuru/METADATA.pb                       |  20 +-
 ofl/shizuru/upstream.yaml                     |   6 -
 ofl/sigmar/METADATA.pb                        |   9 +
 ofl/sigmar/upstream.yaml                      |   5 -
 ofl/signika/METADATA.pb                       |   9 +
 ofl/signika/upstream.yaml                     |   5 -
 ofl/signikanegative/METADATA.pb               |  12 ++
 ofl/signikanegative/upstream.yaml             |   5 -
 ofl/silkscreen/METADATA.pb                    |  13 ++
 ofl/silkscreen/upstream.yaml                  |   6 -
 ofl/sixtyfour/METADATA.pb                     |  15 +-
 ofl/sixtyfour/upstream.yaml                   |   6 -
 ofl/slacksideone/METADATA.pb                  |  20 +-
 ofl/slacksideone/upstream.yaml                |   6 -
 ofl/smooch/METADATA.pb                        |  16 ++
 ofl/smooch/upstream.yaml                      |   6 -
 ofl/smoochsans/METADATA.pb                    |  16 ++
 ofl/smoochsans/upstream.yaml                  |   6 -
 ofl/sofiasans/METADATA.pb                     |  17 ++
 ofl/sofiasans/upstream.yaml                   |   7 -
 ofl/sofiasanscondensed/METADATA.pb            |  17 ++
 ofl/sofiasanscondensed/upstream.yaml          |   7 -
 ofl/sofiasansextracondensed/METADATA.pb       |  17 ++
 ofl/sofiasansextracondensed/upstream.yaml     |   7 -
 ofl/sofiasanssemicondensed/METADATA.pb        |  17 ++
 ofl/sofiasanssemicondensed/upstream.yaml      |   7 -
 ofl/solitreo/METADATA.pb                      |  15 +-
 ofl/solitreo/upstream.yaml                    |   6 -
 ofl/sometypemono/METADATA.pb                  |  13 ++
 ofl/sometypemono/upstream.yaml                |   6 -
 ofl/sono/METADATA.pb                          |   9 +
 ofl/sono/upstream.yaml                        |   5 -
 ofl/spacegrotesk/METADATA.pb                  |  32 +++
 ofl/spacegrotesk/upstream.yaml                |  10 -
 ofl/splash/METADATA.pb                        |  13 ++
 ofl/splash/upstream.yaml                      |   5 -
 ofl/splinesans/METADATA.pb                    |   9 +
 ofl/splinesans/upstream.yaml                  |   5 -
 ofl/splinesansmono/METADATA.pb                |  13 ++
 ofl/splinesansmono/upstream.yaml              |   6 -
 ofl/squarepeg/METADATA.pb                     |  13 ++
 ofl/squarepeg/upstream.yaml                   |   5 -
 ofl/stick/METADATA.pb                         |  16 ++
 ofl/stick/upstream.yaml                       |   6 -
 ofl/sticknobills/METADATA.pb                  |  16 ++
 ofl/sticknobills/upstream.yaml                |   6 -
 ofl/stixtwomath/METADATA.pb                   |  16 ++
 ofl/stixtwomath/upstream.yaml                 |   6 -
 ofl/stixtwotext/METADATA.pb                   |  20 ++
 ofl/stixtwotext/upstream.yaml                 |   7 -
 ofl/strait/METADATA.pb                        |   9 +
 ofl/strait/upstream.yaml                      |   5 -
 ofl/stylescript/METADATA.pb                   |  16 ++
 ofl/stylescript/upstream.yaml                 |   6 -
 ofl/suwannaphum/METADATA.pb                   |  28 +++
 ofl/suwannaphum/upstream.yaml                 |   9 -
 ofl/syne/METADATA.pb                          |   9 +
 ofl/syne/upstream.yaml                        |   4 -
 ofl/tacone/METADATA.pb                        |  13 ++
 ofl/tacone/upstream.yaml                      |   6 -
 ofl/taiheritagepro/METADATA.pb                |  15 +-
 ofl/taiheritagepro/upstream.yaml              |   6 -
 ofl/tapestry/METADATA.pb                      |  13 ++
 ofl/tapestry/upstream.yaml                    |   5 -
 ofl/taprom/METADATA.pb                        |  12 ++
 ofl/taprom/upstream.yaml                      |   5 -
 ofl/teachers/METADATA.pb                      |  13 ++
 ofl/teachers/upstream.yaml                    |   6 -
 ofl/teko/METADATA.pb                          |   9 +
 ofl/teko/upstream.yaml                        |   5 -
 ofl/tektur/METADATA.pb                        |   9 +
 ofl/tektur/upstream.yaml                      |   5 -
 ofl/texturina/METADATA.pb                     | 160 +++++++++++++++
 ofl/texturina/upstream.yaml                   |  42 ----
 ofl/thenautigal/METADATA.pb                   |  20 ++
 ofl/thenautigal/upstream.yaml                 |   7 -
 ofl/tiltneon/METADATA.pb                      |  13 ++
 ofl/tiltneon/upstream.yaml                    |   6 -
 ofl/tiltprism/METADATA.pb                     |  13 ++
 ofl/tiltprism/upstream.yaml                   |   6 -
 ofl/tiltwarp/METADATA.pb                      |  13 ++
 ofl/tiltwarp/upstream.yaml                    |   6 -
 ofl/tirobangla/METADATA.pb                    |  17 ++
 ofl/tirobangla/upstream.yaml                  |   6 -
 ofl/tirodevanagarihindi/METADATA.pb           |  17 ++
 ofl/tirodevanagarihindi/upstream.yaml         |   6 -
 ofl/tirodevanagarimarathi/METADATA.pb         |  17 ++
 ofl/tirodevanagarimarathi/upstream.yaml       |   6 -
 ofl/tirodevanagarisanskrit/METADATA.pb        |  17 ++
 ofl/tirodevanagarisanskrit/upstream.yaml      |   6 -
 ofl/tirogurmukhi/METADATA.pb                  |  17 ++
 ofl/tirogurmukhi/upstream.yaml                |   6 -
 ofl/tirokannada/METADATA.pb                   |  17 ++
 ofl/tirokannada/upstream.yaml                 |   6 -
 ofl/tirotamil/METADATA.pb                     |  17 ++
 ofl/tirotamil/upstream.yaml                   |   6 -
 ofl/tirotelugu/METADATA.pb                    |  17 ++
 ofl/tirotelugu/upstream.yaml                  |   7 -
 ofl/tourney/METADATA.pb                       |  16 ++
 ofl/tourney/upstream.yaml                     |   6 -
 ofl/trainone/METADATA.pb                      |  16 ++
 ofl/trainone/upstream.yaml                    |   6 -
 ofl/trocchi/METADATA.pb                       |   9 +
 ofl/trocchi/upstream.yaml                     |   5 -
 ofl/truculenta/METADATA.pb                    |  12 ++
 ofl/truculenta/upstream.yaml                  |   5 -
 ofl/tsukimirounded/METADATA.pb                |  36 +++-
 ofl/tsukimirounded/upstream.yaml              |  10 -
 ofl/twinklestar/METADATA.pb                   |  16 ++
 ofl/twinklestar/upstream.yaml                 |   6 -
 ofl/unbounded/METADATA.pb                     |  13 ++
 ofl/unbounded/upstream.yaml                   |   6 -
 ofl/unicaone/METADATA.pb                      |   9 +
 ofl/unicaone/upstream.yaml                    |   5 -
 ofl/unlock/METADATA.pb                        |   9 +
 ofl/unlock/upstream.yaml                      |   5 -
 ofl/updock/METADATA.pb                        |  13 ++
 ofl/updock/upstream.yaml                      |   5 -
 ofl/urbanist/METADATA.pb                      |  16 ++
 ofl/urbanist/upstream.yaml                    |   6 -
 ofl/varelaround/METADATA.pb                   |   9 +
 ofl/varelaround/upstream.yaml                 |   5 -
 ofl/vazirmatn/METADATA.pb                     |   9 +
 ofl/vazirmatn/upstream.yaml                   |   5 -
 ofl/victormono/METADATA.pb                    |  17 ++
 ofl/victormono/upstream.yaml                  |   7 -
 ofl/vinasans/METADATA.pb                      |   9 +
 ofl/vinasans/upstream.yaml                    |   5 -
 ofl/vollkorn/METADATA.pb                      |  16 ++
 ofl/vollkorn/upstream.yaml                    |   6 -
 ofl/voltaire/METADATA.pb                      |   9 +
 ofl/voltaire/upstream.yaml                    |   5 -
 ofl/vujahdayscript/METADATA.pb                |  16 ++
 ofl/vujahdayscript/upstream.yaml              |   6 -
 ofl/warnes/METADATA.pb                        |   9 +
 ofl/warnes/upstream.yaml                      |   5 -
 ofl/waterbrush/METADATA.pb                    |  13 ++
 ofl/waterbrush/upstream.yaml                  |   5 -
 ofl/waterfall/METADATA.pb                     |  16 ++
 ofl/waterfall/upstream.yaml                   |   6 -
 ofl/wavefont/METADATA.pb                      |   9 +
 ofl/wavefont/upstream.yaml                    |   5 -
 ofl/whisper/METADATA.pb                       |  13 ++
 ofl/whisper/upstream.yaml                     |   5 -
 ofl/windsong/METADATA.pb                      |  20 ++
 ofl/windsong/upstream.yaml                    |   7 -
 ofl/wireone/METADATA.pb                       |  16 ++
 ofl/wireone/upstream.yaml                     |   6 -
 ofl/wixmadefordisplay/METADATA.pb             |   5 +
 ofl/wixmadefordisplay/upstream.yaml           |   4 -
 ofl/workbench/METADATA.pb                     |  15 +-
 ofl/workbench/upstream.yaml                   |   6 -
 ofl/worksans/METADATA.pb                      |  16 ++
 ofl/worksans/upstream.yaml                    |   6 -
 ofl/yaldevi/METADATA.pb                       |  16 ++
 ofl/yaldevi/upstream.yaml                     |   6 -
 ofl/yanonekaffeesatz/METADATA.pb              |  13 ++
 ofl/yanonekaffeesatz/upstream.yaml            |   6 -
 ofl/yarndings12/METADATA.pb                   |   9 +
 ofl/yarndings12/upstream.yaml                 |   5 -
 ofl/yarndings12charted/METADATA.pb            |   9 +
 ofl/yarndings12charted/upstream.yaml          |   5 -
 ofl/yarndings20/METADATA.pb                   |   9 +
 ofl/yarndings20/upstream.yaml                 |   5 -
 ofl/yarndings20charted/METADATA.pb            |   9 +
 ofl/yarndings20charted/upstream.yaml          |   5 -
 ofl/yomogi/METADATA.pb                        |  13 ++
 ofl/yomogi/upstream.yaml                      |   5 -
 ofl/youngserif/METADATA.pb                    |   9 +
 ofl/youngserif/upstream.yaml                  |   5 -
 ofl/yrsa/METADATA.pb                          |  20 ++
 ofl/yrsa/upstream.yaml                        |   7 -
 ofl/ysabeau/METADATA.pb                       |  17 ++
 ofl/ysabeau/upstream.yaml                     |   7 -
 ofl/ysabeauinfant/METADATA.pb                 |  17 ++
 ofl/ysabeauinfant/upstream.yaml               |   7 -
 ofl/ysabeauoffice/METADATA.pb                 |  17 ++
 ofl/ysabeauoffice/upstream.yaml               |   7 -
 ofl/ysabeausc/METADATA.pb                     |  13 ++
 ofl/ysabeausc/upstream.yaml                   |   6 -
 ofl/yujiboku/METADATA.pb                      |  16 ++
 ofl/yujiboku/upstream.yaml                    |   6 -
 ofl/yujihentaiganaakari/METADATA.pb           |  20 +-
 ofl/yujihentaiganaakari/upstream.yaml         |   6 -
 ofl/yujihentaiganaakebono/METADATA.pb         |  20 +-
 ofl/yujihentaiganaakebono/upstream.yaml       |   6 -
 ofl/yujimai/METADATA.pb                       |  16 ++
 ofl/yujimai/upstream.yaml                     |   6 -
 ofl/yujisyuku/METADATA.pb                     |  16 ++
 ofl/yujisyuku/upstream.yaml                   |   6 -
 ofl/yuseimagic/METADATA.pb                    |  16 ++
 ofl/yuseimagic/upstream.yaml                  |   6 -
 ofl/zenantique/METADATA.pb                    |  16 ++
 ofl/zenantique/upstream.yaml                  |   6 -
 ofl/zenantiquesoft/METADATA.pb                |  16 ++
 ofl/zenantiquesoft/upstream.yaml              |   6 -
 ofl/zendots/METADATA.pb                       |  16 ++
 ofl/zendots/upstream.yaml                     |   6 -
 ofl/zenkakugothicantique/METADATA.pb          |  32 +++
 ofl/zenkakugothicantique/upstream.yaml        |  10 -
 ofl/zenkakugothicnew/METADATA.pb              |  32 +++
 ofl/zenkakugothicnew/upstream.yaml            |  10 -
 ofl/zenkurenaido/METADATA.pb                  |  16 ++
 ofl/zenkurenaido/upstream.yaml                |   6 -
 ofl/zenloop/METADATA.pb                       |  20 ++
 ofl/zenloop/upstream.yaml                     |   7 -
 ofl/zenmarugothic/METADATA.pb                 |  32 +++
 ofl/zenmarugothic/upstream.yaml               |  11 -
 ofl/zenoldmincho/METADATA.pb                  |  32 +++
 ofl/zenoldmincho/upstream.yaml                |  10 -
 ofl/zentokyozoo/METADATA.pb                   |  16 ++
 ofl/zentokyozoo/upstream.yaml                 |   6 -
 1668 files changed, 13723 insertions(+), 5729 deletions(-)
 delete mode 100644 ofl/abeezee/upstream.yaml
 delete mode 100644 ofl/aboreto/upstream.yaml
 delete mode 100644 ofl/abyssinicasil/upstream.yaml
 delete mode 100644 ofl/adlamdisplay/upstream.yaml
 delete mode 100644 ofl/adventpro/upstream.yaml
 delete mode 100644 ofl/afacad/upstream.yaml
 delete mode 100644 ofl/agbalumo/upstream.yaml
 delete mode 100644 ofl/agdasima/upstream.yaml
 delete mode 100644 ofl/akatab/upstream.yaml
 delete mode 100644 ofl/akayakanadaka/upstream.yaml
 delete mode 100644 ofl/akayatelivigala/upstream.yaml
 delete mode 100644 ofl/akshar/upstream.yaml
 delete mode 100644 ofl/alatsi/upstream.yaml
 delete mode 100644 ofl/albertsans/upstream.yaml
 delete mode 100644 ofl/alegreya/upstream.yaml
 delete mode 100644 ofl/aleo/upstream.yaml
 delete mode 100644 ofl/alexandria/upstream.yaml
 delete mode 100644 ofl/alexbrush/upstream.yaml
 delete mode 100644 ofl/alice/upstream.yaml
 delete mode 100644 ofl/alike/upstream.yaml
 delete mode 100644 ofl/alikeangular/upstream.yaml
 delete mode 100644 ofl/alkalami/upstream.yaml
 delete mode 100644 ofl/alkatra/upstream.yaml
 delete mode 100644 ofl/allison/upstream.yaml
 delete mode 100644 ofl/allura/upstream.yaml
 delete mode 100644 ofl/alumnisans/upstream.yaml
 delete mode 100644 ofl/alumnisanscollegiateone/upstream.yaml
 delete mode 100644 ofl/alumnisansinlineone/upstream.yaml
 delete mode 100644 ofl/alumnisanspinstripe/upstream.yaml
 delete mode 100644 ofl/amiriquran/upstream.yaml
 delete mode 100644 ofl/andadapro/upstream.yaml
 delete mode 100644 ofl/andika/upstream.yaml
 delete mode 100644 ofl/anekbangla/upstream.yaml
 delete mode 100644 ofl/anekdevanagari/upstream.yaml
 delete mode 100644 ofl/anekgujarati/upstream.yaml
 delete mode 100644 ofl/anekgurmukhi/upstream.yaml
 delete mode 100644 ofl/anekkannada/upstream.yaml
 delete mode 100644 ofl/aneklatin/upstream.yaml
 delete mode 100644 ofl/anekmalayalam/upstream.yaml
 delete mode 100644 ofl/anekodia/upstream.yaml
 delete mode 100644 ofl/anektamil/upstream.yaml
 delete mode 100644 ofl/anektelugu/upstream.yaml
 delete mode 100644 ofl/angkor/upstream.yaml
 delete mode 100644 ofl/annapurnasil/upstream.yaml
 delete mode 100644 ofl/anta/upstream.yaml
 delete mode 100644 ofl/anton/upstream.yaml
 delete mode 100644 ofl/antonio/upstream.yaml
 delete mode 100644 ofl/anuphan/upstream.yaml
 delete mode 100644 ofl/anybody/upstream.yaml
 delete mode 100644 ofl/aoboshione/upstream.yaml
 delete mode 100644 ofl/archivo/upstream.yaml
 delete mode 100644 ofl/archivonarrow/upstream.yaml
 delete mode 100644 ofl/arefruqaaink/upstream.yaml
 delete mode 100644 ofl/areyouserious/upstream.yaml
 delete mode 100644 ofl/arima/upstream.yaml
 delete mode 100644 ofl/arizonia/upstream.yaml
 delete mode 100644 ofl/aronesans/upstream.yaml
 delete mode 100644 ofl/artifika/upstream.yaml
 delete mode 100644 ofl/asap/upstream.yaml
 delete mode 100644 ofl/asapcondensed/upstream.yaml
 delete mode 100644 ofl/asset/upstream.yaml
 delete mode 100644 ofl/assistant/upstream.yaml
 delete mode 100644 ofl/atkinsonhyperlegible/upstream.yaml
 delete mode 100644 ofl/aubrey/upstream.yaml
 delete mode 100644 ofl/average/upstream.yaml
 delete mode 100644 ofl/azeretmono/upstream.yaml
 delete mode 100644 ofl/babylonica/upstream.yaml
 delete mode 100644 ofl/bacasimeantique/upstream.yaml
 delete mode 100644 ofl/bagelfatone/upstream.yaml
 delete mode 100644 ofl/bakbakone/upstream.yaml
 delete mode 100644 ofl/baloo2/upstream.yaml
 delete mode 100644 ofl/baloobhai2/upstream.yaml
 delete mode 100644 ofl/baloobhaijaan2/upstream.yaml
 delete mode 100644 ofl/baloobhaina2/upstream.yaml
 delete mode 100644 ofl/baloochettan2/upstream.yaml
 delete mode 100644 ofl/balooda2/upstream.yaml
 delete mode 100644 ofl/baloopaaji2/upstream.yaml
 delete mode 100644 ofl/balootamma2/upstream.yaml
 delete mode 100644 ofl/balootammudu2/upstream.yaml
 delete mode 100644 ofl/baloothambi2/upstream.yaml
 delete mode 100644 ofl/balsamiqsans/upstream.yaml
 delete mode 100644 ofl/bangers/upstream.yaml
 delete mode 100644 ofl/baskervville/upstream.yaml
 delete mode 100644 ofl/battambang/upstream.yaml
 delete mode 100644 ofl/bayon/upstream.yaml
 delete mode 100644 ofl/beaurivage/upstream.yaml
 delete mode 100644 ofl/belanosima/upstream.yaml
 delete mode 100644 ofl/belleza/upstream.yaml
 delete mode 100644 ofl/benne/upstream.yaml
 delete mode 100644 ofl/besley/upstream.yaml
 delete mode 100644 ofl/bevan/upstream.yaml
 delete mode 100644 ofl/bevietnampro/upstream.yaml
 delete mode 100644 ofl/bhutukaexpandedone/upstream.yaml
 delete mode 100644 ofl/bigshouldersdisplay/upstream.yaml
 delete mode 100644 ofl/bigshouldersinlinedisplay/upstream.yaml
 delete mode 100644 ofl/bigshouldersinlinetext/upstream.yaml
 delete mode 100644 ofl/bigshouldersstencildisplay/upstream.yaml
 delete mode 100644 ofl/bigshouldersstenciltext/upstream.yaml
 delete mode 100644 ofl/bigshoulderstext/upstream.yaml
 delete mode 100644 ofl/bilbo/upstream.yaml
 delete mode 100644 ofl/biorhyme/upstream.yaml
 delete mode 100644 ofl/birthstone/upstream.yaml
 delete mode 100644 ofl/birthstonebounce/upstream.yaml
 delete mode 100644 ofl/bitter/upstream.yaml
 delete mode 100644 ofl/bizudgothic/upstream.yaml
 delete mode 100644 ofl/bizudmincho/upstream.yaml
 delete mode 100644 ofl/bizudpgothic/upstream.yaml
 delete mode 100644 ofl/bizudpmincho/upstream.yaml
 delete mode 100644 ofl/blackopsone/upstream.yaml
 delete mode 100644 ofl/blaka/upstream.yaml
 delete mode 100644 ofl/blakahollow/upstream.yaml
 delete mode 100644 ofl/blakaink/upstream.yaml
 delete mode 100644 ofl/bodonimoda/upstream.yaml
 delete mode 100644 ofl/bokor/upstream.yaml
 delete mode 100644 ofl/bonanova/upstream.yaml
 delete mode 100644 ofl/bonheurroyale/upstream.yaml
 delete mode 100644 ofl/borel/upstream.yaml
 delete mode 100644 ofl/braahone/upstream.yaml
 delete mode 100644 ofl/brawler/upstream.yaml
 delete mode 100644 ofl/bricolagegrotesque/upstream.yaml
 delete mode 100644 ofl/brunoace/upstream.yaml
 delete mode 100644 ofl/brunoacesc/upstream.yaml
 delete mode 100644 ofl/brygada1918/upstream.yaml
 delete mode 100644 ofl/cairo/upstream.yaml
 delete mode 100644 ofl/cairoplay/upstream.yaml
 delete mode 100644 ofl/calistoga/upstream.yaml
 delete mode 100644 ofl/caprasimo/upstream.yaml
 delete mode 100644 ofl/caramel/upstream.yaml
 delete mode 100644 ofl/carattere/upstream.yaml
 delete mode 100644 ofl/carlito/upstream.yaml
 delete mode 100644 ofl/castoro/upstream.yaml
 delete mode 100644 ofl/castorotitling/upstream.yaml
 delete mode 100644 ofl/caveat/upstream.yaml
 delete mode 100644 ofl/changa/upstream.yaml
 delete mode 100644 ofl/charissil/upstream.yaml
 delete mode 100644 ofl/cherish/upstream.yaml
 delete mode 100644 ofl/cherrybombone/upstream.yaml
 delete mode 100644 ofl/chilanka/upstream.yaml
 delete mode 100644 ofl/chivo/upstream.yaml
 delete mode 100644 ofl/chivomono/upstream.yaml
 delete mode 100644 ofl/chokokutai/upstream.yaml
 delete mode 100644 ofl/climatecrisis/upstream.yaml
 delete mode 100644 ofl/comforter/upstream.yaml
 delete mode 100644 ofl/comforterbrush/upstream.yaml
 delete mode 100644 ofl/comme/upstream.yaml
 delete mode 100644 ofl/commissioner/upstream.yaml
 delete mode 100644 ofl/corinthia/upstream.yaml
 delete mode 100644 ofl/cormorant/upstream.yaml
 delete mode 100644 ofl/cormorantgaramond/upstream.yaml
 delete mode 100644 ofl/cormorantinfant/upstream.yaml
 delete mode 100644 ofl/cormorantsc/upstream.yaml
 delete mode 100644 ofl/cormorantunicase/upstream.yaml
 delete mode 100644 ofl/crimsontext/upstream.yaml
 delete mode 100644 ofl/cuprum/upstream.yaml
 delete mode 100644 ofl/daibannasil/upstream.yaml
 delete mode 100644 ofl/dancingscript/upstream.yaml
 delete mode 100644 ofl/danfo/upstream.yaml
 delete mode 100644 ofl/dangrek/upstream.yaml
 delete mode 100644 ofl/darkergrotesque/upstream.yaml
 delete mode 100644 ofl/darumadropone/upstream.yaml
 delete mode 100644 ofl/davidlibre/upstream.yaml
 delete mode 100644 ofl/delagothicone/upstream.yaml
 delete mode 100644 ofl/delicioushandrawn/upstream.yaml
 delete mode 100644 ofl/denkone/upstream.yaml
 delete mode 100644 ofl/diphylleia/upstream.yaml
 delete mode 100644 ofl/diplomata/upstream.yaml
 delete mode 100644 ofl/diplomatasc/upstream.yaml
 delete mode 100644 ofl/dmsans/upstream.yaml
 delete mode 100644 ofl/dongle/upstream.yaml
 delete mode 100644 ofl/dosis/upstream.yaml
 delete mode 100644 ofl/dotgothic16/upstream.yaml
 delete mode 100644 ofl/dynapuff/upstream.yaml
 delete mode 100644 ofl/eczar/upstream.yaml
 delete mode 100644 ofl/edunswactfoundation/upstream.yaml
 delete mode 100644 ofl/eduqldbeginner/upstream.yaml
 delete mode 100644 ofl/edusabeginner/upstream.yaml
 delete mode 100644 ofl/edutasbeginner/upstream.yaml
 delete mode 100644 ofl/eduvicwantbeginner/upstream.yaml
 delete mode 100644 ofl/elmessiri/upstream.yaml
 delete mode 100644 ofl/ephesis/upstream.yaml
 delete mode 100644 ofl/estonia/upstream.yaml
 delete mode 100644 ofl/exo2/upstream.yaml
 delete mode 100644 ofl/expletussans/upstream.yaml
 delete mode 100644 ofl/explora/upstream.yaml
 delete mode 100644 ofl/familjengrotesk/upstream.yaml
 delete mode 100644 ofl/fasterone/upstream.yaml
 delete mode 100644 ofl/fasthand/upstream.yaml
 delete mode 100644 ofl/faunaone/upstream.yaml
 delete mode 100644 ofl/faustina/upstream.yaml
 delete mode 100644 ofl/festive/upstream.yaml
 delete mode 100644 ofl/figtree/upstream.yaml
 delete mode 100644 ofl/finlandica/upstream.yaml
 delete mode 100644 ofl/fjallaone/upstream.yaml
 delete mode 100644 ofl/fleurdeleah/upstream.yaml
 delete mode 100644 ofl/flowblock/upstream.yaml
 delete mode 100644 ofl/flowcircular/upstream.yaml
 delete mode 100644 ofl/flowrounded/upstream.yaml
 delete mode 100644 ofl/foldit/upstream.yaml
 delete mode 100644 ofl/frankruhllibre/upstream.yaml
 delete mode 100644 ofl/fredoka/upstream.yaml
 delete mode 100644 ofl/freehand/upstream.yaml
 delete mode 100644 ofl/fruktur/upstream.yaml
 delete mode 100644 ofl/fuggles/upstream.yaml
 delete mode 100644 ofl/fuzzybubbles/upstream.yaml
 delete mode 100644 ofl/gabarito/upstream.yaml
 delete mode 100644 ofl/gabriela/upstream.yaml
 delete mode 100644 ofl/gajrajone/upstream.yaml
 delete mode 100644 ofl/gantari/upstream.yaml
 delete mode 100644 ofl/gasoekone/upstream.yaml
 delete mode 100644 ofl/gelasio/upstream.yaml
 delete mode 100644 ofl/gemunulibre/upstream.yaml
 delete mode 100644 ofl/genos/upstream.yaml
 delete mode 100644 ofl/gentiumbookplus/upstream.yaml
 delete mode 100644 ofl/gentiumplus/upstream.yaml
 delete mode 100644 ofl/geologica/upstream.yaml
 delete mode 100644 ofl/georama/upstream.yaml
 delete mode 100644 ofl/gideonroman/upstream.yaml
 delete mode 100644 ofl/gildadisplay/upstream.yaml
 delete mode 100644 ofl/gloock/upstream.yaml
 delete mode 100644 ofl/glory/upstream.yaml
 delete mode 100644 ofl/gluten/upstream.yaml
 delete mode 100644 ofl/golostext/upstream.yaml
 delete mode 100644 ofl/gowunbatang/upstream.yaml
 delete mode 100644 ofl/gowundodum/upstream.yaml
 delete mode 100644 ofl/grandifloraone/upstream.yaml
 delete mode 100644 ofl/grapenuts/upstream.yaml
 delete mode 100644 ofl/greatvibes/upstream.yaml
 delete mode 100644 ofl/grechenfuemen/upstream.yaml
 delete mode 100644 ofl/greyqo/upstream.yaml
 delete mode 100644 ofl/gruppo/upstream.yaml
 delete mode 100644 ofl/gulzar/upstream.yaml
 delete mode 100644 ofl/gwendolyn/upstream.yaml
 delete mode 100644 ofl/hachimarupop/upstream.yaml
 delete mode 100644 ofl/hahmlet/upstream.yaml
 delete mode 100644 ofl/handjet/upstream.yaml
 delete mode 100644 ofl/hankengrotesk/upstream.yaml
 delete mode 100644 ofl/hanuman/upstream.yaml
 delete mode 100644 ofl/harmattan/upstream.yaml
 delete mode 100644 ofl/hedvigletterssans/upstream.yaml
 delete mode 100644 ofl/hedviglettersserif/upstream.yaml
 delete mode 100644 ofl/heebo/upstream.yaml
 delete mode 100644 ofl/heptaslab/upstream.yaml
 delete mode 100644 ofl/hinamincho/upstream.yaml
 delete mode 100644 ofl/honk/upstream.yaml
 delete mode 100644 ofl/hubballi/upstream.yaml
 delete mode 100644 ofl/hurricane/upstream.yaml
 delete mode 100644 ofl/ibarrarealnova/upstream.yaml
 delete mode 100644 ofl/ibmplexmono/upstream.yaml
 delete mode 100644 ofl/ibmplexsans/upstream.yaml
 delete mode 100644 ofl/ibmplexsansarabic/upstream.yaml
 delete mode 100644 ofl/ibmplexsanscondensed/upstream.yaml
 delete mode 100644 ofl/ibmplexsansdevanagari/upstream.yaml
 delete mode 100644 ofl/ibmplexsanshebrew/upstream.yaml
 delete mode 100644 ofl/ibmplexsansjp/upstream.yaml
 delete mode 100644 ofl/ibmplexsanskr/upstream.yaml
 delete mode 100644 ofl/ibmplexsansthai/upstream.yaml
 delete mode 100644 ofl/ibmplexsansthailooped/upstream.yaml
 delete mode 100644 ofl/ibmplexserif/upstream.yaml
 delete mode 100644 ofl/imbue/upstream.yaml
 delete mode 100644 ofl/imperialscript/upstream.yaml
 delete mode 100644 ofl/imprima/upstream.yaml
 delete mode 100644 ofl/inclusivesans/upstream.yaml
 delete mode 100644 ofl/ingriddarling/upstream.yaml
 delete mode 100644 ofl/inspiration/upstream.yaml
 delete mode 100644 ofl/instrumentsans/upstream.yaml
 delete mode 100644 ofl/instrumentserif/upstream.yaml
 delete mode 100644 ofl/intertight/upstream.yaml
 delete mode 100644 ofl/islandmoments/upstream.yaml
 delete mode 100644 ofl/italianno/upstream.yaml
 delete mode 100644 ofl/jacquard12/upstream.yaml
 delete mode 100644 ofl/jacquard12charted/upstream.yaml
 delete mode 100644 ofl/jacquard24/upstream.yaml
 delete mode 100644 ofl/jacquard24charted/upstream.yaml
 delete mode 100644 ofl/jacquardabastarda9/upstream.yaml
 delete mode 100644 ofl/jacquardabastarda9charted/upstream.yaml
 delete mode 100644 ofl/jaro/upstream.yaml
 delete mode 100644 ofl/jersey10/upstream.yaml
 delete mode 100644 ofl/jersey10charted/upstream.yaml
 delete mode 100644 ofl/jersey15/upstream.yaml
 delete mode 100644 ofl/jersey15charted/upstream.yaml
 delete mode 100644 ofl/jersey20/upstream.yaml
 delete mode 100644 ofl/jersey20charted/upstream.yaml
 delete mode 100644 ofl/jersey25/upstream.yaml
 delete mode 100644 ofl/jetbrainsmono/upstream.yaml
 delete mode 100644 ofl/joan/upstream.yaml
 delete mode 100644 ofl/josefinslab/upstream.yaml
 delete mode 100644 ofl/jost/upstream.yaml
 delete mode 100644 ofl/jotione/upstream.yaml
 delete mode 100644 ofl/julee/upstream.yaml
 delete mode 100644 ofl/kablammo/upstream.yaml
 delete mode 100644 ofl/kaiseidecol/upstream.yaml
 delete mode 100644 ofl/kaiseiharunoumi/upstream.yaml
 delete mode 100644 ofl/kaiseiopti/upstream.yaml
 delete mode 100644 ofl/kaiseitokumin/upstream.yaml
 delete mode 100644 ofl/kalnia/upstream.yaml
 delete mode 100644 ofl/kameron/upstream.yaml
 delete mode 100644 ofl/kantumruypro/upstream.yaml
 delete mode 100644 ofl/kapakana/upstream.yaml
 delete mode 100644 ofl/karantina/upstream.yaml
 delete mode 100644 ofl/karla/upstream.yaml
 delete mode 100644 ofl/kayphodu/upstream.yaml
 delete mode 100644 ofl/kdamthmorpro/upstream.yaml
 delete mode 100644 ofl/kings/upstream.yaml
 delete mode 100644 ofl/kiteone/upstream.yaml
 delete mode 100644 ofl/kiwimaru/upstream.yaml
 delete mode 100644 ofl/kleeone/upstream.yaml
 delete mode 100644 ofl/kodemono/upstream.yaml
 delete mode 100644 ofl/kohsantepheap/upstream.yaml
 delete mode 100644 ofl/kolkerbrush/upstream.yaml
 delete mode 100644 ofl/konkhmersleokchher/upstream.yaml
 delete mode 100644 ofl/koulen/upstream.yaml
 delete mode 100644 ofl/kufam/upstream.yaml
 delete mode 100644 ofl/kumbhsans/upstream.yaml
 delete mode 100644 ofl/labrada/upstream.yaml
 delete mode 100644 ofl/langar/upstream.yaml
 delete mode 100644 ofl/lateef/upstream.yaml
 delete mode 100644 ofl/lavishlyyours/upstream.yaml
 delete mode 100644 ofl/leaguegothic/upstream.yaml
 delete mode 100644 ofl/leaguespartan/upstream.yaml
 delete mode 100644 ofl/lemon/upstream.yaml
 delete mode 100644 ofl/lexend/upstream.yaml
 delete mode 100644 ofl/lexenddeca/upstream.yaml
 delete mode 100644 ofl/lexendexa/upstream.yaml
 delete mode 100644 ofl/lexendgiga/upstream.yaml
 delete mode 100644 ofl/lexendmega/upstream.yaml
 delete mode 100644 ofl/lexendpeta/upstream.yaml
 delete mode 100644 ofl/lexendtera/upstream.yaml
 delete mode 100644 ofl/lexendzetta/upstream.yaml
 delete mode 100644 ofl/librebarcode128/upstream.yaml
 delete mode 100644 ofl/librebarcode128text/upstream.yaml
 delete mode 100644 ofl/librebarcode39/upstream.yaml
 delete mode 100644 ofl/librebarcode39extended/upstream.yaml
 delete mode 100644 ofl/librebarcode39extendedtext/upstream.yaml
 delete mode 100644 ofl/librebarcode39text/upstream.yaml
 delete mode 100644 ofl/librebarcodeean13text/upstream.yaml
 delete mode 100644 ofl/librebodoni/upstream.yaml
 delete mode 100644 ofl/librefranklin/upstream.yaml
 delete mode 100644 ofl/licorice/upstream.yaml
 delete mode 100644 ofl/linefont/upstream.yaml
 delete mode 100644 ofl/lisubosa/upstream.yaml
 delete mode 100644 ofl/literata/upstream.yaml
 delete mode 100644 ofl/liujianmaocao/upstream.yaml
 delete mode 100644 ofl/lora/upstream.yaml
 delete mode 100644 ofl/lovelight/upstream.yaml
 delete mode 100644 ofl/loversquarrel/upstream.yaml
 delete mode 100644 ofl/lugrasimo/upstream.yaml
 delete mode 100644 ofl/lumanosimo/upstream.yaml
 delete mode 100644 ofl/lunasima/upstream.yaml
 delete mode 100644 ofl/luxuriousroman/upstream.yaml
 delete mode 100644 ofl/luxuriousscript/upstream.yaml
 delete mode 100644 ofl/mada/upstream.yaml
 delete mode 100644 ofl/madimione/upstream.yaml
 delete mode 100644 ofl/mako/upstream.yaml
 delete mode 100644 ofl/manjari/upstream.yaml
 delete mode 100644 ofl/mansalva/upstream.yaml
 delete mode 100644 ofl/marhey/upstream.yaml
 delete mode 100644 ofl/marmelad/upstream.yaml
 delete mode 100644 ofl/martianmono/upstream.yaml
 delete mode 100644 ofl/mate/upstream.yaml
 delete mode 100644 ofl/matesc/upstream.yaml
 delete mode 100644 ofl/meaculpa/upstream.yaml
 delete mode 100644 ofl/meowscript/upstream.yaml
 delete mode 100644 ofl/merienda/upstream.yaml
 delete mode 100644 ofl/metal/upstream.yaml
 delete mode 100644 ofl/metrophobic/upstream.yaml
 delete mode 100644 ofl/michroma/upstream.yaml
 delete mode 100644 ofl/micro5/upstream.yaml
 delete mode 100644 ofl/micro5charted/upstream.yaml
 delete mode 100644 ofl/mingzat/upstream.yaml
 delete mode 100644 ofl/mochiypopone/upstream.yaml
 delete mode 100644 ofl/mochiypoppone/upstream.yaml
 delete mode 100644 ofl/moiraione/upstream.yaml
 delete mode 100644 ofl/monda/upstream.yaml
 delete mode 100644 ofl/monofett/upstream.yaml
 delete mode 100644 ofl/monomaniacone/upstream.yaml
 delete mode 100644 ofl/montaguslab/upstream.yaml
 delete mode 100644 ofl/montecarlo/upstream.yaml
 delete mode 100644 ofl/moolahlah/upstream.yaml
 delete mode 100644 ofl/mooli/upstream.yaml
 delete mode 100644 ofl/moondance/upstream.yaml
 delete mode 100644 ofl/moul/upstream.yaml
 delete mode 100644 ofl/moulpali/upstream.yaml
 delete mode 100644 ofl/mplus1/upstream.yaml
 delete mode 100644 ofl/mplus1code/upstream.yaml
 delete mode 100644 ofl/mplus2/upstream.yaml
 delete mode 100644 ofl/mpluscodelatin/upstream.yaml
 delete mode 100644 ofl/msmadi/upstream.yaml
 delete mode 100644 ofl/mulish/upstream.yaml
 delete mode 100644 ofl/murecho/upstream.yaml
 delete mode 100644 ofl/museomoderno/upstream.yaml
 delete mode 100644 ofl/mynerve/upstream.yaml
 delete mode 100644 ofl/mysoul/upstream.yaml
 delete mode 100644 ofl/nabla/upstream.yaml
 delete mode 100644 ofl/namdhinggo/upstream.yaml
 delete mode 100644 ofl/narnoor/upstream.yaml
 delete mode 100644 ofl/neonderthaw/upstream.yaml
 delete mode 100644 ofl/nerkoone/upstream.yaml
 delete mode 100644 ofl/newsreader/upstream.yaml
 delete mode 100644 ofl/newtegomin/upstream.yaml
 delete mode 100644 ofl/nokora/upstream.yaml
 delete mode 100644 ofl/norican/upstream.yaml
 delete mode 100644 ofl/notocoloremoji/upstream.yaml
 delete mode 100644 ofl/notoemoji/upstream.yaml
 delete mode 100644 ofl/notokufiarabic/upstream.yaml
 delete mode 100644 ofl/notomusic/upstream.yaml
 delete mode 100644 ofl/notonaskharabic/upstream.yaml
 delete mode 100644 ofl/notonastaliqurdu/upstream.yaml
 delete mode 100644 ofl/notorashihebrew/upstream.yaml
 delete mode 100644 ofl/notosans/upstream.yaml
 delete mode 100644 ofl/notosansadlam/upstream.yaml
 delete mode 100644 ofl/notosansadlamunjoined/upstream.yaml
 delete mode 100644 ofl/notosansanatolianhieroglyphs/upstream.yaml
 delete mode 100644 ofl/notosansarabic/upstream.yaml
 delete mode 100644 ofl/notosansarmenian/upstream.yaml
 delete mode 100644 ofl/notosansavestan/upstream.yaml
 delete mode 100644 ofl/notosansbalinese/upstream.yaml
 delete mode 100644 ofl/notosansbamum/upstream.yaml
 delete mode 100644 ofl/notosansbassavah/upstream.yaml
 delete mode 100644 ofl/notosansbatak/upstream.yaml
 delete mode 100644 ofl/notosansbengali/upstream.yaml
 delete mode 100644 ofl/notosansbhaiksuki/upstream.yaml
 delete mode 100644 ofl/notosansbrahmi/upstream.yaml
 delete mode 100644 ofl/notosansbuginese/upstream.yaml
 delete mode 100644 ofl/notosansbuhid/upstream.yaml
 delete mode 100644 ofl/notosanscanadianaboriginal/upstream.yaml
 delete mode 100644 ofl/notosanscarian/upstream.yaml
 delete mode 100644 ofl/notosanscaucasianalbanian/upstream.yaml
 delete mode 100644 ofl/notosanschakma/upstream.yaml
 delete mode 100644 ofl/notosanscham/upstream.yaml
 delete mode 100644 ofl/notosanscherokee/upstream.yaml
 delete mode 100644 ofl/notosanschorasmian/upstream.yaml
 delete mode 100644 ofl/notosanscoptic/upstream.yaml
 delete mode 100644 ofl/notosanscuneiform/upstream.yaml
 delete mode 100644 ofl/notosanscypriot/upstream.yaml
 delete mode 100644 ofl/notosanscyprominoan/upstream.yaml
 delete mode 100644 ofl/notosansdeseret/upstream.yaml
 delete mode 100644 ofl/notosansdevanagari/upstream.yaml
 delete mode 100644 ofl/notosansduployan/upstream.yaml
 delete mode 100644 ofl/notosansegyptianhieroglyphs/upstream.yaml
 delete mode 100644 ofl/notosanselbasan/upstream.yaml
 delete mode 100644 ofl/notosanselymaic/upstream.yaml
 delete mode 100644 ofl/notosansethiopic/upstream.yaml
 delete mode 100644 ofl/notosansgeorgian/upstream.yaml
 delete mode 100644 ofl/notosansglagolitic/upstream.yaml
 delete mode 100644 ofl/notosansgothic/upstream.yaml
 delete mode 100644 ofl/notosansgrantha/upstream.yaml
 delete mode 100644 ofl/notosansgujarati/upstream.yaml
 delete mode 100644 ofl/notosansgunjalagondi/upstream.yaml
 delete mode 100644 ofl/notosansgurmukhi/upstream.yaml
 delete mode 100644 ofl/notosanshanifirohingya/upstream.yaml
 delete mode 100644 ofl/notosanshanunoo/upstream.yaml
 delete mode 100644 ofl/notosanshatran/upstream.yaml
 delete mode 100644 ofl/notosanshebrew/upstream.yaml
 delete mode 100644 ofl/notosansimperialaramaic/upstream.yaml
 delete mode 100644 ofl/notosansindicsiyaqnumbers/upstream.yaml
 delete mode 100644 ofl/notosansinscriptionalpahlavi/upstream.yaml
 delete mode 100644 ofl/notosansinscriptionalparthian/upstream.yaml
 delete mode 100644 ofl/notosansjavanese/upstream.yaml
 delete mode 100644 ofl/notosanskaithi/upstream.yaml
 delete mode 100644 ofl/notosanskannada/upstream.yaml
 delete mode 100644 ofl/notosanskawi/upstream.yaml
 delete mode 100644 ofl/notosanskayahli/upstream.yaml
 delete mode 100644 ofl/notosanskharoshthi/upstream.yaml
 delete mode 100644 ofl/notosanskhmer/upstream.yaml
 delete mode 100644 ofl/notosanskhojki/upstream.yaml
 delete mode 100644 ofl/notosanskhudawadi/upstream.yaml
 delete mode 100644 ofl/notosanslao/upstream.yaml
 delete mode 100644 ofl/notosanslaolooped/upstream.yaml
 delete mode 100644 ofl/notosanslepcha/upstream.yaml
 delete mode 100644 ofl/notosanslimbu/upstream.yaml
 delete mode 100644 ofl/notosanslineara/upstream.yaml
 delete mode 100644 ofl/notosanslinearb/upstream.yaml
 delete mode 100644 ofl/notosanslisu/upstream.yaml
 delete mode 100644 ofl/notosanslycian/upstream.yaml
 delete mode 100644 ofl/notosanslydian/upstream.yaml
 delete mode 100644 ofl/notosansmahajani/upstream.yaml
 delete mode 100644 ofl/notosansmalayalam/upstream.yaml
 delete mode 100644 ofl/notosansmandaic/upstream.yaml
 delete mode 100644 ofl/notosansmanichaean/upstream.yaml
 delete mode 100644 ofl/notosansmarchen/upstream.yaml
 delete mode 100644 ofl/notosansmasaramgondi/upstream.yaml
 delete mode 100644 ofl/notosansmayannumerals/upstream.yaml
 delete mode 100644 ofl/notosansmedefaidrin/upstream.yaml
 delete mode 100644 ofl/notosansmeeteimayek/upstream.yaml
 delete mode 100644 ofl/notosansmendekikakui/upstream.yaml
 delete mode 100644 ofl/notosansmeroitic/upstream.yaml
 delete mode 100644 ofl/notosansmiao/upstream.yaml
 delete mode 100644 ofl/notosansmodi/upstream.yaml
 delete mode 100644 ofl/notosansmongolian/upstream.yaml
 delete mode 100644 ofl/notosansmono/upstream.yaml
 delete mode 100644 ofl/notosansmro/upstream.yaml
 delete mode 100644 ofl/notosansmultani/upstream.yaml
 delete mode 100644 ofl/notosansmyanmar/upstream.yaml
 delete mode 100644 ofl/notosansnabataean/upstream.yaml
 delete mode 100644 ofl/notosansnagmundari/upstream.yaml
 delete mode 100644 ofl/notosansnandinagari/upstream.yaml
 delete mode 100644 ofl/notosansnewa/upstream.yaml
 delete mode 100644 ofl/notosansnewtailue/upstream.yaml
 delete mode 100644 ofl/notosansnko/upstream.yaml
 delete mode 100644 ofl/notosansnkounjoined/upstream.yaml
 delete mode 100644 ofl/notosansnushu/upstream.yaml
 delete mode 100644 ofl/notosansogham/upstream.yaml
 delete mode 100644 ofl/notosansolchiki/upstream.yaml
 delete mode 100644 ofl/notosansoldhungarian/upstream.yaml
 delete mode 100644 ofl/notosansolditalic/upstream.yaml
 delete mode 100644 ofl/notosansoldnortharabian/upstream.yaml
 delete mode 100644 ofl/notosansoldpermic/upstream.yaml
 delete mode 100644 ofl/notosansoldpersian/upstream.yaml
 delete mode 100644 ofl/notosansoldsogdian/upstream.yaml
 delete mode 100644 ofl/notosansoldsoutharabian/upstream.yaml
 delete mode 100644 ofl/notosansoldturkic/upstream.yaml
 delete mode 100644 ofl/notosansoriya/upstream.yaml
 delete mode 100644 ofl/notosansosage/upstream.yaml
 delete mode 100644 ofl/notosansosmanya/upstream.yaml
 delete mode 100644 ofl/notosanspahawhhmong/upstream.yaml
 delete mode 100644 ofl/notosanspalmyrene/upstream.yaml
 delete mode 100644 ofl/notosanspaucinhau/upstream.yaml
 delete mode 100644 ofl/notosansphagspa/upstream.yaml
 delete mode 100644 ofl/notosansphoenician/upstream.yaml
 delete mode 100644 ofl/notosanspsalterpahlavi/upstream.yaml
 delete mode 100644 ofl/notosansrejang/upstream.yaml
 delete mode 100644 ofl/notosansrunic/upstream.yaml
 delete mode 100644 ofl/notosanssamaritan/upstream.yaml
 delete mode 100644 ofl/notosanssaurashtra/upstream.yaml
 delete mode 100644 ofl/notosanssharada/upstream.yaml
 delete mode 100644 ofl/notosansshavian/upstream.yaml
 delete mode 100644 ofl/notosanssiddham/upstream.yaml
 delete mode 100644 ofl/notosanssignwriting/upstream.yaml
 delete mode 100644 ofl/notosanssinhala/upstream.yaml
 delete mode 100644 ofl/notosanssogdian/upstream.yaml
 delete mode 100644 ofl/notosanssorasompeng/upstream.yaml
 delete mode 100644 ofl/notosanssoyombo/upstream.yaml
 delete mode 100644 ofl/notosanssundanese/upstream.yaml
 delete mode 100644 ofl/notosanssylotinagri/upstream.yaml
 delete mode 100644 ofl/notosanssymbols/upstream.yaml
 delete mode 100644 ofl/notosanssymbols2/upstream.yaml
 delete mode 100644 ofl/notosanssyriac/upstream.yaml
 delete mode 100644 ofl/notosanssyriaceastern/upstream.yaml
 delete mode 100644 ofl/notosanstagalog/upstream.yaml
 delete mode 100644 ofl/notosanstagbanwa/upstream.yaml
 delete mode 100644 ofl/notosanstaile/upstream.yaml
 delete mode 100644 ofl/notosanstaitham/upstream.yaml
 delete mode 100644 ofl/notosanstaiviet/upstream.yaml
 delete mode 100644 ofl/notosanstakri/upstream.yaml
 delete mode 100644 ofl/notosanstamil/upstream.yaml
 delete mode 100644 ofl/notosanstamilsupplement/upstream.yaml
 delete mode 100644 ofl/notosanstangsa/upstream.yaml
 delete mode 100644 ofl/notosanstelugu/upstream.yaml
 delete mode 100644 ofl/notosansthaana/upstream.yaml
 delete mode 100644 ofl/notosansthai/upstream.yaml
 delete mode 100644 ofl/notosansthailooped/upstream.yaml
 delete mode 100644 ofl/notosanstifinagh/upstream.yaml
 delete mode 100644 ofl/notosanstirhuta/upstream.yaml
 delete mode 100644 ofl/notosansugaritic/upstream.yaml
 delete mode 100644 ofl/notosansvai/upstream.yaml
 delete mode 100644 ofl/notosansvithkuqi/upstream.yaml
 delete mode 100644 ofl/notosanswancho/upstream.yaml
 delete mode 100644 ofl/notosanswarangciti/upstream.yaml
 delete mode 100644 ofl/notosansyi/upstream.yaml
 delete mode 100644 ofl/notosanszanabazarsquare/upstream.yaml
 delete mode 100644 ofl/notoserif/upstream.yaml
 delete mode 100644 ofl/notoserifahom/upstream.yaml
 delete mode 100644 ofl/notoserifarmenian/upstream.yaml
 delete mode 100644 ofl/notoserifbalinese/upstream.yaml
 delete mode 100644 ofl/notoserifbengali/upstream.yaml
 delete mode 100644 ofl/notoserifdevanagari/upstream.yaml
 delete mode 100644 ofl/notoserifdogra/upstream.yaml
 delete mode 100644 ofl/notoserifethiopic/upstream.yaml
 delete mode 100644 ofl/notoserifgeorgian/upstream.yaml
 delete mode 100644 ofl/notoserifgrantha/upstream.yaml
 delete mode 100644 ofl/notoserifgujarati/upstream.yaml
 delete mode 100644 ofl/notoserifgurmukhi/upstream.yaml
 delete mode 100644 ofl/notoserifhebrew/upstream.yaml
 delete mode 100644 ofl/notoserifhentaigana/upstream.yaml
 delete mode 100644 ofl/notoserifkannada/upstream.yaml
 delete mode 100644 ofl/notoserifkhitansmallscript/upstream.yaml
 delete mode 100644 ofl/notoserifkhmer/upstream.yaml
 delete mode 100644 ofl/notoserifkhojki/upstream.yaml
 delete mode 100644 ofl/notoseriflao/upstream.yaml
 delete mode 100644 ofl/notoserifmakasar/upstream.yaml
 delete mode 100644 ofl/notoserifmalayalam/upstream.yaml
 delete mode 100644 ofl/notoserifolduyghur/upstream.yaml
 delete mode 100644 ofl/notoseriforiya/upstream.yaml
 delete mode 100644 ofl/notoserifottomansiyaq/upstream.yaml
 delete mode 100644 ofl/notoserifsinhala/upstream.yaml
 delete mode 100644 ofl/notoseriftamil/upstream.yaml
 delete mode 100644 ofl/notoseriftangut/upstream.yaml
 delete mode 100644 ofl/notoseriftelugu/upstream.yaml
 delete mode 100644 ofl/notoserifthai/upstream.yaml
 delete mode 100644 ofl/notoseriftibetan/upstream.yaml
 delete mode 100644 ofl/notoseriftoto/upstream.yaml
 delete mode 100644 ofl/notoserifvithkuqi/upstream.yaml
 delete mode 100644 ofl/notoserifyezidi/upstream.yaml
 delete mode 100644 ofl/nototraditionalnushu/upstream.yaml
 delete mode 100644 ofl/notoznamennymusicalnotation/upstream.yaml
 delete mode 100644 ofl/nunito/upstream.yaml
 delete mode 100644 ofl/nunitosans/upstream.yaml
 delete mode 100644 ofl/nuosusil/upstream.yaml
 delete mode 100644 ofl/odormeanchey/upstream.yaml
 delete mode 100644 ofl/offside/upstream.yaml
 delete mode 100644 ofl/oi/upstream.yaml
 delete mode 100644 ofl/ojuju/upstream.yaml
 delete mode 100644 ofl/ole/upstream.yaml
 delete mode 100644 ofl/onest/upstream.yaml
 delete mode 100644 ofl/ooohbaby/upstream.yaml
 delete mode 100644 ofl/opensans/upstream.yaml
 delete mode 100644 ofl/orbit/upstream.yaml
 delete mode 100644 ofl/orelegaone/upstream.yaml
 delete mode 100644 ofl/orienta/upstream.yaml
 delete mode 100644 ofl/oswald/upstream.yaml
 delete mode 100644 ofl/otomanopeeone/upstream.yaml
 delete mode 100644 ofl/outfit/upstream.yaml
 delete mode 100644 ofl/overpass/upstream.yaml
 delete mode 100644 ofl/overpassmono/upstream.yaml
 delete mode 100644 ofl/oxanium/upstream.yaml
 delete mode 100644 ofl/padauk/upstream.yaml
 delete mode 100644 ofl/padyakkeexpandedone/upstream.yaml
 delete mode 100644 ofl/palettemosaic/upstream.yaml
 delete mode 100644 ofl/paprika/upstream.yaml
 delete mode 100644 ofl/passionsconflict/upstream.yaml
 delete mode 100644 ofl/pathwayextreme/upstream.yaml
 delete mode 100644 ofl/pathwaygothicone/upstream.yaml
 delete mode 100644 ofl/paytoneone/upstream.yaml
 delete mode 100644 ofl/petemoss/upstream.yaml
 delete mode 100644 ofl/phudu/upstream.yaml
 delete mode 100644 ofl/piazzolla/upstream.yaml
 delete mode 100644 ofl/pinyonscript/upstream.yaml
 delete mode 100644 ofl/pixelifysans/upstream.yaml
 delete mode 100644 ofl/platypi/upstream.yaml
 delete mode 100644 ofl/playball/upstream.yaml
 delete mode 100644 ofl/playfair/upstream.yaml
 delete mode 100644 ofl/playpensans/upstream.yaml
 delete mode 100644 ofl/playwriteco/upstream.yaml
 delete mode 100644 ofl/playwritefrtrad/upstream.yaml
 delete mode 100644 ofl/playwritegbs/upstream.yaml
 delete mode 100644 ofl/plusjakartasans/upstream.yaml
 delete mode 100644 ofl/poltawskinowy/upstream.yaml
 delete mode 100644 ofl/pontanosans/upstream.yaml
 delete mode 100644 ofl/pottaone/upstream.yaml
 delete mode 100644 ofl/praise/upstream.yaml
 delete mode 100644 ofl/preahvihear/upstream.yaml
 delete mode 100644 ofl/protestguerrilla/upstream.yaml
 delete mode 100644 ofl/protestrevolution/upstream.yaml
 delete mode 100644 ofl/protestriot/upstream.yaml
 delete mode 100644 ofl/proteststrike/upstream.yaml
 delete mode 100644 ofl/publicsans/upstream.yaml
 delete mode 100644 ofl/puppiesplay/upstream.yaml
 delete mode 100644 ofl/qahiri/upstream.yaml
 delete mode 100644 ofl/quicksand/upstream.yaml
 delete mode 100644 ofl/qwigley/upstream.yaml
 delete mode 100644 ofl/qwitchergrypen/upstream.yaml
 delete mode 100644 ofl/radiocanada/upstream.yaml
 delete mode 100644 ofl/rampartone/upstream.yaml
 delete mode 100644 ofl/rasa/upstream.yaml
 delete mode 100644 ofl/readexpro/upstream.yaml
 delete mode 100644 ofl/recursive/upstream.yaml
 delete mode 100644 ofl/redacted/upstream.yaml
 delete mode 100644 ofl/redactedscript/upstream.yaml
 delete mode 100644 ofl/redditmono/upstream.yaml
 delete mode 100644 ofl/redditsans/upstream.yaml
 delete mode 100644 ofl/redditsanscondensed/upstream.yaml
 delete mode 100644 ofl/redhatdisplay/upstream.yaml
 delete mode 100644 ofl/redhatmono/upstream.yaml
 delete mode 100644 ofl/redhattext/upstream.yaml
 delete mode 100644 ofl/redrose/upstream.yaml
 delete mode 100644 ofl/reemkufi/upstream.yaml
 delete mode 100644 ofl/reemkufifun/upstream.yaml
 delete mode 100644 ofl/reemkufiink/upstream.yaml
 delete mode 100644 ofl/reggaeone/upstream.yaml
 delete mode 100644 ofl/rem/upstream.yaml
 delete mode 100644 ofl/rethinksans/upstream.yaml
 delete mode 100644 ofl/roadrage/upstream.yaml
 delete mode 100644 ofl/roboto/upstream.yaml
 delete mode 100644 ofl/robotocondensed/upstream.yaml
 delete mode 100644 ofl/robotoflex/upstream.yaml
 delete mode 100644 ofl/robotoserif/upstream.yaml
 delete mode 100644 ofl/rock3d/upstream.yaml
 delete mode 100644 ofl/rocknrollone/upstream.yaml
 delete mode 100644 ofl/rokkitt/upstream.yaml
 delete mode 100644 ofl/rosario/upstream.yaml
 delete mode 100644 ofl/rubik/upstream.yaml
 delete mode 100644 ofl/rubik80sfade/upstream.yaml
 delete mode 100644 ofl/rubikbeastly/upstream.yaml
 delete mode 100644 ofl/rubikbrokenfax/upstream.yaml
 delete mode 100644 ofl/rubikbubbles/upstream.yaml
 delete mode 100644 ofl/rubikburned/upstream.yaml
 delete mode 100644 ofl/rubikdirt/upstream.yaml
 delete mode 100644 ofl/rubikdistressed/upstream.yaml
 delete mode 100644 ofl/rubikdoodleshadow/upstream.yaml
 delete mode 100644 ofl/rubikdoodletriangles/upstream.yaml
 delete mode 100644 ofl/rubikgemstones/upstream.yaml
 delete mode 100644 ofl/rubikglitch/upstream.yaml
 delete mode 100644 ofl/rubikglitchpop/upstream.yaml
 delete mode 100644 ofl/rubikiso/upstream.yaml
 delete mode 100644 ofl/rubiklines/upstream.yaml
 delete mode 100644 ofl/rubikmaps/upstream.yaml
 delete mode 100644 ofl/rubikmarkerhatch/upstream.yaml
 delete mode 100644 ofl/rubikmaze/upstream.yaml
 delete mode 100644 ofl/rubikmicrobe/upstream.yaml
 delete mode 100644 ofl/rubikmoonrocks/upstream.yaml
 delete mode 100644 ofl/rubikpixels/upstream.yaml
 delete mode 100644 ofl/rubikpuddles/upstream.yaml
 delete mode 100644 ofl/rubikscribble/upstream.yaml
 delete mode 100644 ofl/rubikspraypaint/upstream.yaml
 delete mode 100644 ofl/rubikstorm/upstream.yaml
 delete mode 100644 ofl/rubikvinyl/upstream.yaml
 delete mode 100644 ofl/rubikwetpaint/upstream.yaml
 delete mode 100644 ofl/rugeboogie/upstream.yaml
 delete mode 100644 ofl/ruthie/upstream.yaml
 delete mode 100644 ofl/ruwudu/upstream.yaml
 delete mode 100644 ofl/saira/upstream.yaml
 delete mode 100644 ofl/sancreek/upstream.yaml
 delete mode 100644 ofl/sassyfrass/upstream.yaml
 delete mode 100644 ofl/scheherazadenew/upstream.yaml
 delete mode 100644 ofl/schibstedgrotesk/upstream.yaml
 delete mode 100644 ofl/secularone/upstream.yaml
 delete mode 100644 ofl/sedan/upstream.yaml
 delete mode 100644 ofl/sedansc/upstream.yaml
 delete mode 100644 ofl/sen/upstream.yaml
 delete mode 100644 ofl/sendflowers/upstream.yaml
 delete mode 100644 ofl/seymourone/upstream.yaml
 delete mode 100644 ofl/shalimar/upstream.yaml
 delete mode 100644 ofl/shantellsans/upstream.yaml
 delete mode 100644 ofl/shanti/upstream.yaml
 delete mode 100644 ofl/shipporiantique/upstream.yaml
 delete mode 100644 ofl/shipporiantiqueb1/upstream.yaml
 delete mode 100644 ofl/shipporimincho/upstream.yaml
 delete mode 100644 ofl/shipporiminchob1/upstream.yaml
 delete mode 100644 ofl/shizuru/upstream.yaml
 delete mode 100644 ofl/sigmar/upstream.yaml
 delete mode 100644 ofl/signika/upstream.yaml
 delete mode 100644 ofl/signikanegative/upstream.yaml
 delete mode 100644 ofl/silkscreen/upstream.yaml
 delete mode 100644 ofl/sixtyfour/upstream.yaml
 delete mode 100644 ofl/slacksideone/upstream.yaml
 delete mode 100644 ofl/smooch/upstream.yaml
 delete mode 100644 ofl/smoochsans/upstream.yaml
 delete mode 100644 ofl/sofiasans/upstream.yaml
 delete mode 100644 ofl/sofiasanscondensed/upstream.yaml
 delete mode 100644 ofl/sofiasansextracondensed/upstream.yaml
 delete mode 100644 ofl/sofiasanssemicondensed/upstream.yaml
 delete mode 100644 ofl/solitreo/upstream.yaml
 delete mode 100644 ofl/sometypemono/upstream.yaml
 delete mode 100644 ofl/sono/upstream.yaml
 delete mode 100644 ofl/spacegrotesk/upstream.yaml
 delete mode 100644 ofl/splash/upstream.yaml
 delete mode 100644 ofl/splinesans/upstream.yaml
 delete mode 100644 ofl/splinesansmono/upstream.yaml
 delete mode 100644 ofl/squarepeg/upstream.yaml
 delete mode 100644 ofl/stick/upstream.yaml
 delete mode 100644 ofl/sticknobills/upstream.yaml
 delete mode 100644 ofl/stixtwomath/upstream.yaml
 delete mode 100644 ofl/stixtwotext/upstream.yaml
 delete mode 100644 ofl/strait/upstream.yaml
 delete mode 100644 ofl/stylescript/upstream.yaml
 delete mode 100644 ofl/suwannaphum/upstream.yaml
 delete mode 100644 ofl/syne/upstream.yaml
 delete mode 100644 ofl/tacone/upstream.yaml
 delete mode 100644 ofl/taiheritagepro/upstream.yaml
 delete mode 100644 ofl/tapestry/upstream.yaml
 delete mode 100644 ofl/taprom/upstream.yaml
 delete mode 100644 ofl/teachers/upstream.yaml
 delete mode 100644 ofl/teko/upstream.yaml
 delete mode 100644 ofl/tektur/upstream.yaml
 delete mode 100644 ofl/texturina/upstream.yaml
 delete mode 100644 ofl/thenautigal/upstream.yaml
 delete mode 100644 ofl/tiltneon/upstream.yaml
 delete mode 100644 ofl/tiltprism/upstream.yaml
 delete mode 100644 ofl/tiltwarp/upstream.yaml
 delete mode 100644 ofl/tirobangla/upstream.yaml
 delete mode 100644 ofl/tirodevanagarihindi/upstream.yaml
 delete mode 100644 ofl/tirodevanagarimarathi/upstream.yaml
 delete mode 100644 ofl/tirodevanagarisanskrit/upstream.yaml
 delete mode 100644 ofl/tirogurmukhi/upstream.yaml
 delete mode 100644 ofl/tirokannada/upstream.yaml
 delete mode 100644 ofl/tirotamil/upstream.yaml
 delete mode 100644 ofl/tirotelugu/upstream.yaml
 delete mode 100644 ofl/tourney/upstream.yaml
 delete mode 100644 ofl/trainone/upstream.yaml
 delete mode 100644 ofl/trocchi/upstream.yaml
 delete mode 100644 ofl/truculenta/upstream.yaml
 delete mode 100644 ofl/tsukimirounded/upstream.yaml
 delete mode 100644 ofl/twinklestar/upstream.yaml
 delete mode 100644 ofl/unbounded/upstream.yaml
 delete mode 100644 ofl/unicaone/upstream.yaml
 delete mode 100644 ofl/unlock/upstream.yaml
 delete mode 100644 ofl/updock/upstream.yaml
 delete mode 100644 ofl/urbanist/upstream.yaml
 delete mode 100644 ofl/varelaround/upstream.yaml
 delete mode 100644 ofl/vazirmatn/upstream.yaml
 delete mode 100644 ofl/victormono/upstream.yaml
 delete mode 100644 ofl/vinasans/upstream.yaml
 delete mode 100644 ofl/vollkorn/upstream.yaml
 delete mode 100644 ofl/voltaire/upstream.yaml
 delete mode 100644 ofl/vujahdayscript/upstream.yaml
 delete mode 100644 ofl/warnes/upstream.yaml
 delete mode 100644 ofl/waterbrush/upstream.yaml
 delete mode 100644 ofl/waterfall/upstream.yaml
 delete mode 100644 ofl/wavefont/upstream.yaml
 delete mode 100644 ofl/whisper/upstream.yaml
 delete mode 100644 ofl/windsong/upstream.yaml
 delete mode 100644 ofl/wireone/upstream.yaml
 delete mode 100644 ofl/wixmadefordisplay/upstream.yaml
 delete mode 100644 ofl/workbench/upstream.yaml
 delete mode 100644 ofl/worksans/upstream.yaml
 delete mode 100644 ofl/yaldevi/upstream.yaml
 delete mode 100644 ofl/yanonekaffeesatz/upstream.yaml
 delete mode 100644 ofl/yarndings12/upstream.yaml
 delete mode 100644 ofl/yarndings12charted/upstream.yaml
 delete mode 100644 ofl/yarndings20/upstream.yaml
 delete mode 100644 ofl/yarndings20charted/upstream.yaml
 delete mode 100644 ofl/yomogi/upstream.yaml
 delete mode 100644 ofl/youngserif/upstream.yaml
 delete mode 100644 ofl/yrsa/upstream.yaml
 delete mode 100644 ofl/ysabeau/upstream.yaml
 delete mode 100644 ofl/ysabeauinfant/upstream.yaml
 delete mode 100644 ofl/ysabeauoffice/upstream.yaml
 delete mode 100644 ofl/ysabeausc/upstream.yaml
 delete mode 100644 ofl/yujiboku/upstream.yaml
 delete mode 100644 ofl/yujihentaiganaakari/upstream.yaml
 delete mode 100644 ofl/yujihentaiganaakebono/upstream.yaml
 delete mode 100644 ofl/yujimai/upstream.yaml
 delete mode 100644 ofl/yujisyuku/upstream.yaml
 delete mode 100644 ofl/yuseimagic/upstream.yaml
 delete mode 100644 ofl/zenantique/upstream.yaml
 delete mode 100644 ofl/zenantiquesoft/upstream.yaml
 delete mode 100644 ofl/zendots/upstream.yaml
 delete mode 100644 ofl/zenkakugothicantique/upstream.yaml
 delete mode 100644 ofl/zenkakugothicnew/upstream.yaml
 delete mode 100644 ofl/zenkurenaido/upstream.yaml
 delete mode 100644 ofl/zenloop/upstream.yaml
 delete mode 100644 ofl/zenmarugothic/upstream.yaml
 delete mode 100644 ofl/zenoldmincho/upstream.yaml
 delete mode 100644 ofl/zentokyozoo/upstream.yaml

diff --git a/ofl/abeezee/METADATA.pb b/ofl/abeezee/METADATA.pb
index c40a01884..d9cfc9462 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 040c1ef28..000000000
--- 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 1b0a64148..3c6504baa 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 c57fd3ba2..000000000
--- 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 800a42994..c84cc93ca 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 85665ed99..000000000
--- 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 dc5a2ad91..0e541969f 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 62afa242d..000000000
--- 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 262329e4a..f2581ba62 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 8693c8a9b..000000000
--- 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 7704a4ccb..49c2ddbed 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 f8d079b53..000000000
--- 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 1700a1865..fe06fc91d 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 806c0db1f..000000000
--- 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 590b41133..86f719842 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 01443726c..000000000
--- 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 7cdf04082..0bc8995d2 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 3dfa3221e..000000000
--- 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 4b4d189cd..6a89c21f4 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 22681e40d..000000000
--- 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 d8b9a1283..e8f367a93 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 2a26156dd..000000000
--- 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 7c319c5b0..429694035 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 66271c79e..000000000
--- 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 5b232ee38..7aa54a8e9 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 b2638d434..000000000
--- 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 267da8a5e..79d9fb123 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 200b896e1..000000000
--- 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 e4b1ff4a0..78b345631 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 4440a3458..000000000
--- 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 291043163..c8db81b52 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 6730362c2..000000000
--- 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 aac208818..86c4e5d90 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 19a9a4715..000000000
--- 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 84cc676b0..a63a31cf1 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 fc337dd30..000000000
--- 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 08855836e..272f4211a 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 32755c851..000000000
--- 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 e8608c7b5..1d381cdf1 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 a7030d633..000000000
--- 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 a165f0ea5..a38966f5c 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 ce84c85a8..000000000
--- 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 09e901e14..dd76b2a6c 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 88a32de66..000000000
--- 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 1b6d53980..e5d10e35a 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 ee64f6346..000000000
--- 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 5715e69bf..b6041ca1c 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 3bcfa2b3c..000000000
--- 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 0780f2614..9faea1955 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 249f297d5..000000000
--- 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 2ec29a751..925e12e73 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 87d0cc055..000000000
--- 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 aba84600b..a69a19258 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 4e5a72110..000000000
--- 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 a13b61fc8..eb2f4cd12 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 3b775ee4b..000000000
--- 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 7cb67c2db..3a518edc4 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 997e127f6..000000000
--- 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 142264692..203d511d4 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 59b210c1e..000000000
--- 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 61096aaa3..d267c7cab 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 6bb8a742a..000000000
--- 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 cbedf7d74..8aff2af98 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 084373703..000000000
--- 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 c2c9a9354..772934e9f 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 f99e33f29..000000000
--- 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 b811762d4..50e540afe 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 1a433d0c4..000000000
--- 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 5cbdf78c1..be8dc6a89 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 081b679d1..000000000
--- 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 8aab76528..8b5b42a69 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 9ad759d7a..000000000
--- 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 52ec09cd6..043c98313 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 4f52fff44..000000000
--- 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 d3d32f09b..1adda11e9 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 3bf624936..000000000
--- 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 ca24fa5f9..6ab10b517 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 6d6b87603..000000000
--- 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 b6b52a9a8..a18b85db4 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 19af2a19c..000000000
--- 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 782951bce..81815d99a 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 8b9fe513f..000000000
--- 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 cad3d8ecb..b89092201 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 6092c596a..000000000
--- 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 84f1f3c5f..a45fa666c 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 8ada34fa5..000000000
--- 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 ee62db6cf..a1a4c2e25 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 a1bd38a61..000000000
--- 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 31057b62e..56b1058be 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 76419d70b..000000000
--- 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 d9a912672..040b1243a 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 6899a382f..000000000
--- 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 0f72a62f1..38c2bbd25 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 cb8673e44..000000000
--- 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 7c639f7ff..ce3f11c54 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 620d3dad8..000000000
--- 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 737d0aa47..44ae29f15 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 09146586f..000000000
--- 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 1d676f9d3..5d1f0ca7e 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 0461631b5..000000000
--- 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 600102d8d..ad1a5d73a 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 db7716b2e..000000000
--- 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 cf8b9f61c..d4f2782e9 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 5e01c1960..000000000
--- 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 28831cf57..7a77f27c4 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 ee176660d..000000000
--- 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 e77eaf3dc..6de329651 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 2e7a4da25..000000000
--- 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 7600f6fbe..c3e7eaab3 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 e698c67d8..000000000
--- 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 6522fa3ce..ac727af51 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 5714a62fe..000000000
--- 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 e86e97e09..b39c15e82 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 e5828bc78..000000000
--- 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 a3e071fd5..a5d53689b 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 09c2e5c98..000000000
--- 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 edc7eb291..cce07b7fb 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 a3ca45524..000000000
--- 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 82bfc1078..6fd1cea2b 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 d2b76be7e..000000000
--- 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 44941c7d1..f4ed2fb14 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 128a5d349..000000000
--- 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 89d0b5a92..9268f5fde 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 c3c3bbd2d..000000000
--- 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 e50fc3940..bdbaa9c50 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 929e78c4d..000000000
--- 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 218c57eca..8a0353b33 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 f12eff921..000000000
--- 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 573670b57..14aa800e0 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 33d0d5f29..000000000
--- 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 4b86d3ea5..9a69f3374 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 8d4598703..000000000
--- 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 f650406bd..64ebacd18 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 2499c3ae8..000000000
--- 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 c6af977af..a60d547c8 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 e8f7bfda9..000000000
--- 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 b4714fe93..3ce984879 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 9754d6acc..000000000
--- 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 e7847bfc0..ffb5898f7 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 5e5bc8e82..000000000
--- 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 d9f483725..007c1aa6d 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 ca2963b97..000000000
--- 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 2b1c638cd..62711e09b 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 c32df32fb..000000000
--- 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 897663079..55d6124a1 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 8aeb9971d..000000000
--- 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 57e3ac2e9..d3b361c9a 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 3b1a6537e..000000000
--- 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 225f5fe0b..d3e2ce7c2 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 afd133c37..000000000
--- 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 1f147f40f..556e9868f 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 b5b166f57..000000000
--- 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 52684e7c3..da5c22458 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 bddd9e0d4..000000000
--- 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 8279d700f..2ddfa6320 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 f9a499428..000000000
--- 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 44ea08dae..2c91b4255 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 d4d42c2d9..000000000
--- 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 66cef3ef7..820afc2c7 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 a930752fa..000000000
--- 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 b4f11c181..171b14625 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 c34da3ddb..000000000
--- 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 23f30fb13..6114dc604 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 66db44075..000000000
--- 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 7bebe7d58..89e21b49a 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 546a55fc7..000000000
--- 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 6c00ac520..ce7ad5ecb 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 615b81e53..000000000
--- 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 3f2108567..0bfada552 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 d53cacba8..000000000
--- 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 859ff9399..0f556beb6 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 9ec4bd60a..000000000
--- 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 26119e13b..1f80fab2d 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 272788007..000000000
--- 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 536f2bf33..f4ad970d9 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 8a09055bd..000000000
--- 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 228bd6fde..8a1150962 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 9e9fc5941..000000000
--- 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 a1997ef4f..78e8d62d3 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 9ad4788e2..000000000
--- 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 d915d9e88..9d6adb0a7 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 d85dbb912..000000000
--- 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 a866ea91c..c1ba9cd3e 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 8110382f7..000000000
--- 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 56afe607a..55da4630d 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 688357196..000000000
--- 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 4a09cf211..9dd291103 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 5b2b5bd2c..000000000
--- 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 1435909be..1908ad651 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 63842bc37..000000000
--- 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 8a74c470f..1f3a973c8 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 678b8993d..000000000
--- 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 daf3f5aef..d4c389572 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 44cceced4..000000000
--- 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 b1fd76318..7411f830e 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 3dc4df319..000000000
--- 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 256425805..fbf3ec00a 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 f23c8d8b1..000000000
--- 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 05bfd2db9..a371eb3ae 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 c5e4ab350..000000000
--- 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 a678de115..b3509620b 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 acf837bf0..000000000
--- 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 68914c973..b54c1e2f4 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 0aee23e74..000000000
--- 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 bda7160d9..6d6507a35 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 7bddac114..000000000
--- 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 851fbdfbc..e50b0145c 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 e2d066aae..000000000
--- 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 f26adbb0c..05a1e9df7 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 e01b1bfdf..000000000
--- 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 8337aafbc..6f19b795f 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 54873c406..000000000
--- 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 6e85ac3ac..6dc99d889 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 1ab7112c5..000000000
--- 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 18a81cb5f..c03c49187 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 1130d6be1..000000000
--- 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 4366f0396..eccc953f1 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 606ddf949..000000000
--- 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 216952233..0fe9fa1dc 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 b628584d8..000000000
--- 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 bce47ab88..d700f4517 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 c0dd1afc8..000000000
--- 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 e26377c51..5cfd61766 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 beda956a6..000000000
--- 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 67f79c714..f833d1741 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 8e3b3111e..000000000
--- 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 35fe050af..f3870f7ca 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 c5e3b22c6..000000000
--- 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 818c1f00d..4de479dd7 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 04f8d7dfb..000000000
--- 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 e251782be..3e2ad3569 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 43d472d31..000000000
--- 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 c9f4055b2..b573e4d0f 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 e6db63f73..000000000
--- 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 843d37cc4..e6c964497 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 5b4bcf87a..000000000
--- 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 ebe1781e6..e7bea9968 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 9936f364c..000000000
--- 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 fb1d347e3..269277c8e 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 ddd239a3c..000000000
--- 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 68dbeca9e..4de5faa39 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 d6f8f797b..000000000
--- 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 94cfb98a2..e1414fd63 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 67225c65f..000000000
--- 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 498dfb92c..9d54eccdc 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 5a0be2e87..000000000
--- 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 d3a49ae56..800106114 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 3fbdb7fab..000000000
--- 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 c6d894e75..488391e04 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 4414f760e..000000000
--- 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 27ea40eb6..ed1cb58a7 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 a11af677e..000000000
--- 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 b8b89fc98..3b24d11bb 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 0d8d312f9..000000000
--- 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 cb59aa72a..027301f1b 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 b599484b8..000000000
--- 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 11cee667c..030da7848 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 0cf936740..000000000
--- 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 8340bf235..babeffc66 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 058b07707..000000000
--- 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 c890a1027..d1ff71f2a 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 278f2de70..000000000
--- 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 3d93591d5..413f228d8 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 f8cef9c3c..000000000
--- 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 e8ceef2bf..6749839ba 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 25493e7a4..000000000
--- 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 82b561404..694cd5efd 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 92901ae82..000000000
--- 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 0314ae620..02d66b792 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 41f1aa745..000000000
--- 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 fedb0d6ad..9a6ac11fd 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 d9ec42ada..000000000
--- 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 16b424145..35796f48d 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 0e24620fe..000000000
--- 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 44cbb099c..e33235e12 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 2bc694757..000000000
--- 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 61eb6dc78..afea4ef2b 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 f18d971a6..000000000
--- 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 ac3fb9592..d8678b3e1 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 f579f7d8e..000000000
--- 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 963c67d1f..7d0adfc81 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 9672d3708..000000000
--- 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 7720dc621..2b5cfe02e 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 09896f4ab..000000000
--- 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 eb4d4e302..415b665b6 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 de640937a..000000000
--- 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 4f5e27331..0a7c5643f 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 e7aec11ae..000000000
--- 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 9339e9c97..5e905f720 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 f575fd7ec..000000000
--- 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 00b3d1c74..5d71261ac 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 f498e6635..000000000
--- 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 ec00e4e6a..98b1c25bc 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 2031db85e..000000000
--- 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 c03f4c00e..132b7a3a9 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 ca26ac113..000000000
--- 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 a9eb56c9f..3f8f9395b 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 4f8de8816..000000000
--- 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 f96cdd9f2..3c47255be 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 6d94b5f2b..000000000
--- 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 8f011c1a0..06c69acd3 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 42bec62d6..000000000
--- 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 a7e02ecc8..23bf3bfdf 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 2656d42cf..000000000
--- 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 ac79dd0e5..a8a7622e8 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 b6d234214..000000000
--- 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 9d26cac37..124efb811 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 3abccb31e..000000000
--- 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 f88099b40..092c8c4c7 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 e01f0b78f..000000000
--- 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 bcdd017be..550a9d976 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 b2ee525a1..000000000
--- 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 4fd334f88..b1876a931 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 0c42051bd..000000000
--- 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 af52d1704..9ba8e9279 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 a1651c736..000000000
--- 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 b1a000671..82d311ea2 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 d79e8432d..000000000
--- 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 dba7a756d..675464d04 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 979e6979a..000000000
--- 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 f738209a6..5af0f2448 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 0d86fb6f2..000000000
--- 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 f92c5a57a..05e6d9723 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 e9b76609c..000000000
--- 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 59ac711ea..297d55f6c 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 011818561..000000000
--- 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 44eec0d20..3b96a5491 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 0d052a343..000000000
--- 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 01afb44a3..50c78e72c 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 9d399ab2d..000000000
--- 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 e4d8b53fd..bbfc8adb8 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 a8c81907a..000000000
--- 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 fbeefd1ad..1bf048c82 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 d58cc2e4c..000000000
--- 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 2944c934b..bc40f78c6 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 9af9629ba..000000000
--- 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 96059a0bf..60fcdebe0 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 cbc0056dd..000000000
--- 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 09d8ac3a3..ed0832c74 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 7c1ae0f89..000000000
--- 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 577348249..5086808d9 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 ffa90a65b..000000000
--- 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 66e13e877..5a31daece 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 3f2421be4..000000000
--- 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 e2ae4b502..1194d56dd 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 163629d8f..000000000
--- 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 03d938039..5dad3cdda 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 562f105a3..000000000
--- 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 6f123b1c1..208ef4012 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 f47921652..000000000
--- 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 67ade8f47..7890ded61 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 387ff3d4b..000000000
--- 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 ac14916ca..74b4daecd 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 c2b1bb748..000000000
--- 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 830242aac..ab7799107 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 48ca6c9f4..000000000
--- 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 e10740d68..0c37e5f6f 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 418038bcb..000000000
--- 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 1da6c9cc7..c2f25827c 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 bb49a0694..000000000
--- 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 f781c134f..709cde79a 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 238467848..000000000
--- 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 6ef4189c0..0ca828b95 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 12263e4ca..000000000
--- 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 f5b4d77bf..47605dcce 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 af70ea029..000000000
--- 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 0536584a3..250caa661 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 86e99c614..000000000
--- 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 d18ae1a00..a66d8df5a 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 6815a4826..000000000
--- 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 7326d7c72..65f1b6197 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 6cbaa9d56..000000000
--- 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 732cbf453..63ef8064c 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 bba92d2e3..000000000
--- 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 f22decc4b..03db9f7b5 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 7674e2f7e..000000000
--- 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 188d651e8..7edb4438f 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 2ee640165..000000000
--- 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 f5e3cf90b..6fd3bba20 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 ecb0de0ee..000000000
--- 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 035d11f48..22ee33683 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 cc3b83a9f..000000000
--- 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 9653f2cf2..a5d448ac1 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 87bd692fa..000000000
--- 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 dd1099772..112a16c1a 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 c214521e4..000000000
--- 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 533c75e54..353ed156b 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 64e603c80..000000000
--- 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 08a171d4c..f5253aaa0 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 a575c6f4e..000000000
--- 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 96fbcd9fa..5741c501d 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 b8c8c8e8b..000000000
--- 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 6531732ef..4d69e12c6 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 5c1e259f3..000000000
--- 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 daf57f9f9..54858e126 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 2c08eb732..000000000
--- 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 120944fbe..c10f1e3e2 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 0df61e4d9..000000000
--- 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 fe244c101..a3124769e 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 017f6878b..000000000
--- 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 55622ca61..25bff85a9 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 4dc4a7478..000000000
--- 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 2ed48db80..c4a5065cd 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 6b4a40aa2..000000000
--- 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 f57630a4f..5fd9278bd 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 b2fa93f75..000000000
--- 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 8a5aee523..dd9727135 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 3b59d0781..000000000
--- 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 2fb3a5741..263330ff8 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 669994282..000000000
--- 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 5779c5a3d..e273ecb7c 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 15b0397b3..000000000
--- 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 00eda651c..d39b01f88 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 2ee865287..000000000
--- 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 9c0f9cc86..0a0484159 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 ed92da12f..000000000
--- 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 51b001bcf..91b9bd77a 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 573581e99..000000000
--- 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 1359b401c..2a91550be 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 0dc71099d..000000000
--- 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 5d8ff24aa..011d574d9 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 543100f1e..000000000
--- 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 16d0e7548..5d2df170e 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 a5b77d662..000000000
--- 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 6ccc63531..c21e387e1 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 105a873fd..000000000
--- 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 f86f61aae..ea389c110 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 1383006ed..000000000
--- 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 066dce1b5..9a32c5a13 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 088d956b6..000000000
--- 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 16ddc81cd..a5cdf034c 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 1282833d3..000000000
--- 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 ce59c4fbe..0ee9c95c9 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 40695a0ca..000000000
--- 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 c46e39474..a5073c73b 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 c93930abe..000000000
--- 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 9c7747d23..562faa97c 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 f1b6acb84..000000000
--- 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 e91e94494..b2c1f0427 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 a6f5f3bdd..000000000
--- 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 72195ad53..a8af68e04 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 80978fe81..000000000
--- 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 93f1c1392..bd71d2382 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 c66c82899..000000000
--- 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 5e46adb9b..fea3d9d34 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 728ff690b..000000000
--- 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 26311f432..ee47145b4 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 4040bbb7a..000000000
--- 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 53d0ebb7c..2f148bca7 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 66544bf8b..000000000
--- 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 58af7a42d..c94f696a9 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 84323f25d..000000000
--- 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 a03e8f8d7..20711cbbc 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 693fba087..000000000
--- 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 aefea4164..0d0138eed 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 5fad0e47a..000000000
--- 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 5b41e5326..d16b64fb5 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 e8b4c843f..000000000
--- 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 dc69c1a47..18883731f 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 23f9dd759..000000000
--- 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 513698dc2..50d40b036 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 2af7d97da..000000000
--- 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 008d4541f..44dd61078 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 cddc2a683..000000000
--- 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 e245cdd4c..b48adbf3a 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 d3e674e99..000000000
--- 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 5f4f4b5d5..7d15e38d5 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 308262781..000000000
--- 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 d07eb925d..b96266797 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 7ed5f09f1..000000000
--- 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 e9f554b34..05694b8b5 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 445662bb8..000000000
--- 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 1ed7ee727..61651ec7a 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 88be782c9..000000000
--- 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 7aafe4000..38f12c3d2 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 bf4bc72cf..000000000
--- 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 acf395d30..cd5501836 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 45bee86e4..000000000
--- 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 31f794c4a..a5a2f9fb1 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 4b1d19b96..000000000
--- 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 4dc3ed01a..ac5094cf2 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 19b98b69b..000000000
--- 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 59c1e9ea2..c284adf36 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 7e7fdd819..000000000
--- 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 c09976fca..b3b36ca54 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 17ecffdcc..000000000
--- 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 2912f14a9..f7ed6cb56 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 6b21efc3a..000000000
--- 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 48e337767..e06cf4ffd 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 8cd727900..000000000
--- 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 b1bdf8de3..b34c8459d 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 3764be00b..000000000
--- 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 cb67a85ad..10e1970c2 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 c342ba7bf..000000000
--- 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 d2889bc0e..9d42887da 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 52f889540..000000000
--- 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 d55549ba3..bc61f0a01 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 22d8c9ad2..000000000
--- 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 64aee4f31..7919d02df 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 e0a8ce3da..000000000
--- 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 51c65840d..bd7116588 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 898cf94b2..000000000
--- 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 8248ecc5a..9d8faf27c 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 c6e7b9791..000000000
--- 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 189e35df2..2bb314e14 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 d4768f450..000000000
--- 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 aca1c30e1..59a0a3a0d 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 a6e973f6c..000000000
--- 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 02c0f8a60..2f091e8ef 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 00acb7664..000000000
--- 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 ac74c00d2..c6bd6869c 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 c67efcf72..000000000
--- 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 74ccba67c..f268be2a1 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 d44e477b5..000000000
--- 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 f65f25409..e3cfb13b8 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 ca3fe381d..000000000
--- 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 ebba16134..7ed082f09 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 bb7fae0d4..000000000
--- 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 19e6ba7ec..e7f7890f1 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 1e1e0d1be..000000000
--- 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 276ad705b..8cc221f1e 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 b1662b1da..000000000
--- 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 b5839b81c..da35fcd3f 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 5ce36f342..000000000
--- 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 4302ca5ba..b5c1287de 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 7057dfc73..000000000
--- 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 7e1d0be82..bbf1eda90 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 11049bc14..000000000
--- 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 6bd35deeb..cb72e84e8 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 63b536357..000000000
--- 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 0d82d4315..538a4d480 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 bd41f275a..000000000
--- 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 2a9f3cdaf..a48a3c8c2 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 829ab009c..000000000
--- 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 46ac96df9..cc04b7871 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 6f809e1d8..000000000
--- 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 ec67ac7b2..cb16e5a38 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 996804da9..000000000
--- 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 dabf4f211..3561b2518 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 f7b654ac6..000000000
--- 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 27597fc7f..6f9117874 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 20799c678..000000000
--- 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 1a682f496..b779a5dd4 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 9e5d1aa3d..000000000
--- 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 79abf4285..1d3995efc 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 e510b552c..000000000
--- 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 84730a0ec..97c4923ec 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 f9a99fd12..000000000
--- 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 edb71a61b..9b99dbfdd 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 72907e762..000000000
--- 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 9a82b0491..a6c8270a8 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 d63432c62..000000000
--- 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 ad533a637..e3f3b7cc2 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 99d0fd03b..000000000
--- 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 66f76afe1..552c55638 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 d5f8e219b..000000000
--- 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 bba89489c..d192d2401 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 cba10073d..000000000
--- 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 2c9a94d49..5e29cc75c 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 d6a4a3eef..000000000
--- 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 188965a61..07169aa52 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 46f0d68c3..000000000
--- 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 095210fc0..74a8c5490 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 96d42d109..000000000
--- 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 850b7710b..a5daef254 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 5ddc1c437..000000000
--- 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 0b393731c..8cf8ddc0d 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 a1092fba3..000000000
--- 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 656ab2671..c11c1acc4 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 76c008c8a..000000000
--- 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 b05c8b937..f93c0bef5 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 61dbed1fe..000000000
--- 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 e1a28f49f..11e0abf1d 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 83e804efc..000000000
--- 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 ac354dcee..bcf5bbb6e 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 9fd1c6c56..000000000
--- 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 e0e428e8d..0afc70338 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 1370b9253..000000000
--- 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 2c6629a85..ddae579d7 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 931334a2c..000000000
--- 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 bca5e0242..17c1d3ff5 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 b291035e9..000000000
--- 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 32ddba8d8..df498540f 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 b00688243..000000000
--- 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 cce7e6387..b6e0fee96 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 dfe66dd4d..000000000
--- 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 ae63bdf8a..5ec25b6ad 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 5a72adaf8..000000000
--- 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 9b6d6c6dc..b8d957b5f 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 0c26d84f3..000000000
--- 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 a7395c6e5..509f77324 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 e3c71fc95..000000000
--- 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 d289e60f4..2a731eed1 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 f49538972..000000000
--- 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 9ffccd3f5..a811ce1d6 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 00a039ade..000000000
--- 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 05538be8d..a2ebe23c3 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 f5c508870..000000000
--- 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 8eddc53fa..1024cecaa 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 98ce43f3b..000000000
--- 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 35aa26c42..edcab19b3 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 0cd376654..000000000
--- 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 59931a17e..b0e4ae928 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 ef3a587c5..000000000
--- 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 095738597..5ffa60a2e 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 1a0d1ff92..000000000
--- 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 9e43dee85..52d22f5dd 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 5dde8a900..000000000
--- 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 1a35dd222..3e9d8b810 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 d9a8f0ef9..000000000
--- 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 a49ddcc98..d124d70c4 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 eaf3bea2a..000000000
--- 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 7b085f7e9..a35d108cc 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 8452dda66..000000000
--- 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 2f51d1608..2cdc4ca36 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 37652488f..000000000
--- 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 2f2b8b95b..c235d816e 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 a9d00ed6b..000000000
--- 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 ff40ce6dd..12b576063 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 2bd1d1ab6..000000000
--- 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 d65bbe6b4..d6ed12ba0 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 ab364563c..000000000
--- 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 f4704415f..44104bf91 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 0d15e26eb..000000000
--- 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 c89a4b047..af32574d2 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 126ae3ce2..000000000
--- 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 5e5b7ace9..4a5d2f810 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 406a1f977..000000000
--- 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 f1854df2e..38b1ead9d 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 34bb87cc3..000000000
--- 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 bacd66d49..571ec3edd 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 04010033e..000000000
--- 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 b0e63ec97..e6de27846 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 296512686..000000000
--- 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 edef8933f..ea369ac9d 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 23ae49408..000000000
--- 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 22329455b..aac2a923b 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 1f334b84e..000000000
--- 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 86c7561b6..c3605fc9a 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 252a91541..000000000
--- 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 85f3834b6..95e177111 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 9f2f59945..000000000
--- 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 6cf0bf7a0..94bd92c68 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 fc63e68de..000000000
--- 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 4f7a1d0e6..a9e6b261e 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 d7d7ec5da..000000000
--- 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 12ef16073..451aee607 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 c1d090d42..000000000
--- 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 5b36e8332..634ab4da6 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 cc5362a76..000000000
--- 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 2b4a844c8..6c6e029ed 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 8f0cfa355..000000000
--- 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 f556a05d6..535ecbb5a 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 fdf9aa18d..000000000
--- 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 ef614e9dc..edc284452 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 a10739471..000000000
--- 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 13648574f..9e06fc27f 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 7c54198ee..000000000
--- 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 74fee72cd..97b4c633a 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 3bfde0d4f..000000000
--- 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 8d13599ba..7e8c605cf 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 2e417f752..000000000
--- 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 aa5faa95d..e8d1b5e5b 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 7d0e648db..000000000
--- 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 2733a7204..baeaf1468 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 64d026328..000000000
--- 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 7f07484b7..08235a2a5 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 944e7e902..000000000
--- 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 6a669b391..e6faa75e3 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 9e01c0244..000000000
--- 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 882bed57c..7c898fc69 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 c902c2307..000000000
--- 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 d44b48cf3..ab6b7b85b 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 7a9570b49..000000000
--- 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 c6fa00c07..711568020 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 9e6095e21..000000000
--- 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 5d3e8dfe1..8d7e0902f 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 713c1b7a8..000000000
--- 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 06f9e6ffd..53cce3054 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 b5358e0e3..000000000
--- 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 46c2b5c48..3f41c0d45 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 45d50587d..000000000
--- 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 c9c9319ee..afc793bfa 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 7710f4e68..000000000
--- 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 55e985530..50bf51761 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 b0d7444e4..000000000
--- 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 26d809c19..ce871f26f 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 23e3a45cf..000000000
--- 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 482ed3e78..d798561c9 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 7d7e8ab07..000000000
--- 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 178b5e132..5afb646d8 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 cdce4d97f..000000000
--- 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 7a7b32d91..f88581d4b 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 b3190a22d..000000000
--- 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 8d5ad6ed9..5586593c1 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 00acdd79e..000000000
--- 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 bbc595dca..7ab2813e4 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 cf796c65a..000000000
--- 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 21fe07b82..c9ebcf259 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 95ee8a11f..000000000
--- 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 8d8ced346..af183f433 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 dc49d4954..000000000
--- 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 0b9de76ea..87ce7887b 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 69aa10d43..000000000
--- 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 a7c2157c0..32d12f11e 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 a6b0fddaf..000000000
--- 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 a1f081be5..38fe79d5f 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 3f57975bc..000000000
--- 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 85f60eeb0..c926ae9de 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 35508a117..000000000
--- 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 d64a1bf1c..e88e969d0 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 c2d0e2de6..000000000
--- 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 19e58b995..4a014d57d 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 d93785b32..000000000
--- 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 776fe99b8..b6623d610 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 5c8a0d55a..000000000
--- 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 20ecdeb46..5f112de89 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 cd697c735..000000000
--- 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 69323265b..1afe37e83 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 c13988719..000000000
--- 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 3b7ea6220..a869627b4 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 6a54b7f38..000000000
--- 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 76872825b..fcdb343e1 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 6ad2b8171..000000000
--- 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 22792194e..81afca913 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 d633f501a..000000000
--- 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 1f36994fd..41fede1d3 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 217afb31c..000000000
--- 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 680e17a9a..2314fa5f4 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 16597714e..000000000
--- 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 4b829c7ce..911ee6d93 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 9cad3044f..000000000
--- 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 0a6c7e282..fe6363254 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 ca6693af8..000000000
--- 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 8e2b15d4f..d0b39c848 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 584aac0ea..000000000
--- 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 dfed24a39..fa293e442 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 c59e1267a..000000000
--- 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 9a8729d1b..377ddb8bb 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 36d90b281..000000000
--- 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 d3e3da6c8..2c6ba9f83 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 bceda1c43..000000000
--- 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 e2fa70789..c75c06af4 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 1eba3db97..000000000
--- 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 7c7b5915c..58dbae2a8 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 72a36a935..000000000
--- 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 2ece1b576..49f6acd73 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 b1f9c6acd..000000000
--- 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 99937179a..d76935b38 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 4d57f889d..000000000
--- 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 eccb6e561..7220edc24 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 22937bf42..000000000
--- 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 258404006..b9f938d22 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 276c8f543..000000000
--- 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 26c56458f..edb4fcaef 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 9179afceb..000000000
--- 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 f1b38ce52..0ff1c8e41 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 35a9ffb89..000000000
--- 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 ea5d1354a..2f9ee4b08 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 53b88eb1c..000000000
--- 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 57711d1b4..41f70a1da 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 458988939..000000000
--- 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 8ba3f2a2c..8d7854bf5 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 a2dd72a09..000000000
--- 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 86db830e9..985859cc0 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 6a22c7036..000000000
--- 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 780cf0dba..e78576f3a 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 e9ca00485..000000000
--- 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 3fb69310b..7477f0150 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 c726c83f2..000000000
--- 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 2c408074b..8a42d2c5a 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 46c26a64e..000000000
--- 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 aee5bf18e..a9fbf4145 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 33f847695..000000000
--- 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 14c09c94b..b5aad3429 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 1bd54db39..000000000
--- 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 c56febb76..e0f25a796 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 79549ab72..000000000
--- 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 34e7f6189..0d6098f8f 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 63b60ee22..000000000
--- 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 70ba1116e..796f226a5 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 9d2918783..000000000
--- 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 625974ebd..853a2bff4 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 57fe064fd..000000000
--- 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 8b01adfcd..efc827c25 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 aecf28aa4..000000000
--- 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 44d45f32a..cd4727ce8 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 330ce37e6..000000000
--- 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 adc3c4090..ec3dd6b2a 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 0ee74585b..000000000
--- 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 51daf537b..04f7afece 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 2c6c8b9c9..000000000
--- 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 1911f9317..456bc3f30 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 55a4ab174..000000000
--- 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 134c3e666..fd1a060cc 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 298e20a7e..000000000
--- 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 f616b98f9..b5211ee55 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 354231307..000000000
--- 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 be2c50f08..2f1a4dd17 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 ec0cbe397..000000000
--- 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 239158580..d2d750d56 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 92d1a1083..000000000
--- 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 db79be13b..4149ef0c8 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 0c818740e..000000000
--- 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 4a750572d..48f9e655e 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 41fb9af4b..000000000
--- 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 d12579f2c..e60ab056e 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 b203ce818..000000000
--- 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 d4b6ea6fd..150e79867 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 ee33803f3..000000000
--- 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 71790bcf9..eb9c559aa 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 3020cebfb..000000000
--- 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 e39d96c03..aede9ea4c 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 766e1ddf0..000000000
--- 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 8d2173c43..bac18749a 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 0c686ed8e..000000000
--- 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 2a14f4154..4d0ece7b7 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 d6eabc82a..000000000
--- 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 9087cc0bc..28b315281 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 5bc9ccfe6..000000000
--- 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 80c338ffd..8ba4be0ec 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 69d135c70..000000000
--- 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 eb198569a..ffc181c9c 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 15f6d6c7d..000000000
--- 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 295529af9..67bd0e681 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 64bde2fb9..000000000
--- 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 2998f3c2a..af06a9c4c 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 e02e7b87b..000000000
--- 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 79b90dbd4..c590bcd51 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 1234433f2..000000000
--- 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 7e6893f48..f2c896cb4 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 3aea52c90..000000000
--- 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 ac9414a39..1e478aab9 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 b5ea960b3..000000000
--- 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 d9632b6f9..ceb6df325 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 425be3a5d..000000000
--- 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 b0a1ca444..a80ec04b4 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 4c5df662e..000000000
--- 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 42dbc1d30..120604ca2 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 27081c48e..000000000
--- 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 3aacd63a7..f6f1ce7bc 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 b1d698864..000000000
--- 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 7789f2d6c..3a1684bc0 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 7d9c662aa..000000000
--- 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 c5c69bfc6..e731ab35d 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 51895aaf3..000000000
--- 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 539a3d660..e42aaf8fa 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 3ad733aa7..000000000
--- 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 a1549c9cd..10a0abe0d 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 fed24c8e7..000000000
--- 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 581290ddd..681ce38e8 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 6b0d9caa9..000000000
--- 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 664ce5157..dd3060b59 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 2acc6b228..000000000
--- 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 d156e1ad8..d8d19271f 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 8aaa528fe..000000000
--- 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 cc67c6f7b..188e7888b 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 49fc03b27..000000000
--- 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 e94f318a9..17dfbbee9 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 a1e6f4f36..000000000
--- 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 48a7297b1..ce918f3f7 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 1ccf487cc..000000000
--- 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 304513161..950ef09fd 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 999cd91bb..000000000
--- 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 bbf68c155..0ca7a9ddd 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 db0760e60..000000000
--- 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 ef80bfc00..04913b749 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 6c67dcf42..000000000
--- 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 682181438..55e2ab003 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 968c828f9..000000000
--- 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 65fe4ef62..07f857b10 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 600a93a5d..000000000
--- 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 08248a7d8..7c0947941 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 d138b72a1..000000000
--- 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 f633678a2..6b085fdac 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 ca5e619ac..000000000
--- 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 32af1c77d..f3958d493 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 ef133b001..000000000
--- 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 598ff405b..bd93d9dfd 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 fe23cd76c..000000000
--- 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 0be889f76..c05a7348e 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 b032b53e7..000000000
--- 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 9e7bbc08c..a74832104 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 866d5ed2c..000000000
--- 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 d3910dc68..07a0a70d9 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 1288d6ef4..000000000
--- 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 f264c9012..abc95c463 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 e9d4f39ca..000000000
--- 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 2c7571afc..a12c06df0 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 4490bfca2..000000000
--- 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 9eeccd44a..6b02275e1 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 e93f00e94..000000000
--- 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 360594c24..ce47b9ba3 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 0e1b1712c..000000000
--- 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 9a3504c99..ffc309466 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 155722dca..000000000
--- 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 7b5be98a6..4f2f9aaad 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 e0ec64651..000000000
--- 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 59c510de3..baf890961 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 e85dd10d5..000000000
--- 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 995c840d4..1822ce587 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 78e8d8cc4..000000000
--- 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 6d75f7e86..cb93d325c 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 eb80607df..000000000
--- 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 6c84abace..f685bade0 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 a6a5870d4..000000000
--- 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 a927614af..f21f4a4c0 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 b7b47285c..000000000
--- 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 f4ef29d50..9e7208773 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 e72093223..000000000
--- 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 79929ae84..9ca1a74d0 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 00b4b25b7..000000000
--- 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 f12ecea14..f83c325f6 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 16992f45c..000000000
--- 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 d2584449c..6bef274aa 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 cb76cdcaf..000000000
--- 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 0ac82b0ec..ff3d7cbd9 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 76e6106f2..000000000
--- 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 466b4af33..ae8283809 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 d8c4c2caa..000000000
--- 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 344ea0848..c09c656e6 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 0a30a508d..000000000
--- 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 9aad21777..725e84d76 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 29764bad0..000000000
--- 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 dc6501ce8..bcdc2a35c 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 7a3ff6dd7..000000000
--- 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 665ae0af9..b01fe7db2 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 90b25c084..000000000
--- 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 351a82d46..efba501d6 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 6175466d3..000000000
--- 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 c629212de..4acc822d1 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 01ad5f278..000000000
--- 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 16c4f4872..b126e880d 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 c4b2325c3..000000000
--- 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 955aff395..baf802627 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 1ea6cb4c4..000000000
--- 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 da7fd2f5d..11a2c2d8c 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 93526e6f8..000000000
--- 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 4bd76f08c..fffb46c10 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 e46746d52..000000000
--- 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 9ab88b3f5..cf0e607e1 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 bde96d4ba..000000000
--- 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 d3578d84f..30dce4ad2 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 051f8868b..000000000
--- 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 4cb6781e3..061f7bf90 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 7339c42fc..000000000
--- 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 75ec45ece..db37d00b3 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 0a5f8cc09..000000000
--- 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 28ee6cdb5..22f77a675 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 2b4a8a658..000000000
--- 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 25ca43f82..87970cb32 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 3ad2e2074..000000000
--- 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 90949ef3c..fc1889f36 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 aaf67f376..000000000
--- 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 8c2336ad2..e028a70d8 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 42c026cf5..000000000
--- 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 d22cfcb02..1ed29bc6d 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 b08eb6777..000000000
--- 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 b7024682e..2f90d3ef1 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 696bedbd4..000000000
--- 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 6f7dc3107..3d69a3bb5 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 997499f33..000000000
--- 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 7cc0b9496..bc868699a 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 fa448c3fb..000000000
--- 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 b5daf472d..02e847bab 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 476d15c7c..000000000
--- 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 8f1e662ef..7f4b15421 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 a64d91200..000000000
--- 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 01ac152c9..7ffb5c84d 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 0682e6e61..000000000
--- 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 697f6c2f6..62faca0f3 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 c87bd81a8..000000000
--- 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 4ecc4d984..6fae6b447 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 09e614bb7..000000000
--- 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 498117dde..22d008d21 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 5a8b9ce93..000000000
--- 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 ddb29122b..1c64db068 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 8b5c0cfb9..000000000
--- 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 b91576204..dcf67b8a8 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 580af7057..000000000
--- 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 a8b1b218f..eb29f6064 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 7ec16d959..000000000
--- 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 0ed1cdd57..ba7cf0c72 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 1d52ac89f..000000000
--- 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 f9b0c4951..10d5935cf 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 a6199d1c0..000000000
--- 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 4c73a47f5..8c54c7119 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 68268e0db..000000000
--- 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 d749fdeb7..873d2f908 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 9d705e9c6..000000000
--- 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 05d6fa926..bd8831985 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 50430cfc9..000000000
--- 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 034077b02..b6106c2fa 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 5938a640a..000000000
--- 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 4a7154f3f..398fa25cf 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 d3c38700d..000000000
--- 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 33b764343..799d22636 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 c86129b6e..000000000
--- 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 d6b38437d..4658decd5 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 47e8b81dd..000000000
--- 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 4f656cd56..f57f50374 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 5424163fb..000000000
--- 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 82fcdf5d8..9ddc4af10 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 31f203210..000000000
--- 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 c10bdb34f..d37954156 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 3c8cb9638..000000000
--- 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 d5091004d..72b825eb5 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 148af4360..000000000
--- 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 b218ded38..a86d14744 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 8feb39474..000000000
--- 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 0673ec267..6fcd9524e 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 b401d65cc..000000000
--- 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 3677cdaa4..e90308829 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 a84753880..000000000
--- 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 4418669bc..593d29e92 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 ebfb2690b..000000000
--- 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 18c864c63..1392e6f0e 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 377ab37e6..000000000
--- 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 fdf1ad44f..c0d0369f0 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 eb0996112..000000000
--- 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 74fec64e7..8a8a34416 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 ce43847de..000000000
--- 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 c5994227e..540fd79d1 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 e8d005c01..000000000
--- 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 d532d8585..02ca6acc8 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 6b9063d0a..000000000
--- 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 046b7fd5f..c937a9c8e 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 336c74eee..000000000
--- 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 432f866e4..979628864 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 69eab2a08..000000000
--- 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 f20daab18..117f20b90 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 531fcd89a..000000000
--- 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 649e046ea..08e25f3a6 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 d109cdea9..000000000
--- 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 04e8ba0e3..f90d508ed 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 4747f2e1c..000000000
--- 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 e1c3d67a9..9278b478c 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 f11fe0399..000000000
--- 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 f858acc96..15debe978 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 5d0d1d494..000000000
--- 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 f1a13a3ed..af00ce765 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 a5de3725f..000000000
--- 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 43b38c991..8d2b638e0 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 85c219b2e..000000000
--- 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 47df0fe20..b9f3cb5de 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 4e535aba2..000000000
--- 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 eecf5a661..1ecc56985 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 76ea31b5c..000000000
--- 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 0dd4318c5..5aa4c8ec0 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 7d0536ada..000000000
--- 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 f26386cc7..a3bbd364d 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 e2c5645ec..000000000
--- 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 d0f7a4b2f..127c503b4 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 833389622..000000000
--- 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 8401ce64b..e7dd4fd80 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 b9d9f19c9..000000000
--- 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 021d91845..0e56ecf50 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 804248854..000000000
--- 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 4135f3b28..17a5e831c 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 a04e0b12a..000000000
--- 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 b23d4fc84..d57869d1a 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 470bdc2d0..000000000
--- 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 af19a7bf8..e77b64ead 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 e04abfa98..000000000
--- 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 fb7d18f33..1981e7833 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 925213eaa..000000000
--- 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 d205260f2..6761ae9bc 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 894f27fed..000000000
--- 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 ca2be1a31..96ae55b5e 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 e32fe2a47..000000000
--- 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 8c0fdf0b7..33fc76798 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 d43a7b3e2..000000000
--- 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 eb4efca7c..ba89e5b0e 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 810a204a0..000000000
--- 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 86252378b..f6f6ccd68 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 e282ba3ed..000000000
--- 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 a37c13025..ff05bf055 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 05a84b9a1..000000000
--- 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 837734111..47b9fa82f 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 ea623f6b1..000000000
--- 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 f2cac642c..9f0d86129 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 0ab46bd0c..000000000
--- 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 83d8b58b0..11a70c618 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 708d7c853..000000000
--- 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 35966fdf6..c8a284b75 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 754aa17b7..000000000
--- 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 9e00234ec..e001804ce 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 90f062ec2..000000000
--- 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 7ca18efdd..336b2e728 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 d087eab80..000000000
--- 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 5c5d8cd5d..d85aba1fd 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 84b26e794..000000000
--- 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 ae50fe17a..c11f27ef4 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 b7189597f..000000000
--- 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 746c00cef..c95cb4fef 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 c8b6dfa92..000000000
--- 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 2d0b16d51..049fae3fe 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 052e98fd8..000000000
--- 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 dc0302bd4..c1612ab14 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 9d1b8a3c7..000000000
--- 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 f250a1256..015e74da4 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 851718212..000000000
--- 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 53102a609..bd06fd94d 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 042de925d..000000000
--- 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 78baf6bf5..2fb9e5e50 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 11d4d536f..000000000
--- 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 0da5361c7..f8ff81ea8 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 9ba9088a8..000000000
--- 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 dab185015..313bfd40a 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 a5fcb9a4a..000000000
--- 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 d7ed97c49..7c53b1d31 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 0b193b51b..000000000
--- 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 e18bc9f0a..f541d03a2 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 aa9e95f1a..000000000
--- 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 790ea4526..625945390 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 eebecef2d..000000000
--- 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 2048c9602..64e919574 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 e07d7080b..000000000
--- 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 ec208335c..02260bc28 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 4cf761ba2..000000000
--- 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 6db7ec291..76bc8c5d4 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 70307093d..000000000
--- 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 b6cc7b8fe..d4ff54023 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 e6503f7b7..000000000
--- 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 f5281ca92..4bddd6461 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 70ef61e90..000000000
--- 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 377c9fb9d..6804556a6 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 57a4f48f2..000000000
--- 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 39db30316..c9b931b71 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 26350ae95..000000000
--- 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 00d79e3d9..6042bbdc4 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 14f261df7..000000000
--- 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 61981b90a..01cca9a77 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 84348edd3..000000000
--- 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 ce19e8dec..d85691ec6 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 e6c65ea09..000000000
--- 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 ecc78da38..2ca1fc98f 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 264921651..000000000
--- 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 7b926c716..499104ecb 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 f705cf693..000000000
--- 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 a8fba6938..72b02c748 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 44dba4399..000000000
--- 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 93710b1e0..786736a85 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 f570a0dba..000000000
--- 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 79c359296..088ad16ea 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 7eb3d2360..000000000
--- 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 b26aaf761..3856f2024 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 1be754f15..000000000
--- 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 2148cd928..e23d16f5c 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 139098e8b..000000000
--- 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 989f51d57..1704c52bf 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 4f313edb6..000000000
--- 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 2fef97dd8..cb985dd3f 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 dd9b7d6ce..000000000
--- 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 aa825c4ef..096764f76 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 a500ff37d..000000000
--- 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 65319cff9..0b161ba0f 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 cdc6491fb..000000000
--- 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 802b83bbc..7a2e5491c 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 6ad5e99fa..000000000
--- 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 6f2f27dbb..c67eae171 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 ef81ad2f5..000000000
--- 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 61df75009..01abafb19 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 309495e01..000000000
--- 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 43a4d1d90..d1ea0014a 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 de1575efe..000000000
--- 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 1e9ab5eaf..ab8cb9839 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 0deeb5942..000000000
--- 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 d78b8cb2e..5a176ad62 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 221bfd5d1..000000000
--- 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 89945e68e..63f2e8fa5 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 3e2089cee..000000000
--- 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 bb9226c4c..10674b1e1 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 602194109..000000000
--- 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 b3f324650..f87f636fa 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 be88846b4..000000000
--- 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 9d85193b8..facf6c2fa 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 7766ed159..000000000
--- 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 c99dd722f..4ef4b71d5 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 143bbcc9b..000000000
--- 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 90a6286b4..70f7066cb 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 129c419d0..000000000
--- 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 c89728d23..e713ee17e 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 665587e9a..000000000
--- 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 4c0797300..0d4ddfd4a 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 f787cff89..000000000
--- 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 0960b9f9f..6274acaee 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 0f7edb7f1..000000000
--- 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 61b7c8599..7dbfafd7c 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 9a09f0866..000000000
--- 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 ac790e9aa..b57dfdcdd 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 04b891cd4..000000000
--- 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 bcb972197..767ef8496 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 4d7a2f0aa..000000000
--- 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 bd1836c1f..be6ee9873 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 09b3ccfb8..000000000
--- 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 81a9b3bd7..03f10a25d 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 2155db362..000000000
--- 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 751fcf607..5e3395f9c 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 aebdc3178..000000000
--- 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 3446649b6..f034429a3 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 e4ee7fead..000000000
--- 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 2b7291984..d66e57114 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 a3d79e874..000000000
--- 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 3e4db75d2..f6f288dc5 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 c219ea6c5..000000000
--- 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 670c1553d..a97546481 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 b97913cb1..000000000
--- 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 bb9e9be73..3c3833e0a 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 69492f2e0..000000000
--- 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 7a5257748..fba7c82e8 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 429b0ccce..000000000
--- 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 75648bf7d..3e123f0b1 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 90c0da188..000000000
--- 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 3a1817d5e..4b58a56fb 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 d13df581f..000000000
--- 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 35d879e2e..f0c3776d4 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 9df8139f4..000000000
--- 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 46c1a78b2..c2c2e7bb3 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 c92eb8349..000000000
--- 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 778a5eaab..878f7df53 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 23bc4d000..000000000
--- 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 d44dd22e3..ecfbdae14 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 b2ea1dc0f..000000000
--- 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 6f379fb18..bdcb49f92 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 6d8a56fa9..000000000
--- 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 3722d1475..cb71784c3 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 f5ea6ade8..000000000
--- 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 c9c8fa5cd..7535c7754 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 3cbaa9366..000000000
--- 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 fe3244d41..85dd10cb1 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 9e6ecd37c..000000000
--- 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 f1b7208c8..67caff691 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 f2f002c5d..000000000
--- 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 532567f7b..e12109636 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 79a61f275..000000000
--- 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 15887ff35..e299463c5 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 518fc5f54..000000000
--- 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 03cb42299..47677fdef 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 d08d8f40a..000000000
--- 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 5326fa816..183bb5bf7 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 8d494c0a9..000000000
--- 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 ece578f56..d01e534b6 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 4acfc7018..000000000
--- 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 83f95ae9e..133418ca2 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 c8acee304..000000000
--- 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 72d6a647d..dbe24fd91 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 28b06d7f0..000000000
--- 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 749cec04e..fd73ec076 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 c91451477..000000000
--- 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 aa27ef034..5c15ce8f0 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 e3dcfdcfe..000000000
--- 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 44b6a5feb..1f8b58b5b 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 4776a792a..000000000
--- 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 6fdd83a80..8f6dddb31 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 a7a2c0b9e..000000000
--- 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 a2d13b35a..78ba06db9 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 f57629038..000000000
--- 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 8292be2eb..ba10d39fd 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 50abe4f82..000000000
--- 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 9ddfe3477..7f604ff16 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 9e9164bbb..000000000
--- 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 08d57b52a..04e279ed3 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 94d639f43..000000000
--- 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 359d54169..b30c74784 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 fb47aaf19..000000000
--- 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 533116fc3..a9ae6e2f0 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 54a41ace0..000000000
--- 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 977cedac9..f18ccbba0 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 cce180c0f..000000000
--- 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 ea9978d4e..bc1bbefd0 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 a724e0e01..000000000
--- 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 4dd344aff..a78d9402b 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 343f839d5..000000000
--- 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 1ab57f476..9a9cb86da 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 9901359d6..000000000
--- 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 b90cd0ae2..7cebe26cb 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 eea61ddc8..000000000
--- 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 53dfde1f1..0ce1e7686 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 0e6618bab..000000000
--- 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 91ea59f9b..ac41dd5c2 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 aa9929012..000000000
--- 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 cd6040b5c..63a09bd1c 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 ee566ab60..000000000
--- 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 63f5a6337..98b1840c4 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 ae8ff658f..000000000
--- 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 874d2afa5..77e708496 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 0465619cf..000000000
--- 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 89ee8a03b..59b646c57 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 658f0a3cf..000000000
--- 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 59594dbb8..76320a7b7 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 eff12b3b0..000000000
--- 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 6fea4cd7c..bab1abd69 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 9453b439f..000000000
--- 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 3963ba782..77966b988 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 e33faec44..000000000
--- 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 b2fcf51fc..594101ec9 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 0cf8d4c30..000000000
--- 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 f8b7ce2a5..5143101b3 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 d1cd23649..000000000
--- 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 8372c65d1..40d20ba02 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 88f35d36a..000000000
--- 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 6b787c89c..ae5c267eb 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 06494b2d1..000000000
--- 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 023cb4ac3..4894d384e 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 743431bac..000000000
--- 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 c43c009a2..7a630ae73 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 1d1efba77..000000000
--- 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 b6ee8cd11..bb94bae07 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 808fab74f..000000000
--- 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 7f3d088f6..703ed1a5c 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 3e33b48a1..000000000
--- 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 b468e88b0..79e061831 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 4d8a47bc3..000000000
--- 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 f8978f7a0..444f5c951 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 8232c805a..000000000
--- 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 4733bfcc1..ed73f509c 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 3f5cd0337..000000000
--- 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 977ce0bec..74007c36a 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 263f8f5ca..000000000
--- 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 17bd3f691..c7564f87a 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 80b2c65d7..000000000
--- 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 b1516f26f..260311581 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 512ab4d59..000000000
--- 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 3341aafc4..b77283fa9 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 9fa452a81..000000000
--- 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 011780fd6..931fe3e85 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 f9e922e3d..000000000
--- 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 9150fa6fc..31368657d 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 50234e513..000000000
--- 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 17a1551d9..0d1a32ef2 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 1ebd08fa3..000000000
--- 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 855bce89c..762cd99e3 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 7e19af8a7..000000000
--- 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 a63eb8c33..b3469eada 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 0aac8463b..000000000
--- 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 b366f363f..5b24749c5 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 777d9ec55..000000000
--- 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 7c6d99d41..e0b71d774 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 c93d44a75..000000000
--- 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 32022234e..c51ac6cb1 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 99c603d01..000000000
--- 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 e62bc5123..1ba086426 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 5ef33abf5..000000000
--- 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 40d69d267..035e0af27 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 edcdb5e5b..000000000
--- 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 e2ab9443c..2e6689311 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 dbfbeeb53..000000000
--- 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 e0f043bee..fbfb4275b 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 6bd451e12..000000000
--- 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 779eeaa8d..8210363ab 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 848a91184..000000000
--- 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 e056dcb31..f58fea57e 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 6ff33112b..000000000
--- 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 6e44f0a63..9c08cadc8 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 5f9854022..000000000
--- 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 35d2d158d..3b472843c 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 ca3acea5e..000000000
--- 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 b79027590..2d22973c3 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 5f0fd02c8..000000000
--- 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 1a57155ec..85ccd6056 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 50ddb1400..000000000
--- 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 805045fea..4990b3b85 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 c22719b79..000000000
--- 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 e2a330e37..57b2363a6 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 64fc35309..000000000
--- 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 6e008a7b4..8361b13c5 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 0f9db1b7d..000000000
--- 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 f63032b13..d1dee3080 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 4d445c778..000000000
--- 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 9d3c1515f..838bc5b3f 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 d812db02a..000000000
--- 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 fdefaa248..61dd2a719 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 8730d155f..000000000
--- 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 422dd5894..5ed43905a 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 c1b831455..000000000
--- 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 2439617f8..0e342c003 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 15f69d4fe..000000000
--- 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 64fcbf5b6..3d347259e 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 64001f104..000000000
--- 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 4ba9a6da3..02dd8c88d 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 a56dc2a88..000000000
--- 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 a8a5206e2..75a0e9ebe 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 f4cea3530..000000000
--- 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 10c3a3ad2..5495eb3c1 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 6d815e310..000000000
--- 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 e97130c65..64e259caf 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 2eaecd4ad..000000000
--- 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 2759ba155..6674f5492 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 d78042d17..000000000
--- 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 ff8232221..5a884a37a 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 d13f139e9..000000000
--- 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 42ddf525e..9eff62134 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 d81cd81c2..000000000
--- 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 3c19ff403..6221ace83 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 a3c8a5495..000000000
--- 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 3d9479d7a..99fff0be2 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 0d9998742..000000000
--- 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 3aa0a16f3..fa9a49864 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 cc0832d66..000000000
--- 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 5166d5172..e2d29727f 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 c73b72ab1..000000000
--- 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 92cc094f9..96ad0536e 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 e7b3ff7fb..000000000
--- 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 88e8bf441..d08570b47 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 431ea40b6..000000000
--- 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 46198d96a..2abbb43d7 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 fd0bf6bd0..000000000
--- 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 f9608698a..553180a44 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 d64dd6803..000000000
--- 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 e3de995fa..3a7c6595b 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 8944118c2..000000000
--- 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 0465ed9a6..517e001f6 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 f08ed4ff1..000000000
--- 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 947cae64f..5678aa1f0 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 b15077986..000000000
--- 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 77eee156c..32a397e84 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 0be6945d3..000000000
--- 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 54927f150..c98a447d8 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 fc10e488b..000000000
--- 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 5c49ff64d..5ea41cfbf 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 4fb280b19..000000000
--- 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 9c7031ef9..36a8e65b6 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 1c33235a3..000000000
--- 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 ec9adda9f..90e88cb3a 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 6adaa162c..000000000
--- 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 a604e71bb..59297408a 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 539d017aa..000000000
--- 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 fa20ec793..6a51718ef 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 4235d5200..000000000
--- 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 8bb750ab3..5067a79ca 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 7a9a199b3..000000000
--- 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 14d780c43..d29bf211a 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 fa843b4c5..000000000
--- 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 07a78d072..279dd7d5b 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 20dca79a5..000000000
--- 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 c070851ac..982abca98 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 8c6ee8c7b..000000000
--- 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 7307522e2..d42d1842c 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 8c9fe230a..000000000
--- 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 2083c529a..92dd8a732 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 c64813f50..000000000
--- 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 5a455a3d2..0e04d16d2 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 18d944927..000000000
--- 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 1abe0ccec..f8611842f 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 4e275fb41..000000000
--- 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 81d44661e..bbe2b9570 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 60f9a76f4..000000000
--- 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 2216ec591..1d71d205f 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 00fc9c8a5..000000000
--- 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 40df27599..69d10ba2e 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 cda45b759..000000000
--- 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 e5f9fb89b..dff8d1f95 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 a66ec504e..000000000
--- 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 c305296c8..b177020cc 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 ba2a6b038..000000000
--- 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 9b7b1be81..fc03fa337 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 4bf10b025..000000000
--- 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 a254c588e..727a1d71c 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 07f2c32be..000000000
--- 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 89ab5a17d..de813cf8b 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 3836dc16e..000000000
--- 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 22ffb0371..8a5396248 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 5970cd748..000000000
--- 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 d6efacf9d..6d10fddf3 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 ddda08f46..000000000
--- 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 16fa16048..c6def90fb 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 6d6031aed..000000000
--- 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 9ff25bca6..709462170 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 44b141327..000000000
--- 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 a057ee78f..db44541a2 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 8c5ec5e79..000000000
--- 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 c54e76772..f48cb9850 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 7e309a304..000000000
--- 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 d2e4bd7b5..215312c32 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 28082220b..000000000
--- 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 f7772d07b..e056bb8d9 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 0fe89cdbd..000000000
--- 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 58fa87435..490253011 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 066b172f2..000000000
--- 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 fda3a9870..9e2948723 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 3af1e32a8..000000000
--- 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 9056db303..ce6b87d42 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 bd691d36f..000000000
--- 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 89f8d86f5..eb78313b8 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 9ef000ba6..000000000
--- 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 8fca5e132..048f66b27 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 99981c9c3..000000000
--- 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 5df34b800..480d7563b 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 c2991578d..000000000
--- 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 ed9a5ba91..26168bbd3 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 044c86aa2..000000000
--- 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 81c953fd2..4dc92e608 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 c5bc609fe..000000000
--- 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 debef701a..76cb16745 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 54d02a61c..000000000
--- 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 3595f7d49..10034c91e 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 167a9a5b0..000000000
--- 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 8f17ad7af..4bb4f42d9 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 d1843e74d..000000000
--- 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 6548aab63..45c808c9d 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 feeafa76c..000000000
--- 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 71f702a16..322d75ef6 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 f2c5dcb52..000000000
--- 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 ec287355a..94c2deaa6 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 428408504..000000000
--- 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 d10c8b0b7..78d8ad639 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 2309cf121..000000000
--- 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 2e610065b..4a74a7cd4 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 b03ee68ea..000000000
--- 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 ef9562557..1ffe5369e 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 6f07a4631..000000000
--- 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 16bead4e7..db4475395 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 087191ced..000000000
--- 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 cc978da35..5d0b83f46 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 c004a1df7..000000000
--- 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 eb96540c4..10754dada 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 84e43dbdb..000000000
--- 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 5431e7a0c..8fe01e55b 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 13d98e050..000000000
--- 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 2d04ce775..d25dfa5cb 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 5237be6f4..000000000
--- 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 acda429b1..e49906cdb 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 7bde7f9f3..000000000
--- 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 ff580f923..47e30a5f2 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 5b2bcfa06..000000000
--- 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 d1d38d26e..1d07d5405 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 851918c4c..000000000
--- 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 4ee451b21..efcb2fc3d 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 8d3289772..000000000
--- 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 c5e201bb3..9d9bf4f45 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 511e73e64..000000000
--- 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 40f09cba2..4dc4d536b 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 a79238b68..000000000
--- 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 15261ee48..d802df26b 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 95ad97a73..000000000
--- 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 df7ef741e..37cc8f77a 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 334d605d0..000000000
--- 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 84bd6964e..da56984de 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 077ad93f3..000000000
--- 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 0f8dd4119..8e06f9135 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 9ab8dbc55..000000000
--- 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 297bafa88..ac398d309 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 6806ad746..000000000
--- 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 ecbfd3a7c..968455cf0 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 c0ff390fc..000000000
--- 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 ae830be86..281530b7a 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 152c7bc68..000000000
--- 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 10575a262..c09ed5b55 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 0a96ae224..000000000
--- 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 18d104dfe..c5c81ea44 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 abe8ed801..000000000
--- 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 f249b91e9..bb046a703 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 e27c8d3de..000000000
--- 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 61bf04fb0..f275739b6 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 34c94fa60..000000000
--- 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 346ec5a4d..01e5293cc 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 60f514285..000000000
--- 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 2263d5691..39997d001 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 028ba342f..000000000
--- 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 cbeb1a41b..5acc4fc26 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 0b727edf0..000000000
--- 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 fa40aba4a..9c59a9185 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 d3e01b9d2..000000000
--- 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 987043c62..d681a86fa 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 da5da7ea8..000000000
--- 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 32fdf8ac8..9dd8e82dc 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 f30cd9037..000000000
--- 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 09a4930c3..9c1067bde 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 75c110d09..000000000
--- 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 9e42de55d..9b32ec98c 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 a2bf761ab..000000000
--- 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 afe525834..1830a598a 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 fc0ebef8d..000000000
--- 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 4bded1f7b..7a411c498 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 75447794d..000000000
--- 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 4c1690f5a..eb4b59cec 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 bfa840527..000000000
--- 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 bb41bf694..5c5ca8af2 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 09cc6a4ee..000000000
--- 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 fdb2ab8c4..1db3d672f 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 7d8a4d62c..000000000
--- 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 91754c56a..89524f729 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 bd1527277..000000000
--- 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 1d53f5fd4..3d83029fa 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 42ae94be7..000000000
--- 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 19020d8a8..3889f1c2a 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 300e58a6d..000000000
--- 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 5591a6676..b1c4a7d8b 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 1d20e4977..000000000
--- 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 d17e865ef..5639218b1 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 c807144b6..000000000
--- 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 a3430677d..84d2b916a 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 ec7a663cd..000000000
--- 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 cd1edaafa..21dcd3452 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 ce1fd5b8c..000000000
--- 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 6eca02b45..16242adec 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 a395e6467..000000000
--- 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 d46940a66..f209b6d38 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 da646d5e9..000000000
--- 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 767cc8084..28bf65927 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 3f2279e02..000000000
--- 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 1244c273d..5b481c4db 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 4056c1bae..000000000
--- 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 6dd8a32f0..4493ce028 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 3435fd179..000000000
--- 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 5bea59c15..31e06dbd8 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 c4160892b..000000000
--- 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 cfaca8301..37ce6d72e 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 9d481a4b5..000000000
--- 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 038166a32..f6b583b12 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 7e773d271..000000000
--- 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 e6ed4bca7..35fa07d1b 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 bc7004c4f..000000000
--- 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 343614f2d..1f9de617f 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 32395fbdd..000000000
--- 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 0bf6ef8cc..dc48d1d30 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 3b79cbe1a..000000000
--- 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 a7c90f2e8..d9f4c6875 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 bd27019ff..000000000
--- 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 15e33e1bb..a6a5df313 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 6e1a179a3..000000000
--- 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 e9cbc0b1b..b2b8eed0c 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 a63f895bc..000000000
--- 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 35ad2ad69..a476d2647 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 22f12e930..000000000
--- 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 d320ed836..de2c980e9 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 c57fbb1f4..000000000
--- 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 eb2e514f7..532b8387c 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 dbaecde7f..000000000
--- 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 f59d6c267..25bb9333c 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 51e892b14..000000000
--- 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 e106031ea..7c4e894bf 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 b2dd23b9f..000000000
--- 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 1511cda11..a0fcf55de 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 b5be58fd2..000000000
--- 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 a2d050774..03afa2af3 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 0863301d9..000000000
--- 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 b3e6cc0f2..2716e52cd 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 14693e88b..000000000
--- 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 9bf3bb1f1..3c36b08ab 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 f377b3fd3..000000000
--- 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 11ab36b35..fceb5d11d 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 9a853d1c1..000000000
--- 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 cd182afba..e6359ac5c 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 5b77494cd..000000000
--- 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 abfb86823..c427c5cd0 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 978d20979..000000000
--- 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 85a8d0c62..db66bba1f 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 e496478f0..000000000
--- 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 3b9717864..cdcb6b0d1 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 2b554a18a..000000000
--- 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 ccf291549..82f0b162a 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 ee5c8b492..000000000
--- 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 aa2e6b220..f7babd71c 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 fc13613bf..000000000
--- 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 40a7d3409..0bc8bdb5d 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 ea6cdc0a2..000000000
--- 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 aa906e125..05da90dcc 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 ee7d122fa..000000000
--- 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 a3b032206..a99dc3b46 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 fbe37f304..000000000
--- 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 56f23adca..7232383c7 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 a55ed4a98..000000000
--- 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 5f1c4a1ea..f68060c2c 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 755759d01..000000000
--- 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 776f74a34..90f48a831 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 117a430c2..000000000
--- 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
-- 
GitLab