Previous: , Up: Faces   [Contents][Index]


37.12.12 低レベルのフォント表現

通常はフォントを直接扱う必要はありません。これを行う必要がある場合にはこのセクションでその方法を説明します。

Emacs Lispではフォントはフォントオブジェクト(font objects)フォントspec(font specs)フォントエンティティー(font entities)という3つの異なるLispオブジェクトを使用して表現されます。

Function: fontp object &optional type

objectがフォントオブジェクト、フォントspec、フォントエンティティーならt、それ以外ならnilをリターンする。

オプション引数typeが非nilなら、チェックするLispオブジェクトの正確なタイプを決定する。この場合にはtypefont-objectfont-specfont-entityのいずれかであること。

フォントオブジェクトはEmacsがオープンしたフォントを表します。Lispでフォントオブジェクトは変更できませんが調べることはできます。

Function: font-at position &optional window string

ウィンドウwindow内の位置positionにある文字を表示するために使用されているフォントオブジェクトをリターンする。windownilの場合のデフォルトは選択されたウィンドウ。stringnilならpositionはカレントバッファー内の位置を指定する。それ以外ならstringは文字列、positionはその文字列内での位置を指定すること。

フォントspecはフォントを探すために使用できる仕様セットを含むLispオブジェクトです。フォントspec内の仕様にたいして1つ以上のフォントがマッチすることができます。

Function: font-spec &rest arguments

arguments内の仕様を使用して新たなフォントspecをリターンする。これはproperty-valueのペアーであること。可能な仕様は以下のとおり:

:name

XLFD、Fontconfig、GTKいずれかのフォーマットによるフォント名(文字列)。Fonts in The GNU Emacs Manualを参照のこと。

:family
:foundry
:weight
:slant
:width

これらは同名のフェイス属性と同じ意味をもつ。Face Attributesを参照のこと。

:size

フォントサイズ。非負の整数はピクセル単位、浮動小数点数ならポイントサイズを指定する。

:adstyle

sans’のような、そのフォントにたいするタイポグラフィックスタイル(typographic style)の追加情報。値は文字列かシンボルであること。

:registry

iso8859-1’のようなフォントの文字セットレジストリーとエンコーディング。値は文字列かシンボルであること。

:script

そのフォントがサポートしなければならないスクリプト(シンボル)。

:otf

Emacsが‘libotf’サポートつきでコンパイルされている場合、そのフォントはそれらのOpenType機能をサポートする、OpenTypeフォントでなければならない。値は以下の形式のリストでなければならない

(script-tag langsys-tag gsub gpos)

ここでscript-tagはOpenTypeスクリプトタグシンボル、langsys-tagはOpenType言語システムタグシンボル(nilならデフォルト言語システムを使用)、gsubはOpenType GSUB機能タグシンボル(何も要求されなければnil)、gposはOpenType GPOS機能タグシンボルのリスト(何も要求されなければnil)。gsubgposがリストなら、そのリスト内のnil要素は、そのフォントが残りすべてのタグシンボルにマッチしてはならないことを意味する。gposは省略可。

Function: font-put font-spec property value

フォントspec font-spec内のプロパティpropertyvalueをセットする。

フォントエンティティーはオープンする必要がないフォントへの参照です。フォントオブジェクトとフォントspecの中間的な性質をもちフォントspecとは異なり、フォントオブジェクトと同じように単一かつ特定のフォントを参照します。フォントオブジェクトとは異なりフォントエンティティーの作成では、そのフォントのコンテンツはコンピューターへのメモリーにロードされません。Emacsはスケーラブルフォントを参照するために単一のフォントエンティティーから複数の異なるサイズのフォントオブジェクトをオープンするかもしれません。

Function: find-font font-spec &optional frame

この関数はフレームframe上のフォントspec font-specにもっともマッチするフォントエンティティーをリターンする。framenilの場合のデフォルトは選択されたフレーム。

Function: list-fonts font-spec &optional frame num prefer

この関数はフォントspec font-specにマッチするすべてのフォントエンティティーのリストをリターンする。

オプション引数frameが非nilなら、そのフォントが表示されるフレームを指定する。オプション引数numが非nilなら、それはリターンされるリストの最大長を指定する整数だること。オプション引数preferが非nilなら、それはリターンされるリスト順を制御するために使用する、別のフォントspecであること。リターンされるフォントspecはそのフォントspecに“もっとも近い”降順にソートされて格納される。

:font属性の値としてフォントspec、フォントエンティティー、フォント名文字列を渡してset-face-attributeを呼び出すと、Emacsは表示に利用できるもっとも“マッチする”フォントをオープンします。そして。そのフェイスにたいする:font属性の実際の値として、対応するフォントオブジェクトを格納します。

以下の関数はフォントに関する情報を取得するために使用できます。これらの関数のfont引数にはフォントオブジェクト、フォントエンティティー、またはフォントspecを指定できます。

Function: font-get font property

この関数はfontにたいするフォントプロパティpropertyの値をリターンする。

fontがフォントspecであり、そのフォントspecがpropertyを指定しなければリターン値はnilfontがフォントオブジェクトかフォントエンティティーなら、:scriptプロパティにたいする値はそのフォントがサポートするスクリプトのリストかもしれない。

Function: font-face-attributes font &optional frame

この関数はfontに対応するフェイス属性のリストをリターンする。オプション引数frameはフォントが表示されるフレームを指定する。これがnilなら選択されたフレームが使用される。リターン値は以下の形式

(:family family :height height :weight weight
   :slant slant :width width)

ここでfamilyheightweightslantwidthの値はフェイス属性の値。fontにより指定されない場合には、いくつかのキー/属性ペアーはこのリストから省略されるかもしれない。

Function: font-xlfd-name font &optional fold-wildcards

この関数はfontにマッチするXLFD((X Logical Font Descriptor))を文字列としてリターンする。XLFDに関する情報はFonts in The GNU Emacs Manualを参照のこと。その名前がXLFD(最大255文字を含むことが可能)にたいして長すぎれば、この関数はnilをリターンする。

オプション引数fold-wildcardsが非nilなら連続するワイルドカードは1つにまとめられる。