Yazı Tipi Kullanılabilirliği ve Değiştirilmesi
Contents
[
Hide
]
Belgedeki bir metin, Arial, Times New Roman, Verdana ve diğerleri gibi çeşitli yazı tipleriyle biçimlendirilebilir. Aspose.Words bir belgeyi oluşturduğunda, belgede belirtilen yazı tiplerini seçmeye çalışır.
Ancak, tam yazı tipinin bulunamadığı durumlar vardır ve Aspose.Words bunun yerine benzer bir yazı tipinin yerini almalıdır. Aspose.Words aşağıdaki işleme göre yazı tipini seçer:
- Aspose.Words kullanılabilir font kaynakları arasında tam font adına sahip bir font bulmaya çalışır.
- Aspose.Words orijinal belgeye gömülü fontlar arasında gerekli fontu bulmaya çalışır. DOCX gibi bazı belge biçimleri gömülü yazı tipleri içerebilir.
- Aspose.Words, tam ad eşleşmesine sahip gerekli yazı tipini ve bu yazı tipi için tanımlanan AltName özelliğini bulamazsa, Aspose.Words, yazı tipi bilgilerini belirten FontInfo sınıfından AltName ile tanımlanan yazı tipini bulacaktır.
- Aspose.Words tanımlanan yazı tipini bulamıyorsa ve AltName da tanımlanmamışsa, aşağıda açıklandığı gibi yazı tipi değiştirme kuralları tek tek uygulanır (uygun değiştirme bulunduğunda Yazı Tipi Değiştirme İşlemi durur ve bir sonraki adım yürütülmez):
- Aspose.Words, varsa
FontConfig
yardımcı programını kullanarak OS yazı tipi ayarlarını uygulamaya çalışacaktır. BuWindows olmayan özellik, FontConfig uyumlu OS ile kullanılmalıdır. Hemen hemen her Unıx tabanlı OS, sistem genelinde yazı tipi yapılandırması, özelleştirme ve uygulamalara erişim sağlamak için tasarlanmış birFontConfig
kitaplığına sahiptir. Aksi takdirde, bu kütüphane kullanıcı tarafından kolayca kurulabilir.
Aspose.Words verilerin nasıl sorgulanacağını ve FontConfig sonuçların kendi amaçları için nasıl yorumlanacağını bilir. Varsayılan olarak,FontConfig
yardımcı programı devre dışıdır. Bunu aşağıdaki gibi etkinleştirebilirsiniz:
C++fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
- Bir sonraki adım, TableSubstitutionRule adı verilen basit ama inanılmaz derecede güçlü bir mekanizmadır. Varsayılan olarak, bu özellik etkindir ve herhangi bir OS için kullanılabilir. Aspose.Words, farklı OS için temel ikame kurallarını tanımlayan XML tabloları kullanır. Tablo değiştirme kuralına göre, yedek yazı tipi adlarının listesi kullanılacaktır.
XMLOriginalFont - değiştirilecek bir yazı tipi, SubstituteFonts - virgülle ayrılmış ikame varyantlarının listesi. Mevcut ilk yazı tipi değiştirme için kullanılır.<TableSubstitutionSettings xmlns="Aspose.Words"> <SubstitutesTable> <Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /> … </SubstitutesTable> </TableSubstitutionSettings>
Bu kuralın temel özelliği, aşağıdaki örnekte gösterildiği gibi kendi ikame tablolarınızı yükleme yeteneğidir:
C++Varolan tabloyu kavanozdan temel alabilir veya programlı olarak aşağıdaki şekilde kaydedebilirsiniz:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
C++Bu mekanizmanın esnekliğine rağmen, aşağıda gösterildiği gibi devre dışı bırakmanın daha iyi olduğu bazı durumlar vardır:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
C++fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
- Tablo değiştirme kuralı yazı tipini bulamazsa FontInfo değiştirme kuralı uygulanır. Bu mekanizma varsayılan olarak etkindir. Aspose.Words belirli bir belgede yer alan yazı tipi bilgilerine göre en uygun yazı tipini bulur. Bu bilgi aşağıda gösterildiği gibi FontInfo sınıfından elde edilebilir:
C++Kullanıcılar, tatmin edici olmayan sonuçlar olması durumunda devre dışı bırakmaya karar vermedikçe bu özelliğin iş akışına müdahale edemezler:System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
C++Eksik yazı tipi için FontInfo mevcut değilse, işlem durur.fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
FontInfo
ikamesinin de başarısız olması durumunda DefaultFont ikame kuralı uygulanacaktır. Bu kural varsayılan olarak da etkindir. Bu kurala göre Aspose.Words, DefaultFontName özelliğinde belirtilen varsayılan yazı tipini kullanmaya çalışacaktır. Kullanıcı kendi varsayılan yazı tipini seçmediyse, varsayılan yazı tipi olarak “Times New Roman” kullanılacaktır. Bu kural aşağıda gösterildiği gibi devre dışı bırakılabilir:
C++Geçerli varsayılan yazı tipini kontrol etmek için:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
C++Kendi değiştirme seçeneğinizi ayarlamak için başvurun:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
C++fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
- Aspose.Words, varsa
- Aspose.Words yazı tipi değiştirmeyi gerçekleştiremiyorsa, kullanılabilir ilk yazı tipini kullanılabilir yazı tipi kaynaklarından almaya çalışır.
- Son olarak, Aspose.Words kullanılabilir yazı tipi kaynakları arasında herhangi bir yazı tipi bulamazsa, belgeyi Aspose.Words derlemesine katıştırılmış serbest Fanwood yazı tipini kullanarak oluşturur.
FontInfo kullanılabilirse, FontInfo substitution rule her zaman yazı tipini çözer ve varsayılan yazı tipi kuralını geçersiz kılar. Varsayılan yazı tipi kuralını kullanmak istiyorsanız, FontInfo substitution rule ‘i devre dışı bırakmalısınız. FontConfig substitution rule ‘ın çoğu durumda yazı tipini çözeceğini ve bu nedenle diğer tüm kuralları geçersiz kılacağını unutmayın.