바이트 배열에서 폰트 파일 로드

MemoryStream에서 TTF, WOFF, EOT, Type 1 및 CFF 폰트를 로드하기 위한 C++ API 솔루션.

 

Aspose.Font API 솔루션은 변환, 글리프 조작, 라틴 기호 감지 등 폰트를 다루는 데 필요한 다양한 기능을 제공합니다. 그러나 폰트 조작의 첫 단계는 나중에 사용할 폰트 파일을 로드하는 것입니다.

이 문서에서는 스트림에서 폰트 파일을 로드하는 방법을 설명합니다. 보다 자세한 폰트 로드 정보는 How to Load Files? 문서를 참고하십시오. 해당 문서에서 다양한 C++ 코드 예제와 폰트 로드에 필요한 객체 및 매개변수를 이해할 수 있습니다.

API는 TrueType(단일 폰트), TrueType(폰트 컬렉션), Web Open Font Format, Web Open Font Format 버전 2.0, Embedded OpenType, Adobe Type 1 폰트(pfa, pfb, afm, pfm), Compact Font Format 등 여러 폰트 형식을 지원합니다. 제공된 코드 스니펫은 스트림에서 True Type Font(TTF) 파일을 로드하는 방법을 보여줍니다.

우리는 Wikipedia 에서 알 수 있듯이 TTF는 TrueType Font의 약자로, 확장 가능한 컴퓨터 폰트 파일 형식입니다. 원래 Apple Computer에서 개발했으며 현재는 Mac과 Windows 운영 체제 모두에서 널리 사용됩니다. TTF 파일은 다양한 폰트 크기와 스타일에서 각 문자를 렌더링하는 방법에 대한 지침을 포함하고 있어, 품질 손실 없이 쉽게 크기를 조정하고 다양한 응용 프로그램에서 사용할 수 있습니다. TTF 폰트는 디지털 타이포그래피에 널리 사용되며 웹 디자인, 워드 프로세싱, 데스크톱 출판 등에서 일반적으로 쓰입니다.

폰트를 로드하려면 C++용 Aspose.Font API가 필요합니다. 이 API는 강력하고 사용하기 쉬운 문서 조작 및 변환 API로 C++ 플랫폼에서 사용할 수 있습니다. API를 얻으려면 NuGet 패키지 관리자를 열고 Aspose.Font를 검색한 뒤 설치하십시오. 또한 패키지 관리자 콘솔에서 다음 명령을 사용할 수 있습니다.

Package Manager Console Command


    PM> Install-Package Aspose.Font

C++를 사용하여 바이트 배열/MemoryStream에서 TTF 로드

이 코드 스니펫은 C++로 작성되었으며 Aspose.Font API를 사용하여 TrueType Font(TTF) 파일을 로드하는 방법을 보여줍니다. 코드는 다음 단계들을 수행합니다:

  1. 폰트 파일 경로를 구성합니다. 여기서 DataDir은 Montserrat-Regular.ttf 폰트 파일이 위치한 디렉터리 경로를 포함하는 미리 정의된 변수입니다. Path.Combine 메서드는 두 경로를 결합하여 폰트 파일의 전체 경로를 생성합니다.
  2. 폰트 바이너리 데이터를 바이트 배열로 로드합니다. File.ReadAllBytes() 메서드는 폰트 파일의 내용을 읽어 바이트 배열로 반환합니다.
  3. FontDefinition 객체를 초기화합니다. FontType.TTF 는 폰트 파일이 TrueType Font(.ttf)임을 나타내며, 새로운 ByteContentStreamSource (fontBytes) 객체는 fontBytes 배열에 저장된 폰트 바이너리 데이터를 기반으로 ByteContentStreamSource 객체를 생성합니다.
  4. Font.Open 메서드는 FontDefinition 객체를 매개변수로 받아 로드된 폰트를 반환하며, 이후 추가 조작에 사용할 수 있습니다.

스트림에서 폰트를 로드하기 위한 C++ 코드

    using Aspose::Font;
    using Aspose::Font::Sources;
    using Aspose::Font::Ttf;
     // Construct the path to the file
    System::String fontPath = System::IO::Path::Combine(get_DataDir(), u"Montserrat-Regular.ttf");

	// Load font binary data into the byte array
    System::ArrayPtr<uint8_t> fontBytes = System::IO::File::ReadAllBytes(fontPath);
    
    // Initialize the FontDefinition object  passing TTF as the FontType value, "ttf" as the fileExtension value, 
    // and ByteContentStreamSource object based on the fontBytes array
    System::SharedPtr<FontDefinition> fontDef = System::MakeObject<FontDefinition (Aspose::Font::FontType::TTF, u"ttf", System::MakeObject<ByteContentStreamSource>(fontBytes));

     // Load the font
    System::SharedPtr<Aspose::Font::Font> font = Aspose::Font::Font::Open(fontDef);