stefan: Merkwürdiger Safari-Bug?

Hallo.

Ich hab mit grad mal die neue Safari-Betaversion für Windows installiert und eifrig (meine) Seiten getestet. dabei ist mir merkwürdiges aufgefallen:

<p style="font-family:Courier new,Courier,monospace;font-size:1em;">Text</p>

wird in Safari in kleinerer Schrift (ungewöhnlich klein) dargestellt als

<p style="fon-family:Courier new,Courier;font-size:1em;"Text</p>

Ein bisschen gegoogel zeigte mir, dass mir nicht als einziger bis jetzt dieser Bug aufgefallen ist. Eine Lösung fand ich jedoch nicht.

Weiß jemand Rat?

Einfach "monospace" weglassen und davon ausgehen, dass "Courier (new)" auf so gut wie allen Rechnern mit grafischem Browser installiert ist? Inhaltlich ist die monospaced-Schrift in meinem Fall nicht besonders relevant (Keine Codedarstellung, ASCII-Art oder Ähnliches), sie dient eher dekorativem Zweck. Trotzdem würde mich die Weglassung einer generischen Schriftart (so heißt das glaub ich oder?) natürlich wurmen. Vielleicht gibts ja nen workaround?

Schöne Grüße
Stefan

  1. Weiß jemand Rat?

    http://webkit.org/blog/?p=67 beschäftigt sich damit.

    Ich kann bestätigen, dass der Bug in Version 1 und 2 nicht auftaucht. Erst Safari 3 und aktuelle WebKits zeigen die kleine Schrift. Versionen von hinten nach vorne aufsteigend:

    Safari-Bug: monospace/font-size

    Einfach "monospace" weglassen und davon ausgehen, dass "Courier (new)" auf so gut wie allen Rechnern mit grafischem Browser installiert ist?

    Oder einfach mit dem Fehler leben?

    Roland

    --
    Mac or PC?
    Classic Rap: MP3 96k • AAC+ 24k • WMA 32k
    1. Hallo.

      Ich kann bestätigen, dass der Bug in Version 1 und 2 nicht auftaucht.
      Safari-Bug: monospace/font-size

      Laut meinen Quellen schon. Ungeduldig wie ich bin hab ich nach meinem Posting schonmal online rumprobiert und monospace rausgeschmissen. Kann gut sein dass Deine alten Safaris dann die ohne-monospace-Version zu sehen bekamen. Hier ist ein Testcase: http://www.456bereastreet.com/lab/monospaced/

      Oder einfach mit dem Fehler leben?

      Och menno :\

      schöne Grüße
      stefan

    2. Ach so, danke für die Mühe natürlich! Wo hab ich nur grad meine Manieren? Ts ...

      schöne Grüße
      stefan

  2. Hey,

    warum macht schraubt man heutzutage eigentlich schon an seinem markup für irgendwelche wald- und wiesenbetas rum? Melden und warten?

    Tschö

  3. Hallo,

    nur zur Sicherheit:

    <p style="fon-family:Courier new,Courier;font-size:1em;"Text</p>

    ist fon-family ein Schreibfehler hier im Forum oder in Deinem Code?

    Gruß,
    Olaf

    1. Hallo.

      ist fon-family ein Schreibfehler hier im Forum oder in Deinem Code?

      Hoppla. Nee, nur hier. Mein Code validiert.

      Schöne Grüße
      stefan

  4. Ha, ich hab die Lösung! Simpel und valide:

    font-family:Courier new,Courier,monospace,sans-serif;

    Die letzte Angabe hebt den "Monospacemodus" wieder auf und die Schrift erscheint in vernünftiger Größe. Mein erster Workaround, ich freu mich!

    Schöne Grüße
    stefan

    1. Hallo stefan,

      Mein erster Workaround, ich freu mich!

      ... zu früh, denn dieser ist unsinnig. Du könntest dann auch gleich auf monospace verzichten, wenn Du als Familie danach sans-serif angibst, die jedoch gar nicht zu Deinen vorherigen Arten passt. Du hast unterm Strich nichts verbessert.

      Mit freundlichem Gruß
      Micha

      1. Hallo Micha.

        Du hast unterm Strich nichts verbessert.

        Seh ich anders. Hier nochmal der Code:

        font-family:Courier new,Courier,monospace,sans-serif;

        Der Browser macht jetzt Folgendes: Er guckt ob er "Courier new" hat, wenn ja stellt ers da.
        Wenn nicht guckt er ob er "Courier" hat, wenn ja stellt ers da.
        Wenn nicht guckt er ob er irgendweine monospace-Schrift hat. Nur in dem Fall, dass er keine hätte, würde er auf sans-serif zurückgreifen. In sofern: Solange monospace dargestellt werden kann, wird monospace auch dargestellt werden, nur halt in ner vernünftigen Größe.

        Schöne Grüße
        stefan

        1. Hallo stefan,

          Seh ich anders.

          man kann ja nur eine Familie angeben. Ich formuliere es mal als Frage, wird bei der Angabe einer zweiten nicht die erste überschrieben und bleibt somit unberücksichtigt?

          Analog zu diesem Beispiel:

            
          p {  
            color: red; /* wird nie eintreffen */  
            color: black;  
          }
          

          Mit freundlichem Gruß
          Micha

          1. Hallo Micha.

            Seh ich anders.
            man kann ja nur eine Familie angeben.

            Wo steht das geschrieben? In der Spezifikation jedenfalls nicht. Dort steht:

            … [, <family-name>| <generic-family>]*

            Was bedeutet, dass die generische Schriftfamilie sowohl weggelassen, als auch beliebig oft angegeben werden kann. (Ja, mir ist bewusst, dass letzteres ersteres impliziert.)

            Ich formuliere es mal als Frage, wird bei der Angabe einer zweiten nicht die erste überschrieben und bleibt somit unberücksichtigt?

            Nein, da die generische Schriftfamile als normale Schriftart angesehen wird. Die Browser arbeiten diese bis zum ersten Auffinden einer verfügbaren Schriftart ab.

            Analog zu diesem Beispiel:

            p {
              color: red; /* wird nie eintreffen */
              color: black;
            }

              
            Das ist etwas völlig Anderes, da du hier explizit den ersten Wert überschreibst.  
              
              
            Einen schönen Sonntag noch.  
              
            Gruß, Mathias  
            
            -- 
            ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)  
              
            debian/rules
            
            1. Hallo Mathias Brodala & stefan,

              okay, da habe ich wohl Äpfel mit Birnen verglichen ;-)

              Mit freundlichem Gruß
              Micha

          2. Hallo.

            man kann ja nur eine Familie angeben. Ich formuliere es mal als Frage, wird bei der Angabe einer zweiten nicht die erste überschrieben und bleibt somit unberücksichtigt?

            Moment, man _kann_ durchaus meherere Familien angeben (soll heißen, es ist valide), nur über Sinn und Zweck davon lässt sich streiten. In diesem Fall ist der Zweck ein Workaround um einen "bug" bzw. zumindest eine kleine Browserexzentrik zu umgehen.

            Analog zu diesem Beispiel:

            p {
              color: red; /* wird nie eintreffen */
              color: black;
            }

              
            Da liegt eben der Unterschied. Bei Deinem Beispiel wird immer die \_letzte\_ Angabe genommen, bei font-family jedoch jeweils die erste Angabe innerhalb der Auflistung, die der Browser darstellen kann (siehe vorheriges Posting von mir). ein Browser sollte, sofern "Courier new" instaslliert ist, also `p {font-family:Courier new;}`{:.language-css} und `p {font-family:Courier new,monospace;}`{:.language-css} identisch darstellen.  
              
            [SelfHTML](http://de.selfhtml.org/css/eigenschaften/schrift.htm#font_family):  
              
            "Mit font-family: können Sie eine oder mehrere Schriftarten bestimmen. Bei mehreren angegebenen Schriftarten ist die Reihenfolge der Angabe entscheidend: ist die erste angegebene Schriftart verfügbar, wird diese verwendet. Ist sie nicht verfügbar, wird die zweite Schriftart verwendet, falls diese verfügbar ist usw."  
              
            Safari (unter Windows zumindest) jedoch stellt falscher Weise mit der generischen Schriftfamilie monospace versehne Texte prinzipiell kleiner dar, egal ob `p {font-family:Courier new,monospace;}`{:.language-css}, `p {font-family:Arial,monospace;}`{:.language-css} oder was auch immer.  
              
            Durch `p {font-family:monospace,sans-serif;}`{:.language-css} wird dieser "Fehler" aufgehoben. Natürlich ist dies rein logisch gesehen Quatsch, da sans-serif bei vernünftig interpretiertem CSS niemals zum Einsatz kommen wird, jedoch bringt es Safari dazu seine monospace-Schrift in normaler Größe darzustellen.  
              
            Schöne Grüße  
            stefan