CharsAndFonts.vb
''
'' This code is part of GrapeCity Documents for Imaging samples.
'' Copyright (c) GrapeCity, Inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Numerics
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Imaging

'' This sample shows how to draw text using different fonts (.ttf, .otf, .woff)
'' and characrters with codes greater than 0xFFFF.
Public Class CharsAndFonts
    Function GenerateImage(
            Optional pixelWidth As Integer = 1024,
            Optional pixelHeight As Integer = 1024,
            Optional opaque As Boolean = True,
            Optional dpiX As Single = 96,
            Optional dpiY As Single = 96) As GcBitmap
        Dim garlicFont = Font.FromFile(Path.Combine("Resources", "Fonts", "Woff", "Garlicembrace.woff"))
        Dim foglihtenFont = Font.FromFile(Path.Combine("Resources", "Fonts", "FoglihtenNo07.otf"))
        Dim pericFont = Font.FromFile(Path.Combine("Resources", "Fonts", "peric.ttf"))
        Dim emojiFont = Font.FromFile(Path.Combine("Resources", "Fonts", "seguiemj.ttf"))
        Dim timesFont = Font.FromFile(Path.Combine("Resources", "Fonts", "times.ttf"))
        Dim bmp = New GcBitmap(pixelWidth, pixelHeight, True, dpiX, dpiY)
        Using g = bmp.CreateGraphics(Color.White)
            Dim tf = New TextFormat With
            {
                .Font = garlicFont,
                .FontSize = 40
            }
            g.DrawString("Garlicembrace.woff", tf, New RectangleF(4, 4, 500, 50))

            tf = New TextFormat With
            {
                .Font = timesFont,
                .FontSize = 40
            }
            g.DrawString("Times New Roman @ ǖ", tf, New RectangleF(4, 64, 580, 50))

            Dim tl = g.CreateTextLayout()
            tf = New TextFormat With
            {
                .Font = foglihtenFont,
                .FontSize = 40
            }
            tl.Append("FoglihtenNo07.otf", tf)
            g.DrawTextLayout(tl, New PointF(4, 139))

            tf = New TextFormat With
            {
                .Font = pericFont,
                .FontSize = 40
            }
            g.DrawString("peric.ttf", tf, New RectangleF(4, 190, 500, 50))

            Dim pals = emojiFont.CreateFontTables(TableTag.CpalDraw).GetPalettes()
            tf = New TextFormat With
            {
                .Font = emojiFont,
                .FontSize = 40,
                .Palette = pals(0)
            }
            Dim s1 As String = Char.ConvertFromUtf32(&H1F433)
            Dim s2 As String = Char.ConvertFromUtf32(&H1F349)
            Dim s3 As String = Char.ConvertFromUtf32(&H1F367)
            g.DrawString($"seguiemj.ttf {s1}{s2}{s3}", tf, New RectangleF(4, 240, 550, 50))
        End Using
        Return bmp
    End Function
End Class