Previous: , Up: フェイス   [Contents][Index]


40.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

これらは同じ名前のフェイス属性と同じ意味をもつ。フェイスの属性を参照のこと。:family:foundryは文字列で、それ以外はシンボル。例の値のように:slantitalic:weightbold:widthnormalかもしれない。

:size

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

:adstyle

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

:registry

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

:dpi

フォントがデザインされたインチあたりのドット数による解像度。値は非負の数値でなければならない。

:spacing

フォントのスペーシング(proportional, dual, mono, or charcell)。値は整数(proportionalは0、dualは90、monoは100、charcellは110)、あるいは1文字のシンボル(PDMC)であること。

:avgwidth

1/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)。gsubgposがリストなら、そのリスト内のnil要素は、そのフォントが残りすべてのタグシンボルにマッチしてはならないことを意味する。gposは省略可。OpenTypeのスクリプト、言語、機能タグのリストについてはthe list of registered OTF tagsを参照のこと。

:type

文字の描画に使用されるフォントバックエンド(font backend)を指定するシンボル。指定できる値はプラットフォームとビルド時にEmacsがどのようにconfigureされたかに依存する。典型的な値としてはXではftcrhbxfthb、MS-Windowsではharfbuzz、GNUstepではnsなどが含まれる。font-specのように未指定のままだとnilもあり得る。

Function: font-put font-spec property value

フォントspec font-spec内のプロパティpropertyvalueをセットする。propertyには上述のいずれかを指定できる。

フォントエンティティーはオープンする必要がないフォントへの参照です。フォントオブジェクトとフォント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の値をリターンする。propertyにはfont-specがサポートするもののいずれかを指定できる。

fontがフォントspecであり、そのフォントspecがpropertyを指定しなければリターン値はnilfontがフォントオブジェクトかフォントエンティティーなら、:scriptプロパティにたいする値はそのフォントがサポートするスクリプトのリスト、:otfプロパティにたいする値は(gsub . gpos)のような形式のコンス。ここでgsubgposはそのフォントがサポートするOpenType機能を表す以下のような形式のリスト

((script-tag (langsys-tag feature…) …) …)

where script-tag, langsys-tag, and feature ここでscript-taglangsys-tagfeatureはOpenTypeのレイアウトtagを表すシンボル。

fontがフォントオブジェクトの場合には、fontのフォントバックエンドが非OpenTypeフォントにたいする結合文字(combining characters)をサポートしていればスペシャルプロパティ:combining-capabilityは非nil

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つにまとめられる。

以下の2つの関数はフォントに関して重要な情報をリターンします。

Function: font-info name &optional frame

この関数は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]という形式のベクターによる値をリターンする。以下はこのベクターの各コンポーネントの意味:

opened-name

フォントのオープンに使用された名前(文字列)。

full-name

フォントの完全名(文字列)。

size

フォントのピクセルサイズ。

height

フォント高さ(ピクセル単位)。

baseline-offset

ASCIIベースラインからのピクセル単位のオフセット(上方が正)。

relative-compose
default-ascent

文字の組み合わせ(compose)の方式を制御する数値。

max-width

フォントの最大のアドバンス幅。

ascent
descent

このフォントのアセント(ascent)とディセント(descent)。これら2つの数値の合計は上述のheightと等しくなること。

space-width

そのフォントのスペース文字の幅(ピクセル単位)。

average-width

そのフォントの文字の平均幅。これが0ならEmacsは表示のテキストレイアウト計算時にかわりにspace-widthの値を使用する。

filename

フォントのファイル名(文字列)。フォントのバックエンドがフォントのファイル名を見つける手段を提供しなければnilもあり得る。

capability

最初の要素がフォントタイプを表すxopentypetruetypetype1pcfbdfのいずれかのシンボルであるようなリスト。OpenTypeフォントでは、フォントによりサポートされる機能GSUBGPOSの2つの要素が含まれる。これらの要素はそれぞれ((script (langsys feature …) …) …)という形式のリストであり、ここでscriptはOpenTypeのscriptタグを表すシンボル、langsysはOpenTypeのlangsysタグを表すシンボル(またはデフォルトのlangsysを表すnil)、そよびfeatureはそれぞれOpenTypeのfeatureタグを表す。

Function: query-font font-object

この関数はfont-objectに関する情報をリターンする(これは引数としてフォント名を文字列で受け取るfont-infoとは対照的)。

この関数は[name filename pixel-size max-width ascent descent space-width average-width capability]という形式のベクターで値をリターンする。以下はこのベクターの各要素の意味:

name

フォント名(文字列)。

filename

フォントのファイル名(文字列)。フォントのバックエンドがフォントのファイル名を見つける手段を提供しなければnilもあり得る。

pixel-size

フォントをオープンするために使用されたフォントのピクセルサイズ。

max-width

フォントの最大のアドバンス幅。

ascent
descent

このフォントのアセント(ascent)とディセント(descent)。これら2つの数値の合計はフォントの高さを与える。

space-width

そのフォントのスペース文字の幅(ピクセル単位)。

average-width

そのフォントの文字の平均幅。これが0ならEmacsは表示のテキストレイアウト計算時にかわりにspace-widthの値を使用する。

capability

最初の要素がフォントタイプを表すxopentypetruetypetype1pcfbdfのいずれかのシンボルであるようなリスト。OpenTypeフォントでは、フォントによりサポートされる機能GSUBGPOSの2つの要素が含まれる。これらの要素はそれぞれ((script (langsys feature …) …) …)という形式のリストであり、ここでscriptはOpenTypeのscriptタグを表すシンボル、langsysはOpenTypeのlangsysタグを表すシンボル(またはデフォルトのlangsysを表すnil)、そよびfeatureはそれぞれOpenTypeのfeatureタグを表す。

以下の4つの関数はさまざまなフェイスにより使用されるフォントに関するサイズ情報をリターンして、Lispプログラム内でのさまざまなレイアウトの検討を可能にします。これらの関数は問い合わせられたフェイスがリマップされていたら、リマップされたフェイスに関する情報をリターンすることによりフェイスのシマップを考慮します。フェイスのリマップを参照してください。

Function: default-font-width

カレントバッファーの選択されたフレームにたいして定義されたデフォルトフェイスで使用されるフォントの平均幅をピクセル単位でリターンする。

Function: default-font-height

この関数は選択されたフレームにたいして定義されたカレントバッファーのデフォルトフェイスで使用されるフォントの高さをピクセル単位でリターンする。

Function: window-font-width &optional window face

この関数はwindow内のfaceで使用されるフォントの平均幅をピクセル単位でリターンする。windowには生きたウィンドウを指定しなければならない。nilか省略ならwindowのデフォルトは選択されたウィンドウ、faceのデフォルトはwindow内のデフォルトフェイス。

Function: window-font-height &optional window face

この関数はwindow内のfaceで使用されるフォントの高さをピクセル単位でリターンする。windowには生きたウィンドウを指定しなければならない。nilか省略ならwindowのデフォルトは選択されたウィンドウ、faceのデフォルトはwindow内のデフォルトフェイス。


Previous: フォントセット, Up: フェイス   [Contents][Index]