Il problema qui non è l'altezza della linea ma il posizionamento verticale dei glifi, in particolare la posizione della linea di base del testo. Questo è qualcosa su cui il designer di font ha deciso; il designer disegna i glifi e li posiziona nel quadrato em, il dispositivo concettuale che ha altezza uguale o definita all'altezza del carattere. In particolare, il progettista decide quanto spazio c'è sotto la linea di base da una parte e sopra l'altezza delle lettere maiuscole dall'altra. In genere questi spazi sono uguali o quasi uguali, ma non è necessario. Se sono sostanzialmente diversi, l'uso previsto del font è probabilmente speciale e non include l'utilizzo come quello mostrato nell'immagine. Questo suggerisce che la scelta del font debba essere riconsiderata, ma supponiamo che sia fissa.
Ci sono diversi modi per affrontare il problema. Se c'è troppo spazio sotto le lettere, ridurre line-height
lo rende più piccolo, ma influenza anche lo spazio sopra. L'imbottitura superiore aiuta in un certo senso, ma aumenta l'altezza totale occupata dall'elemento. È anche possibile giocare con vertical-align
, ma influisce sull'altezza delle caselle di riga.
Probabilmente l'approccio più semplice è quello di utilizzare il posizionamento relativo , partendo dal presupposto che il problema riguardi un testo di una sola riga. Il posizionamento relativo sposta semplicemente il contenuto in un modo specificato, senza influenzare altrimenti il layout. Avresti bisogno di un wrapper per questo, cioè di un elemento che contiene il testo, in modo da poter spostare solo il testo, non lo sfondo.
La seguente demo utilizza un carattere Google, Candal, che presenta un problema simile, ma in una direzione diversa: la linea di base è troppo bassa. Le modifiche di questo approccio per soddisfare il problema originale dovrebbero essere ovvie, ma l'esatta quantità di spostamento deve essere determinata empiricamente (o da informazioni estratte dal file di font usando un inspector di font). Naturalmente, l'unità em
deve essere utilizzata qui, anche se si imposta la dimensione del carattere in pixel o punti (in modo che il codice non debba essere modificato se la dimensione del carattere viene modificata un giorno).
<link href='http://fonts.googleapis.com/css?family=Candal' rel='stylesheet'>
<style>
div { font-family: Candal }
div { background: lightgreen; font-size: 200%}
</style>
<p>What we have got initially:
<div>BRAKE HOSE AND AIR CHAMBER</div>
<p>Reducing line height (even “setting solid”) does not really help:
<div style="line-height: 1">BRAKE HOSE AND AIR CHAMBER</div>
<p>But displacing the text upwards by 0.1em does:
<div><span style="position: relative; bottom: 0.1em">
BRAKE HOSE AND AIR CHAMBER</span></div>
fonte
2015-01-23 09:08:28
Questo non riguarda l'altezza della linea ma il posizionamento verticale dei glifi. –
Qualunque altra soluzione plausibile a questo? a parte la soluzione accettata? Non voglio modificare manualmente il font –