Tôi đang sử dụng Unicode 'CHECK MARK' (U + 2713) trong tài liệu html. Tôi thấy rằng nó làm cho OK trong hầu hết các trình duyệt, nhưng đôi khi tôi gặp một ai đó với một phông chữ bị thiếu trên máy tính của họ. Có bất kỳ thủ thuật HTML/JS nào để chỉ định ký tự hiển thị thay thế (hoặc hình ảnh) nếu phông chữ bị thiếu không?Giảm các ký tự Unicode cho trình duyệt web với các phông chữ bị thiếu
Trả lời
Không có cách trực tiếp để biết liệu có bất kỳ ký tự cụ thể nào được hiển thị theo cách hữu ích hay không. Về tất cả những gì bạn có thể làm từ JavaScript là tạo một <span>
chứa một (hoặc một vài) ký tự đích trong phông chữ đích và so sánh chiều rộng của nó với một số khác là <span>
chứa cùng số ký tự mà bạn biết sẽ không hiển thị một cách hữu ích (*) . Nếu chúng có cùng chiều rộng, rất có thể bạn đã có một tải các hộp hoặc dấu chấm hỏi trong mỗi hộp, vì vậy bạn có thể thực hiện các biện pháp dự phòng như thêm hình ảnh.
Vì đây là khá nhiều phiền toái, bạn có thể thích chỉ cần đi cho hình ảnh. Hoặc bạn có thể thử sử dụng @font-face
nhúng trên các trình duyệt hiện đại để sử dụng phông chữ nổi tiếng nói chung. Vì thường là IE có hỗ trợ phông chữ Unicode kém, hãy chắc chắn bao gồm một phông chữ EOT.
(*: bạn có thể thử một ký tự hiện chưa được gán và hy vọng sẽ giữ nguyên cách đó, ví dụ: U + 08FF hoặc ký tự được bảo đảm không hợp lệ như U + FFFF, mặc dù bạn có thể đặt Trong tài liệu HTML.)
Unicode khá chuẩn, tôi luôn sử dụng unicodemap.org. Đây là ký tự bạn sử dụng [link], ký tự này sẽ cung cấp cho bạn tất cả các mã được liên kết với dấu kiểm. Nếu bạn muốn tương thích hoàn toàn ngược, bạn sẽ cần phải sử dụng một hình ảnh thực tế. 1 tập tin hình ảnh cho một dấu kiểm là nhẹ hơn một javascript hack/plugin. Có lẽ là lựa chọn tốt nhất của bạn.
Hai câu đầu tiên có khá nhiều giả mạo trong câu trả lời cho câu hỏi này. Tôi khá chắc chắn rằng bạn có thể giả định rằng họ có thể nhúng một ký tự đúng trong một tài liệu và họ tuyên bố rõ ràng rằng các phông chữ bị thiếu là một vấn đề, không phải cái gì khác. – Joey
Tôi đã cung cấp mã thay thế trong trường hợp giúp khắc phục sự cố của họ, bởi vì dấu kiểm đó có thể được triển khai bằng một mã khác. Và tôi cũng cung cấp một giải pháp sẽ làm việc cho 100% người dùng ở đó và không tải xuống trang web bằng một bản hack. – stephenway
Nếu bạn có thể tìm cách kiểm tra từ xa nếu MS Office 2000 hoặc mới hơn được cài đặt, bạn có thể giả định rằng Arial Unicode MS được cài đặt và do đó có mã điểm này trong một phông chữ (miễn là bạn có họ phông chữ CSS được đặt thành "Arial Unicode MS, Arial, sans-serif").
Tôi tin rằng điều này sẽ chỉ làm việc trong Microsoft Internet Explorer, nhưng bạn sẽ có thể phát hiện một cài đặt Word bằng cách cố gắng để tạo ra đối tượng ActiveX của nó trong JavaScript:
if(new ActiveXObject("Word.Application"))
{
window.alert("Word is installed, go ahead and use the Unicode check mark in HTML");
}
else
{
window.alert("Word is not installed, use your image of a check mark.");
}
Nhưng cho rằng điều này thực sự chỉ hoạt động trong IE, có lẽ sẽ ném cảnh báo bảo mật trong IE8, và bạn vẫn cần một cơ chế dự phòng cho các trình duyệt khác hoặc trình duyệt IE không có MS Office, sử dụng hình ảnh mọi lúc có lẽ là cách tốt nhất để đi.
Điều khiển từ ActiveX có được đánh dấu an toàn để viết mã không? Tôi nghi ngờ điều đó. Hơn nữa, Arial Unicode MS là một sự lựa chọn khủng khiếp để ép buộc người dùng. Nó tạo ra nhiều tác hại hơn là tốt. – Joey
@Joey - Tôi tin rằng nó có thể được sử dụng trong kịch bản trong IE6 và IE7. IE8 ném cảnh báo bảo mật. Đây là một công việc hữu hiệu xung quanh cho một vấn đề mà không thể thực sự được giải quyết theo cách thông thường (không có "font này được cài đặt" hay "là nhân vật này trong trình duyệt sử dụng font" tính năng trong JavaScript/HTML). Tôi không chắc tại sao bạn lại bỏ phiếu cho cái gì đó là một giải pháp khả thi. Tốt nhất, có lẽ không (tôi nghĩ câu trả lời khác mà tôi đã đăng có thể tốt hơn). Ngoài ra, tôi không chắc chắn lý do tại sao Arial Unicode MS là một sự lựa chọn khủng khiếp như vậy khi bạn BIẾT nó có ký tự Unicode, miễn là bạn dự phòng đúng cách. – userx
Đây không phải là khá gì bạn đang yêu cầu, nhưng nó có thể giải quyết vấn đề của bạn (giả mục tiêu của bạn là để HTML đầu ra mà không có nó cần phải dựa vào hình ảnh bên ngoài, vv)
bạn đã xem xét dữ liệu hình ảnh URL (còn gọi là RFC2397): http://www.ietf.org/rfc/rfc2397.txt
Thay vì sử dụng:
✓
để đại diện cho một dấu kiểm tra, bạn sẽ sử dụng:
<img src="data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAAKAAoAAAISlG8AeMq5nnsiSlsj
zmpzmj0FADs="/>
Điều này sẽ không yêu cầu bất kỳ phông chữ Unicode cụ thể nào có ký tự CHECK MARK được cài đặt ở phía máy khách, NHƯNG nó sẽ không hoạt động trong Internet Explorer 7 trở xuống. (Internet Explorer 8, Firefox, Safari, v.v.nên hoạt động tốt)
+1 Tuyệt vời! Làm cách nào bạn chuyển đổi phông chữ Unicode sang mã hóa base-64 của nó? Trước tiên bạn đã tạo một hình ảnh GIF của nó chưa? – kol
@kol - Vâng, nó chỉ đơn giản là một hình ảnh của nhân vật. Nhưng cho rằng 3 năm đã trôi qua kể từ khi câu trả lời này được đưa ra, cách tốt hơn để đi về NOW này sẽ là sử dụng [WOFF] (http://en.wikipedia.org/wiki/Web_Open_Font_Format) thay vì hack bẩn của tôi. – userx
- 1. Phông chữ Chiếc đĩa bay cho các ký tự unicode
- 2. Sử dụng .otf phông chữ trên các trình duyệt web
- 3. Sử dụng các phông chữ khác nhau cho các ký tự Latinh và các ký tự tiếng Nhật với CSS
- 4. Emacs: Thiết lập phông chữ để hiển thị các ký tự unicode trong OSX
- 5. Xuất khẩu một JasperReport sang PDF, Các ký tự Thiếu
- 6. Phông chữ được đề xuất để hiển thị các ký tự unicode?
- 7. Vẽ các ký tự Unicode trên iPhone
- 8. phông chữ Safe tất cả các trình duyệt và os
- 9. Phông chữ trên web
- 10. Phông chữ Unicode trong PyGame
- 11. PHP-GD: Xử lý các ký tự Unicode
- 12. Phông chữ web của Google so với tệp phông chữ thực tế - Dành cho tất cả các thiết bị.
- 13. Danh sách các ký tự chữ cái Unicode
- 14. Có thể chụp chữ ký trong các trình duyệt web di động khác nhau?
- 15. Trình duyệt web Selenium và unicode
- 16. Hiển thị các ký tự unicode trong TextView Android
- 17. cách xóa ký tự khỏi tệp phông chữ?
- 18. Các ký tự Unicode Base64ing
- 19. Ký tự unicode HTML cho chữ V "đúng" là gì?
- 20. Tách các ký tự ligature Unicode
- 21. Sử dụng phông chữ Roboto cho các thiết bị cũ
- 22. C# Nút Văn bản Các ký tự Unicode
- 23. Tạo các ký tự hẹp với CSS
- 24. Nhận kích thước phông chữ iPhone giống với các trình duyệt khác
- 25. Phông chữ CSS 3 của trình duyệt chéo
- 26. Vim: nhập các ký tự Unicode với mã hex 8 chữ số
- 27. Các ký tự Unicode trong Ruby 1.9.3 IRB với RVM
- 28. In tất cả các ký tự cho phông chữ trong MS Word
- 29. Thêm biểu tượng vào JButton bằng phông chữ tùy chỉnh từ AwesomeFont và các ký tự unicode trong Java Swing?
- 30. Regex cho các tên có ký tự đặc biệt (Unicode)
Tôi thích câu hỏi này. Đó là sự pha trộn đúng đắn của các vấn đề ở các mức trừu tượng khác nhau trong một hệ thống phức tạp. –
(Và không, tôi không thể trả lời.) –