.NET'te Script-Özgü Tema Fontlarını Yönetme

Genel Bakış

Bir sunum teması, farklı yazı sistemleri için farklı yazı tipi aileleri seçebilir. Bu, temanın fontlarını kullanan çok dilli metnin, Kiril, Arapça, Japonca, Gürcüce, Thaana ve diğer betikler için uygun fontları kullanırken tek bir koordine font şeması izleyebilmesini sağlar.

Temanın IFontScheme içinde, genellikle başlıklar için kullanılan ana bir font koleksiyonu ve genellikle gövde metni için kullanılan ikincil bir font koleksiyonu bulunur. Latin ve Doğu Asya font özelliklerine ek olarak, her iki koleksiyon da IFonts arabirimi üzerinden yazı‑sistemi etiketlerinden font aile adlarına haritalamaları sunar.

Bu makale, sunumun ana temasındaki bu haritalamaları nasıl inceleyeceğinizi, değiştireceğinizi ve değişikliklerin kaydedilip yeniden yüklendiğinde de korunduğunu nasıl doğrulayacağınızı gösterir.

Script Etiketlerini Anlayın

Script font yöntemleri, yazı sistemlerini tanımlamak için dört harfli BCP 47 script alt etiketlerini kullanır. Yaygın değerler şunlardır:

Script tag Yazı sistemi
Cyrl Kiril
Arab Arapça
Hans Basitleştirilmiş Çince
Jpan Japonca
Geor Gürcüce
Thaa Thaana

Bu haritalamalar tema font şemasına aittir, tek tek metin bölümlerine değil. Bir sunum, ana ve ikincil koleksiyonlar için farklı haritalamalar tanımlayabilir ve bazı scriptler için haritalamaları atlayabilir.

Script Font Eşlemelerini Erişme ve İnceleme

Sunum‑seviyesindeki temaya erişmek için Presentation.MasterTheme kullanın. FontScheme.Major ve FontScheme.Minor özellikleri iki IFonts koleksiyonunu döndürür.

Bir koleksiyondaki tüm haritalamaları almak için IFonts.GetScriptFontMap çağırın. Tek bir yazı sistemi için bakmak istiyorsanız, script etiketini kullanarak IFonts.GetScriptFont çağırın. GetScriptFont, istenen haritalama tanımlı değilse null döndürür.

Eşlemeleri Değiştir ve Kalıcılığı Doğrula

Yeni bir haritalama oluşturmak veya mevcut font ailesini değiştirmek için IFonts.SetScriptFont kullanın. Bir haritalamayı kaldırmak için IFonts.RemoveScriptFont kullanın.

Aşağıdaki uç‑uç örnek, mevcut tüm ana ve ikincil haritalamaları okur, Japonca ana fontunu bulur, Kiril ana fontunu değiştirir, Thaana ikincil haritalamayı kaldırır, sunumu kaydeder ve iki değişikliğin de korunduğunu doğrulamak için yeniden açar. Kaldırma adımının başlangıç temasından bağımsız olması için, örnek bir Thaana haritalaması yalnızca önceden tanımlı değilse oluşturur.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

static void PrintScriptFontMap(string label, IFonts fonts)
{
    Console.WriteLine(label);
    foreach (var mapping in fonts.GetScriptFontMap())
    {
        Console.WriteLine($"  {mapping.Key}: {mapping.Value}");
    }
}

using var presentation = new Presentation();
var fontScheme = presentation.MasterTheme.FontScheme;
var majorFonts = fontScheme.Major;
var minorFonts = fontScheme.Minor;

PrintScriptFontMap("Existing major mappings:", majorFonts);
PrintScriptFontMap("Existing minor mappings:", minorFonts);

var japaneseFont = majorFonts.GetScriptFont("Jpan");
if (japaneseFont is null)
{
    Console.WriteLine("No major Japanese font is defined.");
}
else
{
    Console.WriteLine($"Major Japanese font: {japaneseFont}");
}

majorFonts.SetScriptFont("Cyrl", "Arial");

if (minorFonts.GetScriptFont("Thaa") is null)
{
    minorFonts.SetScriptFont("Thaa", "Arial");
}

minorFonts.RemoveScriptFont("Thaa");
presentation.Save("script-font-mappings.pptx", SaveFormat.Pptx);

using var savedPresentation = new Presentation("script-font-mappings.pptx");
var savedMajorFonts = savedPresentation.MasterTheme.FontScheme.Major;
var savedMinorFonts = savedPresentation.MasterTheme.FontScheme.Minor;
var savedCyrillicFont = savedMajorFonts.GetScriptFont("Cyrl");
var savedThaanaFont = savedMinorFonts.GetScriptFont("Thaa");

if (savedCyrillicFont == "Arial")
{
    Console.WriteLine("The Cyrillic mapping was preserved.");
}
else
{
    Console.WriteLine("The Cyrillic mapping was not preserved.");
}

if (savedThaanaFont is null)
{
    Console.WriteLine("The Thaana mapping removal was preserved.");
}
else
{
    Console.WriteLine("The Thaana mapping still exists.");
}

Doğrulama, normal bir bakışta olduğu gibi aynı null davranışını kullanır: kaldırma kaydedildikten sonra, GetScriptFont("Thaa") ikincil koleksiyon için null döndürür.

Tema Eşlemelerini Diğer Font Ayarlarından Ayırın

Script‑özgü tema haritalamaları font seçimine katılır, ancak doğrudan metin biçimlendirme, ikame ve geri dönüş gibi farklı sorunları çözer:

Mekanizma Amaç Tema eşlemesinin değiştirilmesinin etkisi
Script‑özgü tema font eşlemesi Bir yazı sistemi için ana ya da ikincil tema fontunu seçer. İlgili tema fontunu hâlâ kullanan metin, yeni eşlenen aileye çözülebilir.
Metin bölümüne açıkça atanmış font İsteği font ailesini tema yerine o bölüme sabitler. Bölüm, doğrudan biçimlendirmesi tema seçimini geçersiz kıldığından değişmeden kalabilir.
Font ikamesi İstenen font mevcut değilse ya da bir ikame kuralı uygulandığında fontu değiştirir. Bir font istendikten sonra devreye girer; tema’nın script eşlemesini yeniden tanımlamaz.
Font geri dönüşü Seçilen fontun içermediği glifleri, genellikle belirli Unicode aralıkları için sağlar. Eksik glif kapsamını doldurur; saklanan tema eşlemesini değiştirmez.

Son iki mekanizma hakkında daha fazla bilgi için Font Substitution ve Fallback Fonts sayfalarına bakın.

Presentation.MasterTheme içindeki bir eşlemeyi değiştirmek, yalnızca etkili biçimlendirmesi hâlâ bu temaya bağlı olan içeriği etkiler. Metin, bir master, layout veya slayt üzerinden bir tema geçersiz kılma alıyor ya da açıkça atanmış bir font kullanıyor olabilir. Görünür sonuç tema eşlemesine uymuyorsa bu seviyeleri inceleyin.

Eşlenen Fontları Kullanılabilir Hale Getir ve Sonucu Doğrula

Bir script haritalaması sadece bir font ailesi adını saklar; ilgili font dosyasını kurmaz veya yüklemez. Tutarlı render ve dışa aktarma için, her eşlenen font ortamda kurulu olmalı ya da Aspose.Slides’a FontsLoader.LoadExternalFonts veya LoadOptions.DocumentLevelFontSources gibi özel bir kaynak üzerinden temin edilmelidir. Kullanılabilir yükleme seçenekleri için Custom Fonts sayfasına bakın.

Kaydedilen haritalamayı doğrulamak sadece tema tanımının korunduğunu gösterir. Fontun mevcut olduğunu, gerekli tüm glifleri içerdiğini veya istenen düzeni ürettiğini kanıtlamaz. Her gerekli yazı sistemi için temsilci bir metni görüntü ya da PDF olarak render edip çıktıyı inceleyin. Bu, eksik fontları, yetersiz glif kapsamını, geri dönüş davranışını ve sunum dağıtılmadan önceki düzen değişikliklerini yakalar. Render ve dışa aktarma örnekleri için Convert PowerPoint Presentations sayfasına bakın.

SSS

GetScriptFont bir script haritalanmadığında ne döndürür?

IFonts.GetScriptFont istenen script haritalaması o ana ya da ikincil font koleksiyonunda tanımlı değilse null döndürür.

SetScriptFont script zaten mevcutken ikinci bir haritalama ekler mi?

Hayır. IFonts.SetScriptFont eksik olduğunda haritalamayı oluşturur ve aynı script etiketi zaten varsa eşlenen font ailesini değiştirir.

Tema haritalaması değiştirildiğinde bazı metinler neden etkilenmedi?

Metin açıkça atanmış bir font taşıyor, bir geçersiz kılma aracılığıyla farklı bir temadan devralınmış olabilir veya render sırasında ikame ya da geri dönüşten etkileniyor olabilir. Sunum‑seviyesi script haritalaması yalnızca etkili biçimlendirmesi hâlâ o tema font koleksiyonuna referans veren metni kontrol eder.

Kaydedip yeniden açmak çok dilli çıktıyı doğrulamak için yeterli mi?

Hayır. Yeniden açmak tema verisinin kalıcılığını doğrular. Ayrıca her gerekli yazı sistemi için temsilci bir metni render edip eşlenen fontların kullanılabilir ve gerekli glifleri içerdiğini onaylamak gerekir.