フォントをロードする方法は? | .NET用のAPIソリューション
概要
質問、フォントのロード方法に答えるには、最初に、フォントは物理的にデータが何らかの形式で表されるバイトの配列であることを学ぶ必要があります。 したがって、正しいフォントの読み込みをするには、2つの重要なパラメーターを知る必要があります。
- フォント形式。フォントには、
trueType
、Type1
などのような異なる形式を持つことができます。 - ストレージ。フォントを表すバイナリデータが保持されています。各フォントはバイナリデータとして表されますが、このデータの保存方法が異なる場合があります。ほとんどの場合、フォントはハードドライブのファイルとして保存されています。ただし、フォントバイナリデータは、フォント自体ではない別のファイルに配置できる場合があります。たとえば、Microsoft WordまたはAdobe Acrobatによって作成されたファイル。これらは、拡張機能
.docx
、.pdf
を持つファイルです。さまざまなフォントを含めることができます。
フォントロードに必要なオブジェクトとパラメーター
.netのaspose.fontは、フォントロードに要求される2つの重要なパラメーターを通知するために、オブジェクト fontdefinitonを指定します。 fontdefinitonオブジェクトを作成して開始した後、staticメソッドを呼び出す必要があります aspose.font.font.open()は、パラメーターとして初期化されたオブジェクト fontdefinitonを渡すだけで、目的のフォントをロードして参照を取得します。
擬似コードで説明しましょう。
1
2using Aspose.Font;
3 ...
4
5 // Initialize object FontDefinition with appropriate properties
6 FontDefinition fontDef = new FontDefinition();
7 Font desiredFont = Font.Open(fontDef);
フォントロードの最終結果は、 aspose.font.fontタイプのオブジェクトを取得することです。 class aspose.font.fontは、.netライブラリの aspose.fontのベースフォントクラスです。これは、フォントを使用する主な機能を表しています。
フォントを aspose.font.fontタイプオブジェクトにして、このフォントでテキストをレンダリングし、エンコードデータを取得し、フォントメトリックを取得できます。また、このフォントなどを変更または保存することもできます。
fontdefinitonオブジェクトを開始するには、前述のように、フォントバイナリデータのストレージを記述するフォーマットタイプ、およびオブジェクトを2つのフォントパラメーターに与える必要があります。 最初のパラメーターは fonttype列挙で通知されます。
2番目のパラメーターで作業を簡素化するために、 aspose.fontは、フォントの配置場所から独立してフォントバイナリデータに普遍的にアクセスできる一連のオブジェクトを提供します。
このユニバーサルアクセスは、バイトストリームなどのものとリンクしています。 したがって、フォントが配置されている場所から独立して - ディスク上のファイル、別のファイル内、メモリ内のバイト配列 - いずれにせよ、特別な Aspose.Fontオブジェクトは、目的のフォントに関連するバイトストリームへのアクセスを提供します。
これらのオブジェクトを説明しましょう。
- StreamSourceクラス。 この抽象的なベースクラスは、フォントバイトストリームにアクセスできるプロパティとメソッドを定義します。 getFontStream()このクラスの方法は、バイナリフォントデータに関連するストリームを返します。 プロパティ offsetは、このストリームの位置でポイントで、そこからデータの読み取りを開始する必要があります。
- ベース
StreamSourceから継承された2つの最も使用されているクラス:
- filesystemStreamSource - ファイルシステムに基づいて、ストリームへのアクセスを提供するように設計されています。 プロパティ filenameフォントファイルの名前を返します。 getFontStream()メソッドは、このファイルに関連するバイトストリームを返します。
- byteContentsStreamSource - バイト配列に基づいて、ストリームへのアクセスを提供します。
クラスを開始する方法は?
これらのクラスの開始の例を次に示します。
- フォントがlora.ttfという名前のファイルにあると仮定しましょう。この場合、このフォントのバイトストリームにアクセスするには、この単一のコンストラクターを使用して filesystemstreamSourceのオブジェクトを作成する必要があります。
1
2 FilesystemStreamSource fontsource = new FilesystemStymStreamSource( "lora.ttf");
- フォントバイナリデータがバイト[] fontarray変数によって定義されたバイナリ配列にある場合、 byteContentsStreamSourceのオブジェクトは、フォントレイ変数に基づいてフォントデータストリームへのアクセスを提供します。 フォントバイトストリームにアクセスするには、 byteContentsStreamSourceのタイプのオブジェクトを作成して、このようなコードを使用してフォントバイト配列に関連するストリームにアクセスする必要があります。
1
2 byteContentsStreamSource fontsource = new byteContentsStreamSource(fontarray);
したがって、フォントバイナリデータへのアクセスを提供するには、ベース StreamSourceクラスから継承されたオブジェクトを使用します。さらに、そのようなオブジェクトを呼び出しますフォントストリームソース。
FontFileDefinitionオブジェクト
ほとんどのフロントは通常のファイルにありますが、同時に、フォントの一部に異なるデータソースがある場合があります。 1つのオブジェクト用語に結合するファイルおよびフォントバイナリストリーム、 Aspose.Fontライブラリは特別なオブジェクト fontFileDefinitionを提供します。
このオブジェクトにはそのようなプロパティがあります。
- filename - フォントファイルの名前。
- fileExtension - フォントファイルの拡張。
- StreamSource - フォントストリームソース。
- offset - フォントバイトストリーム内のオフセット。
このオブジェクトの最も単純で使用されているコンストラクターの1つは、次の署名を持つコンストラクターです。
これは、ファイルC:\Windows\Fonts\Montserrat.ttfにあるフォントmontserrat
のこのようなオブジェクトを開始する例です。
1
2 fontfileDefinition filedef = new fontfileDefinition(new fileInfo(@"C:\Windows\Fonts\Montserrat.ttf"));
また、 fontfiledefinitionは、次のコンストラクターを使用して「Montserrat`フォントを参照できます。
1
2 fontfileDefinition filedef = new fontfileDefinition(new FilessystemStermStreamSource(@"C:\Windows\Fonts\Montserrat.ttf"));
3
4 FontFileDefinition fileDef = new FontFileDefinition("ttf", new FileSystemStreamSource(@"C:\Windows\Fonts\Montserrat.ttf"));
パラメーター
fileExtensionは、フォント形式の拡張機能の標準と一致する必要があります。たとえば、フォント形式がtrueType
の場合、
fileExtensionパラメーターの値はTTF
またはTTC
である可能性があります(フォントファイルがtrueType
のコレクションの場合)。
フォント形式が「埋め込まれたオープンタイプ」の場合、
fileExtensionパラメーターの値はEOT
でなければなりません。
以下の表は、.NETフォントファイルフォーマット用のAspose.Fontで最も頻繁に使用されるものを示しています。そこには、 fileExtensionパラメーターが取るべき一致する値があります。
フォントファイル形式 | ファイル拡張子 |
---|---|
TrueType , single font | ttf |
TrueType font collection | ttc |
Web Open Font Format | woff |
Web Open Font Format version 2.0 | woff2 |
Embedded OpenType | eot |
Adobe Type 1 font | pfa , pfb , afm , pfm |
Compact Font Format | cff , can be null |
フォントデータがバイトストリームの位置0から開始されない場合、 offsetパラメーターで次のコンストラクターを使用します。
1
2 fontFileDefinition(String fileExtension、StreamSource StreamSource、ロングオフセット)。
fontdefinitionオブジェクトを開始する方法は?
これで、 streamSourceクラスから継承されたオブジェクトのアイデアがあり、フォントバイトストリームへのアクセスと fontfiledefinitionオブジェクトのアクセスを提供すると、これらの異なる状況のために適切にオブジェクトを開始する方法を説明します。
fontdefinitonオブジェクトは、多くのオーバーロードされたコンストラクターを提供します。 既存のすべてのコンストラクターの共通の特徴は、 fonttypeパラメーターです。フォント形式のタイプを説明します。 前述のように、 fonttype値を除いて、オブジェクト fontdefinitonは、フォントバイナリデータを参照して初期化する必要があります。
この場合、 fontdefinitonコンストラクターの次のパラメーターを使用できます。- fontname;
- fileExtension;
- StreamSourceタイプのオブジェクト。
- fontFileDefinitionタイプのオブジェクト。
質問があるかもしれません。パラメーター
fileextension(51)(51)または
fontfiledefinitionオブジェクトにパラメーターを渡すのはなぜですか?
問題は、
fonttypeが
fileextensionの値と常に一致しないことです。
fonttypeは、特定のファイルのフォント形式ではなく、一般的なフォント形式を定義します。 1つの形式の一部のフォントには、異なるファイル形式があります。
たとえば、値fonttype.ttfはtrueType
形式を定義します。ただし、同時にtrueType
にはいくつかのフォント形式が含まれており、拡張機能TTF
、EOT
、TTC
などのフォントファイルがあります。たとえば、EOT
形式のフォントの場合、
fontdefinitonのみに渡された場合、fonttype.ttf値のみを渡すと、このオブジェクトはフォントが「eot形式に属し、
TTFに属していることをどのように理解しますか?
同様に、fonttype.type1の値は、この形式のフォントの一般的な定義です。同時に、
type1フォントフォントファイルには拡張機能
.pfa、
.pfb、
.afm、
.pfm`があります。そのため、FonType.type1値のみに適切に依存して、フォントファイル形式を定義することはできません。したがって、フォント形式を正しく定義するには、
fileExtensionパラメーターの値でパラメーター
fonttypeを指定する必要があります。
以下では、 fontdefinitonオブジェクトの初期化と、さまざまなケースのフォンロードの例をご覧ください。
すべての場合において、最終的なフォントロード結果が aspose.font.fontタイプの変数に配置されます。このタイプは、 Aspose.Fontライブラリの基本的なフォントクラスであり、このタイプのオブジェクトは、フォントを使用するための共通のベース機能を提供します。 このオブジェクトにフォントをロードすると、このフォントでテキストをレンダリングし、コーディング情報、フォントメトリックなどを取得できます。
フォントをロードする方法の例
例として、ファイルC:\Windows\Fonts\Montserrat.ttfからフォントmontserrat
をロードしてみましょう
ファイルの頭に次の名前空間を追加します。
1 using System;
2 using Aspose.Font;
3 using Aspose.Font.Sources;
4 using System.IO;
fontdefinitonおよび fontfileDefinitionを使用して、このフォントをいくつかの異なる方法でロードできます。
system.io.fileinfoオブジェクトの助けを借りてロードします
負荷を満たすには、次を実行します。
- ファイルへのパスを構築します。
- fontdefinitonを開始します。
fonttype値として
ttf
を渡します。 - 自動的に計算された値 fileExtensionを取得します。
- フォントをロードします。
1 //ファイルへのパスを構築します
2 string fontpath = @"C:\Windows\Fonts\Montserrat.ttf";
3
4 // Initialize FontDefinition object passing TTF as FontType value and using FontFileDefinition
5 FontFileDefinition fileDef = new FontFileDefinition(new FileInfo(fontPath));
6
7 // Based on FileInfo object, fileExtension value is calculated automatically from FileInfo fields.
8 FontDefinition fontDef = new FontDefinition(FontType.TTF, fileDef);
9
10 // Load font
11 Font font = Font.Open(fontDef);
ファイルSystemStreamSourceタイプオブジェクトのヘルプを使用してロードします
次の手順を実行して、手術を実現します。
- ファイルへのパスを構築します。
- fontdefinitonオブジェクトを開始します。
- fileextensionを
TTF
に設定します。 - フォントをロードします。
1 //ファイルへのパスを構築します
2 string fontpath = @"C:\Windows\Fonts\Montserrat.ttf";
3
4 // Initialize FontDefinition object passing TTF as FontType value and using FontFileDefinition
5 FontFileDefinition fileDef = new FontFileDefinition("ttf", new FileSystemStreamSource(fontPath));
6
7 // Based on FileSystemStreamSource object, set fileExtension to "ttf"
8 FontDefinition fontDef = new FontDefinition(FontType.TTF, fileDef);
9
10 // Load font
11 Font font = Font.Open(fontDef);
FONTFILEDEFINITIONオブジェクトなしのフォントロード、FilesSystemStreamSourceを直接fontDefinitionに直接通過させます
この方法でフォントをロードするには、次のアクションを実行する必要があります。
- ファイルへのパスを構築します。
- fontdefinitonを開始します。
fonttype値として
ttf
を渡すオブジェクト、 fileExtensionvalue and filesystemstreamsourceオブジェクトとしてパラメーター fileExtensionここには、パラメーター fonttypeの重複値ではありません。 - フォントをロードします。
1 //ファイルへのパスを構築します
2 string fontpath = @"C:\Windows\Fonts\Montserrat.ttf";
3 // Initialize FontDefinition object passing TTF as FontType value, "ttf" as fileExtension value,
4 // and FileSystemStreamSource object. Parameter 'fileExtension' here is not duplicate value
5 // for parameter 'FontType' and it's needed for correct font format detection
6 FontDefinition fontDef = new FontDefinition(FontType.TTF, "ttf", new FileSystemStreamSource(fontPath));
7
8 // Load font
9 Font font = Font.Open(fontDef);
バイト[]タイプ変数を使用して、bytecontentsStreamSourceタイプオブジェクトを使用してフォントロード
バイト配列からフォントをロードするには、次のことが必要です。
- ファイルへのパスを構築します。
- フォントバイナリデータをバイト配列にロードします
- fontdefinitonオブジェクトを
fonttype値として渡すオブジェクト、
fileextension値として
ttf
を渡します。 - フォントをロードします。
1 //ファイルへのパスを構築します
2 string fontpath = @"C:\Windows\Fonts\Montserrat.ttf";
3
4 // Load font binary data into byte array
5 byte[] fontBytes;
6
7 // Initialize FontDefinition object passing TTF as FontType value, "ttf" as fileExtension value,
8 // and ByteContentStreamSource object based on fontBytes array
9 FontDefinition fontDef = new FontDefinition(FontType.TTF, "ttf", new ByteContentStreamSource(fontBytes));
10
11 // Load font
12 Font font = Font.Open(fontDef);
Aspose.fontを使用する例を取得するには、 aspose.font documentationの net-examplesで aspose.font.examples.sln solutionに移動します。
問題や質問が残っている場合は、 aspose.font.product family free support forumのセクションに投稿することができ、数時間以内にサポートチームがすべてをクリアします。