{"_id":"fontless","_rev":"19-afc86781fc9c33c25b5a1a6ef2f923f5","name":"fontless","dist-tags":{"latest":"1.2.1"},"versions":{"0.0.0":{"name":"fontless","version":"0.0.0","author":"","license":"ISC","_id":"fontless@0.0.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"}],"dist":{"shasum":"beac543fadad62d93f52cd0a468bf5a329c92768","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.0.0.tgz","fileCount":1,"integrity":"sha512-H6dHJdCcUhwgXNQtOr9RQkd84JPDq3SbGMUTzFSCXt3/oeol3umvVswN/83CYZ4ooi47apISIvofg2Pv6lvMuA==","signatures":[{"sig":"MEUCIQDqJRxK4AoO7EHH4ZYXxltT1JkNOL/bAHW6aoUW8M1TZgIgcM/I4DvELBkLnF82E7Ud50KMrXCrmhu1ERQ2p2OVk/U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":203},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"gioboa","email":"giorgiob.boa@gmail.com"},"_npmVersion":"10.9.0","directories":{},"_nodeVersion":"23.3.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fontless_0.0.0_1734609125770_0.4688217166324664","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"fontless","version":"0.0.1","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.0.1","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"695166597a76f4f9611e03a6c178d5b3088491f0","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.0.1.tgz","fileCount":4,"integrity":"sha512-6M/Se6c/yEqqaI3E11EetQ8D3EWV6yM8ghXn9IY/xfT4dP6Xm7FcCuiylJXc7p450QawATDTSXbmd+Vk5GtTtA==","signatures":[{"sig":"MEYCIQDk2Fc7puWRy/c/90J0X7T2334Ke4SKYT/i+iOtaqQL7AIhAO4GmsT7otCxOSLOC7gFTH//Mr2pJkk+A2h1Eu2Wh1em","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35644},"main":"./dist/index.mjs","type":"module","module":"./dist/index.mjs","engines":{"node":">=18.12.0"},"exports":{".":"./dist/index.mjs"},"gitHead":"b44cc4ba9900d78f6f8febd30fa31f23e8055ed5","scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"unbuild","prepack":"pnpm build","test:unit":"vitest","test:types":"tsc --noEmit","prepublishOnly":"pnpm lint && pnpm test"},"_npmUser":{"name":"danielroe","email":"daniel@roe.dev"},"repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"10.9.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.4.2","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","esbuild":"^0.25.4","unifont":"^0.5.0","css-tree":"^3.1.0","fontaine":"workspace:*","unstorage":"^1.16.0","magic-string":"^0.30.17"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.3.5","rollup":"4.41.0","vitest":"3.1.4","unbuild":"3.5.0","typescript":"5.8.3","@types/css-tree":"2.3.10","@vitest/coverage-v8":"3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.0.1_1747833958217_0.9662635106076571","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"fontless","version":"0.0.2","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.0.2","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"7c1ef83fc34ae728cfb9763435773df6ebd1dcdc","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.0.2.tgz","fileCount":5,"integrity":"sha512-duDdbyLChMc7YGnBsO25kwqjWJOxr0Noy3NHJeYkQCUA4MlL+lp4eeNx4X4OLLOpkCVUMu1fN2IZuoGjJJAhXg==","signatures":[{"sig":"MEQCIBnW7vdBM6Y9XbACci+bl9QK3GeLJK1MCcrl7vpYFQ7tAiBMYre799sRWv4eEM9/v2mFjq1DC3HcNO8R5tC41Aqeqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36627},"main":"./dist/index.mjs","type":"module","_from":"file:fontless-0.0.2.tgz","module":"./dist/index.mjs","engines":{"node":">=18.12.0"},"exports":{".":"./dist/index.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"unbuild","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"danielroe","email":"daniel@roe.dev"},"_resolved":"/private/var/folders/48/0bsggqvn049_nfcq7msw2njw0000gn/T/64238bd50b550a12f44514961406b1fb/fontless-0.0.2.tgz","_integrity":"sha512-duDdbyLChMc7YGnBsO25kwqjWJOxr0Noy3NHJeYkQCUA4MlL+lp4eeNx4X4OLLOpkCVUMu1fN2IZuoGjJJAhXg==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"10.9.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.4.2","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","esbuild":"^0.25.4","unifont":"^0.5.0","css-tree":"^3.1.0","fontaine":"0.6.0","unstorage":"^1.16.0","magic-string":"^0.30.17"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.3.5","rollup":"4.41.0","vitest":"3.1.4","unbuild":"3.5.0","typescript":"5.8.3","@types/css-tree":"2.3.10","@vitest/coverage-v8":"3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.0.2_1747840199044_0.3996154698270433","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"fontless","version":"0.1.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.1.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"306f498f5000db5393a973e17137a7e0d026f018","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.1.0.tgz","fileCount":5,"integrity":"sha512-KyvRd732HuVd/XP9iEFTb1w8Q01TPSA5GaCJV9HYmPiEs/ZZg/on2YdrQmlKfi9gDGpmN5Bn27Ze/CHqk0vE+w==","signatures":[{"sig":"MEUCIHW8EeDnOHNGRah6d7xen10hruI+bSe46ZQsXC5GB+niAiEA1PBV/73U0G1K1a3lPd7nw0mh6wH4wmBiWmM1eS8m9U0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38891},"main":"./dist/index.mjs","type":"module","_from":"file:fontless-0.1.0.tgz","module":"./dist/index.mjs","engines":{"node":">=18.12.0"},"exports":{".":"./dist/index.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"danielroe","email":"daniel@roe.dev"},"_resolved":"/private/var/folders/5g/r5lg700163d_r_6t_547flw80000gn/T/2e739dcec13776f68bcdcabc23353b76/fontless-0.1.0.tgz","_integrity":"sha512-KyvRd732HuVd/XP9iEFTb1w8Q01TPSA5GaCJV9HYmPiEs/ZZg/on2YdrQmlKfi9gDGpmN5Bn27Ze/CHqk0vE+w==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"11.5.1","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.5.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","esbuild":"^0.25.12","unifont":"^0.6.0","css-tree":"^3.1.0","fontaine":"0.7.0","unstorage":"^1.17.1","lightningcss":"^1.30.2","magic-string":"^0.30.21"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"7.2.1","rollup":"4.52.5","tsdown":"0.16.0","vitest":"4.0.7","tinyexec":"1.0.2","typescript":"5.9.3","@types/css-tree":"2.3.11","@playwright/test":"1.56.1","@vitest/coverage-v8":"4.0.7"},"peerDependencies":{"vite":"*"},"peerDependenciesMeta":{"vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.1.0_1762464117861_0.9243413750691893","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"fontless","version":"0.2.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.2.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"b7a70854eda2b48aa495d65e568e26f2eb278daf","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.2.0.tgz","fileCount":5,"integrity":"sha512-8s83ExazIxe4b1mkq/fkFMyixcstRwAZ3gj+GFQRuNFJGmwRPiFKmobWMOSWm1zGLeG0nY5vhxyGRzyr2NUxQA==","signatures":[{"sig":"MEUCIGjkCSX/jRPVHF6CDpoT+HT2iPBQgdHu4N37E4Ic3lbQAiEAxV7sB34puJcZvkMuFDCVxvH7LQO2OjQ3ETL2SMy6jsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40689},"main":"./dist/index.mjs","type":"module","_from":"file:fontless-0.2.0.tgz","module":"./dist/index.mjs","engines":{"node":">=18.12.0"},"exports":{".":"./dist/index.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5d63f963-8c13-491e-9630-ff434d541fab"}},"_resolved":"/tmp/448e00746cf60cdca00efca00454d1d8/fontless-0.2.0.tgz","_integrity":"sha512-8s83ExazIxe4b1mkq/fkFMyixcstRwAZ3gj+GFQRuNFJGmwRPiFKmobWMOSWm1zGLeG0nY5vhxyGRzyr2NUxQA==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"11.6.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","esbuild":"^0.27.0","unifont":"^0.7.3","css-tree":"^3.1.0","fontaine":"0.8.0","unstorage":"^1.17.1","lightningcss":"^1.30.2","magic-string":"^0.30.21"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"7.3.1","rollup":"4.55.1","tsdown":"0.19.0","vitest":"4.0.17","tinyexec":"1.0.2","typescript":"5.9.3","@types/css-tree":"2.3.11","@playwright/test":"1.57.0","@vitest/coverage-v8":"4.0.17"},"peerDependencies":{"vite":"*"},"peerDependenciesMeta":{"vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.2.0_1768414255231_0.5049404192610092","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"fontless","version":"0.2.1","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.2.1","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"c1cf376a902ce01e600d3fbcd87126feb24752e5","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.2.1.tgz","fileCount":5,"integrity":"sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ==","signatures":[{"sig":"MEYCIQCf6tKJJ9dQTFL6Zb8LNVlmEW0zLFxnH/+Iqf4N+bDraAIhAIsuDOrVD0/5ebk3W+Oyf1UJQWvFw3444xBJGGZgm1BZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40988},"main":"./dist/index.mjs","type":"module","_from":"file:fontless-0.2.1.tgz","module":"./dist/index.mjs","engines":{"node":">=18.12.0"},"exports":{".":"./dist/index.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5d63f963-8c13-491e-9630-ff434d541fab"}},"_resolved":"/tmp/c0b201b9df43442b9189aa4a290b1a91/fontless-0.2.1.tgz","_integrity":"sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"11.6.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","esbuild":"^0.27.0","unifont":"^0.7.4","css-tree":"^3.1.0","fontaine":"0.8.0","unstorage":"^1.17.1","lightningcss":"^1.30.2","magic-string":"^0.30.21"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"7.3.1","rollup":"4.57.1","tsdown":"0.20.3","vitest":"4.0.18","tinyexec":"1.0.2","typescript":"5.9.3","@types/css-tree":"2.3.11","@playwright/test":"1.58.2","@vitest/coverage-v8":"4.0.18"},"peerDependencies":{"vite":"*"},"peerDependenciesMeta":{"vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.2.1_1771025919356_0.476477659407204","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"fontless","version":"0.3.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.3.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"dac1a68c18581f276616d526962817f5135806fc","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.3.0.tgz","fileCount":7,"integrity":"sha512-gFFCzRzmUJIaUUzAgBGHn4e7CNiTUEDdKtzUvnFAuLL7IrcHU2GY5K/7upCqMKdW4bInLKiWyBZ8orzfOt5vdw==","signatures":[{"sig":"MEYCIQDqUchITcl3W4PfLjjlqJBdT++WAYkbKzufQqLderZeLAIhAK8GZ7OYz+5FFKvLphgiP0BVZ7NQZMY7j0aAGEWBKf0X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49741},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.3.0.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.3.0.tgz","_integrity":"sha512-gFFCzRzmUJIaUUzAgBGHn4e7CNiTUEDdKtzUvnFAuLL7IrcHU2GY5K/7upCqMKdW4bInLKiWyBZ8orzfOt5vdw==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","unifont":"^0.7.4","css-tree":"^3.1.0","fontaine":"0.8.1","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.2.2","vite7":"npm:vite@7.3.6","tsdown":"0.22.14","vitest":"4.1.11","tinyexec":"1.3.0","typescript":"6.0.3","@types/css-tree":"3.2.0","@playwright/test":"1.62.1","@vitest/coverage-v8":"4.1.11"},"peerDependencies":{"vite":"*"},"peerDependenciesMeta":{"vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.3.0_1787340428855_0.7065793396300295","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"fontless","version":"0.4.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.4.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"223471931d2ba47b332939a6d1acd9eab07bb89c","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.4.0.tgz","fileCount":7,"integrity":"sha512-s579YVgJJk0d49WQaWBj4YSflOg3qFF78/y0dCNbCgIsGhoSnnr1p1Vrgrj5Vj12fTZMk8KBJI9cZ27eOUEXww==","signatures":[{"sig":"MEYCIQDn+m0/NhM/B1b7D4v8pCKaSNIWIW3YaI4cTdYqm9cbcAIhAPpguCReHA7cGV2uLWwiz1GbWDh/0FMXpYXvoLeoWcos","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55167},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.4.0.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.4.0.tgz","_integrity":"sha512-s579YVgJJk0d49WQaWBj4YSflOg3qFF78/y0dCNbCgIsGhoSnnr1p1Vrgrj5Vj12fTZMk8KBJI9cZ27eOUEXww==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^0.8.1","css-tree":"^3.1.0","fontaine":"0.8.1","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.2.2","vite7":"npm:vite@7.3.6","tsdown":"0.22.14","vitest":"4.1.11","tinyexec":"1.3.0","typescript":"6.0.3","@types/css-tree":"3.2.0","@playwright/test":"1.62.1","@vitest/coverage-v8":"4.1.11"},"peerDependencies":{"vite":"*"},"peerDependenciesMeta":{"vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.4.0_1787504862312_0.26990915177336783","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"fontless","version":"0.4.1","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.4.1","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"1be0d378a156119bac0eb5b6aecaa9f346bd6fca","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.4.1.tgz","fileCount":7,"integrity":"sha512-Ei+gx1URgXFJMdIpU+q3esFROOUOsvmC7aro3Bz0ijBtO/GRq766ap4npoz5QYINfTJOpuzvAaUBfKt7xE5sQw==","signatures":[{"sig":"MEQCIAlgHW+QrdA/OXOp+mKjvXE/7LKdWnxWunrPKvtjtcB8AiB+ad7lMicnzlmqfMG1/bNC40h00TMlz0TVi4eR8fmmOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68255},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.4.1.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.4.1.tgz","_integrity":"sha512-Ei+gx1URgXFJMdIpU+q3esFROOUOsvmC7aro3Bz0ijBtO/GRq766ap4npoz5QYINfTJOpuzvAaUBfKt7xE5sQw==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^0.8.1","css-tree":"^3.1.0","fontaine":"0.8.1","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.2.2","vite7":"npm:vite@7.3.6","tsdown":"0.22.14","vitest":"4.1.11","tinyexec":"1.3.0","typescript":"6.0.3","subset-font":"2.5.0","@types/css-tree":"3.2.0","@playwright/test":"1.62.1","@types/subset-font":"2.3.0","@vitest/coverage-v8":"4.1.11"},"peerDependencies":{"vite":"*","subset-font":"^2.5.0"},"peerDependenciesMeta":{"vite":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.4.1_1787671218802_0.9916310798834795","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"fontless","version":"0.4.2","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.4.2","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"dd9965b510177e4e36822d28eac5a939abd5b48c","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.4.2.tgz","fileCount":7,"integrity":"sha512-Zu1YLJSipDDhIWpe+tIBe9QuXtyRE3dFE3sMl5vEmDwQ7VROGJfaDEBTsNX6a9LpgUuH/G7Fi84W+s7raeHzUQ==","signatures":[{"sig":"MEUCIQCiQk8uD0UtObpDcGPuoejNmzcXsiskfcqGGDWtWKGDhgIgD4xNnO2zY6fGDEaGfGWl0Liqlm3w23yve+gPQ1Teeg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":69172},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.4.2.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.4.2.tgz","_integrity":"sha512-Zu1YLJSipDDhIWpe+tIBe9QuXtyRE3dFE3sMl5vEmDwQ7VROGJfaDEBTsNX6a9LpgUuH/G7Fi84W+s7raeHzUQ==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^0.8.1","css-tree":"^3.1.0","fontaine":"0.8.1","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.2.2","vite7":"npm:vite@7.3.6","tsdown":"0.22.14","vitest":"4.1.11","tinyexec":"1.3.0","typescript":"6.0.3","subset-font":"2.5.0","@types/css-tree":"3.2.0","@playwright/test":"1.62.1","@types/subset-font":"2.3.0","@vitest/coverage-v8":"4.1.11"},"peerDependencies":{"vite":"*","subset-font":"^2.5.0"},"peerDependenciesMeta":{"vite":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.4.2_1787683558933_0.4610333330834433","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"fontless","version":"0.4.3","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.4.3","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"4d5baef8691ef84ae35195c05cf0f485253d7c18","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.4.3.tgz","fileCount":7,"integrity":"sha512-XWGUSgMolswsiP6XHfSYEK7Krwgf7H3PTSRmIMSr0IjjbypHrZfQ18D595G3yX6oJtyzb2IFW2LsASDN3YUDnA==","signatures":[{"sig":"MEYCIQD38xxKR+A+amlwRU2a62itdQQNmVc82ei5rMx5mAtMzgIhAIHrbPEqmej71I6H5pqFTbf+Azs1Njq/50tWP9kXmvjQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72431},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.4.3.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.4.3.tgz","_integrity":"sha512-XWGUSgMolswsiP6XHfSYEK7Krwgf7H3PTSRmIMSr0IjjbypHrZfQ18D595G3yX6oJtyzb2IFW2LsASDN3YUDnA==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^0.8.1","css-tree":"^3.1.0","fontaine":"0.8.1","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.2.2","vite7":"npm:vite@7.3.6","tsdown":"0.22.14","vitest":"4.1.11","tinyexec":"1.3.0","typescript":"6.0.3","subset-font":"2.7.0","@types/css-tree":"3.2.0","@playwright/test":"1.62.1","@types/subset-font":"2.3.0","@vitest/coverage-v8":"4.1.11"},"peerDependencies":{"vite":"*","subset-font":"^2.5.0"},"peerDependenciesMeta":{"vite":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.4.3_1788469962507_0.25954478492585453","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"fontless","version":"0.4.4","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.4.4","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"dd485832f6af5313cbf2522e29b707230a0592f2","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.4.4.tgz","fileCount":7,"integrity":"sha512-odEbl0P5I3EZ10h5hHBcT66ZDnLTuuRc8iqe/gzBznG5JYtwhinGOhJfA3a+OeaHaf4v/QDiesCEBS/bezg4fQ==","signatures":[{"sig":"MEYCIQDUrJV2C6Rm4k4/XYX3BnkfIRS1DY6FZbbC3QCoei5uIAIhANqTwudj2aIWeF/AC+JnrqSWe9j0eeWEV8/FXoA6ukKO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72429},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.4.4.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.4.4.tgz","_integrity":"sha512-odEbl0P5I3EZ10h5hHBcT66ZDnLTuuRc8iqe/gzBznG5JYtwhinGOhJfA3a+OeaHaf4v/QDiesCEBS/bezg4fQ==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^0.8.1","css-tree":"^3.1.0","fontaine":"0.8.2","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.3.0","vite7":"npm:vite@7.3.6","tsdown":"0.22.14","vitest":"5.0.0","tinyexec":"1.3.0","typescript":"6.0.3","subset-font":"2.7.0","@types/css-tree":"3.2.0","@playwright/test":"1.62.1","@types/subset-font":"2.3.0","@vitest/coverage-v8":"5.0.0"},"peerDependencies":{"vite":"*","subset-font":"^2.5.0"},"peerDependenciesMeta":{"vite":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.4.4_1789461427790_0.727067007214186","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"fontless","version":"0.4.5","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@0.4.5","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"0128602bce39652a73a4ecade2e75e0d8f352281","tarball":"https://registry.npmjs.org/fontless/-/fontless-0.4.5.tgz","fileCount":7,"integrity":"sha512-Pv8/cScA9b1pWczasxcXoNJEvRbgfGxVvRuk6nBwNgRAJSUowg7g7zNBuxNldL62OO0JgBSuiPOp0xj2M3+3sA==","signatures":[{"sig":"MEUCIQCJ0Dind89milP0+x4pbfMcDNDpyrDn3VXcg5ugaRZragIgEHMu0a2fwzNt79e0lJpRxdoyAi3DCzxQTuiNxMGW4dI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81227},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-0.4.5.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-0.4.5.tgz","_integrity":"sha512-Pv8/cScA9b1pWczasxcXoNJEvRbgfGxVvRuk6nBwNgRAJSUowg7g7zNBuxNldL62OO0JgBSuiPOp0xj2M3+3sA==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","jiti":"^2.6.1","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^1.0.0-beta.0","css-tree":"^3.1.0","fontaine":"0.8.2","unstorage":"^1.17.1","lightningcss":"^1.33.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.3.0","vite7":"npm:vite@7.3.6","tsdown":"0.23.0","vitest":"5.0.0","tinyexec":"1.3.1","typescript":"6.0.3","subset-font":"2.7.0","@types/css-tree":"3.2.0","@playwright/test":"1.63.0","@types/subset-font":"2.3.0","@vitest/coverage-v8":"5.0.0"},"peerDependencies":{"vite":"*","subset-font":"^2.5.0"},"peerDependenciesMeta":{"vite":{"optional":true},"subset-font":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_0.4.5_1789642083622_0.48375000874293383","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"fontless","version":"1.0.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@1.0.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"93343e6329df6d7d0d1cb6cb50c1712e7014a07b","tarball":"https://registry.npmjs.org/fontless/-/fontless-1.0.0.tgz","fileCount":7,"integrity":"sha512-xdXBppWYpExRhDPN4DKO8O7ZDG6QC0q54UPkJr+UtjVwcCfFbqj1M1RfN5DelXqtjgcrQD3qCzLfNFCMa9wa/A==","signatures":[{"sig":"MEYCIQDIyNA/4Ma+PFo8QLM2J5+j9/N6v51U5B2r5oUl4iSwGgIhAM2DWhNHpsRAy169uvW2p1EPljJ4V4t8FmjF9W1KLhXX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84807},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-1.0.0.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-1.0.0.tgz","_integrity":"sha512-xdXBppWYpExRhDPN4DKO8O7ZDG6QC0q54UPkJr+UtjVwcCfFbqj1M1RfN5DelXqtjgcrQD3qCzLfNFCMa9wa/A==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.0.2","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^1.0.0-beta.0","css-tree":"^3.1.0","fontaine":"1.0.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"jiti":"2.7.0","vite":"8.3.0","vite7":"npm:vite@7.3.6","tsdown":"0.23.0","vitest":"5.0.1","tinyexec":"1.3.1","unstorage":"1.17.5","typescript":"6.0.3","subset-font":"2.9.0","lightningcss":"1.33.0","@types/css-tree":"3.2.0","@playwright/test":"1.63.0","@types/subset-font":"2.3.0","@vitest/coverage-v8":"5.0.1"},"peerDependencies":{"jiti":"^2.6.1","vite":"*","subset-font":"^2.5.0","lightningcss":"^1.33.0"},"peerDependenciesMeta":{"jiti":{"optional":true},"vite":{"optional":true},"subset-font":{"optional":true},"lightningcss":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_1.0.0_1790010144321_0.45447335914076215","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"fontless","version":"1.1.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@1.1.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"c91f893d44998972173bdc75955cca87dbc1070d","tarball":"https://registry.npmjs.org/fontless/-/fontless-1.1.0.tgz","fileCount":7,"integrity":"sha512-wajvi9COas8yGpS3E7sbun2AUp4rp1ypiqn+3wgRcYVgGWUGFVYrskib6OxCEruJ9M93rCBN4VK46s4xqLAfcQ==","signatures":[{"sig":"MEUCIB46tF0zc2zD0jzkbndRFijkaFQ/PeEnl9NG8BR40X4xAiEAy9eROdiq/CfVLK6FNQGyVwhu1cOKApidJPGyPBnGNi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91010},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-1.1.0.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-1.1.0.tgz","_integrity":"sha512-wajvi9COas8yGpS3E7sbun2AUp4rp1ypiqn+3wgRcYVgGWUGFVYrskib6OxCEruJ9M93rCBN4VK46s4xqLAfcQ==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.1.0","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^1.0.1","css-tree":"^3.1.0","fontaine":"1.0.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"jiti":"2.7.0","vite":"8.3.0","vite7":"npm:vite@7.3.6","tsdown":"0.23.0","vitest":"5.0.1","tinyexec":"1.3.1","unstorage":"1.17.5","typescript":"6.0.3","subset-font":"2.9.0","lightningcss":"1.33.0","@types/css-tree":"3.2.0","@playwright/test":"1.63.0","@types/subset-font":"2.3.0","@vitest/coverage-v8":"5.0.1"},"peerDependencies":{"jiti":"^2.6.1","vite":"*","subset-font":"^2.5.0","lightningcss":"^1.33.0"},"peerDependenciesMeta":{"jiti":{"optional":true},"vite":{"optional":true},"subset-font":{"optional":true},"lightningcss":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_1.1.0_1790190683683_0.8285681454497624","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"fontless","version":"1.2.0","keywords":["font","optimization","vite-plugin","css","javascript"],"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","_id":"fontless@1.2.0","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"homepage":"https://github.com/unjs/fontaine#readme","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"df41bbecc5c87bd03167ebed9ec3529aadbf9822","tarball":"https://registry.npmjs.org/fontless/-/fontless-1.2.0.tgz","fileCount":7,"integrity":"sha512-kZSKBYm/srtCxOtx9iRYl7wRPd3U2z2BefLOT89mmzPtVD4bHWLy9QoJc3AABAFxxBWQcdjVZFTZIq0e8yM0qw==","signatures":[{"sig":"MEUCIBsUSdGSf42tEJqXAVe2C/Ug++mU6nZZAUDPQIwRmZ59AiEAwOcYm/KeZ9fy/CAmWlKhCbBSuVDQDwmjCUbV+7iU+nk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92831},"main":"./dist/index.mjs","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-1.2.0.tgz","module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"danielroe","email":"daniel@roe.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"}},"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-1.2.0.tgz","_integrity":"sha512-kZSKBYm/srtCxOtx9iRYl7wRPd3U2z2BefLOT89mmzPtVD4bHWLy9QoJc3AABAFxxBWQcdjVZFTZIq0e8yM0qw==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.1.0","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^1.0.2","css-tree":"^3.1.0","fontaine":"1.0.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"_hasShrinkwrap":false,"devDependencies":{"jiti":"2.7.0","vite":"8.3.0","vite7":"npm:vite@7.3.6","tsdown":"0.23.0","vitest":"5.0.1","tinyexec":"1.3.1","unstorage":"1.17.5","typescript":"6.0.3","subset-font":"2.9.0","lightningcss":"1.33.0","@types/css-tree":"3.2.0","@playwright/test":"1.63.0","@types/subset-font":"2.3.0","@vitest/coverage-v8":"5.0.1"},"peerDependencies":{"jiti":"^2.6.1","vite":"*","subset-font":"^2.5.0","lightningcss":"^1.33.0"},"peerDependenciesMeta":{"jiti":{"optional":true},"vite":{"optional":true},"subset-font":{"optional":true},"lightningcss":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fontless_1.2.0_1790258388394_0.6513915378109836","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"_id":"fontless@1.2.1","bugs":{"url":"https://github.com/unjs/fontaine/issues"},"dist":{"shasum":"30f107f5469252381666bb5c8d909b831e93d3a0","tarball":"https://registry.npmjs.org/fontless/-/fontless-1.2.1.tgz","integrity":"sha512-NODX2xAmFeiC7GmCRASD5rLIan4PFXQyNKOloUblAlbHA+RP0/f/RpBL3HazuGZkmBhq67oHaxSPImOkNX+TcQ==","fileCount":7,"unpackedSize":92865,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fontless@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCqXXeu0ecc73MWTKDBZZ9gHve7w7O4Zn+Is8YkpJqLdwIgBXwCFrqbkuFnFu5SluSQOBNRJHx2Emq0DTZSvLCkBeo="}]},"main":"./dist/index.mjs","name":"fontless","type":"module","_from":"file:/home/runner/work/_temp/uppt-tarballs/fontless-1.2.1.tgz","author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"module":"./dist/index.mjs","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./dist/index.mjs","./runtime":"./dist/runtime.mjs"},"license":"MIT","scripts":{"dev":"vitest dev","lint":"eslint . --fix","test":"pnpm test:unit && pnpm test:types","build":"tsdown","test-e2e":"playwright test","test:unit":"vitest","test:types":"tsc --noEmit"},"version":"1.2.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:991df5c2-4a94-4c52-a242-12eb8e9fe478"},"approver":{"name":"danielroe","email":"daniel@roe.dev"}},"homepage":"https://github.com/unjs/fontaine#readme","keywords":["font","optimization","vite-plugin","css","javascript"],"_resolved":"/home/runner/work/_temp/uppt-tarballs/fontless-1.2.1.tgz","_integrity":"sha512-NODX2xAmFeiC7GmCRASD5rLIan4PFXQyNKOloUblAlbHA+RP0/f/RpBL3HazuGZkmBhq67oHaxSPImOkNX+TcQ==","repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"_npmVersion":"12.1.0","description":"Magical plug-and-play font optimization for modern web applications","directories":{},"maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"ufo":"^1.6.1","defu":"^6.1.4","ohash":"^2.0.11","pathe":"^2.0.3","consola":"^3.4.2","exsolve":"^1.1.1","unifont":"^1.0.2","css-tree":"^3.1.0","fontaine":"1.0.0","magic-string":"^1.0.0"},"typesVersions":{"*":{"*":["./dist/index.d.mts"]}},"devDependencies":{"jiti":"2.7.0","vite":"8.3.0","vite7":"npm:vite@7.3.6","tsdown":"0.23.0","vitest":"5.0.1","tinyexec":"1.3.1","unstorage":"1.17.5","typescript":"6.0.3","subset-font":"2.9.0","lightningcss":"1.33.0","@types/css-tree":"3.2.0","@playwright/test":"1.63.0","@types/subset-font":"2.3.0","@vitest/coverage-v8":"5.0.1"},"peerDependencies":{"jiti":"^2.6.1","vite":"*","subset-font":"^2.5.0","lightningcss":"^1.33.0"},"peerDependenciesMeta":{"jiti":{"optional":true},"vite":{"optional":true},"subset-font":{"optional":true},"lightningcss":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fontless_1.2.1_1790326744020_0.98217147654143"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-19T11:52:05.769Z","modified":"2026-09-25T08:59:04.331Z","0.0.0":"2024-12-19T11:52:05.917Z","0.0.1":"2025-05-21T13:25:58.495Z","0.0.2":"2025-05-21T15:09:59.277Z","0.1.0":"2025-11-06T21:21:58.049Z","0.2.0":"2026-01-14T18:10:55.460Z","0.2.1":"2026-02-13T23:38:39.502Z","0.3.0":"2026-08-21T19:27:08.937Z","0.4.0":"2026-08-23T17:07:42.390Z","0.4.1":"2026-08-25T15:20:18.896Z","0.4.2":"2026-08-25T18:45:59.100Z","0.4.3":"2026-09-03T21:12:42.593Z","0.4.4":"2026-09-15T08:37:07.896Z","0.4.5":"2026-09-17T10:48:03.737Z","1.0.0":"2026-09-21T17:02:24.432Z","1.1.0":"2026-09-23T19:11:23.788Z","1.2.0":"2026-09-24T13:59:48.485Z","1.2.1":"2026-09-25T08:59:04.104Z"},"bugs":{"url":"https://github.com/unjs/fontaine/issues"},"author":{"url":"https://github.com/danielroe","name":"Daniel Roe","email":"daniel@roe.dev"},"license":"MIT","homepage":"https://github.com/unjs/fontaine#readme","keywords":["font","optimization","vite-plugin","css","javascript"],"repository":{"url":"git+https://github.com/unjs/fontaine.git","type":"git","directory":"packages/fontless"},"description":"Magical plug-and-play font optimization for modern web applications","maintainers":[{"name":"gioboa","email":"giorgiob.boa@gmail.com"},{"name":"danielroe","email":"daniel@roe.dev"},{"name":"qwerzl","email":"me@qwerzl.me"}],"readme":"# fontless\n\n[![npm version][npm-version-src]][npm-version-href]\n[![npm downloads][npm-downloads-src]][npm-downloads-href]\n[![Github Actions][github-actions-src]][github-actions-href]\n[![Codecov][codecov-src]][codecov-href]\n\n> Magical plug-and-play font optimization for modern web applications\n\n## Features\n\n- 🚀 **Optimized font loading**: Automatically loads and configures fonts with proper fallbacks and preload links.\n- 🔤 **Multiple provider support**: Google Fonts, Bunny Fonts, FontShare, FontSource, and more using [unifont](https://github.com/unjs/unifont)\n- 📦 **Zero runtime overhead**: Pure CSS solution with no JavaScript required at runtime\n- 📏 **Metric-based fallbacks**: Reduces Cumulative Layout Shift (CLS) by using font metrics from [fontaine](https://github.com/unjs/fontaine)\n- 🔄 **CSS transformation**: Detects font-family usage in your CSS and injects optimized `@font-face` declarations\n- 🎯 **Framework agnostic**: Works with all modern frameworks (Vue, React, Solid, Svelte, Qwik, etc.)\n\n## Installation\n\n```sh\n# npm\nnpm install fontless\n\n# pnpm\npnpm install fontless\n```\n\n## Usage\n\nAdd the `fontless` plugin to your Vite configuration:\n\n```js\n// vite.config.js / vite.config.ts\nimport { defineConfig } from 'vite'\nimport { fontless } from 'fontless'\n\nexport default defineConfig({\n  plugins: [\n    // ... other plugins\n    fontless()\n  ],\n})\n```\n\n### Using fonts in your CSS\n\nSimply use fonts in your CSS as you normally would, and fontless will handle optimization:\n\n```css\n/* Your CSS */\n.google-font {\n  font-family: \"Poppins\", sans-serif;\n}\n\n.bunny-font {\n  font-family: \"Aclonica\", sans-serif;\n}\n```\n\n## Configuration\n\nYou can customize fontless with various options:\n\n```js\nfontless({\n  // Configure available providers\n  providers: {\n    google: true,          // Google Fonts\n    bunny: true,           // Bunny Fonts\n    fontshare: true,       // FontShare\n    fontsource: true,      // FontSource\n    // Disable a provider\n    adobe: false\n  },\n\n  // Provider priority order\n  priority: ['google', 'bunny', 'fontshare'],\n\n  // Default font settings\n  defaults: {\n    preload: true, // also accepts { subsets: ['latin'], styles: ['normal'] } or a filter function\n    weights: [400, 700],\n    styles: ['normal', 'italic'],\n    // Fallbacks use category-aware presets from fontaine\n    // Override specific generic families as needed\n    fallbacks: {\n      'sans-serif': ['Arial', 'Helvetica Neue'],\n      // serif, monospace, cursive, fantasy, system-ui, etc. use shared defaults\n    }\n  },\n\n  // Custom font family configurations\n  families: [\n    // Configure a specific font\n    {\n      name: 'Poppins',\n      provider: 'google',\n      weights: [300, 400, 600]\n    },\n    // Ship only the glyphs this family needs\n    {\n      name: 'Cabinet Grotesk',\n      glyphs: 'Handgloves & 0123'\n    },\n    // Manual font configuration\n    {\n      name: 'CustomFont',\n      src: [{ url: '/fonts/custom-font.woff2', format: 'woff2' }],\n      weight: [400]\n    }\n  ],\n\n  // Asset configuration\n  assets: {\n    prefix: '/assets/_fonts'\n  },\n\n  // Where font metadata and downloaded fonts are cached between builds, defaulting to\n  // `node_modules/.cache/fontless/meta`. Accepts a directory (resolved from the Vite\n  // root), `{ dir }`, a storage instance such as `unstorage` for a custom driver, or `false` to\n  // disable persistent caching.\n  cache: '.cache/fonts',\n\n  // Experimental features\n  experimental: {\n    disableLocalFallbacks: false\n  }\n})\n```\n\n### Category-Aware Fallbacks\n\nFontless uses category-aware fallback presets shared with the [fontaine](https://github.com/unjs/fontaine) package. These presets provide optimized system fonts for different generic font families:\n\n- **sans-serif**: `BlinkMacSystemFont`, `Segoe UI`, `Helvetica Neue`, `Arial`, `Noto Sans`\n- **serif**: `Times New Roman`, `Georgia`, `Noto Serif`\n- **monospace**: `Courier New`, `Roboto Mono`, `Noto Sans Mono`\n- **cursive**: Uses handwriting category fallbacks\n- **fantasy**: Uses display category fallbacks\n- **system-ui**, **ui-serif**, **ui-sans-serif**, **ui-monospace**: Mapped to corresponding category presets\n\nYou can override fallbacks for specific generic families in the `defaults.fallbacks` configuration while keeping the shared defaults for others. This ensures consistent font fallback behavior across your application and reduces cumulative layout shift (CLS).\n\n## Minification\n\nGenerated `@font-face` rules are minified with `lightningcss`, which is an optional peer dependency. Install it alongside `fontless` to enable minification:\n\n```bash\npnpm add -D lightningcss\n```\n\nWithout it, the generated CSS is emitted unminified and left to the bundler's own minifier.\n\n## Glyph Subsetting\n\nIf you know a family only ever renders a fixed set of characters — a logotype, a specimen, a set of headings — set `glyphs` on it and `fontless` will reduce every file it emits for that family to those glyphs, whichever provider served it.\n\nThe subsetter is an optional peer dependency, so install it alongside `fontless` if you use this option:\n\n```bash\npnpm add -D subset-font\n```\n\n```ts\nfontless({\n  // apply to every family\n  defaults: { glyphs: 'Handgloves & 0123' },\n  families: [\n    // a string of text...\n    { name: 'Cabinet Grotesk', glyphs: 'Handgloves & 0123' },\n    // ...an explicit list of characters...\n    { name: 'Erode', glyphs: ['H', 'a', 'n', 'd'] },\n    // ...or unicode ranges, in the same syntax as `unicode-range`\n    { name: 'Satoshi', glyphs: ['U+0020-007E', 'U+2018-201D', 'U+2026'] },\n  ],\n})\n```\n\nSubsetting happens on the font file itself with [harfbuzz](https://harfbuzz.github.io/) (via [`subset-font`](https://github.com/papandreou/subset-font)), so it works for fonts from every provider as well as local files, keeps the original format and keeps a variable font's axes. Where the provider can subset server-side (Google Fonts' `text=` API) the glyph list is passed through to it as well, so the full file is never downloaded.\n\nThe glyph list is part of the emitted file's name, so two families sharing a source font with different glyph lists get their own file, and changing the list invalidates the cache. Fallback metrics are still read from the original font, so `size-adjust` and friends are unaffected. Files are emitted unchanged for families without `glyphs`.\n\n> [!IMPORTANT]\n> Subsetting modifies the font file you ship. Some licences (particularly commercial and free-with-conditions ones) restrict modifying, converting or self-hosting a font, so check the licence or terms of the font you are subsetting before enabling this.\n\n## Variable Font Axes\n\nVariable fonts expose axes beyond weight and italic, such as Recursive's casual (`CASL`) and monospace (`MONO`) axes. Set `variableAxis` on a family (or on `defaults`, for every family) to choose the values you ship. A number or string pins an axis to a single value, and a `{ min, max }` object (or a `[min, max]` pair) narrows it to an inclusive range:\n\n```ts\nfontless({\n  families: [\n    {\n      name: 'Recursive',\n      variableAxis: {\n        CASL: [1],\n        MONO: [{ min: 0, max: 1 }],\n      },\n    },\n  ],\n})\n```\n\nThe request is passed to the provider first. Google Fonts serves an already-instanced file, so nothing further happens locally. For every other provider, `unifont` returns the variable file with a `font-variation-settings` descriptor, and `fontless` applies the axis to the file itself with [`subset-font`](https://github.com/papandreou/subset-font), then drops the descriptor for that axis, since the axis no longer exists in the file to be varied. Values that `unifont` reports it left to the consumer, such as a range, are applied to the file without touching the CSS.\n\nApplying an axis locally means subsetting the file, so it needs a glyph list: either the family's `glyphs`, or the characters the face's `unicode-range` declares. Without either, the file is emitted untouched and the `font-variation-settings` descriptor is kept, so the font still renders at the requested values. An axis a font file does not have is skipped, keeping any glyph subset. Because it is a subsetting pass, the licence caveat under [Glyph Subsetting](#glyph-subsetting) applies to the file you ship.\n\nThe axis values are part of the emitted file's name, so two families sharing a source font with different values get their own file, and changing a value invalidates the cache. `wght` and `ital` are left alone: they are expressed by `@font-face` descriptors, and pinning them would lose the other faces of the family.\n\n> [!NOTE]\n> This option is experimental. Provider support and the option shape may change.\n\n## Preloading Fonts\n\nPreloading is opt-in: no font is preloaded unless you ask for it. Enable it for every family with `defaults.preload`, or for individual families with `families[].preload`:\n\n```ts\nfontless({\n  // preload one font face per family\n  defaults: { preload: true },\n  // ...or configure specific families\n  families: [\n    { name: 'Poppins', preload: true },\n    // preload every face matching all of the descriptors given\n    { name: 'Inter', preload: { subsets: ['latin'], styles: ['normal'] } },\n    // or filter faces individually\n    { name: 'Roboto', preload: (family, font) => font.style === 'normal' },\n  ],\n})\n```\n\n`preload: true` picks a single face per family, preferring, in order: your first configured `format`, the first subset in the family's `subsets` option, upright over italic, and the weight closest to 400.\n\nWhere no `subsets` are configured, or none of them match the faces a provider returns, the pick is biased toward Basic Latin: the face whose `unicode-range` covers `U+0041` wins, because no provider reports which subset a site primarily renders. If your site is not primarily latin-script, order `subsets` to put your subset first, or select faces yourself with the callback form.\n\nFor Vite SPA, the selected preload fonts are injected into the HTML, apart from the first `vite dev` render, where the stylesheets have not been transformed yet.\n\nFor SSR meta-frameworks which don't rely on [`transformIndexHtml` plugin hook](https://vite.dev/guide/api-plugin.html#transformindexhtml), you need to manually render preload links on the server. Fontless provides `fontless/runtime` module for server to access the necessary data for preload links generation, for example:\n\n- Vanilla\n\n```tsx\nimport { preloads } from \"fontless/runtime\";\n\nfunction renderHtml() {\n  const renderedPreloads = preloads\n    .map(\n      (attrs) =>\n        `<link rel=\"${attrs.rel}\" as=\"${attrs.as}\" href=\"${attrs.href}\" crossorigin=\"${attrs.crossorigin}\">`,\n    )\n    .join(\"\\n\");\n  return `\\\n<html>\n  <head>\n    ${renderedPreloads}\n  </head>\n  <body>\n    ...\n  </body>\n</html>\n`;\n}\n```\n\n- [Qwik](./examples/qwik-app)\n\n```tsx\nimport { preloads } from \"fontless/runtime\"\n\nexport const RouterHead = component$(() => {\n  return (\n    <>\n      {preloads.map((l) => (\n        <link key={l.href} {...l} />\n      ))}\n      ...\n    </>\n  )\n})\n```\n\n- [React](./examples/react-router-app)\n\n```tsx\nimport { preloads } from 'fontless/runtime'\n\nfunction Layout() {\n  return (\n    <html lang=\"en\">\n      <head>\n        {preloads.map(({crossorigin, ...attrs}) => (\n          <link\n            key={attrs.href}\n            {...attrs}\n            crossOrigin={crossorigin}\n          />\n        ))}\n        ...\n      </head>\n      <body>\n        ...\n      </body>\n    </html>\n  )\n}\n```\n\n- [SvelteKit](./examples/sveltekit-app)\n\nIf `preloads` is an empty array, either no `preload` option is enabled, or a configured subset list or filter function matched no font faces, or `fontless/runtime` was not transformed by the plugin. In the last case, check that `fontless()` is in your Vite config and that `fontless/runtime` is not externalised.\n\n```svelte\n<script lang=\"ts\">\n\timport { preloads } from \"fontless/runtime\";\n</script>\n\n<svelte:head>\n\t<link rel=\"icon\" href={favicon} />\n\t{#each preloads as attrs}\n\t\t<link {...attrs} />\n\t{/each}\n</svelte:head>\n```\n\n## Global Font Faces\n\nSome fonts are never referenced from CSS that Fontless can see, so there is no usage site to inject their `@font-face` at: a family used only from inline styles, from a canvas, or from a third-party widget. Mark those families `global` and their `@font-face` is emitted regardless of usage.\n\n```ts\nfontless({\n  families: [\n    { name: 'Inter', global: true },\n  ],\n})\n```\n\nFor Vite SPA the declarations are inlined into a `<style>` tag in `<head>`, rather than linked as a stylesheet, so the browser learns about the family without waiting for another request. Unlike preloads, this works on the first `vite dev` render, as global families are resolved from your config rather than discovered from stylesheets.\n\nAny usage of the family that *does* appear in CSS still gains the metric-override fallback families, so `global` does not cost you the layout-shift protection.\n\nFor SSR meta-frameworks, `fontless/runtime` exposes the same declarations as a string:\n\n```tsx\nimport { globalFontFaces } from 'fontless/runtime'\n\nfunction Head() {\n  return <style dangerouslySetInnerHTML={{ __html: globalFontFaces }} />\n}\n```\n\nAn empty string means no families are configured with `global: true`, that none of them resolved to a font, or that `fontless/runtime` was not transformed by the plugin.\n\n## How It Works\n\nFontless works by:\n\n1. Scanning your CSS files for font-family declarations\n2. Resolving fonts through various providers (Google, Bunny, etc.)\n3. Generating optimized `@font-face` declarations with proper metrics\n4. Adding fallback fonts with correct metric overrides to reduce CLS\n5. Automatically downloading and managing font assets\n\n## 💻 Development\n\n- Clone this repository\n- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable`\n- Install dependencies using `pnpm install`\n- Run interactive tests using `pnpm dev`\n\n## License\n\nMade with ❤️\n\nPublished under [MIT License](./LICENCE).\n\n<!-- Badges -->\n\n[npm-version-src]: https://img.shields.io/npm/v/fontless?style=flat-square\n[npm-version-href]: https://npmjs.com/package/fontless\n[npm-downloads-src]: https://img.shields.io/npm/dm/fontless?style=flat-square\n[npm-downloads-href]: https://npm.chart.dev/fontless\n[github-actions-src]: https://img.shields.io/github/actions/workflow/status/unjs/fontaine/ci.yml?branch=main&style=flat-square\n[github-actions-href]: https://github.com/unjs/fontaine/actions/workflows/ci.yml\n[codecov-src]: https://img.shields.io/codecov/c/gh/unjs/fontaine/main?style=flat-square\n[codecov-href]: https://codecov.io/gh/unjs/fontaine\n","readmeFilename":"README.md"}