354 Stimmen

Die Verwendung von Schriftarten mit dem Rails-Asset-Pipeline

Ich habe einige Schriftarten in meiner Scss-Datei wie folgt konfiguriert:

@font-face {
  font-family: 'Icomoon';
  src: asset-url('icoMoon.eot?#iefix', font) format('embedded-opentype'),
       asset-url('icoMoon.woff', font) format('woff'),
       asset-url('icoMoon.ttf', font)  format('truetype'),
       asset-url('icoMoon.svg#Icomoon', font) format('svg');
}

Die tatsächlichen Schriftdateien sind in /app/assets/fonts/ gespeichert.

Ich habe config.assets.paths << Rails.root.join("app", "assets", "fonts") zu meiner application.rb-Datei hinzugefügt

und die kompilierte CSS-Quelle lautet wie folgt:

@font-face {
  font-family: 'Icomoon';
  src: url(/assets/icoMoon.eot?#iefix) format("embedded-opentype"), url(/assets/icoMoon.woff) format("woff"), url(/assets/icoMoon.ttf) format("truetype"), url(/assets/icoMoon.svg#Icomoon) format("svg");
}

Aber wenn ich die App ausführe, werden die Schriftdateien nicht gefunden. Die Logs:

Started GET "/assets/icoMoon.ttf" for 127.0.0.1 at 2012-06-05 23:21:17 +0100 Served asset /icoMoon.ttf - 404 Not Found (13ms)

Warum werden die Schriftartdateien nicht durch die Asset-Pipeline in nur /assets umgewandelt?

Irgendwelche Ideen Leute?

Mit freundlichen Grüßen, Neil

Zusätzliche Informationen:

Beim Überprüfen der Rails-Konsole für Assets-Pfade und assetprecompile erhalte ich folgendes:

1.9.2p320 :001 > y Rails.application.config.assets.precompile
---
- !ruby/object:Proc {}
- !ruby/regexp /(?:\/|\\|\A)application\.(css|js)$/
- .svg
- .eot
- .woff
- .ttf
=> nil

1.9.2p320 :002 > y Rails.application.config.assets.paths
---
- /Users/neiltonge/code/neiltonge/app/assets/fonts
- /Users/neiltonge/code/neiltonge/app/assets/images
- /Users/neiltonge/code/neiltonge/app/assets/javascripts
- /Users/neiltonge/code/neiltonge/app/assets/stylesheets
- /Users/neiltonge/code/neiltonge/vendor/assets/images
- /Users/neiltonge/code/neiltonge/vendor/assets/javascripts
- /Users/neiltonge/code/neiltonge/vendor/assets/stylesheets
- /Users/neiltonge/.rvm/gems/ruby-1.9.2-p320@neiltonge/gems/jquery-rails-2.0.0/vendor/assets/javascripts
- /Users/neiltonge/.rvm/gems/ruby-1.9.2-p320@neiltonge/gems/coffee-rails-3.2.1/lib/assets/javascripts
- /Users/neiltonge/.rvm/gems/ruby-1.9.2-p320@neiltonge/gems/bourbon-1.3.0/app/assets/stylesheets
- !ruby/object:Pathname
  path: /Users/neiltonge/code/neiltonge/app/assets/fonts
 => nil

6 Stimmen

Sie haben den font-url Helper in SCSS in Rails.

1 Stimmen

Das macht leider keinen Unterschied. Meine Frage steht daher immer noch im Raum.

0 Stimmen

Ich habe eine generische Methode entwickelt, um dieses Problem zu diagnostizieren und zu lösen unter stackoverflow.com/a/40898227/1197775.

1voto

katfa Punkte 11

Wenn Sie eine Datei namens scaffolds.css.scss haben, besteht die Möglichkeit, dass diese alle benutzerdefinierten Dinge überschreibt, die Sie in den anderen Dateien tun. Ich habe diese Datei auskommentiert und plötzlich hat alles funktioniert. Wenn sich nichts Wichtiges in dieser Datei befindet, könnten Sie sie genauso gut löschen!

-7voto

Shoaib Malik Punkte 355

Platzieren Sie einfach Ihre Schriftarten im Ordner app/assets/fonts und setzen Sie den Autoload-Pfad beim Start der App, indem Sie den Code in application.rb schreiben.

config.assets.paths << Rails.root.join("app", "assets", "fonts") und

Verwenden Sie dann den folgenden Code in CSS.

@font-face {

 font-family: 'icomoon';
 src: asset-url('icomoon.eot');
 src: asset-url('icomoon.eot') format('embedded-opentype'),
      asset-url('icomoon.woff') format('woff'),
      asset-url('icomoon.ttf') format('truetype'),
      asset-url('icomoon.svg') format('svg');
 font-weight: normal;
 font-style: normal;

}

Versuchen Sie es.

Danke

0 Stimmen

Wie fügt dies irgendetwas zu den vorhandenen Antworten hinzu?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X