1. 製品
  2.   Font
  3.   C++
  4.   Aspose.Font for C++

Aspose.Font for C++

 
 

フォントを読み取り、保存、変換するC++フォントAPI

C++ ライブラリは、C++ ベースのアプリケーション内で TrueType、WOFF、EOT、OpenType、CFF、Type1 などのさまざまなフォント形式をロード、読み取り、保存、変換することを可能にします。

Aspose.Font for C++ は、フォント処理を簡素化し、ソフトウェア開発者やプログラマー向けに幅広い機能を提供する非常に強力なツールです。C++ 開発者がさまざまなフォント形式を扱い、幅広いフォント関連タスクを実行できるようにします。TrueType (TTF)、OpenType (OTF)、PostScript Type 1 (PFB/PFA)、WOFF、EOT など、さまざまな形式のフォントファイルをロード、生成、編集、変換することができます。この API は、外部依存関係なしでフォント関連タスクを次のレベルに引き上げます。

Aspose.Font for C++ は、C++ 開発者向けに包括的なフォント操作機能を提供する機能豊富なライブラリです。このライブラリは、フォントメタデータの抽出、ディスクまたはストリームからのフォントファイルのロード、グリフ情報へのアクセス、フォントの異なる形式への変換、フォント情報の読み取り、フォントファイルの更新とディスクへの保存、フォントファイルからのメトリクス情報の読み取り、フォントグリフを使用したテキストのレンダリング、TrueType フォントのマージなど、幅広いフォント操作をサポートします。また、32 ビットおよび 64 ビットのオペレーティングシステムをサポートしています。

Aspose.Font for C++ は、リガチャの処理、文脈依存および任意のグリフ置換、そして高度なテキストレイアウトオプションなど、先進的な組版機能を提供します。これらの機能は、複雑なスクリプトや高度なテキストシェーピングとレンダリングを必要とする言語を扱う際に特に有用です。API はクロスプラットフォームで、Windows、Linux、macOS を含むさまざまなオペレーティングシステム上でシームレスに利用できます。C++ アプリケーションでフォント操作機能を強化したい場合、Aspose.Font は間違いなく検討に値します。

Previous Next

Aspose.Font for C++ の入門

Aspose.Font for C++の推奨インストール方法はNuGetを使用することです。スムーズなインストールのために、以下のコマンドをご利用ください。

NuGet コマンドで Aspose.Font for C++ をインストール

NuGet\Install-Package Aspose.Font.Cpp -Version 23.4.0

ライブラリは Aspose.Font for C++ 製品ページから直接ダウンロードできます。

C++ API を使用したフォントのサポートされているファイル形式への変換

Aspose.Font for C++の注目すべき機能の一つは、さまざまなサポートされているファイル形式間でフォントを変換できることです。これは、ソフトウェア開発者がターゲット環境やプラットフォームに適合した特定の形式にフォントを変換する必要がある場合に非常に便利です。ライブラリはTrueType、OpenType、CFF、PostScript Type 1フォントなどのシームレスな変換をサポートしており、開発者は幅広いシナリオに対応できます。以下の例は、TTFなどのサポート形式からフォントをロードし、C++コマンドを使用してWOFF2に変換する方法を示しています。

C++ API を使用して TTF を WOFF2 に変換

using namespace System;
    using namespace Aspose::Font::Sources;
    using namespace Aspose::Font::Ttf;
    using namespace Aspose::Font;

    // Open TTF font
    SharedPtr fontFileDefinition = MakeObject(MakeObject(u"Montserrat-Regular.ttf"));
    SharedPtr fontDefinition = MakeObject(FontType::TTF, fontFileDefinition);
    SharedPtr font = Font::Open(fontDefinition);

    // WOFF2 output settings
    SharedPtr outStream = IO::File::Create(u"Montserrat-Regular.woff2");

    // Convert TTF to WOFF2
    font->SaveToFormat(outStream, FontSavingFormats::WOFF2);

C++ API を使用した Type1 フォントのロードと抽出

Aspose.Font for C++ は、ソフトウェア開発者が Type1 をはじめ、他のサポートされているフォント形式をローカルファイル、ストリーム、URL などのさまざまなソースからロードできるようにします。ソフトウェア開発者はフォントを個別に、または一括でロードでき、複数のフォントを同時に処理することが容易になります。ロード後、開発者はフォントのプロパティを更新し、目的の形式に保存したり、他の形式へ簡単にエクスポートしたりできます。以下の例は、C++ アプリケーション内で Type1 フォントをロードし、データを抽出する方法を示しています。

C++ API を使用して Type1 フォントからデータをロードおよび抽出する方法は?

System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
    
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(Aspose::Font::Font::Open(fd));

フォントメトリックとグリフのサポート

Aspose.Font for C++ は、アセント、ディセント、ラインギャップ、その他多数の重要な測定値を含む豊富なフォントメトリクスにアクセスできる、機能が非常に充実したライブラリです。ソフトウェア開発者は Unicode 値、バウンディングボックス、アドバンス幅などのグリフ情報を取得できます。これらの機能により、ユーザーはアプリケーション内でテキストを正確に配置し、レンダリングすることが可能になります。以下の例は、C++ コマンドを使用してグリフでテキストをレンダリングする方法をソフトウェア開発者に示しています。

C++ アプリケーションでグリフを使用してテキストをレンダリングする方法は?

 using Aspose::Font::Glyphs;
using Aspose::Font::Rendering;
using Aspose::Font::RenderingPath;

class GlyphOutlinePainter: IGlyphOutlinePainter
    RenderingText::GlyphOutlinePainter::GlyphOutlinePainter(System::SharedPtr path)
    {
        _path = path;
    }
    void RenderingText::GlyphOutlinePainter::MoveTo(System::SharedPtr moveTo)
    {
        _path->CloseFigure();
        _currentPoint.set_X((float)moveTo->get_X());
        _currentPoint.set_Y((float)moveTo->get_Y());
    }

    void RenderingText::GlyphOutlinePainter::LineTo(System::SharedPtr lineTo)
    {
        float x = (float)lineTo->get_X();
        float y = (float)lineTo->get_Y();
        _path->AddLine(_currentPoint.get_X(), _currentPoint.get_Y(), x, y);
        _currentPoint.set_X(x);
        _currentPoint.set_Y(y);
    }

    void RenderingText::GlyphOutlinePainter::CurveTo(System::SharedPtr curveTo)
    {
        float x3 = (float)curveTo->get_X3();
        float y3 = (float)curveTo->get_Y3();
    
        _path->AddBezier(_currentPoint.get_X(), _currentPoint.get_Y(), (float)curveTo->get_X1(), (float)curveTo->get_Y1(), (float)curveTo->get_X2(), (float)curveTo->get_Y2(), x3, y3);
    
        _currentPoint.set_X(x3);
        _currentPoint.set_Y(y3);
    }

    void RenderingText::GlyphOutlinePainter::ClosePath()
    {
        _path->CloseFigure();
    }

    System::Object::shared_members_type Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::GetSharedMembers()
    {
        auto result = System::Object::GetSharedMembers();
    
        result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_path", this->_path);      result.Add("Aspose::Font::Examples::WorkingWithTrueTypeAndOpenTypeFonts::RenderingText::GlyphOutlinePainter::_currentPoint", this->_currentPoint);
    
        return result;
    }

C++ API を使用したフォントの操作と編集

Aspose.Font for C++ は、ソフトウェア開発者がローカルファイル、ストリーム、URL などのさまざまなソースから Type1 を含むサポートされているフォント形式をロードできるようにします。開発者はフォントを個別に、または一括でロードでき、複数のフォントを同時に処理するのが容易です。ロード後、開発者はフォントのプロパティを更新し、目的の形式で保存したり、他の形式へ簡単にエクスポートしたりできます。以下の例は、C++ アプリケーション内で Type1 フォントをロードし、データを抽出する方法を示しています。

C++ アプリ内で Type1 フォントからフォントメトリック情報を読み取る

System::String fileName = dataDir + u"courier.pfb";
//Font file name with full path
    
System::SharedPtr fd = System::MakeObject(Aspose::Font::FontType::Type1, System::MakeObject(u"pfb", System::MakeObject(fileName)));
System::SharedPtr font = System::DynamicCast_noexcept(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);

 日本