''
'' 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", "times.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