UnicodeRanges.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
'' このサンプルでは、各システムフォントで使用できる Unicode 範囲を示します。
public class UnicodeRanges
Function CreatePDF(ByVal stream As Stream) As Integer
'' 設定。
Dim doc = New GcPdfDocument()
Dim tl = New TextLayout(72) With {
.MaxWidth = doc.PageSize.Width,
.MaxHeight = doc.PageSize.Height,
.MarginAll = 72
}
tl.DefaultFormat.FontSize = 7
Dim tfH = New TextFormat() With {.Font = StandardFonts.TimesBold, .FontSize = 12}
Dim tfP = New TextFormat() With {.Font = StandardFonts.Times, .FontSize = 11}
'' すべてのシステムフォントをループし、各フォントによって
'' 提供される Unicode 範囲をリストします。
For Each font In FontCollection.SystemFonts
tl.AppendLine($"{font.FontFileName} [{font.FullFontName}] [{font.FontFamilyName}]", tfH)
Dim shot = font.CreateFontTables(TableTag.OS2)
tl.AppendLine(shot.GetUnicodeRanges(), tfP)
tl.AppendLine()
Next
'' PaginatedText サンプルで示すように、TextLayout を分割して描画します。
Dim tso = New TextSplitOptions(tl) With {
.MinLinesInFirstParagraph = 2,
.MinLinesInLastParagraph = 2
}
tl.PerformLayout(True)
While True
Dim rest As TextLayout = Nothing
Dim SplitResult = tl.Split(tso, rest)
doc.Pages.Add().Graphics.DrawTextLayout(tl, PointF.Empty)
If SplitResult <> SplitResult.Split Then
Exit While
End If
tl = rest
End While
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class