ログイン
編集不可のページディスカッション情報添付ファイル
"clear/note/2012-12"の差分

MMA
2と3のリビジョン間の差分
2012-12-19 02:15:49時点のリビジョン2
サイズ: 2737
編集者: clear
コメント:
2012-12-23 00:39:35時点のリビジョン3
サイズ: 2803
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 20: 行 20:
APIレベルで見るとさらに選択肢が分かれる。コアフォントの描画にはXlibやXCBのような低レイヤーのライブラリが使える。XftはXlibからは使えるが、調べた限りXCBからは使えなさそう(ライブラリ関数が見当たらない)。他に、GTK+の一部である[[http://www.pango.org/|pango]]を使うこともできる。pangoはレンダリングにXftと[[http://www.cairographics.org/|cairo]](ベクタグラフィクスライブラリ)を使うことができるらしい。XlibならXftを直接叩けるが、XCBを使う場合はpango経由でcairoを使うのが推奨されているらしい(cairo-xcbというのがあってPixmapを取り出せる。例えば[[http://i3wm.org/|i3]]はこれを用いていたはず)。ツールキットを使う場合も、GTK+なら言うまでもなくpangoを使うことになる(そして最終的にXftなりcairoを使う)だろうし、Qtの場合も内部で同様の仕組みが実装されているはず。 APIレベルで見るとさらに選択肢が分かれる。コアフォントの描画にはXlibやXCBのような低レイヤーのライブラリが使える。XftはXlibからは使えるが、調べた限りXCBからは使えなさそう(ライブラリ関数が見当たらない)。他に、GTK+の一部である[[http://www.pango.org/|pango]]を使うこともできる。pangoはレンダリングにXftと[[http://www.cairographics.org/|cairo]](ベクタグラフィクスライブラリ)を使うことができるらしい。XlibならXftを直接叩けるが、XCBを使う場合はcairoを使うのが推奨されているらしい(cairo-xcbというのがあってPixmapを取り出せる。例えば[[http://i3wm.org/|i3]]はこれを用いていたはず)。ツールキットを使う場合も、GTK+なら言うまでもなくpangoを使うことになる(そして最終的にXftなりcairoを使う)だろうし、Qtの場合も内部で同様の仕組みが実装されているはず。

12/23追記: cairo単体でも文字列描画はできるらしい。
行 27: 行 29:
cairo

2012年12月

12/19

Xにおけるフォントについて、ちゃんと理解していなかったのでまとめておく。

Xでフォントを扱う方法は大きく2つに分けられる。

  • コアフォント(core font)
    • 最初からあった方
    • サーバ上で文字描画が行われる。故にフォントはXサーバの動作しているマシンにある必要がある

    • アンチエイリアスはできない
    • フォントはXLFD(xlsfontsで出てくる、初見では意味不明な文字列)で指定する

    • Xサーバと別に「フォントサーバ」を立てることもできる
  • Xft
    • 後から出てきた方
    • クライアントが文字を描画する。故にフォントはクライアントの動作しているマシンにある必要がある

      • 描画結果をラスタライズしたものをPixmapとしてサーバに描画してもらう形
      • アンチエイリアスが可能
    • フォントそのものの扱いはFreeTypeとfontconfigによる

      • フォント一覧はfc-list

APIレベルで見るとさらに選択肢が分かれる。コアフォントの描画にはXlibやXCBのような低レイヤーのライブラリが使える。XftはXlibからは使えるが、調べた限りXCBからは使えなさそう(ライブラリ関数が見当たらない)。他に、GTK+の一部であるpangoを使うこともできる。pangoはレンダリングにXftとcairo(ベクタグラフィクスライブラリ)を使うことができるらしい。XlibならXftを直接叩けるが、XCBを使う場合はcairoを使うのが推奨されているらしい(cairo-xcbというのがあってPixmapを取り出せる。例えばi3はこれを用いていたはず)。ツールキットを使う場合も、GTK+なら言うまでもなくpangoを使うことになる(そして最終的にXftなりcairoを使う)だろうし、Qtの場合も内部で同様の仕組みが実装されているはず。

12/23追記: cairo単体でも文字列描画はできるらしい。

方式とライブラリの対応
Xlib -- core font, Xft
XCB -- core font
pango -- Xft
      `- cairo
cairo

他にもOpenGLとかでは独自の方法があるだろう、多分。ライブラリそのものを指すのではない「Xft」は「Xサーバでなくクライアント側で描画を行い、フォントの管理をfontconfigで行う方式全般」と解釈した方が良さそうな気もする(最初はXftしか無かったので、同様の方式全般を指す言葉として「Xft」と書いている文章が多い)。

clear/note/2012-12 (最終更新日時 2012-12-27 00:04:25 更新者 clear)