Linux (old) Newbies

古いWindows環境からLinux環境へと移り住んだ日々の出来事

Qtアプリのフォントを指定してみる

唐突にファイルマネージャなどでの文字の表示が変わってしまって調べてみたところ突然に初期状態に戻ることがあるとかないとか・・・。はっきりした原因は分かりませんでしたがグラボのドライバーが変わったりとか日々アップデートされることもあるからそういうこともあるのかなぁと。

フォントマネージャー

とりあえず見た目はフォントマネージーゃーから再度設定することで好みの感じに戻すことが出来ました。フォントマネージャーはデフォルトではインストールされていませんがほとんどの人がインストールしていると思います。

$ sudo apt install font-manager

 

XFce4のウィンドウマネージャーと外観の設定窓

こんなところにもフォントの設定が・・・


私の利用環境だと Ubuntu 24.04 + XFce4 (xUbuntu ではないです) なので、ほとんどの見た目のフォントはここまでの設定変更で変わります。 けれど Qt のフレームワークを使ったアプリのフォント設定はどうやるのかなと調べてみたら、別途に Qt6設定ツール (Qt6ct) で設定できるとのこと。

Qt6設定ツール (Qt6ct)

まずは Qt6ct のインストール

$ sudo apt install qt6ct

そのままでも起動できますが、事前に環境変数の設定が必要です。

$ export QT_QPA_PLATFORMTHEME=qt6ct
$ qt6ct

ずっとコンソールからコマンド起動で利用するなら、このまま毎回に起動前に環境変数をセットでもいいですが、常にとなると面倒だからとBASHのプロファイルに環境変数セットの一文を仕込もうかと考えましたが、それだとコンソール起動では大丈夫ですが、アプリのランチャーとして登録済みのアイコンからの起動では異なる環境となってしまうので、別途に固定で環境変数を割り当てることにしました。 (ランチャーの指定でターミナル起動にするとか、コマンドライン定義を細工するとか、起動用のスクリプトを別途とか 代替策はいろいろあります)

格納場所は /etc/environment.d/qt6.conf で
中身は QT_QPA_PLATFORMTHEME=qt6ct との一行があるだけです。
(おそらく conf のファイル名からして qt6 のアプリ全体が変わってしまうかも・・・)

とにかく、これで qt6ct を起動する際にランチャーからの起動でもコマンドライン起動でも環境変数を事前にセットする必要がなくなりました。

qt6設定ツール (qt6ct) では、フォントだけでなくアイコンセットとかクリックの間隔などUI周りの調整が出来るようです。・・・フォントの箇所以外は触ってません。

Qt6設定ツール (Qt6ct) での "fonts.conf を作成" 機能は触ると危険

qt6ct のフォントのタブに 【fonts.conf を作成】 というボタンがあって、なんとなく押してみたくなりますが、このボタンを押すと下図の設定ダイアログが出現して システム全体のフォント設定を定義する .conf を出力します。このファイルが作成されると、せっかく細かくフォントマネージャーで指定しても、こちらでの定義が使われてしまうようで厄介です。これに気づかず qt6ct で .conf を出力した後で何度かフォントマネージャーを起動して設定を変えても反映されないという症状にハマリました。😅😅😅

まぁ逆にフォントマネージャーは使わずにフォント設定は Qt6ct のオマケ機能を使うとかなら、これでもいいんでしょうね。 たしか Linux のデスクトップ環境自体が Qt のフレームワークで作成されているのもあるから、各々の利用環境をよく知ることがトラブル解決の近道。

 

結局、最終的に落ち着いた設定は個別のアンチエイリアスOFFでした

【 2026-03-03追記 】 Qt6環境のフォントやアイコンなどが再定義できるようになっても、システム全体の表示のレンダリング設定により文字にアンチエイリアスがかかって太く見えてしまうので、(それが好みの人も居るでしょうけれど、私は細い文字のほうが好き) アンチエイリアスをOFFにしてみるといい感じでした。 ところがシステム全体のレンダリングのアンチエイリアスがOFFだとWEBブラウザーでの文字表示などにも影響が出るので、どうしようかと色々と探ってみて得た結果は 「特定のフォントの特定の文字サイズだけアンチエイリアスをOFFにする」 という設定です。
Archlinux の Wikiページでそのような内容を見つけました。

wiki.archlinux.jpこれに追記するかたちで、Qt環境での UI に指定しているフォントを追加して、特定の (20p以下) だとアンチエイリアス = OFF とすることで、システム全体のアンチエイリアスは有効状態のまま特定のフォント、特定のサイズだけアンチエイリアスが OFF になり好みの表示となりました。 もっともそれが活かせるのはビットマップフォントを内蔵しているフォントのみに限られますが、昔のカッチリした細いフォントが好みの人だといい具合になると思います。

 

~/.config/fontconfig/fonts.conf で設定するのは古い?

【 2026-03-04追記 】 先の Archlinux の Wikiページ での内容をそのままだと、設定ファイルが ~/.config/fontconfig/fonts.conf となりますが、どうもそこではなくて、~/.config/fontconfig/conf.d/ 配下に各種設定を先頭に数字を付けたファイル名で設置する というのが新し目な設定方法だそうで、ファイル名先頭に付けた数字が大きいほど優先順位が高くなるとの仕組みらしい。 どおりでフォントマネージャーから設定したときは、ここに何やら書き込まれているのが用途が分かって納得です。
なので設定ファイルを ~/.config/fontconfig/conf.d/99-my-settings.conf に変更しました。

 

暫く設定を変えて使ってはみたけれど・・・

【 2026-03-06追記 】 先の Archlinux の Wikiページ での内容をそのままだと、WEBブラウザーで表示ページに欧文のフォント指定がされている場合では部分的にビットマップに置き換わってしまい妙な表示になるので本当に設定変更が必要なフォントだけに絞らないとダメな感じで、どの場合に必要になるかが今ひとつ特定できていないこともあって、とりあえず設定ファイルの ~/.config/fontconfig/conf.d/99-my-settings.conf は削除して今後にどのアプリでどのように影響があるかで対処ってことにしました。

コロコロと環境設定が変わってしまったけれど、Linux (ubuntu) でのフォントに関して得た知識も多かったです。特には X11 環境でのデフォルトの画面解像度が 96dpi であることと、Wayland での互換環境ではフォント関連の .conf は、読み込む順番で反映されるか不確定であることなど、のほほんと~そのまま使っていると気が付かないことが沢山あるけれど、細かいところまで弄れるのがLinuxっていいなーって再認識しました。