2012-04-04 16 views
4

Update: Einfache Testbeispiel http://jsfiddle.net/7UhrW/1/ mit normalize.css hinzugefügt.Sehr unterschiedliche Schriftgrößen in allen Browsern

Chrome/WebKit und Firefox haben unterschiedliche Rendering-Engines, die Fonts unterschiedlich darstellen, insbesondere mit unterschiedlichen Dimensionen. Das ist nicht zu überraschend, aber was ist überraschend ist die Größenordnung einiger der Unterschiede.

Ich kann immer einzelne Elemente auf einer Seite optimieren, um ähnlicher zu sein, aber das ist mühsam, um es gelinde auszudrücken. Ich habe nach systematischeren Lösungen gesucht, aber viele Ressourcen (z. B. SO-Antworten) sagen einfach "verwende ein Reset-Paket". Während ich sicher bin, dass dies eine Reihe von anderen Dingen wie Padding und Abstand behebt, scheint es keinen Unterschied für die Schriftgröße zu machen.

Zum Beispiel, wenn ich das Reset-Paket von http://html5reset.org/ nehme, kann ich ziemlich große Unterschiede zeigen (beachten Sie die Layout-Abmessungen in den Inspektoren gezeigt). [Die folgenden Bilder sind tatsächlich höher res als/in dieser Antwort verkleinert dargestellt - z. B. in Chrome können Sie mit der rechten Maustaste und öffnen Bild in neuem Tab]

<h1 style="font-size:64px; background-color: #eee;">Article Header</h1> 

enter image description here

Mit Helvetica, Chrome hat die kürzere Höhe stattdessen.

<h1 style="font-size:64px; background-color: #eee; font-family: Helvetica">Article Header</h1> 

enter image description here

Mit einem different font, wieder Chrome macht eine viel größere Schrift, sondern zusätzlich der Buchstabenabstand geht drunter und drüber (wahrscheinlich aufgrund der boldification der Schrift):

<style> 

@font-face { 
    font-family: "MyriadProRegular"; 
    src: url("fonts/myriadpro-regular-webfont.eot"); 
    src: local("?"), url("fonts/myriadpro-regular-webfont.woff") format("woff"), url("fonts/myriadpro-regular-webfont.ttf") format("truetype"), url("fonts/myriadpro-regular-webfont.svg#webfonteknRmz0m") format("svg"); 
    font-weight: normal; 
    font-style: normal; } 

@font-face { 
    font-family: "MyriadProLight"; 
    src: url("fonts/myriadpro-light-webfont.eot"); 
    src: local("?"), url("fonts/myriadpro-light-webfont.woff") format("woff"), url("fonts/myriadpro-light-webfont.ttf") format("truetype"), url("fonts/myriadpro-light-webfont.svg#webfont2SBUkD9p") format("svg"); 
    font-weight: normal; 
    font-style: normal; } 

@font-face { 
    font-family: "MyriadProSemibold"; 
    src: url("fonts/myriadpro-semibold-webfont.eot"); 
    src: local("?"), url("fonts/myriadpro-semibold-webfont.woff") format("woff"), url("fonts/myriadpro-semibold-webfont.ttf") format("truetype"), url("fonts/myriadpro-semibold-webfont.svg#webfontM3ufnW4Z") format("svg"); 
    font-weight: normal; 
    font-style: normal; } 

</style> 

... 

<h1 style="font-size:64px; background-color: #eee; font-family: Helvetica">Article Header</h1> 

enter image description here

Wenn wir versuchen, das Unitless * { line-height: 1; } einzuspritzen, wie von AC vorgeschlagen omment, sehen wir, dass es zwar identische Höhen hat ergeben, werden die vertikalen Versatz verschieden sind, wie auch andere Elemente auf der Seite:

enter image description here

Ich habe versucht, ein paar Resets/normalisieren Pakete ohne Erfolg. Ich wollte nur bestätigen, dass dies in der Tat eine Tatsache des Lebens ist (sogar die eklatanteren Täter wie IE und Mobile ausblendend) und ich verpasse keine super tolle Lösung für dieses Durcheinander.

+2

Haben Sie 'Line-height' für Ihre' BODY' Element angeben, versucht ? Standard-Zeilenhöhen sind in verschiedenen Browsern unterschiedlich. –

+1

@MaratTanalin: Nun, Dinge wie explizite Zeilenhöhen sind der ganze "langweilige" Ansatz, auf den ich mich bezog - ja, ich kann eine angemessene Höhe für jeden einzelnen Teil meiner Seiten bestimmen, und tatsächlich tue ich das bis zu einem gewissen Grad Aber ich frage mich, ob es einen besseren Weg gibt. Ein großer Teil meiner Frage zeigte genau, wie verschiedene Browser unterschiedliche Zeilenhöhen (und damit Höhen) einstellen. – Yang

+1

Sie können den unitless Wert für 'line-height' verwenden. Zum Beispiel, Zeilenhöhe: 1.25'. Es ist vollkommen richtig und hat keine negativen Folgen. –

Antwort

2

Verwendung ohne Einheit line-height für BODY (oder HTML) Element:

BODY {line-height: 1.25; } 
+0

Ich hatte gehofft, dass dies funktionieren würde, aber es führte zu mehr Problemen. Ich habe meine Frage mit Screenshots/Beschreibung des Ausprobierens aktualisiert. – Yang

+1

Mit Arial und Georgia sind die Ergebnisse in den Browsern ziemlich konsistent (Georgien - 100% identisch, Arial - Firefox, Chrome, IE8 - 100% identisch, in IE9 Text ist leicht nach oben verschoben, in IE7 - nach unten). Mit der MyriadProLight-Schriftart wird Text in IE9/IE10 im Vergleich zu anderen Browsern deutlich nach oben verschoben. Dies ist jedoch wahrscheinlich auf fehlende oder falsche Baselinedaten in Schriftartdateien zurückzuführen. Browser müssen daher erraten, an welcher Position sich die Baseline befinden sollte anders. –

+0

Danke, dass Sie Marat geholfen haben. Ich werde Ihre Antwort akzeptieren, da Ihre Hypothese über Baselines plausibel klingt, obwohl ich mit fontforge überprüft habe und nicht gesehen habe, dass es eine Basislinie für Arial.ttf fehlt. Bitte denken Sie darüber nach, die Informationen in Ihrem Kommentar zu Ihrer Antwort hinzuzufügen! – Yang

1

Einsatz Font-sites in pt statt wie font-size:12pt

Verwandte Themen