포인트는 이상하고 일관성 없는 측정 단위다

1 day ago 3
  • LaTeX와 Inkscape의 같은 10.8pt × 7.2pt 격자가 어긋난 이유는 두 도구가 서로 다른 포인트 정의를 쓰기 때문임
  • LaTeX는 1pt를 1/72.27인치로, Inkscape는 SVG·PostScript 계열의 1/72인치로 계산함
  • 포인트는 1517년부터 쓰인 타이포그래피 단위지만, 초기에는 회사·장비·국가별로 크기가 달랐음
  • 미국식 인쇄 포인트는 NIST의 0.013837인치 정의와 TeX의 72.27pt/in 정의로 이어졌으며 차이는 극히 작음
  • PostScript가 기본 사용자 공간을 1/72인치로 정하고 LaserWriter로 확산되며 CSS·SVG·Inkscape에도 자리 잡음

LaTeX와 Inkscape의 포인트가 어긋나는 이유

  • Logic for Programmers 도표를 다시 만드는 과정에서 LaTeX와 Inkscape의 10.8pt × 7.2pt 격자가 같은 크기로 맞지 않는 문제가 생김
  • LaTeX는 1포인트를 1/72.27인치로 정의하며, 이는 약 0.3515mm임
  • Inkscape는 1포인트를 1/72인치로 사용하며, 이는 약 0.3528mm임
  • 차이는 약 0.4% 에 불과하지만, 널리 쓰이는 두 디지털 도구가 서로 다른 포인트 단위를 쓰는 결과를 만듦

포인트의 기원과 표준화 문제

  • 포인트)는 1517년부터 이어진 타이포그래피 단위로, 인쇄업자가 의미 있게 다룰 만한 가장 작은 크기라는 성격을 가졌음
  • 초기 포인트는 표준화된 단위가 아니었고, 회사와 장비에 따라 서로 다른 크기가 쓰였음
  • 이후 표준화가 진행됐지만, 나라마다 다른 기준을 택함
    • 독일과 일본의 포인트는 0.250mm
    • 프랑스 포인트는 0.399mm로 알려져 있음
  • 초기 컴퓨터 역사가 미국 중심으로 전개되면서, 디지털 기술은 미국식 포인트 계열을 주로 사용하게 됨

미국식 포인트와 TeX의 72.27pt/in

  • 미국에서는 19세기 말 무렵 포인트를 표준화했지만, 당시 자료마다 수치가 조금씩 달랐음
  • 1900년 자료는 포인트 길이를 35/996cm로 제시해 1인치당 72.281포인트가 되며, 동시에 1피트당 867.4699 “ems”라고 해 1인치당 72.289포인트가 됨
  • 1916년 자료는 표준 파이카(pica, 12포인트)를 0.16604인치라고 하며 1피트당 72.272 “pica ems”를 제시해 1인치당 72.272포인트가 됨
  • 같은 자료의 다음 쪽에서는 파이카를 0.166044인치, 포인트를 정확히 0.013837인치라고 다시 제시함
  • 이런 차이는 미터와 피트의 정의가 시간에 따라 바뀐 점, 그리고 차이가 마이크론보다 작아 실무상 무시되기 쉬웠던 점과 연결됨
  • NIST의 공식 정의는 포인트를 0.013837인치로 정했으며, 단순 계산으로는 1인치당 72.27포인트에 가까움
  • 실제로 0.013837인치를 역산하면 72.270001포인트/인치가 되며, Donald Knuth는 이 미세한 차이를 TeX에서 조정함
  • TeX72.27pt = 1in으로 정의함
    • TeX의 “pt”는 1886년 American Typefounders Association이 정의한 공식 인쇄 포인트보다 약간 큼
    • 고전적 포인트 1개는 정확히 0.99999999pt로, 오차는 약 1억분의 1임
    • 72.27pt = 1in이라는 새 정의는 계산하기 쉽고 기억하기도 쉬움
  • 미국 인쇄업자는 인치를 기준으로 포인트를 정의했지만, TeX는 포인트를 기준으로 계산하고 인치를 포인트로 정의함
  • NIST는 72포인트/인치도 충분한 근사로 보는 것으로 보이며, TeX는 이를 bp(big point)라고 부름

PostScript, CSS, SVG, Inkscape의 72pt/in

  • Inkscape 쪽 값은 PostScript 형식의 기본 사용자 공간(default user space) 정의에서 이어진 것으로 보임
  • PostScript 문서는 x축과 y축의 단위 길이를 1/72인치로 정하고, 이를 기본 사용자 공간이라고 부름
  • 이 단위는 수학적 단순성과 편의성을 위해 선택됐으며, 인쇄 업계의 표준 측정 단위인 프린터 포인트 1/72.27인치와 매우 가깝다고 다뤄짐
  • 이후 86쪽에서는 1/72인치를 그대로 “포인트”라고 부름
  • 후속 판은 1/72인치가 포인트와 거의 같지만 정확히 같지는 않으며, 포인트에는 보편적 정의가 없다고 정리함
  • Apple은 LaserWriter 레이저 프린터에 PostScript를 탑재했고, 다른 회사들도 이를 따르며 PostScript는 사실상의 인쇄 언어가 됨
  • 그 결과 72포인트/인치가 디지털 측정의 표준처럼 자리 잡음
  • W3C도 CSSSVG에서 같은 기준을 사용함
  • Inkscape는 SVG 편집기이기 때문에, Inkscape의 포인트도 1/72인치 계열이 됨
  • SVG 편집기인 draw.io는 포인트 크기를 1/100인치로 사용하는 별도 예외임

Frink에 남은 단위 정의의 흔적

  • 단위 지원이 강한 튜링 완전 언어 Frink에서도 포인트 정의의 흔적을 확인할 수 있음
  • Frink로 1959년 이전 인치를 기준으로 1900년 자료의 값을 계산하면 다음과 같이 나옴
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”가 가리키는 전환점은 PostScript의 1/72인치 기본 단위와 연결됨
  • Frink의 texscaledpoint 정의는 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
Read Entire Article