# perf/self-hosted-fonts

Fonts are self-hosted, not loaded from third-party CDNs. Reglen perf/self-hosted-fonts kører i page-scope med severity 'error' og indgår i performance-domænet sammen med 7 andre kontrakter i frameworket.

## Hvorfor self-hosted-fonts findes

Font CDNs cost an extra connection on the critical path (slower LCP) and leak visitor IPs to a third party — embedding Google Fonts without consent has been ruled a GDPR violation in the EU (LG München, 2022). Gold standard: WOFF2 files self-hosted on the site origin with font-display: swap, preloaded when critical.

## Sådan håndhæves self-hosted-fonts

Reglen self-hosted-fonts evalueres på hver enkelt renderet HTML-side for sig, så et fund altid kan føres tilbage til én konkret side og én konkret rettelse i data eller template. Fejler en side, får agenten en finding, hvor fix-instruktionen for self-hosted-fonts er formuleret som en konkret arbejdsordre med filnavne og målbare krav — aldrig et vagt råd. Severity 'error' betyder at et brud på self-hosted-fonts fejler hele verifikationen med exit-kode 1, så hverken CI eller en agent kan skibe sitet før fundet er rettet.

## Test og fixtures

Som alle kontrakter i frameworket har perf/self-hosted-fonts en mutant-test, der beviser at reglen fejler, når kravet brydes — en regel uden en fejlende test er ikke en regel. Golden-fixturet beviser omvendt, at en fuldt compliant side består self-hosted-fonts sammen med de øvrige 85 regler, og denne demoside er selv underlagt hele kontrakten.

## Relaterede regler

- [perf/img-dimensions](https://pseo.mikkelkrogsholm.dk/regler/perf/img-dimensions/)
- [perf/no-blocking-scripts](https://pseo.mikkelkrogsholm.dk/regler/perf/no-blocking-scripts/)
- [perf/html-weight](https://pseo.mikkelkrogsholm.dk/regler/perf/html-weight/)
