Встроенные Шрифты

Встроенные шрифты в PowerPoint полезны, когда вы хотите, чтобы ваша презентация отображалась правильно при открытии на любой системе или устройстве. Если вы использовали сторонний или нестандартный шрифт, потому что проявили креативность в своей работе, у вас есть еще больше причин встроить свой шрифт. В противном случае (без встроенных шрифтов) тексты или числа на ваших слайдах, разметка, стиль и т. д. могут измениться или превратиться в запутанные прямоугольники.

Классы FontsManager, FontData, Compress и их интерфейсы содержат большинство свойств и методов, которые вам нужны для работы с встроенными шрифтами в презентациях PowerPoint.

Получение или Удаление Встроенных Шрифтов из Презентации

Aspose.Slides предоставляет метод GetEmbeddedFonts() (предоставленный классом FontsManager), который позволяет вам получить (или выяснить) шрифты, встроенные в презентацию. Для удаления шрифтов используется метод RemoveEmbeddedFont() (также предоставленный этим же классом).

Этот код C++ показывает, как получить и удалить встроенные шрифты из презентации:

// Создает объект Presentation, представляющий файл презентации
auto presentation = System::MakeObject<Presentation>(u"EmbeddedFonts.pptx");
// Отображает слайд, содержащий текстовый фрейм, использующий встроенный "FunSized"
presentation->get_Slides()->idx_get(0)->GetImage(Size(960, 720))->Save(u"picture1_out.png", ImageFormat::Png);

auto fontsManager = presentation->get_FontsManager();

// Получает все встроенные шрифты
auto embeddedFonts = fontsManager->GetEmbeddedFonts();

std::function<bool(SharedPtr<IFontData>)> comparer = [](SharedPtr<IFontData> data) -> bool
{
    return data->get_FontName() == u"Calibri";
};

// Находит шрифт "Calibri"
auto funSizedEmbeddedFont = Array<SharedPtr<IFontData>>::Find(embeddedFonts, comparer);

// Удаляет шрифт "Calibri"
fontsManager->RemoveEmbeddedFont(funSizedEmbeddedFont);

// Отображает презентацию; шрифт "Calibri" заменен на существующий
presentation->get_Slides()->idx_get(0)->GetImage(Size(960, 720))->Save(u"picture2_out.png", ImageFormat::Png);

// Сохраняет презентацию без встроенного шрифта "Calibri" на диск
presentation->Save(u"WithoutManageEmbeddedFonts_out.ppt", SaveFormat::Ppt);

Добавление Встроенных Шрифтов в Презентацию

Используя перечисление EmbedFontCharacters и два перегруженных метода AddEmbeddedFont(), вы можете выбрать предпочитаемое правило (встраивания) для добавления шрифтов в презентацию. Этот код C++ показывает, как встроить и добавить шрифты в презентацию:

// Загружает презентацию
auto presentation = System::MakeObject<Presentation>(u"Fonts.pptx");

// Загружает исходный шрифт для замены
auto sourceFont = System::MakeObject<FontData>(u"Arial");

auto allFonts = presentation->get_FontsManager()->GetFonts();
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();

for (SharedPtr<IFontData> font : allFonts)
{
    std::function<bool(SharedPtr<IFontData> data)> comparer = [&font](SharedPtr<IFontData> data) -> bool
    {
        return data == font;
    };

    bool isEmbeddedFont = Array<SharedPtr<IFontData>>::Exists(embeddedFonts, comparer);
    if (!isEmbeddedFont)
    {
        presentation->get_FontsManager()->AddEmbeddedFont(font, EmbedFontCharacters::All);
    }
}

// Сохраняет презентацию на диск
presentation->Save(u"AddEmbeddedFont_out.pptx", SaveFormat::Pptx);

Сжатие Встроенных Шрифтов

Чтобы вы могли сжать шрифты, встроенные в презентацию, и уменьшить ее размер файла, Aspose.Slides предоставляет метод CompressEmbeddedFonts() (предоставленный классом Compress).

Этот код C++ показывает, как сжать встроенные шрифты PowerPoint:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");

Aspose::Slides::LowCode::Compress::CompressEmbeddedFonts(pres);
pres->Save(u"pres-out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);