iTextSharp を使用してカスタム フォントを使用して PDF を作成していますが、ユニコード文字 2120 (SM、サービス マーク) に関する問題が発生しています。問題は、グリフがカスタム フォントにないことです。PDF のフィールドにフォールバック フォントを指定する方法はありますか? Verdana を使用してテキスト フィールドを追加して、フォームにセカンダリ フォントを埋め込もうとしましたが、効果がないようでした。
1 に答える
まず、必要な文字を含むフォント (ttf、otf、...) を見つける必要があります。次に、FontSelectorクラスを使用して、使用するさまざまなフォントをこのセレクターに追加できます ( FontSelectionExampleを参照)。これで、すべての文字列を処理できます:
FontSelector selector = new FontSelector();
selector.addFont(f1);
selector.addFont(f2);
Phrase ph = selector.process(some_string);
は、最初のフォントで使用可能なすべてのグリフのフォント付きの と、 ではフォントにできなかったが に存在するグリフのフォント付きのFontSelectorで構成されるフレーズを返します。Chunkf1Chunkf2f1f2
この例の C# ポートが必要な場合は、第 11 章を参照してください。
アップデート
a の使用はFontSelector、フォームのコンテキストでも機能します (AcroForm テクノロジについて話している限り)。とても簡単です: フォームに代替フォントを追加するだけです:
AcroFields form = stamper.getAcroFields();
form.addSubstitutionFont(bf1);
form.addSubstitutionFont(bf2);
フォームで定義されたフォントが優先されるようになりましたが、そのフォントが特定のグリフを表示できない場合は、bf1、次に atbf2などを調べます。この機能を示す例をここで見つけることができます。
最初の例と 2 番目の例には違いがあることに注意してください。最初の例ではFontオブジェクトを使用し、2 番目の例ではオブジェクトを使用しBaseFontます。