2012-05-26 35 views
5

tôi sử dụng phông chữ tùy chỉnh trong CSS của tôi với phương pháp này:CSS tùy chỉnh phông chữ dọc bù đắp (bug?)

@font-face { 
    font-family: 'Gabriola'; 
    src: url('Gabriola.eot'); 
    src: url('Gabriola.eot?#iefix') format('embedded-opentype'), 
     url('Gabriola.woff') format('woff'), 
     url('Gabriola.ttf') format('truetype'); 
    font-weight: normal; 
    font-style: normal; 
} 
.gabriola { 
    font-size: 20px; 
    line-height: 20px; 
    height: 20px; 
    background: red; 
} 

<div class="gabriola">Some texty text here</div> 

Mỗi trình duyệt làm cho phông chữ này bằng cách riêng của nó với dọc bù đắp trên và dưới như thế này font rendering

Tôi đang làm gì sai? Cảm ơn

+0

Không chắc chắn về vấn đề là ở đây, nhưng bạn đã thử sử dụng 'span' thay thế chưa? (hoặc bất kỳ phần tử nội tuyến nào khác thay vì một phần tử nội tuyến) –

+0

có .. vẫn giống như – 5ulo

Trả lời

5

Có thể không có bất kỳ điều gì bạn đang làm sai. Dưới đây là một số điểm có thể áp dụng, một số có thể điều khiển bởi bạn, một số không.

  1. Chỉ cần chắc chắn, đặt rõ ràng vertical-align: baseline.
  2. Các tệp khác nhau (.eof, .woff, .ttf) có thể không được xác định giống nhau và do đó các trình duyệt khác nhau đang sử dụng các tệp khác nhau và hiển thị sự khác biệt.
  3. Không chắc chắn nếu có hai src gọi là rối tung mọi thứ lên, nhưng bạn có thể thử loại bỏ sự thứ hai:
@font-face { 
    font-family: 'Gabriola'; 
    src: url('Gabriola.eot'), 
     url('Gabriola.eot?#iefix') format('embedded-opentype'), 
     url('Gabriola.woff') format('woff'), 
     url('Gabriola.ttf') format('truetype'); 
    font-weight: normal; 
    font-style: normal; 
} 

Đây là tất cả dự đoán đơn thuần. Bạn sẽ phải kiểm tra # 1, 3. Nếu vấn đề là # 2, tôi không chắc chắn có một giải pháp thanh lịch.

Có, tất nhiên, sự báo trước về this site:

Hãy ghi nhớ rằng font rendering có thể rất khác nhau trên các trình duyệt và hệ điều hành . Nhiều nhà phát triển đã trải qua kết quả kém như vậy từ Windows và Internet Explorer mà họ tránh sử dụng phông chữ tùy chỉnh hoàn toàn. Luôn chắc chắn kiểm tra kết quả của bạn chặt chẽ trên tất cả các trình duyệt mà bạn có thể quyết định xem chất lượng có được chấp nhận hay không.

Cập nhật

This post đưa ra một số lời khuyên về khả năng giải quyết các vấn đề rendering. Điều này là dành cho Font Squirrel, và ông ghi chú cụ thể:

Nếu bạn đã tải xuống bộ này, bạn có thể thử tạo lại phông chữ với máy phát . Chúng tôi thực hiện các điều chỉnh định kỳ cho máy phát điện có thể cải thiện việc gợi ý hoặc hiển thị phông chữ.

Tuy nhiên, ông cũng khẳng định,

Không để vượt qua buck, nhưng nguyên nhân phổ biến nhất là xấu gốc phông chữ.

Điều gì xảy ra với quan điểm của tôi # 2.

+2

Cảm ơn câu trả lời của bạn .. lý do tại sao nó không giống nhau trong tất cả các trình duyệt là phông chữ. Tôi đã thử 5 kiểu phông chữ nhưng chỉ có Gabriola có lỗi bù dọc. Vì vậy, tôi cho rằng đó là tất cả về font chữ 'chất lượng'. – 5ulo

+0

Điểm 3 là sai. Explorer luôn sử dụng tệp phông cuối cùng vì vậy chúng tôi cần hai 'src' riêng biệt. – stilllife

3

Tôi đã gặp vấn đề tương tự và giải pháp là tạo lại phông chữ với các thuộc tính của bản gốc mà không thay đổi bất kỳ thứ gì trong tệp mới với trình tạo phông chữ logic Hight, phông chữ không thay đổi và bằng với vấn đề gốc được sửa và căn chỉnh đến sự hoàn hảo trong tất cả các trình duyệt bao gồm ie6, là công việc của một vài giờ nhưng đây là kết quả trong trường hợp bạn cần một số người dùng.

http://www.filefactory.com/file/1miw29cddg21/n/crossbrowser_gabriola_font.zip

+1

Bạn có nói rằng bạn đã mở phông chữ trong "Trình tạo phông chữ logic chiều cao" và điều chỉnh khoảng cách cho mỗi chữ cái hoặc bạn chỉ cần mở phông chữ và tái xuất nó bằng ứng dụng đó? – allicarn

+0

@skt_pillo bạn đã lưu ngày của tôi hoạt động hoàn hảo! –

2

Tôi biết nó được 5 năm kể từ khi OP hỏi những câu hỏi, nhưng tôi thấy kỹ thuật tuyệt vời này trên nhận được văn bản ban đầu canh một cách chính xác.

Về cơ bản, vùng chứa văn bản phải là một khối nội tuyến có chiều cao dòng: 0; Sau đó, bạn tạo một pseudo-yếu tố inline-block và thiết lập chiều cao của mình theo line-height bạn muốn:

span { 
 
    font-size: 2em; 
 
    background: red; 
 
} 
 
span.baseline-align { 
 
    vertical-align: baseline; 
 
} 
 

 
span.true-baseline-align { 
 
    display: inline-block; 
 
    line-height: 0; 
 
} 
 
span.true-baseline-align::after { 
 
    content: ''; 
 
    display: inline-block; 
 
    height: 1em; // this is where you control line-height 
 
}
<span>Normal text</span> 
 
<br><br> 
 
<span class="baseline-align">With vertical-align: baseline</span> 
 
<br><br> 
 
<span class="true-baseline-align">with trick to really baseline-align</span>

http://blogs.adobe.com/webplatform/2014/08/13/one-weird-trick-to-baseline-align-text/

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/chất lượng thấp-bài viết/15705140) – EJoshuaS

+1

Cảm ơn! Tôi đã thay đổi câu trả lời của tôi :) – LeonardoP

+0

đây là sooooo genious! cảm ơn vì đã chia sẻ chút hack này :) – nerdess

Các vấn đề liên quan