Tôi quan tâm đến các vấn đề về microtypography trên web.Phân tích cú pháp HTML để khắc phục sự cố microtypography & glyph
Tôi muốn có một công cụ để sửa chữa:
- Quotes
- “(& # 8220;) mở quote (thay vì ")
- ”(& # 8221;) bế mạc quote (thay vì ")
- Apostrophe
- ’(& # 8217;) dấu nháy đơn (thay vì ')
- Dấu gạch ngang và Dấu nối
- - (& # 8211; hoặc & ndash;) vi dấu gạch ngang, được sử dụng cho các phạm vi, ví dụ: “13–15 tháng 11” (thay vì -)
- - (& # 8212; hoặc & mdash;) dấu gạch ngang, được sử dụng để thay đổi suy nghĩ, ví dụ: “Star Wars là-như mọi người đều biết, tuyệt vời.” (Thay vì - hoặc -)
- Ellipsis
- ... (& # 8230; hoặc & hellip;) ellipsis ngang, được sử dụng để chỉ ra một thiếu sót hoặc tạm dừng (thay vì ...)
- Và hơn thế nữa \ o/
Tất cả những sửa chữa phụ thuộc vào ngôn ngữ nội dung. Ví dụ, trong tiếng Pháp, chúng ta phải thêm khoảng trắng không an toàn trước mỗi glyph được tạo (:
, ;
, …
, ?
, !
, ...) và báo giá của chúng tôi là «như thế này».
Có rất nhiều khó khăn đối với một công cụ như vậy:
- nó không phải chỉnh sửa bất kỳ thẻ HTML được bảo vệ bên trong (
pre
,code
...) - nó phải được nhanh (sử dụng trên một đầu ra CMS)
- không được ngắt HTML
- v.v.
Hiện đã có một số công cụ trên thị trường:
- http://michelf.ca/projects/php-smartypants/typographer/
- http://kingdesk.com/projects/php-typography/
- http://code.google.com/p/typogrify/
Họ đều ít nhiều dựa trên thông thái, một lib 2005, không được kiểm tra, không được ghi chép, phân tích cú pháp HTML theo cách thủ công và không xử lý các quy tắc khác ngoài tiếng Anh. Trơi ơi không.
Vì vậy, câu hỏi của tôi là:
- Bạn có biết của bất kỳ công cụ đàng hoàng như thế này?
- Tôi có thể làm như thế nào? Tôi đã có một POC sử dụng DomCrawler nhưng tôi không thuyết phục. Cách tốt nhất để phân tích cú pháp và chỉnh sửa HTML bằng PHP là gì?
Sửa tháng 7 năm 2013: Tôi đã phát triển JoliTypo từ các cuộc thử nghiệm và chuyên môn tôi đã đạt được với vấn đề này. Không có lib nào đang làm những gì tôi muốn làm.
Câu hỏi hay, mặc dù tôi tự hỏi nếu đây không phải là sắp xếp của điều nó sẽ là tốt hơn để xử lý tại thời điểm mà dữ liệu được lưu, chứ không phải là điểm mà nó là đầu ra?Đặc biệt là nếu bạn có nhiều văn bản (trường hợp này sẽ hữu ích nhất), thật khó để tưởng tượng việc xử lý để biết chi tiết (như phân biệt giữa cách sử dụng thích hợp và sử dụng dấu gạch ngang) theo cách đủ hiệu quả để chiến thắng ' t tăng đáng kể thời gian tải trang. –
@MichaelCSchuller Điều này sẽ được xử lý bởi một hệ thống bộ nhớ cache IMO. Tôi nghĩ rằng việc chỉnh sửa nội dung do người dùng gửi và kiên trì đó là một ý tưởng tồi vì không có cách nào để lấy lại phiên bản loại được viết. Lưu trữ cả người dùng và văn bản được chuyển đổi có thể là giải pháp cho các vấn đề liên quan đến hiệu suất. – Damien
Điều đó tất nhiên có nguy cơ làm cho mối quan hệ của đầu ra với đầu vào hơi mờ đối với người dùng đang nhập văn bản gốc, nhưng tôi cho rằng đó là một triết lý, chứ không phải là một câu hỏi kỹ thuật. Một lý do tại sao tôi nghĩ những thứ như Markdown là một giải pháp tốt để định dạng đầu vào văn bản là bạn biết chính xác những biến đổi nào sẽ được áp dụng (và bạn có thể lấy lại bản gốc khi được nhập, như bạn nói). –