スプレッドシートのレンダリングのためのフォントの設定
可能な使用シナリオ
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-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(SetCustomFontFolders.class); | |
// Defining string variables to store paths to font folders & font file | |
String fontFolder1 = dataDir + "/Arial"; | |
String fontFolder2 = dataDir + "/Calibri"; | |
String fontFile = dataDir + "/Arial/arial.ttf"; | |
// Setting first font folder with setFontFolder method | |
// Second parameter directs the API to search the sub folders for font files | |
FontConfigs.setFontFolder(fontFolder1, true); | |
// Setting both font folders with setFontFolders method | |
// Second parameter prohibits the API to search the sub folders 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 | |
byte[] bytes = Files.readAllBytes(new File(fontFile).toPath()); | |
MemoryFontSource sourceMemory = new MemoryFontSource(bytes); | |
// Setting font sources | |
FontConfigs.setFontSources(new FontSourceBase[] { sourceFolder, sourceFile, sourceMemory }); |
フォントの代替メカニズム
Aspose.Cells APIは、レンダリングのための代替フォントを指定する機能も提供します。このメカニズムは、必要なフォントが変換を行うマシンに存在しない場合に役立ちます。ユーザーはオリジナルの必要なフォントの代わりとしてフォント名のリストを指定できます。このために、Aspose.Cells APIはFontConfigs.setFontSubstitutesメソッドを公開しており、これは2つのパラメーターを受け入れます。1つ目のパラメーターはString型であり、代替する必要のあるフォントの名前でなければなりません。2つ目のパラメーターはString型の配列でなければなりません。ユーザーはオリジナルのフォントに代わる代替としてのフォント名のリストを提供することができます。
以下は単純な使用シナリオです。
//Substituting the Arial font with Times New Roman & Calibri
FontConfigs.setFontSubstitutes("Arial", new String[] { "Times New Roman", "Calibri" });
情報収集
上記の方法に加えて、Aspose.Cells APIには設定されているソースと代替に関する情報を収集する手段も提供されています。
1.FontConfigs.getFontSources: このメソッドは、指定されたフォントソースのリストを含むFontSourceBase型の配列を返します。ソースが設定されていない場合、FontConfigs.getFontSourcesメソッドは空の配列を返します。 1.FontConfigs.getFontSubstitutes: このメソッドはString型のパラメーターを受け入れます。これを使用して設定したフォント名を指定することができます。指定されたフォント名に対する代替が設定されていない場合、FontConfigs.getFontSubstitutesメソッドはnullを返します。