通常はフォントを直接扱う必要はありません。これを行う必要がある場合にはこのセクションでその方法を説明します。
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のペアーであること。可能な仕様は以下のとおり:
:nameXLFD、Fontconfig、GTK+いずれかのフォーマットによるフォント名(文字列)。Fonts in The GNU Emacs Manualを参照のこと。
:family:foundry:weight:slant:widthこれらは同じ名前のフェイス属性と同じ意味をもつ。フェイスの属性を参照のこと。:familyと:foundryは文字列で、それ以外はシンボル。例の値のように:slantはitalic、:weightはbold、:widthはnormalかもしれない。
:sizeフォントサイズ。非負の整数はピクセル単位、浮動小数点数ならポイントサイズを指定する。
:adstyle‘sans’のような、そのフォントにたいするタイポグラフィックスタイル(typographic style)の追加情報。値は文字列かシンボルであること。
:registry ¶‘iso8859-1’のようなフォントの文字セットレジストリーとエンコーディング。値は文字列かシンボルであること。
:dpiフォントがデザインされたインチあたりのドット数による解像度。値は非負の数値でなければならない。
:spacingフォントのスペーシング(proportional, dual, mono, or
charcell)。値は整数(proportionalは0、dualは90、monoは100、charcellは110)、あるいは1文字のシンボル(P、D、M、C)であること。
:avgwidth1/10ピクセル単位でのフォントの平均幅。値は非負の数値であること。
: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は省略可。OpenTypeのスクリプト、言語、機能タグのリストについてはthe list of registered OTF tagsを参照のこと。
:type ¶文字の描画に使用されるフォントバックエンド(font
backend)を指定するシンボル。指定できる値はプラットフォームとビルド時にEmacsがどのようにconfigureされたかに依存する。典型的な値としてはXではftcrhbとxfthb、MS-Windowsではharfbuzz、GNUstepではnsなどが含まれる。font-specのように未指定のままだとnilもあり得る。
フォントspec font-spec内のプロパティpropertyにvalueをセットする。propertyには上述のいずれかを指定できる。
フォントエンティティーはオープンする必要がないフォントへの参照です。フォントオブジェクトとフォント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の値をリターンする。propertyにはfont-specがサポートするもののいずれかを指定できる。
fontがフォントspecであり、そのフォントspecがpropertyを指定しなければリターン値はnil。fontがフォントオブジェクトかフォントエンティティーなら、:scriptプロパティにたいする値はそのフォントがサポートするスクリプトのリスト、:otfプロパティにたいする値は(gsub . gpos)のような形式のコンス。ここでgsubとgposはそのフォントがサポートするOpenType機能を表す以下のような形式のリスト
((script-tag (langsys-tag feature...) ...) ...)
where script-tag, langsys-tag, and feature ここでscript-tag、langsys-tag、featureはOpenTypeのレイアウトtagを表すシンボル。
fontがフォントオブジェクトの場合には、fontのフォントバックエンドが非OpenTypeフォントにたいする結合文字(combining
characters)をサポートしていればスペシャルプロパティ:combining-capabilityは非nil。
この関数は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を参照のこと。
オプション引数fold-wildcardsが非nilなら連続するワイルドカードは1つにまとめられる。
オプション引数long-xlfdsが省略かnilなら、XLFDの長さが255文字を超えると関数はnilをリターンする。これはXLFDをその長さに制限する義務を課すXプロトコルとの互換性のため。long-xlfdsが非nilならこの制限は解除されて、関数はXLFDの任意の長さをリターンできる。
以下の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と等しくなること。
そのフォントのスペース文字の幅(ピクセル単位)。
そのフォントの文字の平均幅。Emacsは表示するテキストレイアウトの計算時にこれを用いる。average-width の値が0なら、かわりに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プログラム内でのさまざまなレイアウトの検討を可能にします。これらの関数は問い合わせられたフェイスがリマップされていたら、リマップされたフェイスに関する情報をリターンすることによりフェイスのシマップを考慮します。フェイスのリマップを参照してください。
カレントバッファーの選択されたフレームにたいして定義されたデフォルトフェイスで使用されるフォントの平均幅をピクセル単位でリターンする。
この関数は選択されたフレームにたいして定義されたカレントバッファーのデフォルトフェイスで使用されるフォントの高さをピクセル単位でリターンする。
この関数はwindow内のfaceで使用されるフォントの平均幅をピクセル単位でリターンする。windowには生きたウィンドウを指定しなければならない。nilか省略ならwindowのデフォルトは選択されたウィンドウ、faceのデフォルトはwindow内のデフォルトフェイス。
この関数はwindow内のfaceで使用されるフォントの高さをピクセル単位でリターンする。windowには生きたウィンドウを指定しなければならない。nilか省略ならwindowのデフォルトは選択されたウィンドウ、faceのデフォルトはwindow内のデフォルトフェイス。