川幡です。
現状のcomposition-function-tableではフォント情報は取れないのですが、
一方のVSであるIVSについては、複数のコレクションで管理される
アーキテクチャとなっていて、
現在は Adobe-Japan-1と Hanyo-Denshiの2つのコレクションがあります。
各コレクションを実装しているフォントが現状では異なっていますので、
長期的には、例えばVSの親文字についてフォントセットに登録されている
フォントを順番にCMAP14を探していって、該当する文字があれば
それを表示するようにすれば、
IVSにも絵文字VSにも対応できて嬉しいかな、と思いました。
(大幅に改造になってしまいますが・・・)
なお、現状ではフォントセットは charsetテキストプロパティに応じて
フォントを変えられるようになっていますが、UCS/Unicodeのサブセットとして
文字集合が定義される現在では、これもやや時代遅れに
なりつつあると感じています。できれば「言語」テキストプロパティに応じて、
フォントを変えるかまたはOTFドライバで起動するlanguageテーブルや
GSUBのloclテーブルの挙動を変えられるとどうでしょうか。
(ではどうやってset-fontset-font のAPIを変えるのだ、またはOpenTypeのスクリプトを
選択するのだ、と言われるとなかなか良いアイデアはないのですが・・・)
それと、些末ですが、
DEFUN ("composition-get-gstring", Fcomposition_get_gstring,
Scomposition_get_gstring, 4, 4, 0,
は、
DEFUN ("composition-get-gstring", Fcomposition_get_gstring,
Scomposition_get_gstring, 3, 4, 0,
でもいいのではないでしょうか。