포인트는 이상하고 일관성 없는 측정 단위다
(buttondown.com)- 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
- Frink 데이터 파일은 포인트 관련 단위를 다음처럼 정의함
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임
Lobste.rs 의견들
-
마지막에 Frink를 참고하는 부분에서 US Survey Inch와 International Inch의 차이가 나옴
예전에 international inch가 어떻게 생겼는지 쓴 적이 있는데, 도량형 이야기 중에서도 좋아하는 사례라서 1900년 전후 point 정의가 달랐던 건 당시 측정 정밀도의 한계 때문이었을 가능성이 커 보임
Knuth TeX point와 NIST point의 차이는, 서로 다른 inch 정의를 기준으로 삼았을 때 생기는 차이보다도 작음
금속 활자를 프레임에 채우거나 Linotype으로 납 활자를 주조할 때 생기는 변동은 이런 point 차이를 구분하는 데 필요한 정밀도를 훨씬 압도했기 때문에, 당시 인쇄 기술에서는 실제로 문제가 되지 않았을 것임
컴퓨터의 1/72 inch point에 대한 또 다른 역사적 배경으로, 1980년대 Apple 디스플레이는 보통 inch당 72픽셀이어서 1 point가 1 pixel이었고, 소프트웨어가 화면 문서 크기를 인쇄 페이지와 맞추기 쉬웠음- 또 떠오르는 건 타자기와 라인 프린터도 중요한 기술이었다는 점임
타자기는 명목상 inch당 6줄이었고, 11인치 용지에서 inch당 72.27 point의 12 point 글자를 쓰면 66줄이 아니라 거의 66.25줄이 됨
타자기에서는 페이지당 1/4줄 차이가 별문제 아닐 수 있지만, 팬폴드 용지에 대량 출력할 때는 페이지 길이가 줄 간격의 정수배여야 정렬이 유지되므로 중요해짐
데스크톱 출판 전 수십 년 동안 급여 명세서나 은행 명세서 같은 컴퓨터 인쇄의 큰 용도였음
레이저 프린터 이전의 그래픽 출력은 도트 매트릭스 프린터를 썼고, 이 역시 팬폴드 용지의 inch당 6줄 간격에 맞춰 설계됐음
그래서 데스크톱 출판에서 inch당 72 point를 택한 데에는 하위 호환성 이유가 있었겠지만, 조판보다는 오래된 저해상도 컴퓨터 인쇄 기술과의 호환을 노린 것으로 보임
반면 Knuth의 TeX 목표는 사진식자기였으니 전통 인쇄에서 쓰던 치수와 맞아야 했음 - 나도 처음에는 그 차이가 survey inch와 statute inch의 차이일 거라고 생각했음
- Jo가 단일 25.4 mm inch 블록을 택한 이유를 약간 단순화한 것 같음
미국과 영국의 도량형은 측정 온도를 조금 다르게 규정했고, 두 표준 모두에 맞는 블록을 만들려면 당시 가능한 정확도의 극한까지 가공해야 했음
Jo blocks가 널리 퍼진 건 Henry Ford가 그걸 너무 마음에 들어 해서, Victor Kiam처럼 회사를 사버렸기 때문임
- 또 떠오르는 건 타자기와 라인 프린터도 중요한 기술이었다는 점임
-
아, point가 정확히 1/72 inch로 정의된 줄 알았음
Rich Text Format, 즉 RTF 파일에는 대부분의 치수에 쓰이는 “twip”이라는 다른 단위가 있는데, 이건 point의 1/20임
그 역사는 모르지만 point가 내가 생각한 게 아니라면 twip도 그렇지 않다는 뜻이고, 오차가 누적되는 셈이라니 난감함 -
링크는 잘못됐지만 재미있게 읽었음
측정 단위는 모델과 비슷해서, 맞는지보다 유용한지가 중요함
학교 과제가 12 point 글꼴만 요구한다면 그 숫자가 정확히 무엇을 뜻하는지는 별로 중요하지 않음
비행기가 초당 point 단위로 날았다면 더 표준화된 단위가 있었을지도 모르겠음 -
아직도 pt를 쓸 이유가 있는지 궁금함
어떤 장점이 있는 건지, 아니면 imperial system처럼 관성 때문에 남아 있는 건지 모르겠음 -
point는 inch당 72 point여야 한다는 게 당연해 보임. 12 × 6 = 72이기 때문임
오히려 그 외의 값으로 표준화한 사람이 있었다는 게 정말 놀라움- 왜 12×6인가?
- 뉴스레터에는 들어가지 않았지만, 갈라진 이유는 인쇄업자들이 이미 pica 치수를 쓰고 있었기 때문임
그 값은 대략 1/6 inch였지만 실제로는 인쇄 회사마다 조금씩 달랐고, 표준 pica는 가장 흔히 쓰이던 실제 치수에 맞춰 선택됐음