2013-03-11 6 views
9

Ich brauche in einem Projekt, um Regeln auf der Basislinie, x-Höhe und Cap-Höhe von mehreren Font-Samples zu zeigen. Ich habe Grundlinie und x-Höhe beachtet, aber habe Probleme, eine allgemeine CSS Regel zu erhalten, die einen Rand an der Kappenhöhe irgendeiner Schriftart zeichnet, auf die ich die Regel anwende. Ich habe mit der Zeilenhöhe herumgespielt, aber der Abstand zwischen den Glyphen einer Schriftart und dem oberen Rand der Layoutbox unterscheidet sich von Schriftart zu Schriftart, so dass das einmalige Einstellen nicht für jede Schriftart funktioniert.Wie kann ich eine obere Grenze eng an die Glyphen einer Schriftart anpassen?

Dieser Kodex Pen Beispiel veranschaulicht das Problem: http://codepen.io/DrSpatula/pen/BAgqG

+0

vielleicht dieser Artikel wird Ihnen helfen: http://stuffandnonsense.co.uk/blog/about/improve_your_web_typography_with_baseline_shift/ oder diese: http: // CSS-Infos. net/property/alignment-baseline – otinanai

+0

Ich denke, dass eine gute Lösung für Ihr Problem 'font-size-adjust' ist, aber wieder fehlt es an Kompatibilität. http://www.w3.org/TR/1998/REC-CSS2-19980512/fonts.html#propdef-font-size-adjust – otinanai

+0

Können Sie: nach {} und setzen Sie ein absolut positioniert 100% Breite 1px high Element top sein: -1px; Hintergrund: schwarz; ? – MyStream

Antwort

0

Es ist sehr schmutzig, aber haben Sie versucht, eine ein Pixel GIF als Hintergrund wiederholen dann setzen Sie können es Position in Bezug auf die Schrift ist?

0

vielleicht kann ich helfen. Ich habe eine kleine Geige für dich zu sehen gemacht. (http://jsfiddle.net/dgxJh/1/)

Ich befürchte jedoch, dass Sie mit dieser Lösung die Spanne mit der rosa Linie für jede Schriftgröße und jede Schriftart neu positionieren müssen. Aber im Grunde finden Sie eine Spanne über Ihren Text positionieren, indem folgenden Code:

span{ 
    height: 1px; 
    width: 100%; 
    background: pink;  
    display: block; 
    position: absolute; 
    top: 0.6em; 
} 

vergessen Sie nicht Ihre Behälter relativ

1

Sie bewerben sich auf die p die line-height jetzt zu positionieren. Wenn Sie es dort entfernen und die Zeilenhöhe auf "span.text" anwenden und auf einen Wert von 1,55ex festlegen, wird es ordnungsgemäß angezeigt.

So wird Ihre CSS sein:

p { 
     font-size: 72px; 
     position: relative; 
     margin: 0; 
     padding: 0; 
    } 

    p span { 
     margin: 0; 
     padding: 0; 
     display: inline-block; 
    } 

    .sans { 
     font-family: sans-serif; 
    } 

    .text { 
     border-top: 1px solid blue; 
     line-height: 1.55ex; 
    } 

    .rule { 
     height: 1ex; 
     border-top: 1px dotted red; 
     border-bottom: 1px solid blue; 
     position: relative; 
     left: -7.25em; 
     width: 7.75em; 
     top: 1px; 
    }