2006-03-21 [長年日記]

[Q3] フォントの指定

プレビューやメッセージビューのフォントをもう少し細かく制御できるようにしてみました。例えば、英語のメールと日本語のメールのフォントを変えるとか、特定のフォルダだけフォントを変えるとか、色々用途は考えられます。今のところUIはない(あまり付ける気もない)ので、手動で設定ファイルを書く必要があります。

まず、profiles以下にfonts.xmlというファイルを用意します*1。形式は以下のような感じになります。

<fonts>
  <group name="main">
    <!-- charsetがiso-8859-xやus-asciiだったら英字フォントに -->
    <fontSet match="@Progn(@Set('charset', @BodyCharset()),
                           @Or(@BeginWith($charset, 'iso-8859-'),
                               @Equal($charset, 'us-ascii')))">
      <font face="Lucida Sans Unicode" size="12"/>
    </fontSet>
    <!-- メールニュースは等幅フォントで -->
    <fontSet match="@Equal(@Folder(), 'news')">
      <font face="MS ゴシック" size="12"/>
    </fontSet>
    <!-- デフォルト -->
    <fontSet>
      <font face="MS Pゴシック" size="12"/>
    </fontSet>
  </group>
</fonts>

そして、qmail.xmlで以下のように指定します。

<section name="PreviewWindow">
  <!-- そのほかのエントリ… -->
  <key name="FontGroup">main</key>
</section>

メッセージビューならばセクション名はMessageWindowになります。グループは複数定義することができますので、プレビューとメッセージビューで別のグループを指定することもできます。FontGroupを指定するとUIから指定したフォントは無視されます。

Relax NG Compact Syntaxによるスキーマを以下に。

start = element fonts {
  element group {
    ## グループ名
    attribute name {
      xsd:string
    },
    element fontSet {
      ## フォントが適用される条件をマクロで指定
      ## 指定しない場合には全ての条件にマッチ
      attribute match {
        xsd:string
      }?,
      element font {
        ## フォント名
        attribute face {
          xsd:string
        },
        ## フォントのサイズをポイント単位で指定
        ## 指定しない場合には9ポイント
        attribute size {
          xsd:decimal
        }?,
        ## フォントのスタイルをbold, italic, underline, strikeoutを空白区切りで指定
        ## 指定しない場合には通常のスタイル
        attribute style {
          xsd:string
        }?,
        ## フォントの文字コード
        ## 指定しない場合にはフォントのデフォルト
        attribute charset {
          xsd:int
        }?
      }
    }+
  }+
}

*1  UTF-8で保存するのを忘れないようにしましょう

本日のツッコミ(全4件) [ツッコミを入れる]
# pyu (2006-03-25 03:31)

行間も変更できるようになりませんか?

# snak (2006-03-25 09:54)

上のfontSetごとに異なる行間を指定したいということですか?

# pyu (2006-03-26 07:08)

いいえ、フォントセットごとではないです。<br>Qmail3の行間がもう少し広ければ読みやすいのになと思っております。

# snak (2006-03-27 02:31)

qmail.xmlをLineSpacingで検索するといくつかヒットすると思いますがそこで指定できます(昨日までのバージョンにはtypoがあって、LineSpecingになってしまっていますが、今日のNightly Buildで直してあります)。


トップ «前の日記(2006-03-20) 最新 次の日記(2006-03-22)»