Custom Fonts in Custom Theme
am 16.06.2019 - 14:47 Uhr in
Hallo zusammen.
Ich habe eine D 8.7.2 Installation und möchte einen selbstgehostet Font in mein Theme einbinden, ohne das Modul @font-your-face zu verwenden.
Es gibt sehr viele Tutorials, wie man (Google) Webfonts einbindet, aber zu selbstgehosteten bzw. lokalen Fonts ist leider nichts zu finden. Vielleicht/hoffentlich kann hier jemand helfen.
Basierend auf viel Rechechere habe ich bislang folgendes gemacht:
Eintrag in myowntheme.info.yml :
Libraries:
- myownheme/fonts
Eintrag in myowntheme.libraries.yml :
fonts:
css:
theme:
myownfont.css
Im Ordner themes/myowntheme gibt es den Order "fonts" mit zwei enthaltenen Dateien:
- myownfont.woff
- myownfont.css
Das Haupt-Stylesheet enthält:
@font-face {
font-family:"Myownfont";
src: url("myownont.woff") format("woff"),
font-style:normal;
font-weight:400;
}
Leider wird die Schrift nicht angezeigt, obwohl der Firefox-Inspektor die entsprechende CSS Anweisung zeigt. Es scheint also, dass irgendwie die Pfade nicht stimmen.
Hat jemand eine Idee, was ich faslch mache oder vergessen habe?
Herzlichen Dank für jeden Hinweis
- Anmelden oder Registrieren um Kommentare zu schreiben
Mal von den Tipfehler in der
am 16.06.2019 - 18:40 Uhr
Mal von den Tipfehler in der URL abgesehen, liegt Deine Fontdatei vermutlich nicht direkt im DocumentRoot der Seite. So verlangt es aber die von Dir angegebene URL.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Ich denke auch, es liegt an
am 17.06.2019 - 06:51 Uhr
Ich denke auch, es liegt an der URL.
Ich gehe so vor:
Ich hole mir die Schriften für den Server hier:
https://google-webfonts-helper.herokuapp.com/fonts
Da wird auch jeweils ein Code angegeben für die CSS Datei, den füge ich dort ein, also z.B.
/* roboto-300 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url('../fonts/roboto-v19-latin-300.eot'); /* IE9 Compat Modes */
src: local('Roboto Light'), local('Roboto-Light'),
url('../fonts/roboto-v19-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/roboto-v19-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/roboto-v19-latin-300.woff') format('woff'), /* Modern Browsers */
url('../fonts/roboto-v19-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/roboto-v19-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-regular - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url('../fonts/roboto-v19-latin-regular.eot'); /* IE9 Compat Modes */
src: local('Roboto'), local('Roboto-Regular'),
url('../fonts/roboto-v19-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/roboto-v19-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/roboto-v19-latin-regular.woff') format('woff'), /* Modern Browsers */
url('../fonts/roboto-v19-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/roboto-v19-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */
}
/* roboto-700 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url('../fonts/roboto-v19-latin-700.eot'); /* IE9 Compat Modes */
src: local('Roboto Bold'), local('Roboto-Bold'),
url('../fonts/roboto-v19-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/roboto-v19-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/roboto-v19-latin-700.woff') format('woff'), /* Modern Browsers */
url('../fonts/roboto-v19-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/roboto-v19-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */
}
Jetzt musst Du nur noch Pfad anpassen.
Ich lege die Schriften auch ins Theme in eine datei fonts und darunter Unterordner, falls versch. Schriften.
Das sieht dann z.B. so aus:
url('/themes/custom/barrio_custom/fonts/montserrat/montserrat-v12-latin-200.eot?#iefix') format('embedded-opentype'),
Oder Du verwendest eben einen relativen Pfad von Deiner CSS Datei aus betrachtet.
Wie Du ein Custom CSS zu Deinem Theme einrichtest, ist ja dann noch mal ein anderes Thema, für das es viele Dokus gibt.
Das scheint bei Dir auch zu klappen, wenn Du die Anweisung im Entwickler-Tool siehst.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Hallo Werner Vielen Dank für
am 17.06.2019 - 11:11 Uhr
Hallo Werner
Vielen Dank für den Hinweis. Ich werde den Pfad anpassen. Muss es der volle Pfad vom vom DocRoot sein oder relativ zum Stylesheet?
Beste Grüße
Hallo montviso, ebenfalls
am 17.06.2019 - 11:14 Uhr
Hallo montviso,
ebenfalls vielen Dank für das ausführliche Howto. Ich frage mich nur, ob und falls ja wozu man mit dieser Methode den Eintrag auf in der llibraries.yml braucht?
Viele Grüße
Du brauchst ja den Eintrag in
am 17.06.2019 - 11:41 Uhr
Du brauchst ja den Eintrag in der llibraries.yml um mal grundsätzlich individuelles CSS sauber einbinden zu können.
Hat mit dem Schrift CSS nicht unbedingt was zu tun.
Wenn Du sowieso schon individuelle CSS Struktur geschaffen hast, kannst Du es natürlich auch da rein schreiben.
Hauptsache es ist so eingebunden, dass es überall zur Verfügung steht, wo Du die spezielle Font verwenden willst.
Wegen Pfad angaben: Das kommt auch etwas auf Deine jeweilige Struktur an.
In meinem Beispiel ist es mit voller Pfadangabe gemacht, aber grundsätzlich muss es auch mit relativen Angaben gehen, wenn Du mal raus gefummelt hast, wie genau. ;-)
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Nochmal vielen Dank, hab's
am 17.06.2019 - 13:00 Uhr
Nochmal vielen Dank, hab's jetzt kapiert :-)
Ein Problem mit lokalen Fonts
am 02.03.2023 - 14:49 Uhr
Ein Problem mit lokalen Fonts habe ich noch.
Doch zunächst besten Dank an Regina Oswald für die Angaben zum Einbinden eines lokalen Zeichensatzes in einem Custom Theme. Grundsätzlich hat es funktioniert, es gibt aber wohl noch ein Problem mit den Zugriffsrechten in meiner Konfiguration.
Die Situation in meinem Projekt ist folgende: Zur Darstellung von Tabellenüberschriften muss ich Symbole anzeigen, die als Zeichensatz im ttf-Format vorliegt. Nach der Installation wie sie oben beschrieben ist wird auf meinem Entwicklungsrechner alles korrekt angezeigt. Greife ich im lokalen Netz auf die Seiten zu, werden die Zeichen nicht im installierten Zeichensatz, sondern im „standard“-Zeichensatz angezeigt. D.h. für mich, dass der Zugriff auf den installierten Zeichensatz verweigert wird und er durch den Standard ersetzt wird.
Ich bin zunächst davon ausgehenden, dass das Problem existiert, das ich auf der lokalen Umgebung nur selbstsignierte Zertifikate zur Verfügung habe, deren Sicherheit im lokalem Netz von den Browsern nicht anerkannt wird. Meine Hoffnung war, dass sich das Problem löst, wenn ich erst eine Staging-Umgebung mit echte Zertifikaten eingerichtet habe. An dem Punkt bin ich nun, aber leider hat sich das Verhalten nicht geändert.
Sitze ich vor der Maschine, auf der die Staging-Umgebung eingerichtet ist wird der lokal installierte Zeichensatz angezeigt, schaue im vom Internet auf die Seite wird der Zeichensatz nicht angezeigt :-(
Kann mir jemand verraten, wo ich konfigurieren kann, dass der Webserver (Apache2) zugriff auf den Zeichensatz erhält?
Beste Grüße, Volker
Beste Grüße, Volker Zimmermann
Wenn Du per FTP auf die Fonts
am 02.03.2023 - 16:12 Uhr
Wenn Du per FTP auf die Fonts zugreifst und mit Rechtsklick auf diese ttf-Datei klickst und Eigenschaften anschaust, welche Rechte sind da eingestellt?
Und wenn Du mit Browser auf die Seite schaust, dann kannst Du ja in den Entwickler-Einstellungen (F12) auf den Reiter Netzwerk klicken, dann die Seite (auf der diese Schrift eingebunden ist) noch mal laden. Dann gibt es eine Spalte Status und dort kannst Du auch mal schauen, welcher Status für diese Datei angegeben wird.
Sicher, dass der Pfad auf die Datei immer richtig ist? Also wird kein Zugriff oder Nicht gefunden angezeigt?
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Bei dem Versuch mit dem
am 02.03.2023 - 19:25 Uhr
Bei dem Versuch mit dem Zugriff über den Browser habe ich festgestellt, dass das Verhalten ist bei unterschiedlichen Browsen unterschiedlich unterschiedlich ist.
Benutze ich den FireFox funktioniert auch der Zugriff auf die lokal installierte Schrift und mit den Entwickler-Einstellungen wird im Reiter Netzwerk der Zugriff auf die Schrift mit Status 200 angezeigt.
Benutze ich Chrome, dann wird in der Entwickler-Einstellung gar kein Versuch des Zugriffs auf die Schrift angezeigt (Browser Cache natürlich vorher gelöscht). Ich erkenn keinerlei Versuch die Schrift überhaupt zu laden.
Beste Grüße, Volker
Beste Grüße, Volker Zimmermann
Kann man sich das anschauen?
am 02.03.2023 - 22:46 Uhr
Kann man sich das anschauen?
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Live, oder soll ich ein paar
am 03.03.2023 - 09:15 Uhr
Live, oder soll ich ein paar Screenshots machen?
Beste Grüße, Volker Zimmermann
Live wäre besser.
am 03.03.2023 - 10:08 Uhr
Live wäre besser.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Ich habe gesehen, dass
am 03.03.2023 - 10:51 Uhr
Ich habe gesehen, dass Benutzer über das Profil kontaktiert werden können. Ich schreibe Dir dort, wird aber eher morgen, da ich heute unterwegs bin.
Besten Dank schon mal, Volker
Beste Grüße, Volker Zimmermann
Kaum macht man es richtig, funktioniert es :-)
am 07.03.2023 - 20:38 Uhr
Kaum macht man es richtig, funktioniert es :-)
Die Schrift lag mir nur als ttf-Datei vor, nachdem ich die anderen Formate erzeugt hatte und einen zusätzlichen Fehler in der Syntax behoben habe funktioniert es jetzt auch mit dem Safari und Chrome. Auch in der DEV-Umgebung mit selbstsignierten Zertifikaten.
Hier meine nun funktionierende Konfiguration:
@font-face {
font-family: SLNetSolutionsPhilaSymbols;
font-style: normal;
font-weight: 400;
src: url(../fonts/SLNetSolutionsPhilaSymbols/SLNetSolutionsPhilaSymbols.eot); /* IE9 Compat Modes */
src: local(SLNetSolutionsPhilaSymbols), local(SLNetSolutionsPhilaSymbols-Regular),
url(../fonts/SLNetSolutionsPhilaSymbols/SLNetSolutionsPhilaSymbols.eot?#iefix) format("embedded-opentype"), /* IE6-IE8 */
url(../fonts/SLNetSolutionsPhilaSymbols/SLNetSolutionsPhilaSymbols.woff2) format("woff2"), /* Super Modern Browsers */
url(../fonts/SLNetSolutionsPhilaSymbols/SLNetSolutionsPhilaSymbols.woff) format("woff"), /* Modern Browsers */
url(../fonts/SLNetSolutionsPhilaSymbols/SLNetSolutionsPhilaSymbols.ttf) format("truetype"), /* Safari, Android, iOS */
url(../fonts/SLNetSolutionsPhilaSymbols/SLNetSolutionsPhilaSymbols.svg#SLNetSolutionsPhilaSymbols) format("svg"); /* Legacy iOS */
}
Beste Grüße, Volker Zimmermann
Super! Ich habe es ja nicht
am 07.03.2023 - 21:02 Uhr
Super!
Ich habe es ja nicht zu hoffen gewagt. ;-)
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de