Is there a rule for font families?

Løs Skrifttypeproblemer på iPhone & Safari

28/01/2026

Rating: 4.95 (11162 votes)

Det kan være utroligt frustrerende for webudviklere og designere, når skrifttyper, der fungerer fejlfrit på desktop-browsere som Chrome og Firefox, pludselig nægter at vise sig på Apple-enheder – især iPhone og Safari. Dette er et velkendt problem med mange nuancer, og det kræver ofte en dybere forståelse af, hvordan Safari og iOS håndterer webfonts. Lad os udforske de mest almindelige årsager til disse skrifttypeproblemer og give dig de løsninger, du har brug for til at få dine designs til at se perfekte ud på alle skærme.

How do I fix a font that doesn't work in CSS?
The CSS you are using now will look for a local desktop version of the font instead of the web font. (If you also have Davis Sans added in Creative Cloud, this is why it appears to work in some browsers.) Try replacing “davis sans” with “davis-sans” in CSS file, and it should solve the problem.

Uanset om du bruger @import til Adobe Fonts, oplever mystiske ID-fejl med SVG-skrifttyper, eller kæmper med brugerdefinerede @font-face deklarationer, der ikke vil indlæses på iOS, er du ikke alene. Disse problemer kan virke tilfældige, men der er ofte logiske forklaringer og specifikke rettelser. At forstå de tekniske detaljer bag, hvordan browsere som Safari behandler skrifttypefiler, er nøglen til at overvinde disse udfordringer. Vi vil dække alt fra almindelige fejlkonfigurationer til mere avancerede timingproblemer i mobile webviews.

Indholdsfortegnelse

Hvorfor vises mine skrifttyper ikke korrekt på Safari?

Safari, især på iOS, har historisk set haft en mere stringent tilgang til håndtering af webfonts sammenlignet med andre browsere. Hvad der fungerer i Chrome eller Firefox, er ikke altid en garanti for succes i Safari. En af de primære årsager er ofte relateret til den måde, skrifttypefilerne er defineret og refereret på i din CSS. Det kan skyldes alt fra ufuldstændige @font-face deklarationer, forkert filsti, manglende formatunderstøttelse til mere specifikke Safari-fejl.

Når du arbejder med webfonts, er det afgørende at inkludere flere filformater for at sikre bred browserkompatibilitet. Selvom WOFF og WOFF2 er de mest anbefalede formater i dag, har ældre versioner af Safari og iOS muligvis brug for andre formater som TTF, OTF eller endda SVG. En robust @font-face regel bør altid indeholde en række src-deklarationer, der tilbyder browsere valgmuligheder. Hvis Safari ikke kan finde et understøttet format eller en gyldig filsti, vil den falde tilbage til en standardskrifttype, som ofte er en serif-font som Times New Roman, hvilket kan ødelægge dit design.

Adobe Fonts og Safari: En Specifik Udfordring

Mange designere benytter sig af Adobe Fonts (tidligere Typekit) på grund af den nemme integration og det store udvalg af professionelle skrifttyper. Selvom Adobe Fonts generelt fungerer godt, kan der opstå problemer i Safari. Inputtet nævner brugen af @import i CSS for at inkludere Adobe Fonts, og selvom dette er en standardmetode, kan der opstå problemer, hvis Safari er særligt krævende med hensyn til netværksforbindelse eller timing af indlæsning. En almindelig årsag er, at Adobe Fonts' JavaScript, som indlæser skrifttyperne, kan blive blokeret eller forsinket af forskellige årsager, hvilket resulterer i en kort blottet tekst (Flash of Unstyled Text - FOUT) eller slet ingen skrifttypeindlæsning.

For at afhjælpe dette kan du overveje at inkludere Adobe Fonts koden direkte i din HTML’s <head>-sektion i stedet for at bruge @import i CSS. Dette kan give scriptet en højere prioritet og sikre, at skrifttyperne indlæses tidligere i sidens livscyklus. Desuden er det altid en god idé at tjekke Adobes egen status side for eventuelle kendte problemer med deres tjeneste, der kunne påvirke Safari-kompatibilitet. Vær også opmærksom på eventuelle indholdsblokerende udvidelser i Safari, der utilsigtet kan blokere skrifttypeanmodninger.

SVG Skrifttyper og den Skjulte ID-Fælde

En af de mere snedige problemer, der kan opstå med skrifttyper i mobil Safari, er relateret til SVG-skrifttyper. Som beskrevet i inputtet, er SVG-skrifttyper blevet brugt af ældre versioner af mobil Safari. Problemet opstår, når der er et mismatch mellem ID'et inde i SVG-skrifttypefilen og det ID, der refereres til i din CSS. Når du downloader og gen-downloader skrifttypefiler, især fra tjenester som Font Squirrel, kan det underliggende ID inde i SVG-filen ændre sig, selvom filnavnet forbliver det samme.

Does Mobile Safari support SVG fonts?
SVG font support has been available since 3.1. I had been working with this for a hour before realizing my stupid mistake. Mobile Safari is CASE SENSITIVE for the fonts, while Desktop Safari is not. If your font is titled: font.svg, you must add it exactly like it is. If you add it with a Capital F, Desktop Safari won't care, but mobile will.

For eksempel kan din CSS have en linje som denne:

url('../fonts/jotting_regular-webfont.svg#webfonttEfFltbI') format('svg')

Her er webfonttEfFltbI det afgørende ID. Hvis du åbner din .svg skrifttypefil i en teksteditor, vil du finde en linje nær toppen, der ligner dette:

<font id="webfontC6xdxB57" horiz-adv-x="972" >

Bemærk, at webfontC6xdxB57 er et andet ID end det, der er i CSS'en. Dette mismatch vil forhindre mobil Safari i at indlæse skrifttypen korrekt. Løsningen er at erstatte ID'et i din CSS (efter hashtagget) med det nye, korrekte ID, du finder i SVG-filen. Dette er en specifik Safari-krumtap, der ofte overses, men som kan løse mange ellers uforklarlige skrifttypeproblemer på iOS.

Problemer med Brugerdefinerede Skrifttyper på iOS (iPhone/iPad)

Når du bruger din egen @font-face deklaration til brugerdefinerede skrifttyper, kan det være særligt frustrerende, når de fungerer perfekt på desktop, men falder tilbage til en standardskrifttype på iPhone og iPad. Dette blev tydeligt beskrevet i et af eksemplerne, hvor selv systemskrifttyper ikke blev anerkendt på mobile enheder.

Her er nogle almindelige årsager og løsninger:

  • Forkert Filsti: Dobbelt- og tredobbeltcheck altid stien til dine skrifttypefiler. Mobilbrowsere kan være mere følsomme over for relative stier eller serverkonfigurationer end desktop-browsere.
  • Manglende Formater: Selvom WOFF2 er fremtiden, understøtter ikke alle ældre iOS-versioner det fuldt ud. Sørg for at inkludere en bred vifte af formater i din src-deklaration for maksimal kompatibilitet. En typisk rækkefølge kan være WOFF2, WOFF, TTF/OTF, og derefter SVG for ældre iOS.
  • MIME-typer på Serveren: Din webserver skal være korrekt konfigureret til at servere skrifttypefiler med de korrekte MIME-typer. Hvis serveren ikke sender den korrekte MIME-type (f.eks. font/woff for WOFF-filer), kan Safari afvise at indlæse filen.
  • CSS-prioritet og Overlap: Selvom inputtet antyder, at der kun er én regel for font-family, kan der være andre CSS-regler, der utilsigtet overskriver din skrifttype deklaration, især med mere specifikke selektorer eller !important flag. Brug Safari's udviklerværktøjer (tilsluttet via Mac) til at inspicere elementet og se, hvilke CSS-regler der faktisk anvendes.
  • Animationer og Timing: Selvom det er sjældent, kan JavaScript-animationer, der manipulerer tekst eller elementer, potentielt forstyrre skrifttypeindlæsningen, hvis de udføres, før skrifttypen er fuldt indlæst. Dette er dog en sjælden årsag og normalt ikke den primære synder.

En robust @font-face deklaration bør se nogenlunde sådan ud:

@font-face {
font-family: 'MinBrugerdefineredeSkrifttype';
src: url('fonts/min-skrifttype.woff2') format('woff2'),
url('fonts/min-skrifttype.woff') format('woff'),
url('fonts/min-skrifttype.ttf') format('truetype'),
url('fonts/min-skrifttype.otf') format('opentype'),
url('fonts/min-skrifttype.svg#MinSkrifttypeID') format('svg');
font-weight: normal;
font-style: normal;
font-display: swap; /* Vigtigt for bedre brugeroplevelse */
}

Bemærk font-display: swap; – dette er en værdifuld egenskab, der fortæller browseren, at den skal vise en fallback-skrifttype med det samme og derefter skifte til den brugerdefinerede skrifttype, så snart den er indlæst. Dette forbedrer brugeroplevelsen ved at undgå tomme tekstområder.

Timing og Indlæsning i WKWebView

Et mere komplekst problem, der kan opstå, især i applikationer, der bruger WKWebView (Apples indbyggede webkomponent til visning af webindhold), er, at brugerdefinerede skrifttyper ikke indlæses, hvis de erklæres i CSS, men kun bruges i indhold, der indsættes via JavaScript efter DOM'en er indlæst. Dette scenarie resulterer i, at skrifttypefilen slet ikke bliver forsøgt hentet af browseren.

Det er som om renderer-motoren antager, at skrifttypen ikke er nødvendig, før den ser den i brug, og hvis den ser den i brug for sent, afbryder den anmodningen eller starter den aldrig. Netværksfanen i Safari-debuggeren vil ikke vise nogen forsøg på at hente skrifttypefilen, og teksten vil falde tilbage til en standardskrifttype efter en kort forsinkelse. Dette kan tyde på en form for timing- eller race-condition-problem i WKWebView's skrifttypehåndtering.

Selvom en endegyldig løsning på dette specifikke WKWebView-problem ikke er ligetil, er der et par tilgange, der kan hjælpe:

  • Forcer Indlæsning: En potentiel workaround kan være at 'forbruge' skrifttypen på en eller anden måde tidligt i DOM'en, selvom det er et skjult element. For eksempel, tilføj et lille, skjult element i din HTML med den pågældende skrifttype anvendt: <span style="font-family: 'Foobar'; position: absolute; left: -9999px;">.</span>. Dette kan narre browseren til at indlede download af skrifttypen tidligere.
  • font-display: swap;: Som nævnt tidligere, kan font-display: swap; hjælpe med brugeroplevelsen, da den viser en fallback-skrifttype med det samme, selvom den ikke løser det underliggende problem med, at skrifttypen ikke hentes.
  • Undersøg App-integration: Hvis du har kontrol over den native app, der hoster WKWebView, kan der være specifikke konfigurationer eller begrænsninger, der påvirker netværksanmodninger. Det er værd at konsultere Apples dokumentation for WKWebView og eventuelt rapportere problemet, hvis det er en vedvarende fejl.

Dette problem er ofte mere nuanceret og kan kræve dybdegående debugging med Safari's udviklerværktøjer tilsluttet en iOS-enhed for at forstå den præcise rækkefølge af begivenheder, der fører til fejlen.

What happens if a custom font-face is declared and not used?
Thanks! It appears that in some cases, if a custom @font-face is declared but not actually used until after DOM load is finished -- i.e. it is only used in content added via javascript -- the font file is not actually fetched. The result is -- sometimes -- the font is not rendered with the correct font face.

Bedste Praksis og Fejlfindingstips

At håndtere skrifttypeproblemer på Apple-enheder kræver tålmodighed og en systematisk tilgang. Her er en opsummering af bedste praksis og effektive fejlfindingstips:

  1. Brug Flere Formater: Inkluder altid WOFF2, WOFF, TTF/OTF og eventuelt SVG (med korrekt ID) i din @font-face deklaration.
  2. Tjek Filstier Nøje: Fejl i filstier er en hyppig synder. Brug altid absolute stier, hvis du er i tvivl, eller dobbelttjek relative stier.
  3. Valider din CSS: Små fejl i CSS kan have store konsekvenser. Brug en CSS-validator til at tjekke for syntaksfejl.
  4. Server MIME-Typer: Sørg for, at din webserver er konfigureret til at servere skrifttypefiler med de korrekte MIME-typer (f.eks. application/font-woff, application/x-font-ttf, image/svg+xml).
  5. Brug Safari Udviklerværktøjer: Tilslut din iOS-enhed til en Mac og brug Safari's 'Develop'-menu til at inspicere din side. Tjek konsollen for fejl og netværksfanen for at se, om skrifttypefilerne overhovedet bliver forsøgt hentet.
  6. font-display: swap;: Implementer dette i dine @font-face regler for at forbedre den visuelle oplevelse, selvom en skrifttype tager tid at indlæse.
  7. Test Grundigt: Test altid på tværs af forskellige iOS-enheder og versioner af Safari. Hvad der virker på én version, virker måske ikke på en ældre.
  8. Cache-Problemer: Nogle gange kan browser-cache forårsage problemer. Ryd cachen på din iOS-enhed, og test igen.
ProblemområdeAlmindelig ÅrsagLøsning/Anbefaling
Generel Safari-fejlManglende formater, forkert sti, dårlig @font-faceInkluder WOFF2, WOFF, TTF/OTF, SVG i @font-face. Tjek stier.
Adobe Fonts@import, JS-blokering, timingIndsæt Adobe-kode direkte i HTML <head>. Kontroller netværk.
SVG Font IDID-mismatch i fil og CSSÅbn SVG-fil, find nyt ID, opdater CSS url(...)#ID.
Brugerdefineret iOSMIME-typer, CSS-prioritet, serverkonfigurationTjek server MIME-typer, brug font-display: swap;, debug med Safari-værktøjer.
WKWebView IndlæsningTiming, JS-indlæsning efter DOM-klarForcer tidlig indlæsning via skjult element. Undersøg app-konfiguration.

Ofte Stillede Spørgsmål om Skrifttyper på iOS

Q: Hvorfor fungerer mine skrifttyper kun på desktop og ikke på iPhone?
A: Dette skyldes ofte forskelle i, hvordan mobile browsere (især Safari) håndterer skrifttypeformater, filstier, serverkonfigurationer og timing af indlæsning. Sørg for at inkludere flere skrifttypeformater i din @font-face deklaration og tjek for specifikke Safari-bugs som SVG ID-fejlen.

Q: Hvilke skrifttypeformater skal jeg bruge for at sikre den bedste kompatibilitet?
A: For moderne browsere er WOFF2 og WOFF de mest effektive. For bredere kompatibilitet med ældre Safari- og iOS-versioner bør du også inkludere TTF/OTF og potentielt SVG (hvis du støder på specifikke problemer med ældre iOS).

Q: Hvordan kan jeg debugge skrifttypeproblemer på en iPhone?
A: Tilslut din iPhone til en Mac via USB, åbn Safari på Mac'en, gå til 'Develop'-menuen, vælg din iPhone og derefter den webside, du vil inspicere. Du får adgang til konsollen, netværksfanen og elementinspektøren, præcis som på desktop.

Q: Hvad betyder font-display: swap;, og hvorfor er det vigtigt?
A: font-display: swap; er en CSS-egenskab, der fortæller browseren, at den straks skal vise en system-fallback-skrifttype, hvis den brugerdefinerede skrifttype ikke er indlæst endnu. Så snart den brugerdefinerede skrifttype er klar, vil browseren 'swappe' til den. Dette forbedrer brugeroplevelsen ved at forhindre tomme tekstområder (FOIT - Flash of Invisible Text).

Q: Kan en JavaScript-animation forhindre mine skrifttyper i at indlæses?
A: Selvom det er sjældent, kan JavaScript-kode, der manipulerer elementer, der bruger en skrifttype, potentielt forstyrre indlæsningen, især hvis skrifttypen kun bruges i dynamisk indhold. Problemer med WKWebView kan også være relateret til timing af JavaScript-indlæsning.

At løse skrifttypeproblemer på iPhone og Safari kan være en udfordring, men med den rette viden og de rigtige fejlfindingsteknikker er det absolut muligt at opnå ensartet og smuk typografi på tværs af alle Apple-enheder. Husk altid at teste grundigt og være opmærksom på de specifikke nuancer i Safari's skrifttypehåndtering.

Hvis du vil læse andre artikler, der ligner Løs Skrifttypeproblemer på iPhone & Safari, kan du besøge kategorien Mobilteknologi.

Go up