フォント情報を読む

C++ 用 Aspose.Font API ソリューションを使用してフォント メトリクスを調べます。 あらゆるストローク、カーブ、ニュアンスに関する詳細な洞察を学びます。 当社のソリューションを使用すると、グリフを簡単に操作できるようになり、フォントの固有の特性に関する情報を抽出できるようになります。

 

C++ 用 Aspose.Font API ソリューションを使用して、フォントの可能性の世界に飛び込んでください。このソリューションは、フォント変換、グリフ操作、ラテン記号検出などの強力な機能のキットを提供します。 また、当社の API を使用すると、グリフを操作したり、フォントに含まれるグリフに関する情報を取得したりすることができます。 Aspose.Font for C++ を使用して、デザインを向上させ、プロジェクトを強化し、グリフの可能性を最大限に引き出します。 待たずに無料トライアルを入手してください!

グリフは、書体の文字または記号の独自のデザインです。このフォント ユニットをよりよく理解するには、 Introduction to Glyph の記事をお読みください。書体の視覚的な外観を記述します。これらの指標には、文字の高さ、文字の幅、文字間の間隔、ベースラインの位置などの情報を含めることができます。これにより、デザイナーやソフトウェア開発者は、デジタル ドキュメントやユーザー インターフェイス内のテキストのレイアウトを正確に予測できます。

このページでは、グリフの数、文字の高さ、グリフ「A」の幅など、さまざまなフォント メトリックを取得する方法について説明します。ただし、グリフを操作する完全な機能については、グリフ オブジェクトの使用に関する記事で詳しく説明しています。コード例には、フォント名を含むフォント メタデータの取得に関するセクションが含まれています。このタイプの機能は、Aspose エコシステムで利用可能な Font Metadata アプリなどの Web アプリケーションに統合できます。完全なサンプルとデータ ファイルについて知りたい場合は、Aspose Github プロジェクト にアクセスしてください。

フォント メトリックを受け取るには、次のものが必要です。

  • Aspose.Font for C++ API は、機能が豊富で強力で使いやすいドキュメント操作および変換 API です。

  • NuGet パッケージ マネージャーを開き、Aspose.Font を検索してインストールします。パッケージ マネージャー コンソールから次のコマンドを使用することもできます。

Package Manager Console Command


    PM> Install-Package Aspose.Font

C++ を使用してフォント メトリックを取得する手順:

  1. TtfFont クラスのインスタンスを作成するフォントに関する情報を抽出します。
  2. FontName プロパティを使用してフォントの名前を出力します。
  3. NumGlyphs プロパティを使用して、フォント内のグリフの数を出力します。アセンダー、ディセンダー、タイポ アセンダー、タイポ ディセンダー、UnitsPerEm などのフォント メトリックも出力されます。
  4. 次にコードは、フォントから「cmap」ユニコード エンコーディング テーブルを取得します。これは、文字コードをグリフ インデックスにマップするために使用されます。フォントに cmap テーブルと、グリフへのアクセスに使用される glyf テーブルの両方があるかどうかをチェックします。両方のテーブルが存在する場合、文字 Aglyf インデックスを取得してから、A 記号のグリフを取得します。
  5. A グリフの境界ボックスとその幅を出力します。

フォントのグリフに関する情報を取得する C++ コード

    using Aspose::Font;
    using Aspose::Font::Glyphs;
    using Aspose::Font::Ttf;
    //Font file name with the full path
    
    System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
    System::SharedPtr<TtfFont> font = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
    
    System::String name = font->get_FontName();
    System::Console::WriteLine(System::String(u"Font name: ") + name);
    System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
    System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
    
    System::Console::WriteLine(metrics);
    
    //Get cmap unicode encoding table from the font as object TtfCMapFormatBaseTable to access the information about the font glyph for symbol 'A'.
    //Also check that font has object TtfGlyfTable (table 'glyf') to access glyph.
    System::SharedPtr<Aspose::Font::TtfCMapFormats::TtfCMapFormatBaseTable> cmapTable;
    if (font->get_TtfTables()->get_CMapTable() != nullptr)
    {
        cmapTable = font->get_TtfTables()->get_CMapTable()->FindUnicodeTable();
    }
    if (cmapTable != nullptr && font->get_TtfTables()->get_GlyfTable() != nullptr)
    {
        System::Console::WriteLine(System::String(u"Font cmap unicode table: PlatformID = ") + cmapTable->get_PlatformId() + u", PlatformSpecificID = " + cmapTable->get_PlatformSpecificId());
    
        //Code for 'A' symbol
        char16_t unicode = (char16_t)65;
    
        //Glyph index for 'A'
        uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
    
        if (glIndex != static_cast<uint32_t>(0))
        {
            //Glyph for 'A'
            System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
            if (glyph != nullptr)
            {
                //Print glyph metrics
                System::Console::WriteLine(u"Glyph metrics for 'A' symbol:");
                System::String bbox = System::String::Format(System::String(u"Glyph BBox: Xmin = {0}, Xmax = {1}") + u", Ymin = {2}, Ymax = {3}", glyph->get_GlyphBBox()->get_XMin(), glyph->get_GlyphBBox()->get_XMax(), glyph->get_GlyphBBox()->get_YMin(), glyph->get_GlyphBBox()->get_YMax());
                System::Console::WriteLine(bbox);
                System::Console::WriteLine(System::String(u"Width:") + font->get_Metrics()->GetGlyphWidth(System::MakeObject<GlyphUInt32Id>(glIndex)));
            }
        }
    }



よくある質問

1. フォントメトリックとは何ですか?

フォントが画面に表示される方法を決定するプロパティです。アセント、ディセント、幅、カーニングなどのメトリックの一部は、 グリフ メトリック に似ています。

2. フォント メトリックを取得するにはどうすればよいですか?

使用するフォントを指定します。 Aspose.Font.IFontMetrics クラス インターフェイスのプロパティを使用して、必要なフォント メトリックに関する情報を抽出します。

3. フォント メタデータとは

Font Metadata は基本的にそれに関する情報です。フォント名、フォント ファミリー名、Postscript 名、ライセンス、著者およびデザイナーの情報など、多くのデータが含まれています。

4. フォントのメタデータを変更するにはどうすればよいですか?

フォント情報をオンラインで表示または変更するには、 フォント メタデータ アプリケーションを使用します。