Surrogates.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
'' このサンプルは、サロゲートペアを含む様々な Unicode 文字を描画します。また、DsPdf に
'' 組み込まれた自動フォントフォールバック(フォント置換)機能も暗黙的に使用されます。
'' 注意:このサンプルは、システム提供のフォールバックフォントに依存するため、異なる
'' システムで異なる結果を生成する可能性があります。
'' このサンプルのプラットフォームおよびシステムに依存しないバージョンについては、
'' SurrogatesPort を参照してください。また、FontFallbacks も参照してください。
Public Class Surrogates
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim g = doc.NewPage().Graphics
'' このサンプルでデモされた「面白い」文字のほとんどは、
'' fallback フォント(FontFallbacks を参照)が自動的に使用されるので、
'' キャプションに標準フォントを使用するだけです。
Dim font = Util.getFont()
Dim tf = New TextFormat() With {.Font = font, .FontSize = 12}
Dim tf1 = New TextFormat(tf) With {.FontSize = 14}
g.DrawString("ユニークな Unicode 文字(システムのフォールバックに依存)",
New TextFormat(tf) With {.Underline = True, .FontSize = tf.FontSize + 2},
New RectangleF(0, 36, doc.PageSize.Width, Single.MaxValue),
TextAlignment.Center)
'' テキスト挿入位置とその前進用関数を設定します。
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
'' 文字列を描画します。
g.DrawString("サロゲートペア文字:", 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("通貨記号:", 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("数学演算子:", 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 統合漢字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("和暦合字:", tf, nextIp(True))
g.DrawString($"{ChrW(&H337E)} {ChrW(&H337D)} {ChrW(&H337C)} {ChrW(&H337B)} {ChrW(&H32FF)}", tf1, nextIp(False))
g.DrawString("文字様記号:", 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("私用領域:", 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("矢印:", 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("装飾記号:", 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("点字パターン:", 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($"幾何学的形状:", 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("ラテン語拡張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("絵文字、その他:", 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))
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class