Laden einer externen Schriftart über Inline-CSS

Lesezeit: 5 Minuten

Laden einer externen Schriftart uber Inline CSS
Randomisieren

Ist es möglich, eine externe Schriftart über Inline-CSS zu laden?

Hinweis: Ich bin nicht sprechen über die Verwendung einer externen CSS-Datei mit a @font-face Definition, sondern eher so etwas wie das Folgende:

<h1 style="font-family:myfont;
    src:('http://example.com/font/myfont.tff')">test</h1>

Laden einer externen Schriftart uber Inline CSS
Josh Habdas

Ist es möglich, eine externe Schriftart mit Inline-CSS zu laden? NICHT mit einer externen CSS-Datei [….].

Ja, Sie können eine oder mehrere Schriftarten mit Base64 codieren, wie in gezeigt Dieser Beitrag von Stephen Scaff und lege sie in a style Block in Ihrer Seite, um die externe Anfrage zu vermeiden.

Es ist möglicherweise auch möglich, diese Technik in der von Ihnen beschriebenen Weise zu verwenden, wenn der von Ihnen verwendete Browser dies unterstützt.

<style>
  @font-face {
    font-family: 'PT Sans';
    font-style: normal;
    font-weight: normal;
    src: local('PT Sans'), local('PTSans-Regular'),
      url(data:application/font-woff2;charset=utf-8;base64,d09GRgABAAAAAHowABMAAAAA+OAA) format('woff2');
  }
  @font-face {
    font-family: 'PT Serif';
    font-style: normal;
    font-weight: normal;
    src: local('PT Serif'), local('PTSerif-Regular'),
      url(data:application/font-woff2;charset=utf-8;base64,d09GRgABAAAAAIQYABMAAAAA/MAA) format('woff2');
  }
</style>

Jeder moderne Browser unterstützt WOFF2, also solltest du das wahrscheinlich verwenden und nur das für die absehbare Zukunft. Diese Technik verbessert auch Ihre Seitengeschwindigkeitswerte, aber wird die Leistung beeinträchtigen insgesamt (selbst für das Laden der ersten Seite), es sei denn, Sie kodieren nur kritische Seitenelemente mit Base64 (z. B. Glyphen der Schriftart, die über dem Falz angezeigt werden) und asynchron laden der Rest.

In Bezug auf die Leistung ist es derzeit am besten, sie zu verwenden Brotli-Komprimierung und leiten Sie das Webfont-Stylesheet mit nach unten HTTP/2-Server-Push.

  • Das ist sehr interessant! Meine Frage ist vor 5 Jahren alt und die Dinge haben sich seitdem etwas geändert 🙂 Ich kann es jetzt nicht überprüfen, aber ich gehe davon aus, dass es bisher die “Lösung” ist.

    – Randomisieren

    18. April 17 um 10:49 Uhr

  • Dies ist immer noch nur ein Inline-Stil-Tag, kein Inline-CSS wie in seinem Beispiel <h1 style="...">

    – OZZIE

    5. Juli 19 um 12:30 Uhr

  • Können die base64-codierten Schriftarten in a <style> Schild irgendwo, oder nur in der Kopfzeile?

    – stevec

    1. Mai 20 um 4:45 Uhr

  • Tolle Option! Am Ende habe ich verwendet transformator.org

    – Christian Gossain

    18. Februar 21 um 4:21 Uhr

1643757729 660 Laden einer externen Schriftart uber Inline CSS
Jukka K. Korpela

Sie können a nicht einschließen @font-face Regel in a style -Attribut (das im engsten Sinne „Inline-CSS“ ist). Gemäß der HTML 4.01-Spezifikation können Sie eine solche Regel nicht in die einfügen body Element überhaupt („Inline-CSS“ im weiteren Sinne, wozu auch gehört style Elemente). Aber in der Praxis ist es möglich.

In der Praxis, wenn Sie a style Element drin body, wird es von Browsern so verarbeitet, als ob es an der syntaktisch korrekten Stelle, dh innerhalb der head Element. Es funktioniert sogar „rückwärts“ und wirkt sich auf Elemente aus, die davor erscheinen.

Sie können diesen Ansatz sogar vornehmen – was nur verwendet werden sollte, wenn Sie das nicht ändern können head – formal korrekt gemäß HTML5 CR. Es erlaubt ein style -Element am Anfang eines beliebigen Elements mit fließendem Inhalt als Inhaltsmodell. Aktuelle Browser ignorieren die scoped Attribut.

Aktualisieren: Folgendes ist nicht mehr relevant, da der Validierungsfehler behoben wurde.

Allerdings gibt es eine Insekt im W3C Markup Validator und in validator.nu: sie verbieten style am Anfang von body. Um diesen Fehler zu beheben und Ihr Dokument zusätzlich zur Gültigkeit validieren zu lassen, können Sie ein Extra verwenden div Element:

<body>
<div>
<style>
/* your @font-face and other CSS rules go here */
</style>
<!-- your document body proper goes here -->
</div>
</body>

  • Können Sie den relevanten Teil der HTML 4.01-Spezifikation verlinken, der dies verbietet? (Ich würde gerne wissen, welche andere Art von Inline-CSS nicht zulässig ist)?

    – Benutzer2284570

    31. Oktober 14 um 22:12 Uhr

  • @ user2284570, ich habe eine Klarstellung hinzugefügt, die sich auf bezieht style Elemente, die im weiteren Sinne als „Inline-CSS“ bezeichnet werden können, dass CSS-Code direkt in einem HTML-Dokument erscheint, anstatt sich in einem separaten CSS-Dokument zu befinden, auf das in HTML nur verwiesen wird. Die HTML 4.01-Regel, die nicht zulässig ist style Innerhalb body hat keinen einzigen Ort in der Spezifikation, da es aus dem folgt Abwesenheit des style Element aus jedem Inhaltsmodell außer dem des head Element.

    – Jukka K. Korpela

    1. November 14 um 6:41 Uhr

  • Ok, danke, derzeit bin ich in einem Fall<style scoped></style> und<style></style> ist vom Web-Desinfektionsmittel gestreift, aber ich kann nichts hineinsteckenstyle="" Attribut. Würde es auch funktionieren, wenn ich a verwende@importinnerhalb eines Stilattributs?

    – Benutzer2284570

    1. November 14 um 11:25 Uhr

  • @user2284570, nein, @import funktioniert nicht innerhalb von a style Attribut. Der style Attributwert darf nur aus Deklarationen bestehen (Name: Wert), die auf das aktuelle Element angewendet wird.

    – Jukka K. Korpela

    1. November 14 um 12:38 Uhr

Nein, nicht das ich wüsste. Sie müssen diese Art von Dingen auf a deklarieren <style> block oder eine externe CSS-Datei.

Wenn Sie jedoch so etwas wollen, ist es sehr wahrscheinlich, dass Sie es falsch machen.

  • Though if you want something like this, it's very probable you're doing it wrong.: Was ist mit dem Einbetten einer Schriftart auf einer einzelnen Mediawiki-Seite?

    – Benutzer2284570

    31. Oktober 14 um 22:13 Uhr


  • @user2284570 Mit MediaWiki können Sie eine benutzerdefinierte CSS-Datei IIRC definieren. Ich habe es sehr lange nicht benutzt.

    – Madaras Geist

    31. Oktober 14 um 22:14 Uhr

  • Ja, aber sie erlauben es nur für die gesamte Website. Wenn Sie eine einzelne Seite haben, die eine Schriftart von 6 MB erfordert, wird sie auf allen Seiten der Website geladen.

    – Benutzer2284570

    31. Oktober 14 um 22:17 Uhr


  • @ user2284570 In diesem Fall tun Sie es definitiv etwas falsch.

    – Madaras Geist

    31. Oktober 14 um 22:17 Uhr

  • Vielleicht nicht 🙂

    – Benutzer2284570

    31. Oktober 14 um 22:19 Uhr


1643757729 335 Laden einer externen Schriftart uber Inline CSS
m4rk

Wenn Sie @font-face verwenden, sollten Sie in der Lage sein, Folgendes zu tun:

CSS

@font-face {
font-family: 'RalewayThin';
src: url('fonts/raleway_thin-webfont.eot');
src: url('fonts/raleway_thin-webfont.eot?#iefix') format('embedded-opentype'),
     url('fonts/raleway_thin-webfont.woff') format('woff'),
     url('fonts/raleway_thin-webfont.ttf') format('truetype'),
     url('fonts/raleway_thin-webfont.svg#RalewayThin') format('svg');
font-weight: normal;
font-style: normal;

}

Stellen Sie sicher, dass Sie die Schriftarten einbeziehen – das obige Beispiel hat alle Schriftarten in einem relativen Pfadverzeichnis zur CSS-Datei platziert.

HTML

<h1 style="font-family:RalewayThin,Helvetica, sans-serif;">

Sie sollten in der Lage sein, kostenlose webbasierte @font-face-Schriftarten zu finden Hier.

.

733580cookie-checkLaden einer externen Schriftart über Inline-CSS

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy