2013-10-06 15 views
25

Desidero utilizzare qualcosa di diverso dai caratteri standard con la mia estensione Chrome. Ero entusiasta della possibilità di utilizzare Google Web Fonts, ma sembra che potrebbe incorrere in una penalità per il trasferimento del carattere Web sulla rete ogni volta che viene utilizzata dall'estensione, al punto da compromettere le prestazioni della mia estensione. Ho qualche opzione per confezionare un font con la mia estensione che funzioni su tutte le piattaforme supportate da Chrome (Windows/Mac/etc.)? Grazie in anticipoConfezionamento di un carattere con estensione Google Chrome

risposta

39

Scegli il tuo tipo di carattere. Ad esempio prendo lo "Stint Ultra Expanded". C'è ad esempio come aggiungere alla tua pagina:

<link href='http://fonts.googleapis.com/css?family=Stint+Ultra+Expanded' rel='stylesheet' type='text/css'> 

prendere solo il href e aprirlo in browser. Vedrete dovrebbe occupare in questo modo:

@font-face { 
    font-family: 'Stint Ultra Expanded'; 
    font-style: normal; 
    font-weight: 400; 
    src: local('Stint Ultra Expanded'), local('StintUltraExpanded-Regular'), url(http://themes.googleusercontent.com/static/fonts/stintultraexpanded/v1/FeigX-wDDgHMCKuhekhedWmdhyVWfbygZe-w47Q2x_f3rGVtsTkPsbDajuO5ueQw.woff) format('woff'); 
} 

Prendere primo parametro di url valore da src proprietà (http://themes.googleusercontent.com/static/fonts/stintultraexpanded/v1/FeigX-wDDgHMCKuhekhedWmdhyVWfbygZe-w47Q2x_f3rGVtsTkPsbDajuO5ueQw. woff).

Scarica questo file.

Utilizzare il parametro di local valore della src proprietà come il nome del file (Stint Ultra Expanded)

Un modo semplice è quello di scaricare il programma sta usando wget:

wget -O "Stint Ultra Expanded.woff" http://themes.googleusercontent.com/static/fonts/stintultraexpanded/v1/FeigX-wDDgHMCKuhekhedWmdhyVWfbygZe-w47Q2x_f3rGVtsTkPsbDajuO5ueQw.woff 

Creare ora file css e aggiungi contenuto che hai visto prima. Ma è necessario modificare il valore della proprietà src. Rimuovi tutti gli local e regola url. Dovrebbe essere smth come questo:

@font-face { 
    font-family: 'Stint Ultra Expanded'; 
    font-style: normal; 
    font-weight: 400; 
    src: url('../fonts/Stint Ultra Expanded.woff') format('woff'); 
} 

Ora aggiungere il file CSS per estensione e utilizzare il tipo di carattere:

popup.html

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <link href='css/fonts.css' rel='stylesheet' type='text/css'> 
</head> 
<body> 

    <span style="font-family: 'Stint Ultra Expanded';">Hello Font</span> 

</body> 
</html> 

Se volete usa questo carattere in content_script devi regolare url nel tuo css:

@font-face { 
    font-family: 'Stint Ultra Expanded'; 
    font-style: normal; 
    font-weight: 400; 
    src: url('chrome-extension://[email protected]@extension_id__/fonts/Stint Ultra Expanded.woff') format('woff'); 
} 

È possibile aggiungere tutte le regole @font-face nel proprio css come desiderato.

Avviso: il valore local nella proprietà src indica quale nome deve essere utilizzato per memorizzarlo. È una buona idea usare questo nome.

Secondo avviso: se lo si utilizza come previsto da Google, il browser controlla se questo carattere è già disponibile locale. Se questo non è il caso, verrà scaricato e memorizzato. Quindi la prossima volta userebbe il carattere che è stato precedentemente memorizzato.

Come di Chrome 37 (forse prima), è necessario citare la fonte come risorsa accessibile web nel manifesto della estensione:

"web_accessible_resources": [ 
    "font/*.woff2" 
] 

altrimenti si sarebbe visualizzato un errore simile:

Denying load of chrome-extension://{ID}/font/My Web Font.woff2. 
Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension. 
+0

Questo non funziona per i pacchetti di applicazioni. 'web_accessible_resources' è consentito solo per estensioni, app in hosting e app preesistenti in pacchetto, ma questa è un'app in pacchetto. –

+1

Non riuscivo a ottenere questo metodo per funzionare nel popup della mia estensione di Chrome. – offthat

+0

è vero che "web_accessible_resources" è consentito solo per le estensioni, ma semplicemente il download e l'integrazione del font (come descritto nella prima parte della risposta) funziona perfettamente nelle app in pacchetto. – schellmax

3

Chiedere all'utente le autorizzazioni per accedere a Google Web Fonts è molto meno impegnativo di quello di includerli (anche se ciò potrebbe avere perfettamente senso per eventuali scenari off-line).

manifest.json

"permissions": [ 
    "http://fonts.googleapis.com/", 
    "https://fonts.googleapis.com/" 
], 
+1

Questo non funzionerà nelle app in pacchetto, ma funzionerà nelle estensioni. –

+0

@WillScott hai trovato una soluzione per le app in pacchetto? –

+0

Come aggiungerebbe il collegamento CSS nell'estensione? L'ho provato nel manifest, ma non ha funzionato lì. – Hannobo

Problemi correlati