2011-12-04 26 views
17

Musi być coś podstawowego, czego tu brakuje. Pomyślałem, że grubość czcionki: pogrubiona nie powinna zmieniać ilości pionowej przestrzeni tekstu. Zwłaszcza, gdy wysokość linii jest ustawiona na wyższą niż rozmiar czcionki.Pogrubiona wysokość linii tekstu jest wyższa niż normalna wysokość linii tekstu

http://jsfiddle.net/Arkkimaagi/7xAyy/

Na moim OSX chromem te trzy szczyty tekstowe nie pasują. Drugi z grubością czcionki: pogrubiony jest o 1 piksel wyższy niż pozostałe. Trzeci div jest tylko przykładem ustalania problem (słabo)

Próbuję ustawić line-height do czegoś konkretnego (18px) Tutaj, aby mieć „pionowy rytm”

Moje pytanie brzmi, jak mam wytłuszczony i normalny tekst zarówno z taką samą wysokością linii jak w przykładzie?

[edit:] oto co widzę na moim mac Example of the problem on my osx

Również tutaj jest to, co ment przez "pionowego rytmu": http://www.alistapart.com/articles/settingtypeontheweb - siatki linii bazowych jest bardziej widoczna w przykładzie: http://www.alistapart.com/d/settingtypeontheweb/example_grid.html

+0

Nie można odtworzyć w przeglądarce Firefox w systemie Windows. Teoretycznie grubość czcionki nie powinna zmieniać wysokości linii.Co masz na myśli mówiąc "pionowy rytm"? Co dokładnie próbujesz zrobić? Ustawienie wysokości linii zwykle nie jest najlepszym rozwiązaniem. – Viruzzo

+0

Możesz spróbować użyć 'padding' zamiast' line-height'. Możesz także chcieć umieścić obraz dla tych, którzy nie mają OSX. –

+0

Dobra, starałem się być bardziej zrozumiały. Dodałem obrazek przedstawiający to, co widzę i kilka linków wyjaśniających pionowy rytm lub linię podstawową. Siatka jest tym, co próbuję tutaj zrobić. Ten przykład to tylko niewielka część rzeczy, z którą miałem problemy. –

Odpowiedz

4

To całkowicie zależy od czcionek, których używasz. Nic na temat renderowania tekstu OSX ani Chrome nie zapewni, że dwie różne czcionki (a Helvetica-neue i Helvetica-neue-bold będą dwiema różnymi czcionkami) będą miały tę samą pionową przestrzeń, nawet przy tym samym rozmiarze czcionki i wysokości linii.

Mimo że jest to zbyt wiele do zapytania, można by pomyśleć, że dwie różne czcionki z tej samej rodziny mogą być spójne i zazwyczaj są, ale niestety dwie czcionki, które wybrałeś, nie są.

+1

Dziwne jest jednak, ponieważ wysokość linii została wyraźnie ustawiona na 'px', co powinno spowodować, że będzie miała taką samą wysokość niezależnie od rzeczywistego rozmiaru czcionki. 'line-height: 18px;' powinno być takie samo, bez względu na to, czy czcionka ma rozmiar '1px' czy' 100px'. –

+0

Dzięki Nate B, to też myślałem. 18 pikseli ma 18 pikseli, prawda? –

+0

Tak, oczekiwałbym różnic między różnymi przeglądarkami/platformami, ale nadal uważam za dziwne, że renderuje się inaczej obok siebie. –

7

Czasami dodanie górnego pionowego wyrównania rozwiąże ten problem (w zależności od rozmiaru czcionki/rodziny).

strong { vertical-align: top; } 

W swojej skrzypce przykład, ponieważ ustawiłeś wysokość linii na pojemniku (div), można po prostu dodać następujące:

span { line-height: 1em; } 
1

Napotkałem bardzo podobny problem z czcionką Chivo : http://www.fontsquirrel.com/fonts/chivo. Teraz używam najbrzydszy siekać (działa na bieżącym Firefox i Chrome, IE jeszcze niesprawdzone):

strong { vertical-align: top; position: relative; top: -1px; } 

Staram się nie poddawaj się na Chivo dość trudne, jak widać ...

1

Ustawianie bezwzględna wysokość linii zarówno na kontenerze, jak i pogrubiony tekst, lub pogrubienie tekstu na wysokości 1em (jak mówi DaveC powyżej), naprawiają to, np. z jsfiddle wystarczy dodać line-height: 1em

.bolded span { 
    font-weight:bold; 
    line-height: 1em; 
} 

Albo dlaczego nie podążać standardy HTML i używać poprawnych tagów zamiast pogrubione przęseł? Na przykład.

strong, em { line-height: 1em } 
+0

Nie chcę ustawiać wysokość linii do 1em, jak chcę linii -wysokość dokładnie 18px jak stwierdziłem w moim pytaniu. Gdybym miał wiele wierszy pogrubionych słów, wyrównanie byłoby wyłączone z 1em = 13 pikseli wysokości linii. Przykładowy kod jest właśnie tym, przykładowym kodem. Zmiana kodu, aby używał silnego zamiast rozpiętości, nie pomaga, ponieważ chciałem zademonstrować problemy z linią. –

+0

Myślę, że przegapiłeś punkt mojej odpowiedzi. Wysokość linii to dokładnie 18 pikseli. Użycie 1em na elementach potomnych oznacza dziedziczenie obliczonej wysokości 18px zamiast thaqn z zastosowaniem własnej wartości. nie sugerował zmiany wysokości wiersza elementu div, ale określał 1em dla pogrubionej treści, aby dziedziczył on wysokość wiersza div. – Jon

+0

(* Korekta - zabrakło mi czasu na edycję mojej odpowiedzi *) Użycie 1em na elementach potomnych oznacza, że ​​dziedziczą one wysokość linii div wynoszącą 18 pikseli, zamiast stosować własną wartość. Przetestowałem to w OS X Chrome i jest to łatwa poprawka. Czy nie myślisz, że pytasz "czy jest lepszy sposób, żeby sobie z tym poradzić", a następnie zaniechanie kogoś, aby zasugerować, że jest trochę niegrzeczny? – Jon

0

Myślę, że jest to problem z czcionką. Zauważyłem różne wysokości linii dla kursywy Nunito (Google Web Font). Kiedy przełączyłem się na przerobioną wersję tej czcionki o nazwie "Nunito Sans", problem został rozwiązany.

Powiązane problemy