2023/07/16

リッチテキスト:#8)文字フォントの設定

前回は、フォントの設定の中でもノーツ標準のデフォルトフォントの指定について紹介しました。今回は、フォント名を明示的に指定する方法についてまとめます。


リッチテキストのフォントの管理

NotesFont プロパティのヘルプに「Obtain additional values, starting at 5, with GetNotesFont.」とあります。GetNotesFont を使用して、5 から始まる値を取得できるようです。デフォルトフォント以外を指定するには、このメソッドを使うということですね。

NotesFont (NotesRichTextStyle - LotusScript®)

GetNotesFont (NotesRichTextItem - LotusScript®)

構文は次の通りで、引数で指定したフォントのフォント番号を返します。この番号を NotesFont プロパティに設定して使うということのようです。

   notesFont% = notesRichTextItem.GetNotesFont(faceName$, addOnFail)

  • faceName$

OS 上で定義されているフォントの名前です。

  • addOnFail

文書内でフォント番号が定義されていない場合の動作について設定します。 True の場合強制的に番号を割り当てます。False の場合、0 を返します。


サンプルプログラム

GetNotesFont を使用したサンプルプログラムです。

変数 s にセットしたフォント名を GetNotesFont してフォント番号を取得、NotesFont にセットして、そのフォントで付与された番号とフォント名を表示します。

   Set ndb = ns.CurrentDatabase
   Set nd = ndb.CreateDocument()

   nd.Form = "RichText"
   nd.Title = "リッチテキスト:#8)文字フォントの設定"

   Set nrti = nd.CreateRichTextItem("Body")
   Set nrts = ns.CreateRichTextStyle()
   nrts.FontSize = 24

   s = "メイリオ"
   nrts.NotesFont = nrti.GetNotesFont(s, True)
   Call nrti.AppendStyle(nrts)
   Call nrti.AppendText(CStr(nrts.NotesFont) & " <= " & s)
   Call nrti.Addnewline(1)

   s = "HGP創英角ポップ体"
   nrts.NotesFont = nrti.GetNotesFont(s, True)
   Call nrti.AppendStyle(nrts)
   Call nrti.AppendText(CStr(nrts.NotesFont) & " <= " & s)
   Call nrti.Addnewline(1)

   Call nd.Save(True, False)

実行結果は次の通りで、5 と 6 が付与され、そのフォントで文字が表示されています。


addOnFail の挙動

上記のリストで、2つ目の引数 addOnFail を False とした場合、番号はすべて 0 となりデフォルトフォントの Default Serif で表示されます。

addOnFail を True として、同じフォントを何度 GetNotesFont しても最初に付与した番号が返されます。

また、addOnFail を True にして、間違ったフォントを指定するとそのフォント名のまま出力されます。下図では、あり得ないフォント『出直し!! ドミノ塾』をセットしてみました。

ちなみに、存在しないフォントの場合、ノーツクライアントの機能で Default Sans Serif で表示されるようです。


ヘルプによると、フォント番号の管理は文書内との記述があります。ただ、NotesRichTextItem のメソッドであることから、リッチテキストフィールド単位かもしれませんね。どちらにしろ、ノーツにはデフォルトフォントという機能があるので、フォントを明示的に指定する機会は少ないかと思います。

指定するにしても、開発者はそのフォントにセットしたいわけですし、フォント名を間違えても、初回は True でコールするのでエラー判定に使用できるわけでもないです。そもそも、実行する PC と 参照する PC でフォントが違う可能性がありますし、OS が違う可能性もあります。エラー判定にこだわる必要はないですね。

たとえ存在しないフォント名であっても、デフォルトフォントで表示してくれる機能があるんですから、このオプションは『必ず True にする』でいいような気がします...

前回 リッチテキストの基本操作 次回

0 件のコメント:

コメントを投稿