- สาเหตุที่กริด 10.8pt × 7.2pt แบบเดียวกันใน LaTeX และ Inkscape เหลื่อมกัน เป็นเพราะทั้งสองเครื่องมือใช้คำนิยามของพอยต์ไม่เหมือนกัน
- LaTeX คำนวณ 1pt เป็น 1/72.27 นิ้ว ส่วน Inkscape ใช้แบบ SVG·PostScript ที่เป็น 1/72 นิ้ว
- พอยต์เป็น หน่วยทางไทโปกราฟี ที่ใช้มาตั้งแต่ปี 1517 แต่ในยุคแรกขนาดแตกต่างกันไปตามบริษัท อุปกรณ์ และประเทศ
- พอยต์งานพิมพ์แบบอเมริกันสืบต่อมาทั้งจากนิยาม 0.013837 นิ้ว ของ NIST และนิยาม 72.27pt/in ของ TeX โดยความต่างมีน้อยมาก
- PostScript กำหนด basic user space เป็น 1/72 นิ้ว และแพร่หลายผ่าน LaserWriter ก่อนจะกลายเป็นฐานใน CSS·SVG·Inkscape ด้วย
เหตุใดพอยต์ของ LaTeX และ Inkscape จึงไม่ตรงกัน
- ระหว่างการทำไดอะแกรมของ Logic for Programmers ขึ้นมาใหม่ พบปัญหาว่ากริด 10.8pt × 7.2pt ใน LaTeX และ Inkscape ไม่สามารถทำให้มีขนาดเท่ากันได้
- LaTeX นิยาม 1 พอยต์เป็น 1/72.27 นิ้ว ซึ่งเท่ากับประมาณ 0.3515 มม.
- Inkscape ใช้ 1 พอยต์เป็น 1/72 นิ้ว ซึ่งเท่ากับประมาณ 0.3528 มม.
- ความต่างมีเพียงประมาณ 0.4% แต่ก็ทำให้เครื่องมือดิจิทัลยอดนิยมสองตัวใช้หน่วยพอยต์คนละแบบ
ที่มาของพอยต์และปัญหาการทำให้เป็นมาตรฐาน
- พอยต์) เป็น หน่วยทางไทโปกราฟี ที่ใช้ต่อเนื่องมาตั้งแต่ปี 1517 โดยมีลักษณะเป็นขนาดเล็กที่สุดที่ช่างพิมพ์สามารถใช้งานได้อย่างมีความหมาย
- ในระยะแรก พอยต์ยังไม่ใช่หน่วยมาตรฐาน และมีการใช้ขนาดต่างกันไปตามบริษัทและอุปกรณ์
- ต่อมามีความพยายามทำให้เป็นมาตรฐาน แต่แต่ละประเทศก็เลือกเกณฑ์ต่างกัน
- พอยต์ของเยอรมนีและญี่ปุ่นคือ 0.250 มม.
- พอยต์ของฝรั่งเศสเป็นที่รู้กันว่าอยู่ที่ 0.399 มม.
- เมื่อประวัติศาสตร์คอมพิวเตอร์ยุคแรกพัฒนาโดยมีสหรัฐอเมริกาเป็นศูนย์กลาง เทคโนโลยีดิจิทัลจึงหันมาใช้ตระกูลพอยต์แบบอเมริกันเป็นหลัก
พอยต์แบบอเมริกันและ 72.27pt/in ของ TeX
- ในสหรัฐฯ มีการทำให้พอยต์เป็นมาตรฐานราวปลายศตวรรษที่ 19 แต่เอกสารในยุคนั้นยังให้ค่าตัวเลขต่างกันเล็กน้อย
- เอกสารปี 1900 ระบุความยาวของพอยต์เป็น 35/996 ซม. ซึ่งคิดเป็น 72.281 พอยต์ต่อนิ้ว และในขณะเดียวกันก็ระบุ 867.4699 “ems” ต่อฟุต ทำให้ได้ 72.289 พอยต์ต่อนิ้ว
- เอกสารปี 1916 ระบุว่าพิกามาตรฐาน (pica, 12 พอยต์) มีขนาด 0.16604 นิ้ว และให้ค่า 72.272 “pica ems” ต่อฟุต จึงได้ 72.272 พอยต์ต่อนิ้ว
- ในหน้าถัดไปของเอกสารเดียวกัน กลับระบุพิกาเป็น 0.166044 นิ้ว และพอยต์เป็น 0.013837 นิ้ว แบบตรง ๆ อีกครั้ง
- ความต่างเหล่านี้เชื่อมโยงกับการที่นิยามของเมตรและฟุตเปลี่ยนไปตามกาลเวลา และยังเป็นความต่างที่เล็กกว่าระดับไมครอนจนมักถูกมองข้ามในทางปฏิบัติ
- นิยามทางการของ NIST กำหนดพอยต์เป็น 0.013837 นิ้ว ซึ่งเมื่อคำนวณแบบง่ายจะใกล้เคียงกับ 72.27 พอยต์ต่อนิ้ว
- หากคำนวณย้อนกลับจาก 0.013837 นิ้วจริง ๆ จะได้ 72.270001 พอยต์/นิ้ว และ Donald Knuth ได้ปรับความต่างจิ๋วนี้ใน TeX
- TeX นิยามว่า 72.27pt = 1in
- “pt” ของ TeX มีขนาดใหญ่กว่าพอยต์งานพิมพ์มาตรฐานที่ American Typefounders Association กำหนดในปี 1886 เล็กน้อย
- พอยต์แบบดั้งเดิม 1 หน่วยมีค่าเท่ากับ 0.99999999pt พอดี โดยมีความคลาดเคลื่อนราวหนึ่งในร้อยล้าน
- นิยามใหม่ที่ว่า 72.27pt = 1in คำนวณง่ายและจำง่าย
- ช่างพิมพ์อเมริกันนิยามพอยต์โดยอิงจากนิ้ว แต่ TeX กลับคำนวณโดยยึดพอยต์เป็นหลักและนิยามนิ้วด้วยพอยต์
- ดูเหมือนว่า NIST จะมองว่า 72 พอยต์/นิ้ว ก็เป็นค่าประมาณที่เพียงพอ และ TeX เรียกค่านี้ว่า
bp (big point)
PostScript, CSS, SVG และ 72pt/in ของ Inkscape
- ค่าฝั่ง Inkscape ดูเหมือนจะสืบทอดมาจากนิยาม basic user space ของฟอร์แมต PostScript
- เอกสาร PostScript กำหนดให้ความยาวหน่วยบนแกน x และ y เป็น 1/72 นิ้ว และเรียกสิ่งนี้ว่า basic user space
- หน่วยนี้ถูกเลือกเพราะเรียบง่ายทางคณิตศาสตร์และใช้งานสะดวก โดยถือว่าใกล้เคียงมากกับ printer point มาตรฐานของวงการพิมพ์ที่เป็น 1/72.27 นิ้ว
- ต่อมาในหน้า 86 ก็เรียก 1/72 นิ้วนี้ว่า “พอยต์” ตรง ๆ
- ฉบับถัดมา สรุปว่า 1/72 นิ้วเกือบจะเท่ากับพอยต์ แต่ไม่เท่ากันอย่างแม่นยำ และพอยต์เองก็ไม่มีนิยามสากลเพียงหนึ่งเดียว
- Apple ใส่ PostScript ลงในเครื่องพิมพ์เลเซอร์ LaserWriter และบริษัทอื่นก็ทำตาม จน PostScript กลายเป็นภาษางานพิมพ์โดยพฤตินัย
- ผลก็คือ 72 พอยต์/นิ้ว กลายเป็นเหมือนมาตรฐานของการวัดในโลกดิจิทัล
- W3C ก็ใช้เกณฑ์เดียวกันใน CSS และ SVG
- เนื่องจาก Inkscape เป็นโปรแกรมแก้ไข SVG พอยต์ของ Inkscape จึงอยู่ในตระกูล 1/72 นิ้ว ด้วย
- ส่วน draw.io ซึ่งเป็นโปรแกรมแก้ไข SVG ก็เป็นข้อยกเว้นอีกแบบ โดยใช้ขนาดพอยต์เป็น 1/100 นิ้ว
ร่องรอยของนิยามหน่วยที่ยังหลงเหลือใน Frink
- แม้แต่ใน Frink ซึ่งเป็นภาษาแบบทัวริงสมบูรณ์ที่รองรับหน่วยวัดได้ดี ก็ยังมองเห็นร่องรอยของนิยามพอยต์เหล่านี้
- หากใช้ Frink คำนวณค่าจากเอกสารปี 1900 โดยอิงนิ้วก่อนปี 1959 จะได้ดังนี้
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.
- ตรงนี้คำว่า “computer people at some point” น่าจะชี้ถึงจุดเปลี่ยนที่เชื่อมโยงกับ 1/72 นิ้ว ในฐานะหน่วยพื้นฐานของ PostScript
- นิยาม
texscaledpoint ของ Frink ต่างจากนิยามจริงของ TeX อยู่เล็กน้อย
- หากเขียนใหม่โดยอิงพอยต์จริงของ TeX จะได้ดังนี้
realtexpoint := 1/72.27 inch
realtexsp := 1/65536 realtexpoint
(realtexsp - texsp)
5.36285100578e-17 m (length)
(realtexsp - texsp) / realtexsp
1.0000000000005691827e-8
- ความต่างของนิยามใน Frink มีขนาดประมาณ 50 แอทโตเมตร หรือราว 3% ของความกว้างโปรตอน
- TeX ใช้ “scaled points” ในการคำนวณจริง โดยมีความสัมพันธ์ว่า 2^16 sp = 1 pt
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
ตอนท้ายที่อ้างถึง Frink มีการพูดถึงความแตกต่างระหว่าง US Survey Inch กับ International Inch
ก่อนหน้านี้ผมเคยเขียนไว้เกี่ยวกับหน้าตาของ international inch และมันเป็นหนึ่งในเกร็ดเรื่องมาตราชั่งตวงวัดที่ผมชอบ จึงดูมีความเป็นไปได้สูงที่การนิยาม point ต่างกันในช่วงราวปี 1900 จะเป็นเพราะข้อจำกัดด้านความแม่นยำของการวัดในยุคนั้น
ความต่างระหว่าง Knuth TeX point กับ NIST point ยังน้อยกว่าความต่างที่เกิดจากการใช้นิยาม inch คนละแบบเสียอีก
ความคลาดเคลื่อนที่เกิดขึ้นตอนจัดเรียงตัวพิมพ์โลหะลงในเฟรม หรือหล่อตัวพิมพ์ตะกั่วด้วย Linotype นั้นมีขนาดมากกว่าความละเอียดที่จำเป็นต่อการแยกความต่างของ point เหล่านี้มาก ดังนั้นในเทคโนโลยีการพิมพ์ยุคนั้นมันคงไม่ใช่ปัญหาในทางปฏิบัติ
อีกภูมิหลังทางประวัติศาสตร์ของ 1/72 inch point บนคอมพิวเตอร์คือ จอ Apple ในทศวรรษ 1980 มักมีความละเอียด 72 พิกเซลต่อนิ้ว ทำให้ 1 point เท่ากับ 1 pixel และซอฟต์แวร์สามารถทำให้ขนาดเอกสารบนหน้าจอตรงกับหน้าที่พิมพ์ออกมาได้ง่าย
เครื่องพิมพ์ดีดโดยหลักแล้วมี 6 บรรทัดต่อนิ้ว และถ้าใช้ตัวอักษรขนาด 12 point ที่นิยามเป็น 72.27 point ต่อนิ้วบนกระดาษสูง 11 นิ้ว จะได้ไม่ใช่ 66 บรรทัด แต่เกือบ 66.25 บรรทัด
สำหรับเครื่องพิมพ์ดีด ความต่างหนึ่งในสี่บรรทัดต่อหน้าอาจไม่ใช่เรื่องใหญ่ แต่เมื่อพิมพ์จำนวนมากลงบนกระดาษต่อเนื่องแบบ fanfold ความยาวหน้ากระดาษจำเป็นต้องเป็นจำนวนเท่าของระยะห่างระหว่างบรรทัดเพื่อให้การจัดแนวยังตรงกัน จึงกลายเป็นเรื่องสำคัญ
ตลอดหลายสิบปีก่อนยุค desktop publishing การพิมพ์ด้วยคอมพิวเตอร์ถูกใช้งานใหญ่ ๆ กับงานอย่างสลิปเงินเดือนหรือใบแจ้งยอดธนาคาร
งานกราฟิกก่อนยุคเลเซอร์พรินเตอร์ใช้ dot matrix printer ซึ่งก็ออกแบบมาให้สอดคล้องกับระยะ 6 บรรทัดต่อนิ้วของกระดาษ fanfold เช่นกัน
ดังนั้นการเลือกใช้ 72 point ต่อนิ้ว ใน desktop publishing น่าจะมีเหตุผลด้าน ความเข้ากันได้ย้อนหลัง อยู่ด้วย แต่ดูเหมือนจะมุ่งให้เข้ากันได้กับเทคโนโลยีการพิมพ์คอมพิวเตอร์ความละเอียดต่ำรุ่นเก่ามากกว่าการเรียงพิมพ์
ในทางกลับกัน เป้าหมายของ TeX ของ Knuth คือเครื่องเรียงพิมพ์แบบ photo typesetter จึงต้องสอดคล้องกับขนาดที่ใช้กันในงานพิมพ์ดั้งเดิม
มาตราชั่งตวงวัดของสหรัฐกับอังกฤษกำหนดอุณหภูมิสำหรับการวัดต่างกันเล็กน้อย และการจะทำบล็อกที่ตรงตามทั้งสองมาตรฐานได้นั้น ต้องผลิตด้วยความเที่ยงตรงเกือบถึงขีดจำกัดสูงสุดที่ทำได้ในเวลานั้น
ที่ Jo blocks แพร่หลายมากก็เพราะ Henry Ford ชอบมันมากจนถึงขั้นซื้อบริษัทไปเลย เหมือน Victor Kiam
อ้อ ผมนึกว่า point ถูกนิยามไว้เป็น 1/72 inch อย่างแม่นยำเสียอีก
ในไฟล์ Rich Text Format หรือ RTF มีอีกหน่วยหนึ่งชื่อ “twip” ที่ใช้กับขนาดส่วนใหญ่ ซึ่งเท่ากับ 1/20 ของ point
ผมไม่รู้ประวัติของมัน แต่ถ้า point ไม่ได้เป็นอย่างที่ผมคิด twip ก็คงไม่ใช่เหมือนกัน และคิดว่า error คงสะสมไปเรื่อย ๆ ก็ชวนปวดหัวเหมือนกัน
ลิงก์ผิด แต่ก็อ่านสนุก
หน่วยวัด ก็คล้ายโมเดล คือสิ่งสำคัญไม่ใช่ว่าถูกต้องแค่ไหน แต่คือมีประโยชน์หรือไม่
ถ้างานที่โรงเรียนกำหนดแค่ว่าต้องใช้ฟอนต์ขนาด 12 point ก็แทบไม่สำคัญนักว่าตัวเลขนั้นหมายถึงอะไรอย่างแม่นยำ
ถ้าเครื่องบินบินด้วยหน่วย point ต่อวินาที เราอาจมีหน่วยที่เป็นมาตรฐานกว่านี้ก็ได้
ผมสงสัยว่ายังมีเหตุผลอะไรให้อยู่กับ pt ต่อไปไหม
ไม่แน่ใจว่ามันมีข้อดีอะไร หรือแค่ยังคงอยู่ต่อเพราะความเฉื่อยเหมือน imperial system
point ควรจะเป็น 72 point ต่อนิ้ว ดูเป็นเรื่องธรรมชาติอยู่แล้ว เพราะ 12 × 6 = 72
กลับกัน ผมว่ามันน่าตกใจกว่ามากที่เคยมีคนทำมาตรฐานเป็นค่าอื่น
ค่านั้นประมาณ 1/6 inch แต่ในความเป็นจริงแต่ละโรงพิมพ์ก็ต่างกันเล็กน้อย และ pica มาตรฐานก็ถูกเลือกให้ตรงกับขนาดจริงที่ใช้แพร่หลายที่สุด