JUCE에서 일본어 문자를 표시할 때의 Tips

JUCE는 무엇입니까?



JUCE (Jules 'Utility Class Extensions)는 C++ 언어로 멀티미디어 응용 프로그램을 개발하는 데 도움이되는 프레임 워크입니다. 크로스 플랫폼 설계의 라이브러리와, 부속되어 있는 프로젝트 제너레이터 「Projucer」로부터 각종 IDE(VisualStudio, Xcode, Makefile)용으로 프로젝트 파일을 출력하는 것으로, 원 소스로부터 Windows, macOS, Linux, iOS, Android로 동작 하는 응용 프로그램을 만들 수 있습니다.
공식 사이트

일본어 문자 표시가 두부가되어 버린다



JUCE 프레임워크는 주로 영어권에서 개발되고 있는 경우도 있어, 영어 이외의 언어의 문자 표시가 그다지 의식되어 있지 않습니다.
아래의 이미지는 juce::AudioDeviceSelectorComponent의 표시예입니다만, 채널명에 일본어 문자열이 포함되어 있는 경우, 일본어의 문자 표시가 두부가 되어 버립니다.



쉬운 해결책



JUCE 프레임워크에서는 juce::LookAndFeel클래스에 정의되어 있으며, 애플리케이션의 GUI 표시에 대한 자세한 구현(룩앤필)이 있습니다.
응용 프로그램은 항상 기본 LookAndFeel 개체를 제공하므로 해당 설정을 변경하여 응용 프로그램 전체에서 사용하는 글꼴을 전환할 수 있습니다.

아래에서는 OS가 Windows의 경우 Windows에 표준으로 설치되어 있으며 일본어 글리프가 포함되어 있습니다. Meiryo UI 사용하도록 구현하고 있습니다.
MainComponent::MainComponent()
{
#if JUCE_WINDOWS
  String typeFaceName = "Meiryo UI";
  Desktop::getInstance().getDefaultLookAndFeel().setDefaultSansSerifTypefaceName(typeFaceName);
#elif JUCE_MAC
  String typeFaceName = "Arial Unicode MS";
  Desktop::getInstance().getDefaultLookAndFeel().setDefaultSansSerifTypefaceName(typeFaceName);
#elif JUCE_LINUX
  String typeFaceName = "IPAGothic";
  Desktop::getInstance().getDefaultLookAndFeel().setDefaultSansSerifTypefaceName(typeFaceName);
#endif

     ~~~中略~~~
}

일본어 문자가 올바르게 표시됨





그러나 기본 설정을 변경하기 때문에 전체 응용 프로그램에 Arial Unicode MS 글꼴이 적용되는 부작용이 있습니다.
컴포넌트마다 적용하고 싶은 폰트를 바꾸려면 귀찮습니다만, 컴퍼넌트 마다 폰트를 바꾸도록(듯이) 구현 코드를 기술합시다.

참고

좋은 웹페이지 즐겨찾기