Livellamento e antialias dei caratteri Web in Firefox e Opera


112

Ho font web personalizzati utilizzati sul mio sito. Per modellare il mio output di rendering, ho usato il codice seguente:

//-webkit-text-stroke-width: .05px;
//-webkit-text-stroke-color: white;
-webkit-font-smoothing: antialiased;

Funziona bene su Safari e Chrome (i bordi sono più nitidi e le linee sono più sottili). C'è un modo per implementare lo stesso stile su Firefox e Opera?


5
Sarebbe una buona idea smettere di farlo e leggere perché qui: usabilitypost.com/2012/11/05/stop-fixing-font-smoothing
fregante

20
^ questa è un'ampia generalizzazione e va bene usare il font-smoothing. È il problema di rendering il problema, non il comportamento del progettista. Quando si progetta un layout e il carattere sembra essere semi-grassetto a causa del motore di rendering, è il motore che deve essere corretto, non il layout.
Dylan

1
Non è del tutto una generalizzazione ampia. L'articolo dice che il rendering dei subpixel era principalmente inteso per rendere il testo chiaro su sfondi scuri più leggibile (cioè accessibile), e rendere una definizione CSS ampia come body { -webkit-font-smoothing: antialiased; }è troppo pesante.
Matt Scheurich

3
Anche i miei caratteri web che sono scuri su sfondi chiari stanno diventando "finto grassetto". Dico "antialias" tutto intorno.
Jason T Featheringham

5
La modalità di visualizzazione di una pagina dipende dal designer, inclusi tutti gli attributi tipografici. È loro responsabilità garantire usabilità, coerenza e appeal sulla più ampia gamma di piattaforme. L'accesso agli attributi di smussatura dei caratteri tramite CSS consente un maggiore controllo. Come ogni cosa, può essere utilizzato in modo improprio nelle mani sbagliate. Ma propagandare la filosofia personale piuttosto che rispondere alla domanda non è utile.
Beejor

Risposte:


193

Poiché Opera è alimentato da Blink dalla versione 15.0 -webkit-font-smoothing: antialiasedfunziona anche su Opera.

Firefox ha finalmente aggiunto una proprietà per abilitare l'antialiasing in scala di grigi. Dopo una lunga discussione sarà disponibile nella versione 25 con un'altra sintassi, che fa notare che questa proprietà funziona solo su OS X.

-moz-osx-font-smoothing: grayscale;

Questo dovrebbe correggere i caratteri delle icone sfocate o il testo chiaro su sfondi scuri.

.font-smoothing {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

Puoi leggere il mio post sul rendering dei caratteri su OSX che include un mixin Sass per gestire entrambe le proprietà.


6
Perché solo OSX ??
Yassir Ennazk

7
Windows e Linux utilizzano algoritmi di rendering diversi per i caratteri rispetto a OSX.
Maximilian Hoffmann

15

Bene, Firefox non supporta qualcosa del genere.

Nella pagina di riferimento da Mozilla specifica font-smoothcome proprietà CSS controlla l'applicazione dell'anti-aliasing quando i caratteri vengono renderizzati, ma questa proprietà è stata rimossa da questa specifica e attualmente non è nella traccia standard.

Questa proprietà è supportata solo nei browser Webkit.

Se vuoi un'alternativa puoi controllare questo:


2
Bene, il problema che ho è che i miei caratteri sembrano "audaci" e gonfiati in Firefox e Opera. Con -webkit-font-smoothing:antialiased;potrei aggiustarlo in Safari e Chrome. Mi piacerebbe trovare qualsiasi "trucco" per rendere i miei caratteri un po 'più leggeri anche in Firefox. Ho pensato di applicare un bianco text-shadowsolo in moz, ma non c'è modo di applicare un'ombra di testo "inserita" che renderebbe il carattere più chiaro.
matt

1
@matt Puoi provare alcuni consigli CSS in questa domanda: stackoverflow.com/questions/761778/… Forse trovi qualche alternativa CSS.
Jonathan Naguin

11

Caso: testo chiaro con carattere web frastagliato su sfondo scuro Firefox (v35) / Windows
Esempio: Google Web Font Ruda

Soluzione sorprendente:
aggiunta della seguente proprietà ai selettori applicati:

selector {
    text-shadow: 0 0 0;
}

In realtà, il risultato è lo stesso solo con text-shadow: 0 0;, ma mi piace impostare esplicitamente il raggio di sfocatura.

Non è una soluzione universale, ma in alcuni casi potrebbe aiutare. Inoltre, finora non ho riscontrato (anche non testato a fondo) impatti negativi sulle prestazioni di questa soluzione.


Non fa nulla per aiutare
vsync

questo causerà caratteri più audaci su Chrome basati sul carattere
Ben Sewards

1
@BenSewards Forniresti un font in cui ti sei imbattuto in un rendering dei font più audace? O forse anche una CodePen? Grazie in anticipo.
Volker E.

1
@VolkerE. grazie per l'ottima soluzione. Ho lo stesso fastidioso problema con il font Source Code Pro in un'intestazione adesiva. Quando scorro il carattere diventa molto piccolo e con l'ombreggiatura del testo il carattere non crea problemi.
Evolutio

Sull'attuale Chrome (58.0.3029.110) il testo "liscio" sembra davvero orribile. (il testo "frastagliato" è leggermente migliore)
RecursiveExceptionException

7

Dopo aver riscontrato il problema, ho scoperto che il mio file WOFF non era stato eseguito correttamente, ho inviato un nuovo TTF a FontSquirrel che mi ha fornito un WOFF corretto che era fluido in Firefox senza aggiungere alcun CSS aggiuntivo.


è in Windows?
Vignesh

5

Ho trovato la soluzione con questo link: http://pixelsvsbytes.com/blog/2013/02/nice-web-fonts-for-every-browser/

Metodo passo passo:

  • invia il tuo font a un WebFontGenerator e ottieni lo zip
  • trova il carattere TTF nel file Zip
  • quindi, su linux, esegui questo comando (o installa da apt-get install ttfautohint):
    ttfautohint --strong-stem-width=g neosansstd-black.ttf neosansstd-black.changed.ttf
  • quindi, ancora uno, invia il nuovo file TTF (neosansstd-black.changed.ttf) sul WebFontGenerator
  • ottieni uno Zip perfetto con tutti i tuoi webfont!

Spero che questo ti possa aiutare.


Ha fatto un ottimo lavoro nel correggere il jagging dei caratteri durante le transizioni CSS (anche se non è stato rimosso completamente). Ho usato il generatore FontSquirrel con l'opzione TTFAutohint
Andrey

Ho usato Fontie per rigenerare i miei file WOFF, WOFF2, EOT e SVG con autohint per Windows abilitato.
Dominique

4

... nel tag del corpo e questi dal contenuto e dal carattere tipografico hanno un aspetto migliore in generale ...

body, html {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
text-rendering: optimizeLegibility;
text-rendering: geometricPrecision;
font-smooth: always;

font-smoothing: antialiased;
-moz-font-smoothing: antialiased;
-webkit-font-smoothing: antialiased;
-webkit-font-smoothing: subpixel-antialiased;
}


#content {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;

}

2
Mi dispiace ... cos'è "reinschreiben"? La maggior parte di noi non parla tedesco, quindi sarebbe bello se tu scrivessi l'intero post in inglese.
Rayryeng

3
Oh per favore, mi scuso per aver tradotto con Google e in qualche modo la parola sbagliata da quando è scivolata :)
user3634787

3

Quando il colore del testo è scuro, in Safari e Chrome, ho risultati migliori con la proprietà css text-stroke.

-webkit-text-stroke: 0.5px #000;

La domanda riguarda Firefox e Opera. quindi questa risposta non ha nulla a che fare con la domanda
vsync

-4

Aggiunta

font-weight: normal;

I caratteri @ font-face correggeranno l'aspetto in grassetto in Firefox.


7
font-weight(non sorprende) influisce sul peso del carattere, non sull'arrotondamento del carattere. Aggiungerlo alle dichiarazioni @ font-face causerà confusione se il file di font collegato non è un file di font di peso normale.
Mike Meyer

@MikeMeyer In realtà sono d'accordo con il commento di Aaron. Aggiungere font-weight: normale a un font include che è un font "leggero" sembrerebbe aggiungere confusione, ma dovrebbe confondere solo lo sviluppatore inesperto. In realtà è una buona pratica specificare un valore predefinito normale nella mia esperienza. Normale in questo caso si riferisce a "normale" per il tipo di carattere incluso e per i caratteri utilizzati e non ha lo scopo di specificare le informazioni sul tipo di carattere stesso. In molti casi (in particolare su piattaforme di grandi dimensioni) ridurrà la probabilità di bug derivanti dalla cattiva architettura fin troppo tipica che vedi intorno agli stili di carattere.
dudewad

In effetti, il nome della faccia del carattere stesso dovrebbe denotare il peso del carattere per impostazione predefinita ...!
dudewad

@dudewad, è fantastico che tu sia d'accordo, e sì, è un "suggerimento" decente (anche se piuttosto conciso) font-weight. Il fatto è che OP non stava chiedendo di font-weight- stava chiedendo di antialiasing . Questa è una risposta corretta per una domanda completamente diversa.
Mike Meyer

@ MikeMeyer hai perfettamente ragione. A volte mi lasciano trasportare un po '. ;)
dudewad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.