使用 С++ 在簡報中嵌入字型
介紹
Embedded fonts in PowerPoint 有助於確保您的簡報在任何系統或裝置上開啟時,都能保留預期的外觀。這在使用自訂、第三方或非標準字型進行品牌或創意設計時尤為重要。若未嵌入字型,文字可能會被取代、版面配置會中斷,甚至顯示為不可讀的符號或方塊,從而破壞整體設計。
Aspose.Slides for C++ 提供一組功能強大的 API,讓您能以程式方式管理嵌入字型。您可以使用FontsManager 與 FontData 類別來檢查、加入或移除簡報檔案中的嵌入字型。此外,Compress 類別可在不影響品質或外觀的前提下,壓縮字型資料以優化檔案大小。
這些工具讓您全面掌控字型嵌入,協助在各平台上維持一致的排版,同時在需要時減少檔案體積。
取得簡報中的嵌入字型
Aspose.Slides for C++ 透過FontsManager 類別提供 GetEmbeddedFonts 方法,讓您取得 PowerPoint 簡報中嵌入的字型清單。此功能可用於稽核字型使用情況、確保符合品牌指引,或在分享檔案前驗證所有必要字型是否已正確包含。
以下 C++ 程式碼示範如何從簡報檔案取得嵌入字型:
// 建立代表簡報檔案的 Presentation 類別實例。
auto presentation = MakeObject<Presentation>(u"embedded_fonts.pptx");
// 取得所有嵌入的字型。
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();
// 列印嵌入字型的名稱。
for (auto&& fontData : embeddedFonts)
{
Console::WriteLine(fontData->get_FontName());
}
presentation->Dispose();
將嵌入字型加入簡報
Aspose.Slides for C++ 允許您使用AddEmbeddedFont 方法將字型嵌入 PowerPoint 簡報,該方法提供兩個重載以符合彈性需求。您可以透過EmbedFontCharacters 列舉控制嵌入字型的範圍——例如僅嵌入已使用的字符或完整的字型集合。此功能在準備分享或發佈簡報時特別有用,確保自訂或非標準字型在所有系統上正確顯示,即使目標機器未安裝該字型。
以下 C++ 程式碼會檢查簡報中使用的所有字型,並將未嵌入的字型加入嵌入:
// 載入簡報檔案。
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto usedFonts = presentation->get_FontsManager()->GetFonts();
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();
for (auto&& fontData : usedFonts)
{
std::function<bool(SharedPtr<IFontData> data)> comparer = [&fontData](SharedPtr<IFontData> data) -> bool
{
return data == fontData;
};
// 檢查字型是否已嵌入。
bool isEmbeddedFont = Array<SharedPtr<IFontData>>::Exists(embeddedFonts, comparer);
if (!isEmbeddedFont)
{
// 將字型嵌入簡報。
presentation->get_FontsManager()->AddEmbeddedFont(fontData, EmbedFontCharacters::All);
}
}
// 儲存簡報至磁碟。
presentation->Save(u"embedded_fonts.pptx", SaveFormat::Pptx);
presentation->Dispose();
從簡報中移除嵌入字型
Aspose.Slides for C++ 透過FontsManager 類別提供 RemoveEmbeddedFont 方法,讓您移除 PowerPoint 簡報中特定的嵌入字型。此功能可協助減少整體檔案大小,特別是在嵌入的字型已不再使用或不需要時。移除未使用的字型亦能提升效能,確保簡報僅包含必要的資源。
以下 C++ 程式碼示範如何從簡報中移除嵌入字型:
auto fontName = u"Calibri";
// 建立代表簡報檔案的 Presentation 類別實例。
auto presentation = MakeObject<Presentation>(u"embedded_fonts.pptx");
// 取得所有嵌入的字型。
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();
for (auto&& fontData : embeddedFonts)
{
if (fontData->get_FontName().Equals(fontName))
{
// 移除已嵌入的字型。
presentation->get_FontsManager()->RemoveEmbeddedFont(fontData);
break;
}
}
presentation->Save(u"removed_font.ppt", SaveFormat::Ppt);
presentation->Dispose();
壓縮嵌入字型
Aspose.Slides for C++ 透過Compress 類別提供 CompressEmbeddedFonts 方法,讓您透過優化嵌入字型資料來減少簡報的總體檔案大小。當簡報包含大型或多個字型,且您希望在分享、儲存或線上使用時保持檔案輕量化——而不犧牲內容的視覺忠實度,此功能特別實用。
以下 C++ 程式碼示範如何壓縮 PowerPoint 簡報中的嵌入字型:
auto presentation = MakeObject<Presentation>(u"sample.pptx");
Compress::CompressEmbeddedFonts(presentation);
presentation->Save(u"compressed_fonts.pptx", SaveFormat::Pptx);
presentation->Dispose();
常見問題
如何判斷即使已嵌入,簡報中的特定字型在渲染時仍會被取代?
檢查字型管理員中的取代資訊以及備用/取代規則:若該字型不可用或受限,系統會使用備用字型。
是否值得嵌入像 Arial、Calibri 這類「系統」字型?
通常不需要——因為這些字型幾乎總是可用。但在「瘦」環境(Docker、未預裝字型的 Linux 伺服器)中,嵌入系統字型可排除意外取代的風險,確保完整可攜性。