이 소스를 xelatex -output-driver="xdvipdfmx -z0" test.tex 명령으로 컴파일하고 결과물인 PDF를 less 명령으로 열어보면 이런 부분이 보입니다.
[<16a9>-60<0042>-60<1b41>-300<1d8d2225>]TJ
...
[<16a9>-111<0042>-111<1b41>-423<1d8d>-51<2225>]TJ
<16a9>는 “가“, <0042>는 “a”, <1b41>는 “나”, <1d8d> <2225>는 “다”와 “라”의 글리프 번호입니다. 이들 사이의 숫자는 글자들 사이 간격이고요.
원래 소스에 있었던 스페이스는 글리프로 들어가지 않고 간격 300으로 변경되어 있습니다. 또한 “다”와 “라” 사이에 xetexko가 자동으로 기본값 0pt 짜리 글루를 집어넣었는데 이것은 PDF에서는 사라져 있습니다. 간격 0을 이동하라는 지시는 불필요하니까 xdvipdfmx가 지워버린 거겠죠.
아랫 줄은 글자들의 자연적 너비보다 더 큰 너비를 강제함으로써 일부러 글자들 사이의 글루를 잡아늘인 것입니다. 글루들이 다들 늘어나 있고, 특히 첫째줄에서 보이지 않던 “다”와 “라” 사이 간격이 나타나고 있습니다. stretch가 작용한 때문입니다.
사실 스페이스 글리프를 PDF에 넣는 방법이 있긴 있습니다. 위 소스에
\par가\char32 나
라는 행을 추가해고 컴파일하면 다음과 같은 부분이 PDF에 들어갑니다.
[<16a9>-60<0001>-60<1b41>]TJ
여기서 <0001>이 스페이스 문자의 글리프 번호입니다. 그런데 60의 간격은 무엇이냐? xetexko가 스페이스를 영문자로 (잘못) 인식해서 한글과 영문자 사이에 들어가는 미세간격을 넣은 것입니다. 어쨌든 스페이스가 PDF에 들어간다는 것은 바로 이런 경우를 말합니다.
PDF 파일에서 copy and paste 했을 때 60 같은 미세간격들을 스페이스로 취급할 지, 아니면 무시해버릴 지는 PDF 응용프로그램이 알아서 하는 영역이므로 미리 알 수가 없습니다. 즉 어떤 프로그램으로 읽느냐에 따라 다를 수 있습니다.
예. 텍은 PDF에 공백문자를 넣지 않습니다. 단지 간격만 표시합니다.
이 소스를 xelatex -output-driver="xdvipdfmx -z0" test.tex 명령으로 컴파일하고 결과물인 PDF를 less 명령으로 열어보면 이런 부분이 보입니다.
<16a9>는 “가“, <0042>는 “a”, <1b41>는 “나”, <1d8d> <2225>는 “다”와 “라”의 글리프 번호입니다. 이들 사이의 숫자는 글자들 사이 간격이고요.
원래 소스에 있었던 스페이스는 글리프로 들어가지 않고 간격 300으로 변경되어 있습니다. 또한 “다”와 “라” 사이에 xetexko가 자동으로 기본값 0pt 짜리 글루를 집어넣었는데 이것은 PDF에서는 사라져 있습니다. 간격 0을 이동하라는 지시는 불필요하니까 xdvipdfmx가 지워버린 거겠죠.
아랫 줄은 글자들의 자연적 너비보다 더 큰 너비를 강제함으로써 일부러 글자들 사이의 글루를 잡아늘인 것입니다. 글루들이 다들 늘어나 있고, 특히 첫째줄에서 보이지 않던 “다”와 “라” 사이 간격이 나타나고 있습니다. stretch가 작용한 때문입니다.
사실 스페이스 글리프를 PDF에 넣는 방법이 있긴 있습니다. 위 소스에
라는 행을 추가해고 컴파일하면 다음과 같은 부분이 PDF에 들어갑니다.
여기서 <0001>이 스페이스 문자의 글리프 번호입니다. 그런데 60의 간격은 무엇이냐? xetexko가 스페이스를 영문자로 (잘못) 인식해서 한글과 영문자 사이에 들어가는 미세간격을 넣은 것입니다. 어쨌든 스페이스가 PDF에 들어간다는 것은 바로 이런 경우를 말합니다.
PDF 파일에서 copy and paste 했을 때 60 같은 미세간격들을 스페이스로 취급할 지, 아니면 무시해버릴 지는 PDF 응용프로그램이 알아서 하는 영역이므로 미리 알 수가 없습니다. 즉 어떤 프로그램으로 읽느냐에 따라 다를 수 있습니다.