SubSuperScript.vb
 '' '' This code is part of Document Solutions for PDF demos. '' Copyright (c) MESCIUS inc. All rights reserved. '' Imports System.IO Imports System.Drawing Imports System.Text.RegularExpressions Imports GrapeCity.Documents.Drawing Imports GrapeCity.Documents.Pdf Imports GrapeCity.Documents.Text Imports GCTEXT = GrapeCity.Documents.Text Imports GCDRAW = GrapeCity.Documents.Drawing '' This sample shows how to render subscript And superscript text. Public Class SubSuperScript Sub CreatePDF(ByVal stream As Stream) Dim doc = New GcPdfDocument() Dim page = doc.NewPage() Dim g = page.Graphics Dim rc = Util.AddNote( "Demo of the TextFormat.Subscript and TextFormat.Superscript properties. " + "We draw a random 'lorem ipsum' paragraph, rendering all instances of 'lorem' as subscript, " + "and all instances of 'ipsum' as superscript.", page) '' Get a random 'lorem ipsum' paragraph: Dim para = Util.LoremIpsum(1, 18, 20, 20, 20) '' Split the paragraph into 'lorem', 'ipsum' and everything else: Const subs = "lorem" Const super = "ipsum" Dim frags = Regex.Split(para, $"({subs})|({super})") Dim fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSerif-Regular.ttf")) '' Create text formats for subscript And superscript: Dim tfSub = New TextFormat() With {.Font = fnt, .FontSize = 12, .Subscript = True} Dim tfSuper = New TextFormat(tfSub) With {.Subscript = False, .Superscript = True} '' Add text to a TextLayout using special formats for 'lorem' and 'ipsum': Dim tl = g.CreateTextLayout() tl.DefaultFormat.Font = fnt tl.DefaultFormat.FontSize = 12 For Each frag In frags If (frag = subs) Then tl.Append(frag, tfSub) ElseIf (frag = super) Then tl.Append(frag, tfSuper) Else tl.Append(frag) End If Next '' Set layout properties And render the text tl.MaxWidth = page.Size.Width tl.MaxHeight = page.Size.Height - rc.Height tl.MarginAll = 72 tl.MarginTop = rc.Bottom + 36 tl.PerformLayout(True) g.DrawTextLayout(tl, PointF.Empty) '' Done doc.Save(stream) End Sub End Class