C++에서 PowerPoint 글꼴 사용자 지정

개요

Aspose.Slides는 운영 체제에 설치하지 않고도 프레젠테이션에서 사용자 지정 글꼴을 사용할 수 있게 합니다. 사용자 지정 폴더에서 글꼴을 로드하거나, 문서 수준 글꼴 소스를 통해 특정 프레젠테이션에 글꼴을 제공하거나, 바이너리 데이터에서 직접 외부 글꼴을 로드할 수 있습니다.

로드된 글꼴은 프레젠테이션이 렌더링되거나 PDF, 이미지 및 기타 지원 형식으로 내보내질 때 사용됩니다. 이를 통해 다양한 환경에서 프레젠테이션 출력이 일관되게 유지됩니다. 또한 이 문서에서는 Aspose.Slides가 사용하는 글꼴 폴더를 확인하는 방법과 외부 글꼴 사용 후 글꼴 캐시를 지우는 방법을 설명합니다.

렌더링을 위한 사용자 지정 글꼴 등록은 PPTX 파일에 글꼴을 포함시키는 것과 별개입니다. 글꼴을 프레젠테이션 자체에 저장해야 하는 경우, 명시적으로 글꼴 포함 기능을 사용하십시오.

맞춤 글꼴 로드

Aspose.Slides는 시스템에 설치하지 않고도 프레젠테이션에서 사용되는 글꼴을 로드할 수 있게 합니다. 이는 PDF, 이미지 및 기타 지원 형식과 같은 내보내기 결과에 영향을 주어, 다양한 환경에서 문서가 일관되게 보이도록 합니다. 글꼴은 사용자 지정 디렉터리에서 로드됩니다.

  1. 글꼴 파일이 포함된 하나 이상의 폴더를 지정합니다.
  2. 정적 메서드 FontsLoader::loadExternalFonts 를 호출하여 해당 폴더에서 글꼴을 로드합니다.
  3. 프레젠테이션을 로드하고 렌더링/내보내기합니다.
  4. FontsLoader.clearCache 를 호출하여 글꼴 캐시를 정리합니다.

다음 코드 예제는 글꼴 로드 과정을 보여줍니다:

// 사용자 지정 글꼴 파일이 포함된 폴더를 정의합니다.
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );

// 지정된 폴더에서 사용자 지정 글꼴을 로드합니다.
FontsLoader::LoadExternalFonts(fontFolders);

auto presentation = MakeObject<Presentation>(u"sample.pptx");

// 로드된 글꼴을 사용하여 프레젠테이션을 렌더링/내보냅니다 (예: PDF, 이미지 또는 기타 형식).
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();

// 작업이 완료된 후 글꼴 캐시를 정리합니다.
FontsLoader::ClearCache();

맞춤 글꼴 폴더 가져오기

Aspose.Slides는 FontsLoader::GetFontFolders() 를 제공하여 글꼴 폴더를 찾을 수 있게 합니다. 이 메서드는 LoadExternalFonts 메서드로 추가된 폴더와 시스템 글꼴 폴더를 반환합니다.

다음 C++ 코드는 FontsLoader::GetFontFolders() 메서드 사용 방법을 보여줍니다:

// 이 줄은 글꼴 파일이 확인되는 폴더를 출력합니다.
// 이는 LoadExternalFonts 메서드를 통해 추가된 폴더와 시스템 글꼴 폴더입니다.
auto fontFolders = FontsLoader::GetFontFolders();

프레젠테이션에 사용할 맞춤 글꼴 지정

Aspose.Slides는 LoadOptions::set_DocumentLevelFontSources 속성을 제공하여 프레젠테이션에 사용할 외부 글꼴을 지정할 수 있게 합니다.

다음 C++ 코드에서는 LoadOptions::set_DocumentLevelFontSources 속성 사용 방법을 보여줍니다:

auto memoryFont1 = File::ReadAllBytes(u"customfonts\\CustomFont1.ttf");
auto memoryFont2 = File::ReadAllBytes(u"customfonts\\CustomFont2.ttf");

auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(System::MakeArray<String>({u"assets\\fonts", u"global\\fonts"}));
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(System::MakeArray<ArrayPtr<uint8_t>>({memoryFont1, memoryFont2}));
{
    auto presentation = System::MakeObject<Presentation>(u"MyPresentation.pptx", loadOptions);
    //프레젠테이션 작업
    //CustomFont1, CustomFont2 및 assets\fonts와 global\fonts 폴더 및 하위 폴더의 글꼴도 프레젠테이션에서 사용할 수 있습니다
}

외부에서 글꼴 관리

Aspose.Slides는 FontsLoader::LoadExternalFont 메서드를 제공하여 외부 글꼴을 바이트 배열로 로드할 수 있게 합니다.

다음 C++ 코드는 바이트 배열을 이용한 글꼴 로드 과정을 시연합니다:

// 문서 디렉터리 경로
const String outPath = u"../out/SpecifyFontsUsedWithPresentation.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";

ArrayPtr<String> fontsLocation =  MakeArray<System::String>({ u"assets\\fonts", u"global\\fonts" });// ;
ArrayPtr<ArrayPtr<uint8_t>> memoryfontsLocation = MakeArray < ArrayPtr<uint8_t>>({ File::ReadAllBytes(u"../templates/CustomFont1.ttf"), File::ReadAllBytes(u"../templates/CustomFont2.ttf") });

SharedPtr < Aspose::Slides::LoadOptions > loadOptions = MakeObject <Aspose::Slides::LoadOptions>();

loadOptions->get_DocumentLevelFontSources()->set_FontFolders(fontsLocation);
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(memoryfontsLocation);
	
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath, loadOptions);

FAQ

맞춤 글꼴이 모든 형식(PDF, PNG, SVG, HTML)으로의 내보내기에 영향을 미칩니까?

예. 연결된 글꼴은 모든 내보내기 형식에서 렌더러에 의해 사용됩니다.

맞춤 글꼴이 결과 PPTX에 자동으로 포함됩니까?

아니요. 렌더링을 위한 글꼴 등록은 PPTX에 포함시키는 것과 동일하지 않습니다. 프레젠테이션 파일에 글꼴을 포함해야 하는 경우, 명시적인 embedding features 를 사용해야 합니다.

맞춤 글꼴에 특정 글리프가 없을 때 폴백 동작을 제어할 수 있나요?

예. font substitution, replacement rules, 그리고 fallback sets 를 구성하여 요청된 글리프가 없을 때 어떤 글꼴을 사용할지 정확히 정의할 수 있습니다.

Linux/Docker 컨테이너에서 시스템 전체에 설치하지 않고 글꼴을 사용할 수 있나요?

예. 자체 글꼴 폴더를 지정하거나 바이트 배열에서 글꼴을 로드하면 컨테이너 이미지에 시스템 글꼴 디렉터리에 대한 의존성이 사라집니다.

라이선스 측면에서 제한 없이 맞춤 글꼴을 포함시킬 수 있나요?

글꼴 라이선스 준수는 사용자 책임입니다. 라이선스 조건에 따라 일부는 포함을 금지하거나 상업적 사용을 제한할 수 있습니다. 출력물을 배포하기 전에 반드시 글꼴의 EULA를 확인하십시오.