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

'' 合字(単一のグリフ内に2つ以上の文字が結合されたもの)は、選択されたフォントがサポートし、
'' 対応するフォント機能がオンである場合に、DsPdf によってサポートされます。
'' フォント機能の完全なリストについては、 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), '' 文脈上の合体
                New FontFeature(FeatureTag.dlig, True), '' 自由詞
                New FontFeature(FeatureTag.hlig, True), '' 歴史的合字
                New FontFeature(FeatureTag.liga, True), '' 標準的な連結子
                New FontFeature(FeatureTag.rlig, True)  '' 必要な連結子
            }
        '' すべて 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 = GCTEXT.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 = GCTEXT.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