J'ai une application Rails 4 et j'essaie d'utiliser une police personnalisée.
J'ai suivi de nombreux tutoriels à ce sujet et, d'une manière ou d'une autre, cela ne fonctionne tout simplement pas pour mon application.
J'utilise application.css.less
Et j'ai la déclaration suivante:
@font-face {
font-family: 'HDVPeace';
src: font-url('HDV_Peace.eot');
src: font-url('HDV_Peace.eot?iefix') format('eot'),
font-url('HDV_Peace.woff') format('woff'),
font-url('HDV_Peace.ttf') format('truetype'),
font-url('HDV_Peace.svg#webfont') format('svg');
}
Remarque: j'ai essayé d'utiliser url()
au lieu de font-url()
également. Le premier génère 404 erreurs sur la console, alors que le dernier ne semble rien faire du tout. Dans les outils de développement chrome sous Ressources, les fichiers de polices n'apparaissent pas sous le dossier assets
, ou n'importe où
dans mon config/application.rb
j'ai:
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
Et dans mes config/environments/development.rb
Et config/environments/production.rb
, J'ai:
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( .svg .eot .woff .ttf)
Mes fichiers de police sont situés à app/assets/fonts
Et ne sont pas contenus dans un dossier en dessous de ...
Qu'est-ce que je rate?
PDATE:
structure de dossier
app
|----assets
|----fonts
|----HDV_Peace.eot
|----HDV_Peace.svg
|----HDV_Peace.ttf
|----HDV_Peace.woff
Votre @font-face
La déclaration est très proche, il ne manque que le /assets
préfixe dans la déclaration d'URL.
@font-face {
font-family: 'HDVPeace';
src: url('/assets/HDV_Peace.eot');
src: url('/assets/HDV_Peace.eot?iefix') format('eot'),
url('/assets/HDV_Peace.woff') format('woff'),
url('/assets/HDV_Peace.ttf') format('truetype'),
url('/assets/HDV_Peace.svg#webfont') format('svg');
}
Tout ce qui a été ajouté à assets.paths
est disponible directement sous le /assets
chemin en développement et en production. Vous n'avez besoin que de la ligne de modification du chemin d'accès au sein de application.rb
, refais-le dans development.rb
et production.rb
est simplement redondant.
En outre, tous les formats de police sont essentiellement binaires. Il n'est pas nécessaire de les pré-compiler, vous pouvez donc supprimer le fichier assets.precompile
une addition.
Dans Rails 4, un assistant vous permet de définir le chemin d'accès aux polices.
Si vous avez la police dans/assets/fonts ou vendor/assets/fonts, Rails 4 les trouvera! Pour en tirer parti, dans le Bootstrap Fichier CSS change l'appel @font_face en
@font-face {
font-family: 'Glyphicons Halflings';
src: font-url('glyphicons-halflings-regular.eot');
src: font-url('glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),
font-url('glyphicons-halflings-regular.woff') format('woff'),
font-url('glyphicons-halflings-regular.ttf') format('truetype'),
font-url('glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
Notez qu'il n'y a pas de spécification de dossier devant les fichiers de polices. Ceci est complété par l’assistant Rails).
Veuillez ne pas coder en dur votre répertoire de polices, car l’emplacement est dynamique.
Tout comme il existe des aides intégrées pour les images, il existe également des aides intégrées pour les polices: http://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-font_url
Exemple:
@font-face {
font-family: 'QuicksandOTF';
src: font_url('Quicksand-Regular.otf') format('opentype');
font-weight: normal;
font-style: normal;
}
Cela a fonctionné pour moi sur une Rails 4.1.
@font-face {
font-family: 'icomoon';
src: url(font-path('icomoon.eot') + "?#iefix") format('embedded-opentype'),
url(font-path('icomoon.woff')) format('woff'),
url(font-path('icomoon.ttf')) format('truetype'),
url(font-path('icomoon.svg') + "#icomoon") format('svg');
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'icomoon';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
Redémarrez 'Rails server' après avoir créé le répertoire app/assets/fonts
J'ai trouvé cet article pour résoudre tous mes problèmes.
http://aokolish.me/blog/2011/12/24/at-font-face-with-the-asset-pipeline/
Au cas où vous auriez du mal à utiliser les polices dans Rails 5, il vous suffit de modifier app/assets/config/manifest.js
Et puis insérez ceci //= link_tree ../fonts
Comment utiliser:
@font-face { font-family: 'FontAwesome'; src: url('fontawesome-webfont.eot?v=4.6.3'); src: url('fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('fontawesome-webfont.woff?v=4.6.3') format('woff'), url('fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; }
Et n'oubliez pas de redémarrer votre serveur.
Parfois, les polices ne sont pas détectées à partir du assets/fonts
répertoire.
Si la sécurité n’est pas un problème, nous pouvons placer le répertoire fonts
dans le dossier public. Ils seront alors disponibles à un public/
niveau.
N'oubliez plus rien de changer Rails 4 dans votre application.rb. Ajoutez simplement le préfixe / assets / comme @Parker Selbert et les suivants marchera:
@font-face {
font-family: 'custom-font-name';
src: font-url('/assets/_folder_/fontX-webfont.eot');
src: font-url('/assets/_folder_/fontX-webfont.eot?#iefix') format('embedded-opentype'),
font-url('/assets/_folder_/fontX-webfont.woff') format('woff'),
font-url('/assets/_folder_/fontX-webfont.ttf') format('truetype'),
font-url('/assets/_folder_/fontX-webfont.svg#sociconregular') format('svg');
font-weight: normal;
font-style: normal;
}