Ligatures.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' Copyright (c) GrapeCity inc. All rights reserved.
'' 
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text

'' 合字(単一のグリフ内に2つ以上の文字が結合されたもの)は、選択されたフォントがサポートし、
'' 対応するフォント機能がオンである場合に、GcPdf によってサポートされます。
'' フォント機能の完全なリストについては、 featurelist.htm を参照してください。
'' また、FontFeatures も参照してください。
Public Class Ligatures
    Function CreatePDF(ByVal stream As Stream) As Integer
        '' 一般的なラテン文字のリスト。
        Const latinLigatures = "fi, fj, fl, ff, ffi, ffl."
        '' 合字関連のフォント機能を設定します。
        '' すべて ON:
        Dim allOn As FontFeature() = {
                New FontFeature(FeatureTag.clig, True), '' Contextual Ligatures
                New FontFeature(FeatureTag.dlig, True), '' Discretionary Ligatures
                New FontFeature(FeatureTag.hlig, True), '' Historical Ligatures
                New FontFeature(FeatureTag.liga, True), '' Standard Ligatures
                New FontFeature(FeatureTag.rlig, True)  '' Required Ligatures
            }
        '' すべて OFF:
        Dim allOff As FontFeature() = {
                New FontFeature(FeatureTag.clig, False),
                New FontFeature(FeatureTag.dlig, False),
                New FontFeature(FeatureTag.hlig, False),
                New FontFeature(FeatureTag.liga, False),
                New FontFeature(FeatureTag.rlig, False)
            }
        Dim doc = New GcPdfDocument()
        Dim g = doc.NewPage().Graphics
        '' テキストの挿入位置。
        Dim ip = New PointF(72, 72)
        Dim tf = New TextFormat()
        tf.Font = Font.FromFile(Path.Combine("Resources", "Fonts", "times.ttf"))
        tf.FontSize = 20
        g.DrawString($"Common Latin ligatures, font {tf.Font.FontFamilyName}", tf, ip)
        ip.Y += 36
        '' すべての合字機能を OFF にします。
        tf.FontFeatures = allOff
        g.DrawString($"All ligature features OFF: {latinLigatures}", tf, ip)
        ip.Y += 36
        '' すべての合字機能を ON にします。
        tf.FontFeatures = allOn
        g.DrawString($"All ligature features ON: {latinLigatures}", tf, ip)
        ip.Y += 72
        '' 異なるフォントで繰り返します。
        tf.Font = Font.FromFile(Path.Combine("Resources", "Fonts", "Gabriola.ttf"))
        g.DrawString($"Common Latin ligatures, font {tf.Font.FontFamilyName}", tf, ip)
        ip.Y += 36
        '' すべての合字機能を OFF にします。
        tf.FontFeatures = allOff
        g.DrawString($"All ligature features OFF: {latinLigatures}", tf, ip)
        ip.Y += 36
        '' すべての合字機能を ON にします。
        tf.FontFeatures = allOn
        g.DrawString($"All ligature features ON: {latinLigatures}", tf, ip)
        ''
        '' Done:
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class