Fehlerhaftes Rendern von Bold und Italic: Opera

ScoutX

Captain
Registriert
März 2003
Beiträge
3.833
Ich habe ein kleines Problem, dessen Lösung anscheinend nicht möglich ist.

Zur Vorgeschichte: Drupal Webseite mit eigenem font-face.
Font-face habe ich versucht mit fast allen Browsern realisierbar zu machen. Funktinoiert auch so weit, nur einzig und allein Opera schafft es nicht bold und italic anzuzeigen.
Dragonfly sieht den Code aber eindeutig als z.B. italic.

Für einfach editierbare Stellen habe ich mittlerweile mir von der Schriftart noch extra Bold und Italic hochgeladen mit allen woffs eols und ttfs, um zur Not hier irgendwie einzugreifen.

Aber an einigen Stellen ist dies so gut wie unmöglich, da ich mir sonst diverse CSS Dateien effektiv zerlege.
(Widerspruch im Code, da bold und italic durch Drupal z.T. tief im Code hinterlegt sind, demnach recht schwer änderbar für Systemseiten und dies mit der Schriftart kollidiert, die bei "font-style: normal" schon z.B. italic wäre. Sieht logischerweise für alle Browser ausser Opera dann falsch aus, schon ausprobiert.)

http://readableweb.com/font-face-in-opera-10-5-pre-alpha-stinks-despite-snapshot-hype/
Seite besagt, Opera rendert falsch. Nun, dies ist wohl war.

Nun hätte ich gerne ein CSS Schnipsel, der spezifisch für Opera wäre, der folgendes macht.
Wenn font-style = bold , nehme font-bold.

Update: Leider musste ich festellen, dass auch Chrome dieses Problem zeigt.
 
Zuletzt bearbeitet:
Konnte mir nur notdürftig behelfen, in dem ich diese Attribute bei Drupal anderen Schriften zugeordnet habe.
Damit hat man schon einige abgedeckt, aber immer noch nicht alles.
Besonders bei Label, dass bei Drupal je nach Theme mit "font-weight: 700 o .bold " Deklaration daherkommt, funktioniert dies nur, da glücklicherweise die Browser, meine Bold-Schriftart nicht nochmals mit einem "font-weight: Zahl oder bold" belegen können. "Large" würde z.B problemlos funktionieren. Glücklicherweise werden die Nodes immer mit "strong" oder "em" erzeugt und nicht mit font-style etc. pp.

Code:
strong { 
font-family: "TiresiasPCfontBold", Verdana, sans-serif; 
}

em{
 font-family: "TiresiasPCfontItalic", Verdana, sans-serif; 
 }
 
 label{
 font-family: "TiresiasPCfontBold", Verdana, sans-serif; 
 }
Dummerweise sind die Ersatzschriftarten leider nicht so stark fettgedruckt oder kursiv, als wenn die eigentliche Schriftart manipuliert würde (eher recht schwach).

Wäre recht nett von den Browserentwicklern bei FF oder selbst IE abzukupfern, um solche Probleme aus der Welt zu schaffen.

Lol, die Posts wurden nicht zusammengefügt, wohl ein Fehler bei eurem Joomla.
 
Probiere es einmal so, lieber ScoutX:

Code:
/* Fuer normal weight und normal style */
@font-face {
font-family: "Tiresias PC";
src: url(../fonts/TiresiasPCfont.ttf);
}

/* Fuer bold weight und normal style */
@font-face {
font-family: "Tiresias PC";
font-weight: bold;
src: url(../fonts/TiresiasPCfontBold.ttf);
}

/* Fuer bold weight und italic style */
@font-face {
font-family: "Tiresias PC";
font-style: italic;
font-weight: bold;
src: url(../fonts/TiresiasPCfontBoldItalic.ttf);
}

/* Fuer normal weight und italic style */
@font-face {
font-family: "Tiresias PC";
font-style: italic;
src: url(../fonts/TiresiasPCfontItalic.ttf);
}

und anschließend

Code:
em, strong, label { font-family: "Tiresias PC", Verdana, sans-serif; }

Ich bin in meinem Beispiel davon ausgegangen, dass es sich um eine True-Tipe-Schriftart handelt. Getestet habe ich es nicht, aber das Prinzip ist korrekt.
 
Funktioniert nicht. Dies war mein ursprünglicher Ansatz.

Damit machst Du den unteren Code obsolet und oben ist der CSS Code für die Browser nicht mehr eindeutig, da es keinen Attributselektor gibt, somit wird immer die erste Font-face Deklaration für Teresias PC innerhalb der CSS genommem und darauf italic oder bold angewendet.

Dein Code kann nur einen speziellen Font immer kursiv oder immer bold anzeigen lassen, wenn es denn der Browserrenderer zulässt. Eine Zusammenfassung einer Schriftartenfamilie in mehrere Unterabschnitte (obwohl z.T. einige Coder davon ausgehen) funktioniert so nicht.

Normalerweise müsste es
Code:
@font.face[font-weight=bold] {
font-family: "Tiresias PC Bold";
src: url(../fonts/TiresiasPCfontBold.ttf);
}
heissen. Font Face hat damit einen Attributselektor bekommen
Auch dieses habe ich probiert. Wird nicht angenommen.

Auch ein Universalselektor
*[font-weight=bold] {
....}
schlägt fehl. Warum? Ich weiß es nicht.
 
Seltsam, ich mache es immer so und es funktioniert. So steht es ja auch in den Spezifikationen. Oder habe ich mich da vertan? Schade, dass ich dir nicht helfen konnte.
 
Angeblich soll @fontface als wenn - dann Selektor angelegt worden sein.
Nur entspricht es nicht den CSS Geflogenheiten. Denn alles was nach der Klammer kommt ist Deklaration und nicht Selektor.
Wenn dann wäre: Schaue ob Schrift zu Tiresias gehört, italic und bold ist und nehme dann die src schriftitalicbold. Aber es wird anscheinend in vielen Fällen nicht so interpretiert.
Ob es nun am Browser liegt oder an was auch immer.

Einfaches Beispiel: Man setze eine Schriftfamilie + font-weight bold mit font-face fest.
Diese Schrift wird dann fett gedruckt, obwohl bold nicht in der html angegeben wurde, sondern nur die font-family.
Zumindest bei mir.
 
Zurück
Oben