바이트 배열에서 폰트 파일 로드
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) 파일을 로드하는 방법을 보여줍니다. 코드는 다음 단계들을 수행합니다:
- 폰트 파일 경로를 구성합니다. 여기서 DataDir은 Montserrat-Regular.ttf 폰트 파일이 위치한 디렉터리 경로를 포함하는 미리 정의된 변수입니다. Path.Combine 메서드는 두 경로를 결합하여 폰트 파일의 전체 경로를 생성합니다.
- 폰트 바이너리 데이터를 바이트 배열로 로드합니다. File.ReadAllBytes() 메서드는 폰트 파일의 내용을 읽어 바이트 배열로 반환합니다.
- FontDefinition 객체를 초기화합니다. FontType.TTF 는 폰트 파일이 TrueType Font(.ttf)임을 나타내며, 새로운 ByteContentStreamSource (fontBytes) 객체는 fontBytes 배열에 저장된 폰트 바이너리 데이터를 기반으로 ByteContentStreamSource 객체를 생성합니다.
- 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);