フォントをロードする方法は? | .NET用のAPIソリューション

概要

質問、フォントのロード方法に答えるには、最初に、フォントは物理的にデータが何らかの形式で表されるバイトの配列であることを学ぶ必要があります。 したがって、正しいフォントの読み込みをするには、2つの重要なパラメーターを知る必要があります。

フォントロードに必要なオブジェクトとパラメーター

.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オブジェクトは、目的のフォントに関連するバイトストリームへのアクセスを提供します。

これらのオブジェクトを説明しましょう。

  1. StreamSourceクラス。 この抽象的なベースクラスは、フォントバイトストリームにアクセスできるプロパティとメソッドを定義します。 getFontStream()このクラスの方法は、バイナリフォントデータに関連するストリームを返します。 プロパティ offsetは、このストリームの位置でポイントで、そこからデータの読み取りを開始する必要があります。
  2. ベース StreamSourceから継承された2つの最も使用されているクラス:
    • filesystemStreamSource - ファイルシステムに基づいて、ストリームへのアクセスを提供するように設計されています。 プロパティ filenameフォントファイルの名前を返します。 getFontStream()メソッドは、このファイルに関連するバイトストリームを返します。
    • byteContentsStreamSource - バイト配列に基づいて、ストリームへのアクセスを提供します。

クラスを開始する方法は?

これらのクラスの開始の例を次に示します。

  1. フォントがlora.ttfという名前のファイルにあると仮定しましょう。この場合、このフォントのバイトストリームにアクセスするには、この単一のコンストラクターを使用して filesystemstreamSourceのオブジェクトを作成する必要があります。
1 
2    FilesystemStreamSource fontsource = new FilesystemStymStreamSource( "lora.ttf");
  1. フォントバイナリデータがバイト[] fontarray変数によって定義されたバイナリ配列にある場合、 byteContentsStreamSourceのオブジェクトは、フォントレイ変数に基づいてフォントデータストリームへのアクセスを提供します。 フォントバイトストリームにアクセスするには、 byteContentsStreamSourceのタイプのオブジェクトを作成して、このようなコードを使用してフォントバイト配列に関連するストリームにアクセスする必要があります。
1 
2    byteContentsStreamSource fontsource = new byteContentsStreamSource(fontarray);

したがって、フォントバイナリデータへのアクセスを提供するには、ベース StreamSourceクラスから継承されたオブジェクトを使用します。さらに、そのようなオブジェクトを呼び出しますフォントストリームソース

FontFileDefinitionオブジェクト

ほとんどのフロントは通常のファイルにありますが、同時に、フォントの一部に異なるデータソースがある場合があります。 1つのオブジェクト用語に結合するファイルおよびフォントバイナリストリームAspose.Fontライブラリは特別なオブジェクト fontFileDefinitionを提供します。

このオブジェクトにはそのようなプロパティがあります。

このオブジェクトの最も単純で使用されているコンストラクターの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 fontttf
TrueType font collectionttc
Web Open Font Formatwoff
Web Open Font Format version 2.0woff2
Embedded OpenTypeeot
Adobe Type 1 fontpfa, pfb, afm, pfm
Compact Font Formatcff, can be null

フォントデータがバイトストリームの位置0から開始されない場合、 offsetパラメーターで次のコンストラクターを使用します。

1 
2    fontFileDefinition(String fileExtensionStreamSource StreamSource、ロングオフセット)

fontdefinitionオブジェクトを開始する方法は?

これで、 streamSourceクラスから継承されたオブジェクトのアイデアがあり、フォントバイトストリームへのアクセスと fontfiledefinitionオブジェクトのアクセスを提供すると、これらの異なる状況のために適切にオブジェクトを開始する方法を説明します。

fontdefinitonオブジェクトは、多くのオーバーロードされたコンストラクターを提供します。 既存のすべてのコンストラクターの共通の特徴は、 fonttypeパラメーターです。フォント形式のタイプを説明します。 前述のように、 fonttype値を除いて、オブジェクト fontdefinitonは、フォントバイナリデータを参照して初期化する必要があります。

この場合、 fontdefinitonコンストラクターの次のパラメーターを使用できます。- fontname;

質問があるかもしれません。パラメーター fileextension(51)(51)または fontfiledefinitionオブジェクトにパラメーターを渡すのはなぜですか? 問題は、 fonttypefileextensionの値と常に一致しないことです。 fonttypeは、特定のファイルのフォント形式ではなく、一般的なフォント形式を定義します。 1つの形式の一部のフォントには、異なるファイル形式があります。 たとえば、値fonttype.ttfはtrueType形式を定義します。ただし、同時にtrueTypeにはいくつかのフォント形式が含まれており、拡張機能TTFEOTTTCなどのフォントファイルがあります。たとえば、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オブジェクトの助けを借りてロードします

負荷を満たすには、次を実行します。

  1. ファイルへのパスを構築します。
  2. fontdefinitonを開始します。 fonttype値として ttfを渡します。
  3. 自動的に計算された値 fileExtensionを取得します。
  4. フォントをロードします。
 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タイプオブジェクトのヘルプを使用してロードします

次の手順を実行して、手術を実現します。

  1. ファイルへのパスを構築します。
  2. fontdefinitonオブジェクトを開始します。
  3. fileextensionTTFに設定します。
  4. フォントをロードします。
 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に直接通過させます

この方法でフォントをロードするには、次のアクションを実行する必要があります。

  1. ファイルへのパスを構築します。
  2. fontdefinitonを開始します。 fonttype値として ttfを渡すオブジェクト、 fileExtensionvalue and filesystemstreamsourceオブジェクトとしてパラメーター fileExtensionここには、パラメーター fonttypeの重複値ではありません。
  3. フォントをロードします。
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タイプオブジェクトを使用してフォントロード

バイト配列からフォントをロードするには、次のことが必要です。

  1. ファイルへのパスを構築します。
  2. フォントバイナリデータをバイト配列にロードします
  3. fontdefinitonオブジェクトを fonttype値として渡すオブジェクト、 fileextension値として ttfを渡します。
  4. フォントをロードします。
 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 documentationnet-examplesaspose.font.examples.sln solutionに移動します。

問題や質問が残っている場合は、 aspose.font.product family free support forumのセクションに投稿することができ、数時間以内にサポートチームがすべてをクリアします。

Have any questions about Aspose.Font?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.