diff --git a/assets/dbp-signature.html.ejs b/assets/dbp-signature.html.ejs
index 439262de875c9ddad28df0c40f5250b7c1d56cee..183043127f3b4589f0174ab01cf2ee053385bb4d 100644
--- a/assets/dbp-signature.html.ejs
+++ b/assets/dbp-signature.html.ejs
@@ -38,40 +38,16 @@
 
     <!-- Font related CSS -->
     <style>
+        @import "<%= getPrivateUrl('fonts/source-sans-pro/300.css') %>";
+        @import "<%= getPrivateUrl('fonts/source-sans-pro/400.css') %>";
+        @import "<%= getPrivateUrl('fonts/source-sans-pro/600.css') %>";
+
         body {
             font-family: 'Source Sans Pro', 'Calibri', 'Arial', 'sans-serif';
             font-weight: 300;
             margin: 0;
         }
 
-        @font-face {
-            font-family: 'Source Sans Pro';
-            font-weight: 300;
-            src: url('<%= getPrivateUrl('fonts/SourceSansPro-Light.otf.woff2') %>') format('woff2');
-            font-display: block;
-        }
-
-        @font-face {
-            font-family: 'Source Sans Pro';
-            font-weight: 400;
-            src: url('<%= getPrivateUrl('fonts/SourceSansPro-Regular.otf.woff2') %>') format('woff2');
-            font-display: block;
-        }
-
-        @font-face {
-            font-family: 'Source Sans Pro';
-            font-weight: 600;
-            src: url('<%= getPrivateUrl('fonts/SourceSansPro-Semibold.otf.woff2') %>') format('woff2');
-            font-display: block;
-        }
-
-        @font-face {
-            font-family: 'Source Sans Pro';
-            font-weight: 700;
-            src: url('<%= getPrivateUrl('fonts/SourceSansPro-Bold.otf.woff2') %>') format('woff2');
-            font-display: block;
-        }
-
         /* TU-Graz style override */
         html {
             --dbp-override-primary-bg-color: #245b78;
diff --git a/package.json b/package.json
index e3b8bfb7ae7a034d43c3dc370b30ff6daf2b553e..87d9e8955b90dac502283fc327b9cc5214a5745d 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
     "@dbp-toolkit/app-shell": "^0.1.0",
     "@dbp-toolkit/auth": "^0.1.0",
     "@dbp-toolkit/common": "^0.1.0",
+    "@dbp-toolkit/font-source-sans-pro": "^0.1.0",
     "@dbp-toolkit/file-handling": "^0.1.0",
     "@dbp-toolkit/language-select": "^0.1.0",
     "@dbp-toolkit/notification": "^0.1.0",
@@ -53,7 +54,6 @@
     "lit-element": "^2.3.1",
     "lit-html": "^1.2.1",
     "pdfjs-dist": "^2.4.456",
-    "source-sans-pro": "^2.45.0",
     "universal-router": "^9.0.1",
     "webdav": "^3.3.0"
   },
diff --git a/rollup.config.js b/rollup.config.js
index df6e4b0edd29e5117c2624305c3a44501359eedb..beffa361d884aaf2b6d0215c0a5e6dfe0f380a82 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -168,7 +168,22 @@ function getBuildInfo() {
     }
 }
 
-export default {
+export async function getPackagePath(packageName, assetPath) {
+    const r = resolve();
+    const resolved = await r.resolveId(packageName);
+    let packageRoot;
+    if (resolved !== null) {
+        const id = (await r.resolveId(packageName)).id;
+        const packageInfo = r.getPackageInfoForId(id);
+        packageRoot = packageInfo.root;
+    } else {
+        // Non JS packages
+        packageRoot = path.dirname(require.resolve(packageName + '/package.json'));
+    }
+    return path.relative(process.cwd(), path.join(packageRoot, assetPath));
+}
+
+export default (async () => {return {
     input: (build != 'test') ? [
       'src/' + pkg.name + '.js',
       'src/dbp-official-signature-pdf-upload.js',
@@ -290,7 +305,7 @@ Dependencies:
                     transform: (contents) => contents.toString().replace('"Sig"', '"Sig-patched-show-anyway"')
                 },
                 {src: 'node_modules/pdfjs-dist/cmaps/*', dest: 'dist/local/' + pkg.name + '/pdfjs'}, // do we want all map files?
-                {src: 'node_modules/source-sans-pro/WOFF2/OTF/*', dest: 'dist/local/' + pkg.name + '/fonts'},
+                {src: await getPackagePath('@dbp-toolkit/font-source-sans-pro', 'files/*'), dest: 'dist/local/' + pkg.name + '/fonts/source-sans-pro'},
                 {src: 'node_modules/@dbp-toolkit/common/src/spinner.js', dest: 'dist/local/' + pkg.name, rename: 'spinner.js'},
                 {src: 'node_modules/@dbp-toolkit/common/misc/browser-check.js', dest: 'dist/local/' + pkg.name, rename: 'browser-check.js'},
                 {src: 'assets/icon-*.png', dest: 'dist/local/' + pkg.name},
@@ -327,4 +342,4 @@ Dependencies:
           },
         }) : false
     ]
-};
+};})();
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index cff10a527faf7e7bfd5a15bde59dc4fd8f74c955..4ffc3a4e2b238ad19dbbd08a3b56016970d88db7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6222,11 +6222,6 @@ source-map@~0.7.2:
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
   integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
 
-source-sans-pro@^2.45.0:
-  version "2.45.0"
-  resolved "https://registry.yarnpkg.com/source-sans-pro/-/source-sans-pro-2.45.0.tgz#1c013c404dfa48ed18ceaf3e904be21b5a0a124e"
-  integrity sha512-MBbmgyzlD0yCKAvJ4Q86s9BB8yXYld26joJh0DMD53j9aFJZYnFo/B7f4RKXDUfX9I4FyEfdr51lOaVioAOBHw==
-
 sourcemap-codec@^1.4.4:
   version "1.4.8"
   resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"