Mac의 gnuplot에서 PDF 문자가 이상해지는 문제

TL;DR



Mac의 gnuplot에서는 pango의 버그 (?)에서 파생되어 terminal에 pdf 나 pngcairo 등을 지정하면 문자가 이상해지는 문제가 있었지만 최신 버전 (gnuplot 5.4, pango 1.48.0)에서는 해결하고 있다.

현상



언제부터 잘 모르겠지만, Mac의 gnuplot에서는 terminal로 pdfpngcairo 등을 지정하면 문자가 이상해진다. 이것은 Cairo가 뒤에서 부르는 Pango의 문제입니다.
$ brew info pango
pango: stable 1.46.1 (bottled), HEAD

$ gnuplot --versio
gnuplot 5.2 patchlevel 8

그리고 pango 1.46.1, gnuplot 5.2 상태에서 다음 파일을 먹여 보자.

test.plt
set term pdf
set out "test.pdf"
p sin(x)
gnuplot test.plt

그러면 이렇게 된다.



예를 들면 「-5」가, 5와 같이 겹쳐 버리고 있는 것을 알 수 있다고 생각한다. 이것은 cairo의 문제이므로 출력에 pngcairo를 지정해도 같은 일이 일어난다.

이것을,
brew uninstall pango gnuplot
brew upgrade
brew install gnuplot

등으로 pango와 gnuplot을 업데이트하고, gnuplot이 5.4, pango가 1.48.0이 된 상태에서 다시 실행하면,



제대로 다시 하고 싶다.

보충



아마도 많은 사람들의 환경에서
brew uninstall pango gnuplot
brew upgrade
brew install gnuplot

갈 수 있다고 생각하지만, 내 환경에서는 gnuplot의 재설치에 실패했습니다. 어쩌면 비슷한 에러가 나오는 사람이 있을지도 모르기 때문에, 작업 로그를 남겨 둔다.

작업 로그 요약

gnuplot 재설치 시,
$ brew uninstall gnuplot
$ brew install gnuplot
(snip)
==> Pouring [email protected]_sur.bottle.tar.gz
Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

라고 말해졌다. 그래서 brew doctor를 실행하고, 그 지시에 따라 문제를 수정했다.

명령줄 도구 재설치.
sudo rm -rf /Library/Developer/CommandLineTools 
sudo xcode-select --instal

명령줄 도구 업데이트
softwareupdate --all --install --force

brew 업데이트.
git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask" fetch --unshallow

brew doctor의 지시에 따라 불필요한 것을 제거. 특히 나는 pango를 어떻게든 하려고 손으로 넣었으므로, 그것을 삭제.

brew doctor에게 말한 것.
Warning: Unbrewed dylibs were found in /usr/local/lib.
Warning: Unbrewed header files were found in /usr/local/include.

삭제.
```sh
rm -rf /usr/local/include/pango-1.0 
sudo rm -rf /usr/local/include/pango-1.0  
rm /usr/local/lib/pkgconfig/pango.pc  
rm /usr/local/lib/pkgconfig/pangocairo.pc 
rm /usr/local/lib/pkgconfig/pangoft2.pc

brew doctor에 "gdk-pixbuf와 librsvg를 넣어라"라고 말했기 때문에 넣는다.
brew install gdk-pixbuf librsvg

Qt에의 패스를 통해라고 들었으므로 통한다(나는 zsh로, 로컬의 설정은 .zshrc.mine에 보존하고 있습니다만, 적당히 자신의 설정으로 읽어들여 k해 주세요).
echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.zshrc.mine 

이상의 설정을 한 후,
brew info pango
brew info gnuplot
gnuplot --version

그리고, 각각 pango가 1.48.0, gnuplot가 5.4가 된 상태로 다시 PDF를 만들면 잘 되었다. 내 환경에서는 brew info와 gnuplot --version이 다른 버전을 가리키고 있었다 (스스로 gnuplot를 빌드, 인스톨 한 것 같다) 때문에 약간 어려운 일이 일어났지만, 보통으로 사용하고 있는 사람은 괜찮다고 생각한다.

좋은 웹페이지 즐겨찾기