@wikiでユーザ好みのフォントを表示する


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

はじめに

普通にページデザインを行って表示する場合、表示できるフォントは各閲覧ユーザの端末にインストールされているフォントに依存することになる。

当然ながらインストールされていないフォントファミリを指定しても、よくて見た目の近い書体が選ばれて表示される。 悪ければ幅やバリ(セリフ)の有無など見た目の異なるフォントが選ばれてデザインが崩れることになる。

もちろん@wikiも同様の事情があるので、ワープロモードなどで選択できるフォントは、具体的な書体名ではなく、特徴のグループ名となっていることにお気づきだろうか。

このページでは、そんな事情を打開すべく、ページ記述者の意図通りのフォント表示を行う方法を紹介する。
…といってもやってみたことのメモなので、多少の手間や誤解は目をつむることにする。

仕組み

いきなりのネタバラしになるが、方法はCSSとWeb Open Font Format:WOFF を採用して実現する。
もちろん副作用なしの万能薬ということはなく、メリット、デメリットが存在する。

メリット

  • ユーザがインストールしているフォントによらず、意図通りに表示できる
  • テキストはもとのままなので、もとのテキストで検索できる
    • フォントによっては特殊なキャラクターマップになっていることがある(半角カタカナで"チ"に"あ"の文字が入っているなど)
  • Google FontsTypeSquareなど、クラウドフォントサービスなど利用すれば、無料で多数のフォントが利用できる

デメリット

  • WOFFによる表示に対応しているかはブラウザ次第
  • TTFやOTFなどからWOFFにフォントを変換しなければならない
    • もちろん変換済みのフォントが配布されている、入手済みなのであればとくに変換作業は不要

手順

おおまかな流れは以下のとおり。

  1. フォント形式の変換
  2. フォントのアップロード
  3. スタイルシートの設定
  4. 記事中でのスタイル設定

フォント形式の変換

まず、WOFF形式のフォントが参照できるようにする必要がある。
すでにGoogle Fontsなどの利用を考えているのであればこのステップはスキップ可能。
(筆者はこの方法はまだ試していないのであしからず。。。)

TTFやOTFなど、ローカルにインストールするタイプのフォントをWOFFに変換する。 いくつかのほうほうがある。

WOFFコンバータ

・WOFFコンバータ紹介ページ@武蔵システム

   http://opentype.jp/woffconv.htm

・Vectorによるレビューページ

   http://www.forest.impress.co.jp/library/software/woffconvert/

FontForge

・FontForge

   http://fontforge.org/ja/

・unofficial FontForge(cygwin)

   http://www.geocities.jp/meir000/fontforge/

アップロード

Webフォントに限らず、外部参照とするファイルは同じドメインに置いたほうが安全といわれる。

それもあって、@wikiで使用できるようにするため、ページへのファイル添付を行う。

このステップもまた、Google Fontsなどの外部サービスを使う場合はスキップ可能。

@wikiでは、「wikiにファイルをアップロード」を選ぶことで、特殊なディレクトリにアップロードされるらしい。
共通に使うようなファイルを置くのに都合がよい。

デフォルトでは/pubというフォルダに置かれるようだが、今回はあとのことも考えて、その下に「font」というディレクトリを作ってそこにアップロードした。

スタイルシートの設定

ウィキにファイルをアップロードしたら、今度はスタイルシートで参照を定義する。

@font-face {
    font-family: (参照時のフォント名);
    src: url( アップロードしたWOFFファイルへのフルパス );
}

つづいて、記事の記述中に適用するためのclassを定義。

.myfont{
    font-family:(参照時のフォント名);
}

縦書きフォントの場合、このclass定義のところで縦書き指示を行えばよい。

.myfont{
    font-family:(参照時のフォント名);
    writing-mode: tb-rl;
    -webkit-writing-mode:vertical-rl;
}

記事中でのスタイル設定

ここまで準備すれば、あとは本文中で使用するのみである。

今回classで指定できるようにしたので、編集モードは@wikiモードがオススメである。

というか筆者はこのモードでしか試していない。。。

@wikiモードの書式で、部分的な範囲を対象にclassを指定するためのプラグインを用いて、書式設定を行っていく。

面倒でも1行ずつ指定するらしい。面倒なら後述のブロック指定をつかう。

&spanclass(myfont){

縦書きのときはブロック要素にしたほうが安全。

#divclass(myfont){ここのテキストに対して反映される}

適用例

こんな感じで表示できる。

  • 幻字 kardinal
  • シャーリタム xaaritam

おわりに

このページに記載したやり方は、スタイルシートの改変を含むので、安易に行うとデザインを崩してしまう可能性があるので注意されたい。

あとはGoogle Fontsなど外部サービスも使えるか、そのうち試してみよう。

未来の自分含み、誰かの役にたちますように。

ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。