Java'da Betik‑Özelliği Tema Yazı Tiplerini Yönet
Genel Bakış
Bir sunum teması, farklı yazı sistemleri için farklı yazı tipi aileleri seçebilir. Bu, temanın yazı tiplerini kullanan çok dilli metnin, Kiril, Arapça, Japonca, Gürcüce, Thaana ve diğer yazı sistemleri için uygun yazı tiplerini kullanırken uyumlu bir yazı tipi şemasını izlemesini sağlar.
Temanın IFontScheme içinde genellikle başlıklar için kullanılan büyük bir yazı tipi koleksiyonu ve genellikle gövde metni için kullanılan küçük bir yazı tipi koleksiyonu bulunur. Latin ve Doğu Asya yazı tipi ayarlarının yanı sıra, her iki koleksiyon da IFonts arayüzü aracılığıyla yazı sistemi etiketlerinden yazı tipi aile adlarına eşlemeler sunar.
Bu makale, sunumun ana temasındaki bu eşlemelerin nasıl inceleneceğini ve değiştirileceğini ve değişikliklerin kaydetme‑yeniden yükleme döngüsünde kalıcı olduğunu nasıl doğrulayacağınızı gösterir.
Betik Etiketlerini Anlamak
Betik yazı tipi yöntemleri, yazı sistemlerini tanımlamak için dört harflik BCP 47 betik alt etiketlerini kullanır. Yaygın değerler şunlardır:
| Betik etiketi | Yazı sistemi |
|---|---|
Cyrl |
Kiril |
Arab |
Arapça |
Hans |
Basitleştirilmiş Çince |
Jpan |
Japonca |
Geor |
Gürcüce |
Thaa |
Thaana |
Bu eşlemeler tema yazı tipi şemasına aittir, bireysel metin bölümlerine değil. Bir sunum, büyük ve küçük koleksiyonlar için farklı eşlemeler tanımlayabilir ve bazı betikler için eşlemeleri atlayabilir.
Betik Yazı Tipi Eşlemelerine Erişme ve İnceleme
Sunum seviyesindeki temaya erişmek için Presentation.getMasterTheme kullanın. IFontScheme.getMajor ve IFontScheme.getMinor yöntemleri iki IFonts koleksiyonunu döndürür.
IFonts.getScriptFontMap çağırarak bir koleksiyondaki tüm eşlemeleri alın. Tek bir yazı sistemi aramak için, betik etiketiyle IFonts.getScriptFont çağırın. getScriptFont istenen eşlemeyi tanımlamayan koleksiyon için null döndürür.
Eşlemeleri Değiştir ve Kalıcılığı Doğrula
IFonts.setScriptFont kullanarak bir eşleme oluşturabilir veya mevcut yazı tipi ailesini değiştirebilirsiniz. Bir eşlemeyi kaldırmak için IFonts.removeScriptFont kullanın.
Aşağıdaki uçtan uca örnek, mevcut tüm büyük ve küçük eşlemeleri okur, Japonca büyük yazı tipini araştırır, Kiril büyük yazı tipini değiştirir, Thaana küçük eşlemesini kaldırır, sunumu kaydeder ve her iki değişikliği doğrulamak için yeniden açar. Kaldırma adımını başlangıç temasından bağımsız yapmak için örnek, zaten tanımlı değilse önce bir Thaana eşlemesi oluşturur.
import com.aspose.slides.*;
import com.aspose.slides.Collections.Generic.Dictionary;
import com.aspose.slides.Collections.Generic.KeyValuePair;
Presentation presentation = new Presentation();
try {
IFontScheme fontScheme = presentation.getMasterTheme().getFontScheme();
IFonts majorFonts = fontScheme.getMajor();
IFonts minorFonts = fontScheme.getMinor();
System.out.println("Existing major mappings:");
Dictionary.Enumerator<String, String> majorMappings = majorFonts.getScriptFontMap().iterator();
while (majorMappings.hasNext()) {
KeyValuePair<String, String> mapping = majorMappings.next();
System.out.println(" " + mapping.getKey() + ": " + mapping.getValue());
}
System.out.println("Existing minor mappings:");
Dictionary.Enumerator<String, String> minorMappings = minorFonts.getScriptFontMap().iterator();
while (minorMappings.hasNext()) {
KeyValuePair<String, String> mapping = minorMappings.next();
System.out.println(" " + mapping.getKey() + ": " + mapping.getValue());
}
String japaneseFont = majorFonts.getScriptFont("Jpan");
if (japaneseFont == null) {
System.out.println("No major Japanese font is defined.");
} else {
System.out.println("Major Japanese font: " + japaneseFont);
}
majorFonts.setScriptFont("Cyrl", "Arial");
if (minorFonts.getScriptFont("Thaa") == null) {
minorFonts.setScriptFont("Thaa", "Arial");
}
minorFonts.removeScriptFont("Thaa");
presentation.save("script-font-mappings.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Presentation savedPresentation = new Presentation("script-font-mappings.pptx");
try {
IFonts savedMajorFonts = savedPresentation.getMasterTheme().getFontScheme().getMajor();
IFonts savedMinorFonts = savedPresentation.getMasterTheme().getFontScheme().getMinor();
String savedCyrillicFont = savedMajorFonts.getScriptFont("Cyrl");
String savedThaanaFont = savedMinorFonts.getScriptFont("Thaa");
if ("Arial".equals(savedCyrillicFont)) {
System.out.println("The Cyrillic mapping was preserved.");
} else {
System.out.println("The Cyrillic mapping was not preserved.");
}
if (savedThaanaFont == null) {
System.out.println("The Thaana mapping removal was preserved.");
} else {
System.out.println("The Thaana mapping still exists.");
}
} finally {
savedPresentation.dispose();
}
Doğrulama, sıradan bir arama gibi aynı null davranışını kullanır: kaldırma kaydedildikten sonra, getScriptFont("Thaa") küçük koleksiyon için null döndürür.
Tema Eşlemelerini Diğer Yazı Tipi Ayarlarından Ayırma
Betik‑özelliği tema eşlemeleri, yazı tipi seçiminde yer alır, ancak doğrudan metin biçimlendirme, ikame ve geri dönüşten farklı bir sorunu çözer:
| Mekanizma | Amaç | Tema eşlemesinin değiştirilmesinin etkisi |
|---|---|---|
| Betik‑özelliği tema yazı tipi eşlemesi | Bir yazı sistemi için büyük veya küçük tema yazı tipini seçer. | İlgili tema yazı tipini yine kullanan metin, yeni eşlenen aileye çözülebilir. |
| Metin bölümüne açıkça atanan yazı tipi | Temaya dayanmak yerine, o bölümde istenen yazı tipi ailesini sabitler. | Bölüm, doğrudan biçimlendirmesi temanın seçimini geçersiz kıldığından değişmeden kalabilir. |
| Yazı tipi ikamesi | İstenen yazı tipi mevcut olmadığında veya bir ikame kuralı uygulandığında yazı tipini değiştirir. | Yazı tipi istendiğinden sonra devreye girer; temanın betik eşlemesini yeniden tanımlamaz. |
| Yazı tipi geri dönüşü | Seçilen yazı tipinin 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.getMasterTheme içinde bir eşlemenin değiştirilmesi, yalnızca etkili biçimlendirmesi hâlâ o temeye bağlı olan içeriği etkiler. Metin, bir ana, yerleşim veya slayttan tema geçersiz kılmasını devralabilir ya da açıkça atanmış bir yazı tipi kullanabilir. Görünür sonuç sunum‑seviyesi eşlemeyi takip etmediğinde bu seviyeleri inceleyin.
Eşlenen Yazı Tiplerini Kullanılabilir Hale Getir ve Sonucu Doğrula
Bir betik eşlemesi sadece bir yazı tipi ailesi adını saklar; karşılık gelen yazı tipi dosyasını kurmaz veya yüklemez. Tutarlı renderleme ve dışa aktarma için, her eşlenen yazı tipi ortamda kurulmuş olmalı veya Aspose.Slides’e FontsLoader.loadExternalFonts veya LoadOptions.getDocumentLevelFontSources gibi özelleştirilmiş bir kaynak aracılığıyla sağlanmalıdır. Mevcut yükleme seçenekleri için Custom Fonts sayfasına bakın.
Kaydedilen eşlemenin doğrulanması yalnızca tema tanımının korunduğunu onaylar. Yazı tipinin kullanılabilir olduğunu, gerekli tüm glifleri içerdiğini veya istenen düzeni ürettiğini göstermez. Her gerekli yazı sistemi için temsilci bir metni görüntü veya PDF olarak renderleyin ve çıktıyı inceleyin. Bu, eksik yazı tiplerini, eksik glif kapsamını, geri dönüş davranışını ve sunum dağıtılmadan önceki düzen değişikliklerini yakalar. Renderleme ve dışa aktarma örnekleri için Convert PowerPoint Presentations sayfasına bakın.
SSS
Bir betik eşlenmediğinde getScriptFont ne döndürür?
IFonts.getScriptFont istenen betik eşlemesi o büyük veya küçük yazı tipi koleksiyonunda tanımlı değilse null döndürür.
setScriptFont betik zaten mevcut olduğunda ikinci bir eşleme ekler mi?
Hayır. IFonts.setScriptFont eksik olduğunda eşlemeyi oluşturur ve aynı betik etiketi zaten varsa eşlenen yazı tipi ailesini değiştirir.
Neden bir tema eşlemesini değiştirmek bazı metinleri etkilemedi?
Metin açıkça atanmış bir yazı tipine sahip olabilir, bir geçersiz kılma yoluyla farklı bir temayı devralabilir veya renderleme sırasında ikame veya geri dönüşten etkilenebilir. Sunum‑seviyesi betik eşlemesi yalnızca etkili biçimlendirmesi hâlâ o tema yazı tipi koleksiyonuna başvuran metni kontrol eder.
Kaydetmek ve 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ı sisteminden temsilci bir metni renderleyerek eşlenen yazı tiplerinin kullanılabilir olduğunu ve gerekli glifleri içerdiğini doğrulamalısınız.