Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
Yethangul 지원 문제
2020.02.24 14:15
나이 먹고 시간이 되면 옛글을 다시 책으로 만들어 볼까 하는 생각에
옛한글에 관심을 갖고 각종 글꼴로 LaTex을 이용해 편집을 해보는데,
불행이도 지금 Yethangul로는 지원되는 글꼴이 별로 없다.
대표적인 것이
함초롬, 본명조(Noto Serif CJK KR로 바뀜), 나눔명조 옛한글, 은바탕 등이 고작이다.
우리나라 시장에서 가장 많은 돈을 버는 <윤디자인>이 윤명조를 100에서 700 시리즈까지
만들었지만, LaTex에서 옛한글이 지원되지 않았다. (아래와 같음)
그래서 오늘 <윤디자인>에 문의를 했다. 담당자에게서 전화가 와서 이야기ㅐ를 나눈 결과 자신들이 만든 글꼴이
"MS Word에서 모두 식자가 되는데, 사용하는 에이터가 무엇인가요?"라며 묻기에
LaTex을 소개했는데, 담당자 말은 "아마도 구현하는 프로그램이 제대로 작동하는지 의문이다, 글꼴은 모두 만들어져 있고, 조합도 잘 되고 있다."라고 한다.
그래서 의구심이 들었습니다. 분명히 요즈음 만드는 글꼴 들은 옛한글을 지원하도록 한다고 뉴스에까지 나오는 데 - 보기로 <빙그레 메로나체>, <불교 조계사 석보체>, <전주완판본> 등등 - 실제로 LaTex에서 돌리면 사각형이 나오거나, 제대로 식자가 되지 않는 경우가 발생합니다. (아래 빙그레 메로나체)
이에 Yethangul 옵션을 다시 들여다보고, 새롭게 짜야 하는 것은 아닌가 합니다.
댓글 9
-
yihoze
2020.02.24 15:20
-
noname
2020.02.24 16:11
1. "옛한글을 지원하는" 폰트란 무엇인가?
잘 알려진 대로, 예전에는 폰트의 유니코드의 사용자 영역(Private User's Area: PUA)에 많이 쓰일 걸로 추정되는 (선택 기준은 알 수 없습니다) 옛글자 몇 천 자 정도를 만들어 넣고 이것으로 "옛한글 글꼴"이라고 주장하곤 했습니다. 그 기원은 새바탕, 새굴림, 한컴바탕, 한컴굴림 등 한양에서 제작한 폰트들이었고 그 후로 대부분의 소위 "PUA 옛한글 글꼴"에서 문자 배열이 이것을 따르곤 했으므로 "한양 PUA 옛한글"이라고 부릅니다.
그러나 이 방법은 표현할 수 없는 옛 문자가 존재할 수 있고 사용자 영역을 다른 폰트로 대치하면 전혀 엉뚱한 문자가 찍힐 것이기 때문에 제대로 된 한글 표현방법이라고 할 수 없었지요. 더욱이, 이미 우리에게는 옛한글 표현의 표준인 "자모 한글"이라는 방법이 있었음에도 이런 종류의 폰트로는 자모 한글로 표현되는 옛한글을 나타낼 수 없었기 때문에 비표준이라는 점에서 많은 비판을 받았습니다.
이 방식으로 옛한글을 표현하던 초창기 아래아한글과 MS Word는 그 후, 입력을 "자모 한글"("첫가끝" 또는 LVT라고 불리기도 합니다)로 하고, 이를 내부적인 처리를 거쳐 출력하는 방법을 마련한 것으로 보입니다. 현재 아래아한글이나 MS Word가 모두 자모 한글을 잘 구현하고 있습니다. (PUA 폰트라 해도 자모 한글로 입력한 옛한글이 제대로 출력되는 것을 볼 수 있는데 이는 프로그램 자체가 처리하는 것일 것입니다.)
우리가 기대하던 것은, 트루타입 오픈의 ccmp같은 feature를 이용한다면 폰트 자체가 자모 한글을 (아름답게) 출력할 수 있지 않은가 하는 것이었습니다. 왜냐하면 이것이 유니코드 표준이기도 했기 때문이지요. 그리고 이것을 가능하게 한 최초의 한글 폰트인 은 바탕이 십수년 전에 출현했습니다. 그리하여 현재 LaTeX에서 옛한글의 구현은 (pdflatex 제외)
- 자모 한글로 입력하고
- 옛한글 표현의 속성을 지닌 폰트를 이용하여 이것을 출력한다
는 방법을 따르고 있습니다. 이를 위해서는 반드시 자모 한글을 합성하여 옛한글 음절로 표현하는 feature를 지닌 폰트가 필요합니다. 이곳에서 "옛한글을 지원하는 폰트"라는 것은 바로 이러한 글꼴만을 가리키는 것이며 PUA 옛한글만 가진 폰트는 여기에 포함되지 않는 것으로 칩니다.
이 제대로 된 폰트를 사용하기 위해서 필요한 것은 [Script=Hangul]이라는 fontspec 옵션입니다. 위에 예시하신 YetHangul=On이라는 식의 옵션은 예전 xetexko에서 잠깐 채택한 적이 있는 것인데 현재는 필요없고 쓰지 않는 것이 옳습니다. (아마 사용하시는 시스템 자체가 매우 예전 것이라는 느낌이 듭니다만.) [Script=Hangul,Renderer=OpenType] 정도의 옵션이면 xelatex, lualatex 할 것 없이 모두 통할 것입니다. (특히 2020년에는 lualatex에 harfbuzz가 들어오기 때문에 Renderer=OpenType을 잘 기억하고 있는 것이 좋다고 봅니다.)
이제, 윤디자인의 어떤 폰트에 대한 대화인지는 모르겠으나 상업용 폰트 관련해서는 테스트해볼 수도 없으니 어떤 일이 일어난 건지 알 수 없지만 윤디자인의 폰트들이 대부분 그렇듯이 그냥 PUA 폰트일 가능성이 대단히 높아 보입니다. 예시한 중에 빙그레 메로나체와 전주 완판본체는 확실한 PUA 글골이고 석보체는 아예 PUA 옛한글조차 없습니다.
어떤 글꼴이 제대로 된 글꼴인가에 대해, pmhanguljamo-kdoc이라는 문서(http://ftp.ktug.org/tex-archive/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf )의 7페이지에 공개 글꼴 중에서 사용가능한 것을 모두 열거하고 있습니다. 그 중 Noto CJK (또는 Source Han)와 HCR이 가장 중요하다고 보는데, 지난 글들을 보면 이 두 폰트에 대해서 좀 심드렁하신 것으로 알고 있습니다. 모양이 맘에 안드는 거야 어쩔 수 없다지만 이 폰트의 중요성은 위에 설명한 "옛한글의 진정하고 완전한 표현"이라는 점에서 비교할 수 없는 중요성을 가진 폰트입니다.
2. PUA 한글 폰트를 이용할 수 없는가?
PUA 한글 폰트를 이용하려면 일단 소스에 옛한글을 PUA 코드로 입력해야 합니다. 예를 들어 "나랏말싸미 듕귁에 달아"라는 부분의 코드에 대해 보자면 옛한글로 입력해야 하는 "싸"(아래아)라는 자를 LVT로는 110A 119E로 입력하지만 이 글자의 PUA 해당 코드는 EBD4입니다. 제가 아는 한 PUA 옛한글을 입력할 수 있는 키보드 입력기가 아마 현재로서는 찾기 어려울 겁니다. 입력에 관한 한, LVT가 표준으로서 확립된 셈이지요.
그래서 일부 폰트 사용 설명서에서는 옛한글은 문자표를 보고 한 자씩 찍어 입력하라고 합니다만, 받아들이기 어렵더라고요.
그 대신, ko.TeX은 이런 경우를 위한 해결책을 이미 가지고 있습니다. 바로 jamo-normalize라는 강력한 유틸리티인데요, TeX Live에 이미 있으므로 바로 사용해볼 수 있습니다. LVT 입력된 텍스트를 PUA 코드로 바꾸려면 -p 옵션을 주면 됩니다.
$ jamo-normalize -p <test.txt >out.txt
이 유틸리티에 힘입어 원하시는 바 빙그레 레모나체나 전주완판본체와 같은 불만족스러운 폰트로 옛한글을 비슷하게 식자할 수 있습니다. (그래도 이것은 전혀 표준이 아니고, 이런 방식에서는 사성점을 처리하는 것도 난관인 등 문제가 많습니다.) 전주완판본체 사용례는 이미 위키에 있습니다. http://wiki.ktug.org/wiki/wiki.php/%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8
3. 기타
대략 이 문제에 대해 설명했는데 이 내용은 전부 ko.TeX 사용설명서, KTUG의 위키 페이지, 그밖에 여러 곳에서 유사한 내용을 확인할 수 있을 것입니다. 옛한글 문제가 완전히 해결된 지 10년도 더 지났으며, 이 문제에 기여한 KTUG의 공헌이 적지 않다고 생각하고 있는데, "뭔가 문제가 있는 거 같으니 검토해봐야 하지 않는지?"라고 말씀하신 것이 걸려서 쓸데없이 글이 길어졌습니다. 그러나 이 문제에 대해 한 번 정리하는 의미는 있겠네요.
결론을 말씀드리면, "정상적이고 표준적인 방법으로 옛한글을 식자함에 있어 기술적 문제는 없"습니다. 그리고 대부분의 상업용 폰트가 이와 같은 "표준에 부합하는" 폰트를 잘 내놓지 않는 이유는 (제가 아는 어떤 제대로 된 상업용 옛한글 폰트 하나는 거의 30만원 가까이 하더군요) 그게 별로 장사가 되지 않기 때문은 아닐지 짐작합니다. 요컨대 수요가 별로 없다는 거지요. 만드는 데 너무 많은 품이 들기 때문에 기업에서도 하지 않는 일을 취미로 개인이 (하자 들면 뭐 못 할 거는 없을수도...) 한다 해도 원하시는 "예쁜 모양을 가진" 옛한글 폰트가 자작으로 만들어지기는 힘들 거라 봅니다.
-
DohyunKim
2020.02.24 16:15
이런 기능을 제공하는 폰트로는 윈도즈 8에 번들된 맑은고딕이 있으며 공개폰트로는 은바탕, 함초롬 LVT, Source Han Sans (본고딕), Source Han Serif (본명조), Noto Sans CJK, Noto Serif CJK, 나눔명조옛한글, 나눔바른고딕옛한글, KoPubWorld 바탕, KoPubWorld 돋움 등이 있다. 또한 ᄒᆞᆫ글에 번들된 함초롬 글꼴에도 최근 옛한글 지원이 추가되었다.
xetexko 매뉴얼 각주에 이렇게 적혀 있습니다. 이 외에도 더 있을 수 있지만 확인해보지 않았습니다. 이 정도만 해도 불과 몇년전에 비하면 격세지감입니다.
추천:1 댓글
-
큰바위
2020.02.24 18:59
위 댓글 저 또한 한동안 열심히 읽으며, 텍 작업을 해봤습니다. 그런데 많은 실망이 있었지요. 그런데 오늘 윤디자인 책임자와 통화에서 LaTex YetHangul에 문제가 있는 것은 아닐까? 하는 의문이 들었습니다. 지금 집에 들어와 LibreOffice 작업을 해보았습니다. <빙그레체>로 작업을 했는데, 분명히 지원이 안될 줄 알았는데 Office에서 신기하게 되는군요, 이렇다면 YetHangul옵션에 문제가 있는 것으로 보입니다. 윤명조 700의 경우 조합 방식의 차이인 것 같습니다. 4가지를 올립니다. Office에서 작업한 것을 pdf로 옮긴 것 까지 첨부합니다.
-
noname
2020.02.24 19:57
뭐하러 저 긴 댓글을 썼나 싶습니다. 문제 있다고 생각하신다면 어쩔 수 없고요, 저는 "아무런 문제점을 느끼고 있지 못하니까" 그냥 좋다고 생각하시는 도구를 사용하심이 답인 듯합니다.
-
큰바위
2020.02.24 22:32
죄송합니다. 늘 긴 글로 댓글을 달아주시는데, 제가 너무 부족해서 그만. 87년부터 Tex을 써 온 저로서는 Tex은 아주 소중한 것입니다. 결국 글골 디자이너들의 무지와 고집이 이런 문제를 만들었군요. 또 이런 사람들이 정부나 지자체 (소중한 국민의 세금), 여러 단체가 투자한 돈을 받고 형편없는 글꼴을 만들었다는 것이 정말 안타깝습니다.
-
noname
2020.02.25 05:21
글꼴을 만드는 사람 또는 회사의 입장에서 우선적으로 염두에 둘 것은 당연히 보편적으로 널리 쓰이는 워드 프로세서 같은 프로그램일 터이고 거기에서 잘 되면 뭐 큰 문제 없는 거겠지요. 게다가 우리 언어 생활에 옛한글이 필수적인 것도 아니므로 위에서 장황하게 설명한 "고급 오픈타입 속성"을 갖춘 글꼴을 만들지 않았다고 해서 그걸 비난하거나 할 수는 없다고 생각합니다.
LaTeX 관련하여 제가 드린 말씀을 다시 요약하면,
- 다음 상황에서 이상적으로 옛한글은 아무런 어려움 없이 처리할 수 있습니다.
- XeLaTeX이나 LuaLaTeX으로 컴파일하고
- (옛)한글 문자를 자모 한글(LVT)로 입력하며
- [Script=Hangul] 오픈타입 속성을 가진 폰트를 사용하여 출력할 때: Noto CJK, Source Han, HCR LVT 등의 글꼴.
- 폰트가 그런 오픈타입 속성을 지원하지 않을 때도 다음과 같이 하여 옛한글 식자를 할 수 있습니다.
- 입력을 자모 한글로 하였다면 이것을 PUA 코드로 변환하는 유틸리티를 이용하여
- 또는 처음부터 PUA 코드로 소스를 입력하여.
- 해당 폰트를 fontspec 명령으로 지정.
2의 방법은 권장하는 것은 아니지만 아무튼 원하는 글자를 원하는 폰트로 찍을 수 있다는 것이고요, 이를 위한 수단도 제공한다는 의미입니다. 따라서 나중에 보여주신 바 "다른 워드에서 잘 되는 일"을 LaTeX으로도 할 수 있다고 말씀드린 것입니다.
첨부하신 스크린샷으로 추정하자면 실망하시는 이유가 간략히 "왜 옛한글로 입력했는데 안 나오느냐?"는 의문이 핵심인 듯한데요. 지금 문서에 사용하고자 하는 폰트는 case 2에 해당하는 것이므로 PUA 코드를 입력하여야 하는 것입니다. 그런데 시스템의 키보드 입력기는 자모 입력을 하고 있는 거죠. 그러니까 입력된 소스를 PUA 코드로 변환하시든가, 아니면 처음부터 PUA 코드로 입력하시든가 해야 합니다. PUA 코드로 직접 입력하는 가장 좋은 방법은 문자표로 해당 폰트를 열어놓고 한 글자씩 찾아서 넣는 것이라고 앞서 말씀드렸습니다. 워드 프로세서는 이런 거 신경 안 써도 잘 되는데 왜 그러냐고 물으신다면, 그러니까 워드가 좋은 프로그램인 거고요(프로그램이 뭔가 해준다는 의미에서), 어떤 코드로 입력할 거냐의 문제는 LaTeX이 상관할 일이 아니라고밖에 말씀드릴 수 없습니다. LaTeX은 입력된 문자를 처리하는 일을 하는 거니까요. 가령, PUA 입력기로 전환할 수 있는 어떤 유틸리티가 있었다면 이런 의문을 안 가지셨겠지요. (그러나 PUA 자체가 비표준이므로 이런 입력기를 제작하는 것에는 반대입니다.) 그러니 LaTeX을 탓할 일이 아닙니다.
빙그레체 말씀을 하셨으니 샘플을 보여드리겠습니다. (위의 case 2에 해당합니다.) 그런데 이 폰트는 옛한글이 서른 자밖에 없네요. 훈민정음 어제 서문을 흉내내는 것 말고는 쓸 데가 없겠는데요.
- 다음 상황에서 이상적으로 옛한글은 아무런 어려움 없이 처리할 수 있습니다.
-
큰바위
2020.02.25 11:51
감사합니다. 지금 당장에는 <수학사 쉽게 풀어>, 수포자 탈출에 신경을 쓰는데, 가끔 위와 같은 문제도 생각하게 됩니다. 85년 대학원 시절부터 <순 한글 쓰기> 동아리, 한글학회에 뜻을 같이 해서, 자주 마음 쓰게 됩니다. 다른 분들도 옛한글에 뜻이 있다면 선생님 글이 많은 도움이 되었으리라 생각합니다. 말을 잃어버린 만주족과 글꼴을 잃어버린 몽골, 중앙아시아 종족을 안타깝게 생각하며, 말과 글꼴이 남아 있는 우리가 얼마나 다행스러운지 모르겠습니다.
-
큰바위
2020.02.25 18:04
noname님께서 마지막에 첨부해 주신 bingtst.tex 파일을 가지고 여러 폰트를 넣어본 결과 작동하는 글꼴은
윤디자인이 만든 <빙그레 메로나체>, 원불교의 <한둥근체>, 한글과컴퓨터사가 제작한 <전주 완판본>
3가지 더군요.
그런데 제 경우 Linux OS여서 입력기 자체가 PUA 방식이 아닌 <자모 한글>인 모양입니다. 그래서 2번째 경우는 제 능력 밖이라, 편하게 옛한글을 식자하기 위해 Noto Serif CJK KR을 택하기로 했습니다. 나눔 글꼴은 '아래하'가 점으로 나타나 Noto와 나눔 둘 가운데 어느 것이 옳은지 모르겠습니다.
사실 옛한글을 쓸 지는 의문이지만 (시간을 투자한 만큼 나중에라도 써야 하는데), 새롭게 배운 것이 있어 감사드립니다.
kotex 문제일까요? 옛한글 전부가 완성형 코드로 할당되어 있는지도 모르겠지만, 설령 그렇다 해도, 그런 폰트가 있으리라고 생각하지 않습니다. 옛한글을 구현하려면 첫가끝 글자들이 폰트에 포함되어 있어야 하는데 함초롬을 비롯하여 언급하신 네 가지 폰트들만이 그러한 것 같습니다. 아래는 Noto Serif CJK KR에서 추출한 것입니다.
나머지 윤폰트 등은 옛한글의 일부를 완성형 글자로 만들어 PUA 영역에 둔 게 아닌가 싶습니다. 언급하신 빙그레 메로나체를 내려받고자 웹사이트에 들어갔더니 이런 말이 있네요.
메로나 로고타입의 특징적인 요소를 자소에 반영하고 반듯한 네모의 형태로 젊은 느낌을 주는 구조로 레트로 감성을 표현하여 제작되었습니다. 국문학자와 디자이너의 자문 의견을 반영하여 한글 11,172자와 한글날의 의미를 생각해 볼 수 있는 훈민정음 서문의 옛한글 31자를 추가로 개발하였습니다.
아무튼 메로나 폰트에 첫가끝 글자들이 포함되어 있는지 굳이 확인해 보았지만 역시나 아무 글자도 들어있지 않았습니다.