- Lý do cùng một lưới 10.8pt × 7.2pt trong LaTeX và Inkscape lại lệch nhau là vì hai công cụ này dùng định nghĩa point khác nhau
- LaTeX tính 1pt là 1/72.27 inch, còn Inkscape tính theo hệ SVG·PostScript là 1/72 inch
- Point là một đơn vị typography được dùng từ năm 1517, nhưng thời kỳ đầu kích thước lại khác nhau tùy công ty, thiết bị và quốc gia
- Point in kiểu Mỹ tiếp nối định nghĩa 0.013837 inch của NIST và định nghĩa 72.27pt/in của TeX, với khác biệt cực nhỏ
- PostScript đặt không gian người dùng mặc định là 1/72 inch và nhờ LaserWriter mà lan rộng, rồi ăn sâu vào CSS·SVG·Inkscape
Vì sao point của LaTeX và Inkscape không khớp nhau
- Trong quá trình dựng lại sơ đồ của Logic for Programmers, đã phát sinh vấn đề lưới 10.8pt × 7.2pt trong LaTeX và Inkscape không khớp cùng một kích thước
- LaTeX định nghĩa 1 point là 1/72.27 inch, tương đương khoảng 0.3515mm
- Inkscape dùng 1 point là 1/72 inch, tương đương khoảng 0.3528mm
- Chênh lệch chỉ khoảng 0.4%, nhưng dẫn đến việc hai công cụ số rất phổ biến lại dùng hai đơn vị point khác nhau
Nguồn gốc của point và vấn đề chuẩn hóa
- Point) là một đơn vị typography có từ năm 1517, mang tính chất là kích thước nhỏ nhất mà thợ in có thể xử lý một cách có ý nghĩa
- Point thời kỳ đầu không phải là đơn vị được chuẩn hóa, và kích thước khác nhau được dùng tùy theo công ty và thiết bị
- Về sau quá trình chuẩn hóa diễn ra, nhưng mỗi quốc gia lại chọn tiêu chuẩn khác nhau
- Point của Đức và Nhật là 0.250mm
- Point của Pháp được biết đến là 0.399mm
- Do lịch sử máy tính thời kỳ đầu phát triển xoay quanh Mỹ, công nghệ số chủ yếu sử dụng các hệ point kiểu Mỹ
Point kiểu Mỹ và 72.27pt/in của TeX
- Tại Mỹ, point được chuẩn hóa vào khoảng cuối thế kỷ 19, nhưng các tài liệu thời đó vẫn đưa ra số liệu hơi khác nhau
- Tài liệu năm 1900 nêu độ dài point là 35/996cm, suy ra 72.281 point trên mỗi inch, đồng thời cũng ghi 867.4699 “ems” trên mỗi foot, tương đương 72.289 point trên mỗi inch
- Tài liệu năm 1916 ghi pica tiêu chuẩn (12 point) là 0.16604 inch và đưa ra 72.272 “pica ems” trên mỗi foot, suy ra 72.272 point trên mỗi inch
- Ở trang kế tiếp của cùng tài liệu, pica lại được ghi là 0.166044 inch, còn point là chính xác 0.013837 inch
- Những khác biệt này liên quan đến việc định nghĩa mét và foot đã thay đổi theo thời gian, đồng thời vì sai khác nhỏ hơn cả micromet nên trong thực tế rất dễ bị bỏ qua
- Định nghĩa chính thức của NIST đặt point là 0.013837 inch; nếu tính đơn giản thì rất gần với 72.27 point trên mỗi inch
- Thực tế, khi lấy nghịch đảo của 0.013837 inch sẽ ra 72.270001 point/inch, và Donald Knuth đã điều chỉnh sai khác cực nhỏ này trong TeX
- TeX định nghĩa 72.27pt = 1in
- “pt” của TeX lớn hơn một chút so với point in chính thức do American Typefounders Association định nghĩa năm 1886
- 1 point cổ điển chính xác bằng 0.99999999pt, tức sai số vào khoảng một phần một trăm triệu
- Định nghĩa mới 72.27pt = 1in vừa dễ tính vừa dễ nhớ
- Thợ in Mỹ định nghĩa point dựa trên inch, nhưng TeX lại tính toán từ point rồi định nghĩa inch theo point
- Có vẻ NIST cũng xem 72 point/inch là một xấp xỉ đủ tốt, và TeX gọi đơn vị này là
bp (big point)
PostScript, CSS, SVG và 72pt/in của Inkscape
- Giá trị phía Inkscape có vẻ bắt nguồn từ định nghĩa không gian người dùng mặc định (default user space) của định dạng PostScript
- Tài liệu PostScript quy định độ dài đơn vị theo trục x và y là 1/72 inch, và gọi đó là không gian người dùng mặc định
- Đơn vị này được chọn vì tính đơn giản toán học và sự tiện lợi, đồng thời được xem là rất gần với point máy in 1/72.27 inch vốn là đơn vị đo tiêu chuẩn của ngành in
- Ở trang 86, 1/72 inch tiếp tục được gọi thẳng là “point”
- Ấn bản sau tóm lại rằng 1/72 inch gần bằng point nhưng không hoàn toàn trùng khớp, và point không có một định nghĩa phổ quát
- Apple tích hợp PostScript vào máy in laser LaserWriter, các công ty khác cũng làm theo, và PostScript trở thành ngôn ngữ in ấn trên thực tế
- Kết quả là 72 point/inch được định hình như một chuẩn thực tế cho đo lường số
- W3C cũng dùng cùng tiêu chuẩn đó trong CSS và SVG
- Vì Inkscape là trình biên tập SVG, point của Inkscape cũng thuộc hệ 1/72 inch
- Trình biên tập SVG draw.io là một ngoại lệ riêng, dùng cỡ point là 1/100 inch
Dấu vết của các định nghĩa đơn vị còn sót lại trong Frink
- Trong Frink, một ngôn ngữ Turing-complete hỗ trợ đơn vị rất mạnh, cũng có thể thấy dấu vết của các định nghĩa point
- Nếu dùng Frink để tính các giá trị trong tài liệu năm 1900 theo chuẩn inch trước năm 1959, kết quả như sau
oldinch := surveyfoot / 12 // pre 1959 inch
35 cm / (996 pts) -> oldinch / pts
0.013834839357429718876
point := 0.013837ee0 inch // exact, NIST Handbook 44, Appendix 3
printerspoint := point
texscaledpoint := 1/65536 point // The TeX typesetting system uses
texsp := texscaledpoint // this for all computations.
computerpoint := 1/72 inch // The American point was rounded
computerpica := 12 computerpoint // to an even 1/72 inch by computer
postscriptpoint := computerpoint // people at some point.
- Ở đây, bước chuyển mà “computer people at some point” ám chỉ có liên hệ với đơn vị cơ sở 1/72 inch của PostScript
- Định nghĩa
texscaledpoint trong Frink khác một chút so với định nghĩa thực của TeX
- Nếu viết lại theo point thực của TeX thì sẽ như sau
realtexpoint := 1/72.27 inch
realtexsp := 1/65536 realtexpoint
(realtexsp - texsp)
5.36285100578e-17 m (length)
(realtexsp - texsp) / realtexsp
1.0000000000005691827e-8
- Sai khác trong định nghĩa của Frink vào khoảng 50 attomet, tương đương khoảng 3% bề rộng của một proton
- TeX dùng “scaled points” cho tính toán thực tế, với 2^16 sp = 1 pt
1 bình luận
Ý kiến trên Lobste.rs
Ở đoạn cuối nhắc đến Frink có xuất hiện sự khác biệt giữa US Survey Inch và International Inch
Trước đây tôi từng viết về international inch trông như thế nào, và đây là một trong những ví dụ tôi thích nhất trong các câu chuyện về đo lường, nên có vẻ rất có khả năng việc định nghĩa point khác nhau vào khoảng trước sau năm 1900 là do giới hạn về độ chính xác đo lường thời đó
Sự khác biệt giữa point của Knuth TeX và point của NIST còn nhỏ hơn cả sự khác biệt phát sinh khi lấy các định nghĩa inch khác nhau làm chuẩn
Khi xếp chữ kim loại vào khung hoặc đúc con chữ chì bằng Linotype, độ sai lệch phát sinh lớn hơn rất nhiều so với độ chính xác cần thiết để phân biệt những khác biệt point kiểu này, nên trong công nghệ in ấn thời đó chắc hẳn điều này không thực sự là vấn đề
Một bối cảnh lịch sử khác của point 1/72 inch trong máy tính là vào thập niên 1980, màn hình Apple thường có 72 pixel mỗi inch nên 1 point bằng 1 pixel, giúp phần mềm dễ khớp kích thước tài liệu trên màn hình với trang in hơn
Máy đánh chữ danh nghĩa có 6 dòng mỗi inch, và nếu dùng cỡ chữ 12 point với chuẩn 72.27 point mỗi inch trên giấy 11 inch thì sẽ ra gần 66.25 dòng chứ không phải 66 dòng
Trên máy đánh chữ, chênh lệch 1/4 dòng mỗi trang có thể không phải chuyện lớn, nhưng khi in số lượng lớn trên giấy fanfold thì chiều dài trang phải là bội số nguyên của khoảng cách dòng mới giữ được căn chỉnh, nên điều này trở nên quan trọng
Trong nhiều thập niên trước khi xuất bản điện tử để bàn xuất hiện, đây là một ứng dụng lớn của in ấn bằng máy tính như phiếu lương hay sao kê ngân hàng
Trước thời máy in laser, đầu ra đồ họa dùng máy in kim, và loại này cũng được thiết kế để khớp với khoảng cách 6 dòng mỗi inch của giấy fanfold
Vì vậy, việc desktop publishing chọn 72 point mỗi inch có lẽ đúng là vì lý do tương thích ngược, nhưng có vẻ là để tương thích với công nghệ in máy tính độ phân giải thấp cũ hơn chứ không phải với sắp chữ
Ngược lại, mục tiêu của TeX do Knuth tạo ra là máy sắp chữ quang học, nên nó phải khớp với các kích thước dùng trong in ấn truyền thống
Hệ đo lường của Mỹ và Anh quy định nhiệt độ đo hơi khác nhau, và để làm ra một khối đáp ứng được cả hai chuẩn thì khi đó phải gia công đến sát giới hạn độ chính xác có thể đạt được
Việc Jo blocks trở nên phổ biến là vì Henry Ford thích chúng đến mức, theo kiểu Victor Kiam, ông ấy mua luôn cả công ty
À, tôi cứ tưởng point được định nghĩa chính xác là 1/72 inch
Trong các tệp Rich Text Format, tức RTF, còn có một đơn vị khác gọi là “twip” được dùng cho hầu hết kích thước, và nó bằng 1/20 point
Tôi không biết lịch sử của nó, nhưng nếu point không phải như tôi nghĩ thì twip chắc cũng không như vậy, và thật khó chịu khi sai số lại còn bị cộng dồn
Dù liên kết bị sai nhưng tôi vẫn đọc rất thích
Đơn vị đo lường giống như mô hình ở chỗ, điều quan trọng không phải là chúng đúng đến mức nào mà là chúng hữu ích đến đâu
Nếu bài tập ở trường chỉ yêu cầu phông 12 point thì con số đó chính xác có nghĩa là gì cũng không quá quan trọng
Nếu máy bay bay với tốc độ tính bằng point mỗi giây thì có lẽ đã có một đơn vị chuẩn hóa hơn
Tôi tự hỏi liệu vẫn còn lý do gì để dùng pt hay không
Không rõ nó có ưu điểm gì, hay chỉ còn tồn tại do quán tính như hệ imperial
Có vẻ hiển nhiên là point phải là 72 point mỗi inch. Vì 12 × 6 = 72
Điều thực sự gây ngạc nhiên lại là đã từng có người chuẩn hóa theo một giá trị khác
Giá trị đó xấp xỉ 1/6 inch, nhưng trên thực tế lại hơi khác nhau giữa từng công ty in, và pica tiêu chuẩn được chọn để khớp với kích thước thực tế được dùng phổ biến nhất