JUCEで日本語文字を表示するときのTips
JUCEって何?
JUCE (Jules' Utility Class Extensions)は、C++言語によるマルチメディア系アプリケーションの開発を支援するフレームワークです。クロスプラットフォーム設計のライブラリと、付属されているプロジェクトジェネレータ『Projucer』から各種IDE(VisualStudio, Xcode, Makefile)向けにプロジェクトファイルを出力することで、ワンソースからWindows, macOS, Linux, iOS, Android で動作するアプリケーションを作成することができます。
公式サイト
日本語の文字表示が豆腐になってしまう
JUCEフレームワークは主に英語圏で開発されている事もあり、英語以外の言語の文字表示があまり意識されていません。
以下の画像はjuce::AudioDeviceSelectorComponent
の表示例ですが、チャンネル名に日本語文字列が含まれている場合、日本語の文字表示が豆腐になってしまいます。
簡単な解決方法
JUCEフレームワークでは、アプリケーション中のGUIの表示に関する詳細な実装(ルック・アンド・フィール)がjuce::LookAndFeel
クラスで定義されています。
アプリケーションには必ずデフォルトのLookAndFeelオブジェクトが用意されているので、その設定を変更することでアプリケーション全体で使用するフォントを切り替えることができます。
以下では、OSがWindowsの場合ではWindowsに標準でインストールされていて日本語グリフが含まれているMeiryo UI
フォントを、macOSの場合ではArial Unicode MS
フォントを、Linuxの場合ではIPAGothic
フォントを使用するように実装しています。
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
~~~中略~~~
}
日本語文字が正しく表示された
ただし、デフォルトの設定を変更するため、アプリケーション全体にMeiryo UI
フォントが適用されてしまうという副作用があります。
コンポーネントごとに適用したいフォントを切り替えるには、面倒ですがコンポーネントごとにフォントを切り替えるように実装コードを記述しましょう。
参考
Author And Source
この問題について(JUCEで日本語文字を表示するときのTips), 我々は、より多くの情報をここで見つけました https://qiita.com/COx2/items/e2a8d1fb1ffa8a5af947著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .