通常はフォントを直接扱う必要はありません。これを行う必要がある場合にはこのセクションでその方法を説明します。
Emacs Lispではフォントはフォントオブジェクト(font objects)、フォントspec(font specs)、フォントエンティティー(font entities)という3つの異なるLispオブジェクトを使用して表現されます。
objectがフォントオブジェクト、フォントspec、フォントエンティティーならt
、それ以外ならnil
をリターンする。
オプション引数typeが非nil
なら、チェックするLispオブジェクトの正確なタイプを決定する。この場合にはtypeはfont-object
、font-spec
、font-entity
のいずれかであること。
フォントオブジェクトはEmacsがオープンしたフォントを表します。Lispでフォントオブジェクトは変更できませんが調べることはできます。
ウィンドウwindow内の位置positionにある文字を表示するために使用されているフォントオブジェクトをリターンする。windowがnil
の場合のデフォルトは選択されたウィンドウ。stringがnil
ならpositionはカレントバッファー内の位置を指定する。それ以外ならstringは文字列、positionはその文字列内での位置を指定すること。
フォントspecはフォントを探すために使用できる仕様セットを含むLispオブジェクトです。フォントspec内の仕様にたいして1つ以上のフォントがマッチすることができます。
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
そのフォントがサポートしなければならないスクリプト(シンボル)。
:lang
そのフォントがサポートするべき言語。値は名前が2文字のISO-639言語名であるようなシンボルであること。Xでは値は(もし空でなければ)フォントのXLFD名の“Additional Style”フィールドにたいしてマッチされる。MS-Windowsではそのspecにマッチするフォントにはその言語にたいして必要なコードページのサポートが要求される。現在のところこのプロパティでは‘ja’、‘ko’、‘zh’というCJK言語の小セットだけがサポートされる。
:otf
複雑なテキストレイアウトを必要とするスクリプトをサポートするGNU/Linux上の‘libotf’のようなライブラリーとともにEmacsがコンパイルされているような場合には、そのフォントはそれらのOpenType機能をサポートするOpenTypeフォントでなければならない。値は以下の形式のリストでなければならない
(script-tag langsys-tag gsub gpos)
ここでscript-tagはOpenTypeスクリプトタグシンボル、langsys-tagはOpenType言語システムタグシンボル(nil
ならデフォルト言語システムを使用)、gsub
はOpenType
GSUB機能タグシンボル(何も要求されなければnil
)、gpos
はOpenType
GPOS機能タグシンボルのリスト(何も要求されなければnil
)。gsub
やgpos
がリストなら、そのリスト内のnil
要素は、そのフォントが残りすべてのタグシンボルにマッチしてはならないことを意味する。gpos
は省略可。
フォントspec font-spec内のプロパティpropertyにvalueをセットする。
フォントエンティティーはオープンする必要がないフォントへの参照です。フォントオブジェクトとフォントspecの中間的な性質をもちフォントspecとは異なり、フォントオブジェクトと同じように単一かつ特定のフォントを参照します。フォントオブジェクトとは異なりフォントエンティティーの作成では、そのフォントのコンテンツはコンピューターへのメモリーにロードされません。Emacsはスケーラブルフォントを参照するために単一のフォントエンティティーから複数の異なるサイズのフォントオブジェクトをオープンするかもしれません。
この関数はフレームframe上のフォントspec
font-specにもっともマッチするフォントエンティティーをリターンする。frameがnil
の場合のデフォルトは選択されたフレーム。
この関数はフォントspec font-specにマッチするすべてのフォントエンティティーのリストをリターンする。
オプション引数frameが非nil
なら、そのフォントが表示されるフレームを指定する。オプション引数numが非nil
なら、それはリターンされるリストの最大長を指定する整数だること。オプション引数preferが非nil
なら、それはリターンされるリスト順を制御するために使用する別のフォントspecであること。リターンされるフォントspecはそのフォントspecにもっとも近い降順にソートされて格納される。
:font
属性の値としてフォントspec、フォントエンティティー、フォント名文字列を渡してset-face-attribute
を呼び出すと、Emacsは表示に利用可能なもっともマッチするフォントをオープンします。そしてそのフェイスにたいする:font
属性の実際の値として、対応するフォントオブジェクトを格納します。
以下の関数はフォントに関する情報を取得するために使用できます。これらの関数のfont引数にはフォントオブジェクト、フォントエンティティー、またはフォントspecを指定できます。
この関数はfontにたいするフォントプロパティpropertyの値をリターンする。
fontがフォントspecであり、そのフォントspecがpropertyを指定しなければリターン値はnil
。fontがフォントオブジェクトかフォントエンティティーなら、:scriptプロパティにたいする値はそのフォントがサポートするスクリプトのリストかもしれない。
この関数はfontに対応するフェイス属性のリストをリターンする。オプション引数frameはフォントが表示されるフレームを指定する。これがnil
なら選択されたフレームが使用される。リターン値は以下の形式
(:family family :height height :weight weight :slant slant :width width)
ここでfamily、height、weight、slant、widthの値はフェイス属性の値。fontにより指定されない場合には、いくつかのキー/属性ペアーはこのリストから省略されるかもしれない。
この関数はfontにマッチするXLFD((X Logical Font
Descriptor))を文字列としてリターンする。XLFDに関する情報はFonts in The GNU Emacs
Manualを参照のこと。その名前がXLFD(最大255文字を含むことが可能)にたいして長すぎれば、この関数はnil
をリターンする。
オプション引数fold-wildcardsが非nil
なら連続するワイルドカードは1つにまとめられる。
以下の2つの関数はフォントに関して重要な情報をリターンします。
この関数はframeで使用されるような文字列nameで指定されたフォントに関する情報をリターンする。frameが省略かnil
の場合のデフォルトは選択されたフレーム。
この関数は[opened-name full-name size height
baseline-offset relative-compose default-ascent
max-width ascent descent space-width
average-width filename
capability]
という形式のベクターによる値をリターンする。以下はこのベクターの各コンポーネントの意味:
フォントのオープンに使用された名前(文字列)。
フォントの完全名(文字列)。
フォントのピクセルサイズ。
フォント高さ(ピクセル単位)。
ASCIIベースラインからのピクセル単位のオフセット(上方が正)。
文字の組み合わせ(compose)の方式を制御する数値。
このフォントのアセント(ascent)とディセント(descent)。これら2つの数値の合計は上述のheightと等しくなること。
そのフォントのスペース文字の幅(ピクセル単位)。
そのフォントの文字の平均幅。これが0ならEmacsは表示のテキストレイアウト計算時にかわりにspace-widthの値を使用する。
フォントのファイル名(文字列)。フォントのバックエンドがフォントのファイル名を見つける手段を提供しなければnil
もあり得る。
最初の要素がフォントタイプを表すx
、opentype
、truetype
、type1
、pcf
、bdf
のいずれかのシンボルであるようなリスト。OpenTypeフォントでは、フォントによりサポートされる機能GSUBとGPOSの2つの要素が含まれる。これらの要素はそれぞれ((script
(langsys feature …) …)
…)
という形式のリストであり、ここでscriptはOpenTypeのscriptタグを表すシンボル、langsysはOpenTypeのlangsysタグを表すシンボル(またはデフォルトのlangsysを表すnil
)、そよびfeatureはそれぞれOpenTypeのfeatureタグを表す。
この関数はfont-objectに関する情報をリターンする(これは引数としてフォント名を文字列で受け取るfont-info
とは対照的)。
この関数は[name filename pixel-size max-width
ascent descent space-width average-width
capability]
という形式のベクターで値をリターンする。以下はこのベクターの各要素の意味:
フォント名(文字列)。
フォントのファイル名(文字列)。フォントのバックエンドがフォントのファイル名を見つける手段を提供しなければnil
もあり得る。
フォントをオープンするために使用されたフォントのピクセルサイズ。
フォントの最大のアドバンス幅。
このフォントのアセント(ascent)とディセント(descent)。これら2つの数値の合計はフォントの高さを与える。
そのフォントのスペース文字の幅(ピクセル単位)。
そのフォントの文字の平均幅。これが0ならEmacsは表示のテキストレイアウト計算時にかわりにspace-widthの値を使用する。
最初の要素がフォントタイプを表すx
、opentype
、truetype
、type1
、pcf
、bdf
のいずれかのシンボルであるようなリスト。OpenTypeフォントでは、フォントによりサポートされる機能GSUBとGPOSの2つの要素が含まれる。これらの要素はそれぞれ((script
(langsys feature …) …)
…)
という形式のリストであり、ここでscriptはOpenTypeのscriptタグを表すシンボル、langsysはOpenTypeのlangsysタグを表すシンボル(またはデフォルトのlangsysを表すnil
)、そよびfeatureはそれぞれOpenTypeのfeatureタグを表す。
以下の4つの関数はさまざまなフェイスにより使用されるフォントに関するサイズ情報をリターンして、Lispプログラム内でのさまざまなレイアウトの検討を可能にします。これらの関数は問い合わせられたフェイスがリマップされていたら、リマップされたフェイスに関する情報をリターンすることによりフェイスのシマップを考慮します。Face Remappingを参照してください。
この関数はカレントバッファーのデフォルトフェイスで使用されるフォントの平均幅をピクセル単位でリターンする。
この関数はカレントバッファーのデフォルトフェイスで使用されるフォントの高さをピクセル単位でリターンする。
この関数はwindow内のfaceで使用されるフォントの平均幅をピクセル単位でリターンする。windowには生きたウィンドウを指定しなければならない。nil
か省略ならwindowのデフォルトは選択されたウィンドウ、faceのデフォルトはwindow内のデフォルトフェイス。
この関数はwindow内のfaceで使用されるフォントの高さをピクセル単位でリターンする。windowには生きたウィンドウを指定しなければならない。nil
か省略ならwindowのデフォルトは選択されたウィンドウ、faceのデフォルトはwindow内のデフォルトフェイス。