Top > OOoBasic > Dialog > FontList

フォント一覧 Edit

利用できるフォント名のリストを取得します。

情報の取得 Edit

フォントの情報は 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 Edit

フォントの情報を保持する struct です。各要素を理解するにはフォントに関する知識が必要です。

css.awt.FontDescriptor
名前説明
Namestringフォント名
Heightshortフォント高さ
Widthshortフォント幅
StyleNamestringスタイル名
Familystringフォントファミリー名
CharSetstring文字セット名
Pitchshortピッチ
CharacterWidthfloat文字幅
Weightfloatウェイト
Slantcss.awt.FontSlant傾き
Underlineshort下線
Strikeoutshort取り消し線
Orientationfloat配向
Kerningbooleanカーニングの有無
WordLineModeboolean
Typeshort

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes