Chiedo questo perché quando provo a creare uno stack di font CSS per contenuti multilingua, come inglese e cinese, il rendering finale è influenzato dal primo font nello stack (di solito quelli latini, dato che la maggior parte dei font cinesi viene fornito con Supporto latino).L'altezza della riga è determinata dal primo carattere in uno stack di font CSS?
Vedere this Codepen, ad esempio.
div.a p {
overflow: hidden;
}
p {
background-color: red;
border: 1px solid black;
display: inline-block;
}
.chinese-only {
font-family: "Hiragino Sans GB", sans-serif;
font-size: 24px;
line-height: 48px;
}
.english-chinese {
font-family: "Avenir Next", "Hiragino Sans GB", sans-serif;
font-size: 24px;
line-height: 48px;
}
.chinese-english {
font-family: "Hiragino Sans GB", "Avenir Next", sans-serif;
font-size: 24px;
line-height: 48px;
}
quello che sto vedendo:
Dal glifi cinesi appaiono solo nel Hiragino Sans GB
, mi aspetto che tutti i blocchi cinesi di utilizzare la stessa altezza della linea. Ma sono apparentemente interessati dall'aggiunta del font Avenir Next
in cima allo stack.
Poiché sia Firefox che Chrome su OSX rendono il mio esempio lo stesso, mi chiedo se le specifiche CSS non menzionino nulla al riguardo. CSS 2.1 fonts spec non sembra indicare cosa fare con l'altezza della linea quando si esegue il fallback su glifi mancanti.
Aggiornato: Safari non rende in modo diverso, ma purtroppo la differenza è dovuta al overflow: hidden
, non glifo fallback. Il mio updated example potrebbe mostrare questo un po 'più chiaro.
Su Chrome e Firefox
On Safari
E se siete veramente in mal di testa correlati ai font, provare this example mostrando diverse pile di carattere, e vedere come si differenziano per ciascun browser.
La specifica CSS2.1 per 'line-height' non è nella sezione 15, ma in [sezione 10.8] (http://www.w3.org/TR/CSS21/visudet.html#line-height). – BoltClock
@BoltClock la specifica dice "Se si utilizza più di un font (questo potrebbe accadere quando i glifi si trovano in caratteri diversi), l'altezza dell'area del contenuto non è definita da questa specifica." quando tutti i glifi ricadono sui secondi caratteri, perché AD è influenzato dal primo carattere (presumo che sia la radice del mio problema) – bitinn
domanda simile: http://stackoverflow.com/questions/28363186/inline-elements-and-line -altezza, ma la risposta in realtà non risponde: 1. perché la specifica dice che un UA può usare em-box ** o ** ascender/discender (AD); 2. come decidono i browser in em/box max/min o AD quando si verifica ** falltion del glifo **. – bitinn