フォント一覧
利用できるフォント名のリストを取得します。 情報の取得
フォントの情報は css.awt.XDevice インターフェースの getFontDescriptors メソッドで取得できます。このインターフェースはウィンドウオブジェクトでサポートされているので、適当なウィンドウのコンテナウィンドウから利用できます。 oWindow = ThisComponent.getCurrentController().getFrame().getContainerWindow() oFontDescs = oWindow.getFontDescriptors() 返り値は css.awt.FontDescriptor struct のシークエンスです。 取得した情報はフォント名およびポーズやウェイトごとに分かれているため、フォント名だけが必要な場合は同じフォント名を削除します。 Sub GetFontListTest() sNames = GetListOfFontNames(StarDesktop.getCurrentComponent()._ getCurrentController().getFrame().getContainerWindow(), True) End Sub Function GetListOfFontNames(oWindow As Object, Optional bSorted As Boolean) If IsMissing(bSorted) Then bSorted = False oDescs = oWindow.getFontDescriptors() Dim sNames(20) As String'UBound(oDescs)) As String n = 0 For i = 0 To UBound(oDescs) step 1 If NOT FindInArray(sNames, oDescs(i).Name) Then If n > 20 Then ReDim Preserve sNames(n) End If sNames(n) = oDescs(i).Name n = n + 1 End If Next If bSorted Then strqsort(sNames, 0, UBound(sNames)) GetListOfFontNames = sNames End Function Function FindInArray( oArr As Object, vData As Variant ) As Boolean Dim bFound As Boolean bFound = False For i = 0 To UBound(oArr) step 1 If oArr(i) = vData Then bFound = True Exit For End If Next FindInArray = bFound End Function strqsort については 配列クイックソート 文字列用。 FontDescriptor
フォントの情報を保持する struct です。各要素を理解するにはフォントに関する知識が必要です。
|