Armadilloフォーラム

Armadillo上でのフォントサイズの差異

nic-segawa

2017年9月26日 16時35分

お世話になっております。

Qt Creatorにて作成したアプリケーションをArmadillo上で実行しています。
その際に、Qt Creator上でのフォントサイズとArmadillo上でのフォントサイズにズレが生じます。
Qt Creator上の方が大きく表示されます。使用しているフォントはDejaVuSans-Boldです。
Qt Creator上での画面設計が行いにくいのですが、同じ大きさで表示させることはできるでしょうか?

よろしくお願い致します。

コメント

at_hanada

2017年9月29日 14時42分

花田です。

> Qt Creatorにて作成したアプリケーションをArmadillo上で実行しています。
> その際に、Qt Creator上でのフォントサイズとArmadillo上でのフォントサイズにズレが生じます。
> Qt Creator上の方が大きく表示されます。使用しているフォントはDejaVuSans-Boldです。
> Qt Creator上での画面設計が行いにくいのですが、同じ大きさで表示させることはできるでしょうか?

Armadillo側にDejaVuフォントが根本的に入っていないのではないかと推察します。
名称で指定されたフォントが存在しない場合は(Armadillo内に)インストールされている別のフォントファイルで代替されてしまうので、この差異でズレが生じます。

以前Atmark Dist用にDejaVuを含めたフォントを選択インストールできるようにするパッチを作っていましたので、これを現在のdistで使えるように修正したものを添付します。

Distの存在するディレクトリで、以下のような手順で適用してください。
(パッチを当てる→不要になる2つのディレクトリを消す→再配置&追加フォントを展開する…という内容です)

atmark@atde5:~$ cd atmark-dist-20170726
atmark@atde5:~/atmark-dist-20170726$ cat ../atmark-dist-20170726_addfonts.diff|patch -p1
atmark@atde5:~/atmark-dist-20170726$ rm -rf vendors/AtmarkTechno/Armadillo-440/usr/share/fonts/
atmark@atde5:~/atmark-dist-20170726$ rm -rf vendors/AtmarkTechno/Armadillo-460/usr/share/fonts/
atmark@atde5:~/atmark-dist-20170726$ tar zxf ../fonts.tar.gz

これで、Atmark DistのUserlandコンフィギュレーションからFontを選択できるようになります。
元々の状態ではBitstream VeraフォントとX11フォントが入っていましたので、これを活かしたままDejaVuSans-Boldを追加する場合こんな感じです。

 atmark-dist v1.53.0 Configuration
 ------------------------------------------------------------------------------
  +--------------------------------- Fonts ---------------------------------+
  |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
  |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
  |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.     |
  |  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable     |
  | +---------------------------------------------------------------------+ |
  | |               [*] Fonts                                             | |
  | |               --- TryeType fonts                                    | |
  | |               [*] Bitstream Vera Fonts                              | |
  | |               [*]   Vera                                            | |
  | |               [*]   VeraMono                                        | |
  | |               [*]   VeraSe                                          | |
  | |               [*]   VeraBd                                          | |
  | |               [*]   VeraIt                                          | |
  | |               [*]   VeraMoBd                                        | |
  | |               [*]   VeraMoIt                                        | |
  | |               [*]   VeraMoBI                                        | |
  | |               [*]   VeraSeBd                                        | |
  | |               [*]   VeraBI                                          | |
  | |               [*] DejaVu Fonts                                      | |
  | |               [ ]   DejaVuSans                                      | |
  | |               [*]   DejaVuSans-Bold                                 | |
  | |               [ ]   DejaVuSansMono                                  | |
  | |               [ ]   DejaVuSansMono-Bold                             | |
  | |               [ ]   DejaVuSerif                                     | |
  | |               [ ]   DejaVuSerif-Bold                                | |
  | |               [ ]   DejaVuSans-Oblique                              | |
  | |               [ ]   DejaVuSans-BoldOblique                          | |
  | |               [ ]   DejaVuSans-ExtraLight                           | |
  | |               [ ]   DejaVuSansMono-Oblique                          | |
  | |               [ ]   DejaVuSansMono-BoldOblique                      | |
  | |               [ ]   DejaVuSansCondensed                             | |
  | |               [ ]   DejaVuSansCondensed-Bold                        | |
  | |               [ ]   DejaVuSansCondensed-Oblique                     | |
  | |               [ ]   DejaVuSansCondensed-BoldOblique                 | |
  | |               [ ]   DejaVuSerif-Italic                              | |
  | |               [ ]   DejaVuSerif-BoldItalic                          | |
  | |               [ ]   DejaVuSerifCondensed                            | |
  | |               [ ]   DejaVuSerifCondensed-Bold                       | |
  | |               [ ]   DejaVuSerifCondensed-Italic                     | |
  | |               [ ]   DejaVuSerifCondensed-BoldItalic                 | |
  | |               [ ] Takao Fonts                                       | |
  | |               [ ] Vine Linux Fonts                                  | |
  | |               --- X11 fonts                                         | |
  | |               [*] X11 Misc Fonts                                    | |
  | +---------------v(+)--------------------------------------------------+ |
  +-------------------------------------------------------------------------+
  |                    <Select>    < Exit >    < Help >                     |
  +-------------------------------------------------------------------------+

再ビルド後、romfs下にはこのような形でフォントがインストールされます。

romfs/usr/share/fonts/
romfs/usr/share/fonts/X11
romfs/usr/share/fonts/X11/misc
romfs/usr/share/fonts/X11/misc/fonts.alias
romfs/usr/share/fonts/X11/misc/fonts.dir
romfs/usr/share/fonts/X11/misc/cursor.pcf.gz
romfs/usr/share/fonts/X11/misc/6x13-ISO8859-1.pcf.gz
romfs/usr/share/fonts/truetype
romfs/usr/share/fonts/truetype/ttf-dejavu
romfs/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraSe.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraIt.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMoBd.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMoBI.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraSeBd.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMoIt.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraBI.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMono.ttf
romfs/usr/share/fonts/truetype/ttf-bitstream-vera/VeraBd.ttf

Armadilloのシステム内で「DejaVuSans-Bold.ttf」が見つけられるようになれば、ATDEとの表示差異はなくなるはず…なのですが。お試しください。

ファイル ファイルの説明
atmark-dist-20170726_addfonts.diff Atmark Dist 2017/07/26へのパッチ
fonts.tar.gz フォントファイル群

nic-segawa

2017年9月29日 16時46分

花田様

ご回答ありがとうございます。
ご提案頂いた方法を試す前に一点確認させて頂いてよろしいでしょうか?。
Armadilloが参照するフォントファイルとQt Creatorが参照するフォントファイルの場所が正しいか確認しておきたいです。Linux 2.6.26とATDE4を使用していますが、それぞれ以下の保存場所で正しいでしょうか?

Armadillo:
/romfs/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts/DejaVuSans-Bold.ttf

Qt Creator:
/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf

これが間違っているのであれば、思っているものと違うフォントを参照していることが原因かと思います。

よろしくお願い致します。

at_hanada

2017年9月29日 20時17分

花田です。

> Armadillo:
> /romfs/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts/DejaVuSans-Bold.ttf
>
> Qt Creator:
> /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf

/usr/share/fonts下がシステムフォントディレクトリ、/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts下がQt専用のフォントディレクトリとなっており、Qtからはどちらにあっても探してくれる…はずではあります。

システムフォントであればちゃんと認識しているかどうかfc-listコマンドで簡単に調べることもできるのですが、標準のAtmark Distにはfontconfigパッケージが入っておらず、このコマンドもなく。参考までに、私の手元で環境を作ったArmadilloでのfc-list結果の当該行を示します。

/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf: DejaVu Sans:style=Bold

フォントファミリが「DejaVu Sans」でboldが有効の場合のみ「DejaVuSans-Bold.ttf」が使用される状況になっています。

これを踏まえて、一旦そちらのArmadilloでのフォントファイル配置でもQtから認識できているという前提で…

Qt Creatorでのフォント指定はどこで行っていますか? コード内に記述することも可能ですが、フォームエディタでの指定でしょうか?
もしそうでしたら、当該リソースのソース(.ui)には下記のような記述がされているはずです。

    <property name="font">
     <font>
      <family>DejaVu Sans</family>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>

前述のフォントファミリ名とbold=trueが一致しています。そのようになっているでしょうか?
(たとえばboldがfalseになっていた場合「DejaVuSans.ttf」の方を探しに行き、ない場合は意図しない代替フォントになるという仕組みです)

この点が正確なようでしたら、フォントファイルが正しく認識できていないか、私の推測とは違う原因ということになります…
(あえてDejaVuSans.ttfなど他のファイルも同じディレクトリに入れてみて、それぞれ異なるフォント&スタイルを指定したいくつかボタンを作って差異が出るかどうかを判別してみるのが、原因追及の助けになるかもしれません)
推測の域を出ない形の調査になりますが、この辺りの確認をお願いします。

nic-segawa

2017年10月2日 8時42分

花田様

お世話になっております。
ご回答ありがとうございます。
ご提案頂いた内容を中心に原因調査を進めてみます。
ありがとうございます。

nic-segawa

2017年10月19日 16時28分

お世話になっております。

回答が遅れてしまいましたが、調査した結果を記載させて頂きます。
フォント自体は指定したフォントが選択されていますが、フォントサイズの指定方法で表示サイズに差が出るようです。
フォームエディタではptでのサイズ指定となります。ptでサイズ指定した場合はPCとArmadilloに接続している液晶で表示サイズに差が出ていました。
そのため、stylesheetで以下のようにpxでのフォントサイズ指定を行うようにしました。

font: bold 20px "DejaVu Sans";

結果、表示されるサイズは同じになりました。pxで指定する方がハード依存無く使用できるようです。
この方法で進めようと思います。アドバイス頂きありがとうございました。