- 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에서 조정함
- TeX는 72.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도 CSS와 SVG에서 같은 기준을 사용함
- 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임