スプレッドシートのレンダリングのためのフォントの設定
可能な使用シナリオ
Aspose.Cells API は、スプレッドシートを画像形式でレンダリングしたり、PDF & XPS 形式に変換したりする機能を提供します。変換の精度を最大限にするためには、スプレッドシートで使用されているフォントがオペレーティングシステムのデフォルトのフォントディレクトリに存在する必要があります。必要なフォントが存在しない場合、Aspose.Cells API は代替のフォントを使用しようとします。
フォントの選択
Aspose.Cells API が裏で行うプロセスは以下の通りです。
- API は、スプレッドシートで使用されている正確なフォント名と一致するフォントをファイルシステムで検索しようとします。
- API が正確な同じ名前のフォントを見つけられない場合、ワークブックの DefaultStyle.Font プロパティで指定されたデフォルトフォントを使用しようとします。
- API がワークブックの DefaultStyle.Font プロパティで定義されたフォントを見つけられない場合、PdfSaveOptions.DefaultFont または ImageOrPrintOptions.DefaultFont プロパティで指定されたフォントを使用しようとします。
- API が PdfSaveOptions.DefaultFont または ImageOrPrintOptions.DefaultFont プロパティで定義されたフォントを見つけられない場合、FontConfigs.DefaultFontName プロパティで指定されたフォントを使用しようとします。
- API が FontConfigs.DefaultFontName プロパティで定義されたフォントを見つけられない場合、利用可能なすべてのフォントから最適なフォントを選択しようとします。
- 最終的に API がファイルシステムでフォントを見つけられない場合、Arial を使用してスプレッドシートをレンダリングします。
カスタムフォントフォルダの設定
Aspose.CellsのAPIは、必要なフォントをオペレーティングシステムのデフォルトフォントディレクトリで検索します。必要なフォントがシステムのフォントディレクトリにない場合は、APIはカスタム(ユーザー定義)ディレクトリを検索します。FontConfigsクラスでは、以下に詳細を示しますが、カスタムフォントディレクトリを設定するためのいくつかの方法を公開しています。
1.FontConfigs.SetFontFolder: このメソッドは1つのフォルダだけを設定する場合に有用です。 1.FontConfigs.SetFontFolders: このメソッドは、フォントが複数のフォルダに存在し、ユーザーがすべてのフォルダを単一のフォルダにまとめるのではなく、それぞれ別々に設定したい場合に有用です。 1.FontConfigs.SetFontSources: このメカニズムは、ユーザーが複数のフォルダからフォントを読み込む場合や、単一のフォントファイルやバイト配列からフォントデータを読み込みたい場合に有用です。
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Defining string variables to store paths to font folders & font file | |
string fontFolder1 = dataDir + "Arial"; | |
string fontFolder2 = dataDir + "Calibri"; | |
string fontFile = dataDir + "arial.ttf"; | |
// Setting first font folder with SetFontFolder method | |
// Second parameter directs the API to search the subfolders for font files | |
FontConfigs.SetFontFolder(fontFolder1, true); | |
// Setting both font folders with SetFontFolders method | |
// Second parameter prohibits the API to search the subfolders for font files | |
FontConfigs.SetFontFolders(new string[] { fontFolder1, fontFolder2 }, false); | |
// Defining FolderFontSource | |
FolderFontSource sourceFolder = new FolderFontSource(fontFolder1, false); | |
// Defining FileFontSource | |
FileFontSource sourceFile = new FileFontSource(fontFile); | |
// Defining MemoryFontSource | |
MemoryFontSource sourceMemory = new MemoryFontSource(System.IO.File.ReadAllBytes(fontFile)); | |
// Setting font sources | |
FontConfigs.SetFontSources(new FontSourceBase[] { sourceFolder, sourceFile, sourceMemory }); |
フォントの代替メカニズム
Aspose.CellsのAPIは、レンダリングに使用する代替フォントを指定する機能も提供します。このメカニズムは、必要なフォントが変換を行うマシンに存在しない場合に役立ちます。ユーザーは元々必要なフォントの代替として、フォント名のリストを提供することができます。これを実現するために、Aspose.CellsのAPIは、2つのパラメータを受け入れるFontConfigs.SetFontSubstitutesメソッドを公開しています。最初のパラメータはstring型であり、代替が必要なフォントの名前でなければなりません。2番目のパラメータはstring型の配列です。ユーザーは、最初のパラメータで指定されたオリジナルのフォント名の代替として、フォント名のリストを提供することができます。
以下は単純な使用シナリオです。
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Substituting the Arial font with Times New Roman & Calibri | |
FontConfigs.SetFontSubstitutes("Arial", new string[] { "Times New Roman", "Calibri" }); |
情報収集
上記の方法に加えて、Aspose.Cells APIには設定されているソースと代替に関する情報を収集する手段も提供されています。
- FontConfigs.GetFontSourcesメソッドは、指定されたフォントソースのリストを含むFontSourceBase型の配列を返します。ソースが設定されていない場合は、FontConfigs.GetFontSourcesメソッドは空の配列を返します。
- FontConfigs.GetFontSubstitutesメソッドは、指定されたフォント名の代替が設定されていることを許可するstring型のパラメータを受け入れます。指定されたフォント名のための代替が設定されていない場合、FontConfigs.GetFontSubstitutesメソッドはnullを返します。