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