KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
  • TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
운영체제: 윈도7 32비트

지난 1월, 국가수리과학연구소에서 열린 KTS 학술대회에서 김도현 회장님께서 '어떤 텍을 주로 사용하시는가?'에 대한 질문에 '요즘 루아텍을 주로 쓰고 있노라'하신 것을 기억하시는 분이 있을 겁니다. 
루아텍 홍보(?) 차원에서 루아텍 Font names database 하는 법을 보고 드립니다. 

1. Font names database

아시다시피 지텍을 쓸 때 폰트 캐시(fc-cache)를 해주던 것과 비슷하게 루아텍을 사용할 때도 폰트 네임 DB를 구축해야합니다. 
루아텍에서 트루타입폰트(ttf) 또는 오픈타이폰트(otf)를 사용하려면 luaotfload라는 패키지를 얹어야합니다. 
우리 luatex-ko 패키지는 이를 자동으로 불러옵니다. (정확히는 luatexko-core.sty에서 이를 불러옴)

luaotfload 패키지 매뉴얼 5절에 보면 Font names database에 관한 방법이 나와있습니다. 

> luaotfload-tool --update (또는 luaotfload-tool -u)

(과거엔 luaotfload-tool이라는 명령 대신 mkluatexfontdb 명령을 사용하던 시절이 있었고 두 명령 모두 동일한 작동을 했습니다만, 텍라이브 2015 pretest는 더이상 mkluatexfontdb 명령을 지원하지 않습니다.)

한걸음 더 나아가 다음과 같이 명령을 내려봅니다. 

> luaotfload-tool -f -u -vvv

이렇게 폰트 네임 데이터베이스가 성공적으로 구축되면 말미에 대략 다음과 같은 메시지가 나옵니다. 

luaotfload | db : Found 1596 font files; 798 new entries.
luaotfload | db : Creating filename map.
luaotfload | db : Analyzing families.
luaotfload | db : Analyzing shapes, weights, and styles.
luaotfload | db : Ordering design sizes.
luaotfload | db : Rebuilt in 87888 ms.
luaotfload | db : Font index saved at ...
luaotfload | db : Gzip: C:/usr/texlive/2015/texmf-var/luatex-cache/generic/names/luaotfload-names.lua.gz
luaotfload | db : Byte: C:/usr/texlive/2015/texmf-var/luatex-cache/generic/names/luaotfload-names.luc
luaotfload | cache : Lookup cache saved.
luaotfload | cache : Lookup cache emptied.
luaotfload | db : Fonts in the database: 820
luaotfload | util : Task completed successfully.


실제로 luaotfload-names.lua.gz에 있는 luaotfload-names.lua를 에디터로 열어보면 사용자 컴퓨터에 있는 폰트와 TDS가 인식하는 폰트의 목록이 주루룩 나옵니다.


luaotfload-tool.png




그런데 한글 폰트 중에 말썽을 일으키는 폰트가 있습니다. 소위 culprit 폰트. 
이런 것들은 블랙리스트에 명단을 올려서 luaotfload-tool을 실행할 때 걸림돌이 되지 않도록 해야합니다. 
대표적인 것이 펜흘림(PENHL.TTF), 태나무(TAENMR.TTF) 등의 폰트인데요, 이들 culprit 폰트는 다음 경로에 luaotfload-blacklist. cnf 파일을 만들고 등록해줍니다.

C:\usr\texlive\texmf-local\tex\luatex\luaotfload

texmf-local 폴더의 하위로 만들어 놓는 게 향후 텍라이브를 관리할 때 좋습니다. 텍라이브를 재설치하는 경우 texmf-local 폴더 이하는 지울 필요가 없으니까요. 어쨌든 저의 경우 luaotfload-blacklist. cnf의 내용은 다음과 같습니다. 

spltfgbd.ttf
spltfgbi.ttf
spltfgit.ttf
spltfgrg.ttf
PENHL.TTF
TAENMR.TTF

예전엔 PENHL.TTF를 penhl.ttf처럼 모두 소문자로 적어줘야 되었는데, 지금은 대문자도 잘 인식하더라고요. 어쨌든 culprit 폰트가 있다면 luaotfloat-tool 명령이 성공적으로 종료되지 않고 luaotfload-names.luc나  luaotfload-names.lua.gz 파일도 생성되지 않습니다. 


2. culprit 폰트를 알아내는 법
culprit 폰트를 발견하려면 윈도 powershell에서 다음과 같이 해봅니다. 

> luaotfload-tool -f -u -vvv | tee blacklist.log

그러면 화면에 나오는 메시지는 모두 blacklist.log에 기록됩니다. 이를 나중에 culprit 폰트를 발견할 때 써먹어야합니다. 어느 부분에서 더이상 luaotfload-tool이 기능을 못하고 멎어버렸는지 살펴봐야 합니다. 참고로 아주 오래전 윤고딕이나 윤명조 100번대 시리즈의 폰트(예: YGO120.TTF 따위)도 culprit 폰트이니 블랙리스트에 올려놓는 것이 안전할 것입니다. 

한편 메시지를 살펴보면 다음과 같이 '포스트스크립트 폰트 네임'이 유효하지 않다는 폰트도 열거될 수 있습니다. 

(중략)
luaotfload | db : gaesung.ttf has invalid postscript font names, using dummies.
luaotfload | db : gulim.ttc has invalid postscript font names, using dummies.
luaotfload | db : hbatang.ttf has invalid postscript font names, using dummies.
luaotfload | db : hdotum.ttf has invalid postscript font names, using dummies.
luaotfload | db : hmkba.ttf has invalid postscript font names, using dummies.
luaotfload | db : hmkbexpo.ttf has invalid postscript font names, using dummies.
luaotfload | db : hmkla.ttf has invalid postscript font names, using dummies.
luaotfload | db : hmklexpo.ttf has invalid postscript font names, using dummies
(중략)


이런 폰트는 uaotfload-blacklist. cnf에 등재하지는 않아도 luatex 실행에는 문제가 없습니다.

 
3. luatexko의 자동조사

텍라이브 2015 pretest에 있는 luatexko는 자동조사가 조금 에러가 있는데요. 
c:/usr/texlive/2015/texmf-dist/tex/luatex/luatexko/luatexko-core.sty 있는 파일을 다음 파일로 고쳐놓으면 잘 작동합니다. 


%% test_auto_josa.tex
\documentclass{article}

\usepackage[hangul]{kotex}

\setmainhangulfont{HCR Batang LVT}
% \setmainhangulfont{easop.ttf}

\begin{document}

\section{자동 조사}\label{sec:auto_josa}

\ref{sec:auto_josa}\은 \ref{sec:auto_josa}\는 

\ref{sec:auto_josa}\이 \ref{sec:auto_josa}\가 

\ref{sec:auto_josa}\을 \ref{sec:auto_josa}\를 

\ref{sec:auto_josa}\와 \ref{sec:auto_josa}\과 

\ref{sec:auto_josa}\로 \ref{sec:auto_josa}\으로 

\ref{sec:auto_josa}\라 \ref{sec:auto_josa}\이라

\end{document}


luatex_auto_josa.png




나중에는 텍라이브 2015가 확정되면 아마 tlmgr을 업데이트하는 것만으로 luatex-ko가 잘 작동할 거라 생각합니다.




XE Login