Surrogates.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 GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Text
-
- '' This sample renders a variety of interesting Unicode characters
- '' including surrogate pairs. It also implicitly uses the automatic
- '' font fallback (font substitution) feature built into DsPdf.
- '' Note that this sample may produce different results on different
- '' systems, as it relies on system-provided fallback fonts.
- '' For a platform- and system-independent version of this sample see SurrogatesPort.
- '' See also FontFallbacks.
- Public Class Surrogates
- Function CreatePDF(ByVal stream As Stream) As Integer
- Dim doc = New GcPdfDocument()
- Dim g = doc.NewPage().Graphics
- '' For most of the 'interesting' chars demoed in this sample,
- '' fallback fonts (see FontFallbacks) will be automatically used,
- '' so we can just use a standard font for the captions:
- Dim font = StandardFonts.Helvetica
- Dim tf = New TextFormat() With {.Font = font, .FontSize = 12}
- Dim tf1 = New TextFormat(tf) With {.FontSize = 14}
-
- g.DrawString("Some Interesting Unicode Characters (relies on system fallbacks)",
- New TextFormat(tf) With {.Underline = True, .FontSize = tf.FontSize + 2},
- New RectangleF(0, 36, doc.PageSize.Width, Single.MaxValue),
- TextAlignment.Center)
-
- '' Set up text insertion point and its advance function:
- Dim ip = New PointF(72, 54)
- Dim nextIp As Func(Of Boolean, PointF) =
- Function(caption_ As Boolean)
- ip.Y += If(caption_, 30, 20)
- Return ip
- End Function
-
- '' Draw the strings:
- g.DrawString("Surrogate Pairs:", tf, nextIp(True))
- g.DrawString($"{ChrW(&HD867)}{ChrW(&HDEDB)} {ChrW(&HD840)}{ChrW(&HDC0B)} {ChrW(&HD834)}{ChrW(&HDD1E)} {ChrW(&HD834)}{ChrW(&HDD61)} {ChrW(&HD83D)}{ChrW(&HDC04)}", tf1, nextIp(False))
-
- g.DrawString("Currency Symbols:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H24)} {ChrW(&H20A0)} {ChrW(&H20A1)} {ChrW(&H20A2)} {ChrW(&H20A3)} {ChrW(&H20A4)} {ChrW(&H20AC)} {ChrW(&H20B9)} {ChrW(&H20BD)}", tf1, nextIp(False))
-
- g.DrawString("Mathematical Operators:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H221A)} {ChrW(&H222B)} {ChrW(&H2211)} {ChrW(&H2210)} {ChrW(&H2264)} {ChrW(&H2265)} {ChrW(&H2202)} {ChrW(&H2208)}", tf1, nextIp(False))
-
- g.DrawString("CJK Ideographs Extension A:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H3400)} {ChrW(&H3401)} {ChrW(&H3402)} {ChrW(&H3403)} {ChrW(&H3404)} {ChrW(&H3405)} {ChrW(&H3406)} {ChrW(&H3407)}", tf1, nextIp(False))
-
- g.DrawString("Letterlike Symbols:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H2110)} {ChrW(&H2111)} {ChrW(&H2112)} {ChrW(&H2113)} {ChrW(&H2114)} {ChrW(&H2115)} {ChrW(&H211B)} {ChrW(&H211C)}", tf1, nextIp(False))
-
- g.DrawString("Private Use Area:", tf, nextIp(True))
- g.DrawString($"{ChrW(&HE000)} {ChrW(&HE001)} {ChrW(&HE010)} {ChrW(&HE011)} {ChrW(&HE012)} {ChrW(&HE013)} {ChrW(&HE014)} {ChrW(&HE015)}", tf1, nextIp(False))
-
- g.DrawString("Arrows:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H2190)} {ChrW(&H2191)} {ChrW(&H2192)} {ChrW(&H2193)} {ChrW(&H21B0)} {ChrW(&H21E6)} {ChrW(&H21CB)} {ChrW(&H21A9)}", tf1, nextIp(False))
-
- g.DrawString("Dingbats:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H2714)} {ChrW(&H2717)} {ChrW(&H275B)} {ChrW(&H275C)} {ChrW(&H2706)} {ChrW(&H2707)} {ChrW(&H2708)} {ChrW(&H2709)}", tf1, nextIp(False))
-
- g.DrawString("Braille Patterns:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H2830)} {ChrW(&H2831)} {ChrW(&H2832)} {ChrW(&H2833)} {ChrW(&H2834)} {ChrW(&H2835)} {ChrW(&H2836)} {ChrW(&H2837)}", tf1, nextIp(False))
-
- g.DrawString($"Geometric Shapes:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H25D0)} {ChrW(&H25D1)} {ChrW(&H25D2)} {ChrW(&H25D3)} {ChrW(&H25A4)} {ChrW(&H25F0)} {ChrW(&H25BC)} {ChrW(&H25CE)}", tf1, nextIp(False))
-
- g.DrawString("Latin Extended A:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H100)} {ChrW(&H101)} {ChrW(&H102)} {ChrW(&H103)} {ChrW(&H104)} {ChrW(&H105)} {ChrW(&H106)} {ChrW(&H107)}", tf1, nextIp(False))
-
- g.DrawString("Miscellaneous Symbols:", tf, nextIp(True))
- g.DrawString($"{ChrW(&H2600)} {ChrW(&H2601)} {ChrW(&H2602)} {ChrW(&H2603)} {ChrW(&H2604)} {ChrW(&H2605)} {ChrW(&H2606)} " +
- $"{ChrW(&H2607)} {ChrW(&H2608)} {ChrW(&H2609)} {ChrW(&H2614)} {ChrW(&H2615)} {ChrW(&H26F0)}", tf1, nextIp(False))
- ''
- '' Done:
- doc.Save(stream)
- Return doc.Pages.Count
- End Function
- End Class
-