1 คะแนน โดย GN⁺ 3 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สาเหตุที่กริด 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 ความคิดเห็น

 
GN⁺ 3 시간 전
ความคิดเห็นจาก 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 และซอฟต์แวร์สามารถทำให้ขนาดเอกสารบนหน้าจอตรงกับหน้าที่พิมพ์ออกมาได้ง่าย

    • อีกอย่างที่นึกถึงคือ เครื่องพิมพ์ดีด และ line printer ก็เป็นเทคโนโลยีสำคัญเช่นกัน
      เครื่องพิมพ์ดีดโดยหลักแล้วมี 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 จึงต้องสอดคล้องกับขนาดที่ใช้กันในงานพิมพ์ดั้งเดิม
    • ตอนแรกผมก็คิดว่าความต่างนั้นน่าจะเป็นความต่างระหว่าง survey inch กับ statute inch
    • ดูเหมือน Jo จะอธิบายเหตุผลที่เลือก 25.4 mm inch block แบบย่นย่อเกินไปนิดหน่อย
      มาตราชั่งตวงวัดของสหรัฐกับอังกฤษกำหนดอุณหภูมิสำหรับการวัดต่างกันเล็กน้อย และการจะทำบล็อกที่ตรงตามทั้งสองมาตรฐานได้นั้น ต้องผลิตด้วยความเที่ยงตรงเกือบถึงขีดจำกัดสูงสุดที่ทำได้ในเวลานั้น
      ที่ 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
    กลับกัน ผมว่ามันน่าตกใจกว่ามากที่เคยมีคนทำมาตรฐานเป็นค่าอื่น

    • ทำไมต้อง 12×6?
    • ในจดหมายข่าวไม่ได้ใส่ไว้ แต่เหตุที่มันแยกออกจากกันก็เพราะช่างพิมพ์ใช้ขนาด pica กันอยู่ก่อนแล้ว
      ค่านั้นประมาณ 1/6 inch แต่ในความเป็นจริงแต่ละโรงพิมพ์ก็ต่างกันเล็กน้อย และ pica มาตรฐานก็ถูกเลือกให้ตรงกับขนาดจริงที่ใช้แพร่หลายที่สุด