Genel Bakış
Birçok belge formatı yazı tipleriyle sıkı bir şekilde ilişkilidir. Örneğin, bir kullanıcı bir DOCX belgesine metin eklediğinde bu metnin her zaman tanımlı bir yazı tipi vardır. Bazı belge formatları, PDF gibi, yazı tipi verilerini belge dosyasının içine gömülü olarak saklar. Ancak Office ailesi formatları gibi diğerleri, genellikle işletim sistemine kurulu olan yazı tiplerine dayanır.
Ayrıca çok sayıda yazı tipi formatı da vardır. Örneğin, yüklü olan çoğu yazı tipi TTF (TrueType) ve OTF (OpenType) formatlarında sunulur. Office Open XML belgeleri ayrıca EOT (Embedded OpenType) formatını da destekler. Web ortamında ise WOFF ve WOFF2 en çok kullanılan formatlardır.
İçindekiler
- Genel Bakış
- Kullanılan tüm yazı tiplerini alma
- Eksik yazı tiplerini işleme
- Eksik yazı tipini belirtme
- Eksik yazı tipini değiştirme
- HTML için yazı tiplerini dışlama
- Sonuç
- Ayrıca bakınız
- Ücretsiz deneme alın
Kullanılan tüm yazı tiplerini alma
Yazı tipleri bağlamında en faydalı özellik, bunları listelemek ve döndürmektir. GroupDocs.Viewer, belge bir Viewer sınıfının örneğine yüklendiğinde, bu belge içinde kullanılan tüm yazı tiplerinin bir listesini elde etmek için özel bir metot GetAllFonts() sağlar. Döndürülen listede her bir yazı tipi, IFontInfo arayüzünü uygulayan bir tip örneği olarak sunulur. Bu arayüz, olası tüm yazı tipleri için ortak özellikler içerir: aile adı, stil, format ve ikili içerik.
WordProcessing, Spreadsheet, Presentation ve PDF gibi belirli format aileleri, IFontInfo arayüzünün özelleştirilmiş uygulamalarına sahiptir; bu uygulamalar format ailesine özgü ekstra veriler sunar. Örneğin, WordProcessingFontInfo, PresentationFontInfo ve PdfFontInfo tipleri IsEmbedded adlı bir bool özelliği içerir – bu özellik, yazı tipinin yüklü belge gövdesine gömülü mü yoksa işletim sistemine yüklü mü olduğunu gösterir. SpreadsheetFontInfo tipi ise renk, alt çizgi veya üst çizgi gibi Spreadsheet’e özgü pek çok bilgi içerir. WordProcessingFontInfo alternatif aile adı içerebilir. Ve benzeri.
Kısa bir örnek aşağıdadır:
using GroupDocs.Viewer;
// ...
const string filename = "sample.docx";
string inputPath = "\full\path\" + filename;
using (Viewer viewer = new Viewer(inputPath))
{
Fonts.IFontInfo[] allFonts = viewer.GetAllFonts();
Console.WriteLine("{0} fonts found in the '{1}' document", allFonts.Length, filename);
foreach (Fonts.IFontInfo font in allFonts)
{
Console.WriteLine("Font '{0}' of '{1}' style has {2} bytes and is of '{3}' format",
font.FamilyName,
font.Style,
font.Content.Length,
font.Format);
}
}
Lütfen unutmayın: yazı tipi çıkarımı yalnızca WordProcessing, Spreadsheet, Presentation ve PDF format aileleri için desteklenir; diğer belge formatları için GetAllFonts() metodu boş bir dizi döndürür.
Eksik yazı tiplerini işleme
Bir belgenin yazarın makinesinde oluşturulup “AAA” adlı bir yazı tipi kullandığı ve daha sonra GroupDocs.Viewer ile istemcinin makinesinde işlenirken bu “AAA” yazı tipinin eksik olduğu durum oldukça yaygındır. Bu durumda GroupDocs.Viewer, karmaşık yazı tipi ikame kuralları kullanarak bu yazı tipini ikame etmeye çalışır: belgenin meta verilerini, eksik yazı tipinin alternatif adlarını, belgenin ayarlarını, işletim sisteminin ayarlarını, işletim sistemine kurulu tüm yazı tiplerinin listesini vs. inceler. Sonuçta OS tamamen “temiz” olduğunda ve hiç yazı tipi kurulu olmadığında, GroupDocs.Viewer eksik yazı tipini, GroupDocs.Viewer derlemesi (DLL) içinde gömülü olan bir yazı tipiyle ikame eder; bu yazı tipi başka bir seçenek kalmadığında “son çare” olarak hizmet verir. Örneğin, WordProcessing formatları için GroupDocs.Viewer içinde “Fanwood” adlı ücretsiz bir yazı tipi saklanır.
Şu anda GroupDocs.Viewer, render (görselleştirme) sırasında Viewer.View() metodunun çağrılmasıyla “sessizce” yazı tipi ikamesi gerçekleştirir. İkame mekanizması aktive olduğunda, hangi yazı tipinin eksik olduğu, neyle değiştirildiği ve hangi belge üzerinde gerçekleştiği gibi hiçbir mesaj veya olay üretilmez. Bu özelliğin uygulanması zordur; çünkü hangi tür bildirimlerin, hangi formatta ve nasıl gönderileceği net değildir.
Buna rağmen GroupDocs.Viewer, bu durumu çözmek için iki olası yol sunar: eksik yazı tipini manuel olarak belirtmek ve eksik yazı tipini manuel olarak ikame etmek.
Eksik yazı tipini belirtme
Kullanıcı, bir belgenin “AAA” adlı bir yazı tipi kullandığını biliyorsa, hedef makinede bu “AAA” yazı tipinin kurulu olmadığını ve bu yazı tipinin ikili içeriğine sahipse, Viewer.View() metodunu çağırmadan önceden bu yazı tipini belirtebilir.
Kurulu olmayan özel yazı tiplerini belirtmek için kullanıcı özel yazı tipi kaynakları eklemelidir. Yazı tipi kaynağı, bir veya birden fazla yazı tipinin bulunduğu klasördür ve FolderFontSource sınıfı ile temsil edilir. FontSettings sınıfının SetFontSources() metodu, bu yazı tipi kaynaklarını GroupDocs.Viewer’a eklemek için kullanılır.
Aşağıdaki kod örneği bu adımları gösterir. “sample.docx” belgesinin, hedef işletim sisteminde kurulu olmayan nadir bir “AAA.ttf” yazı tipini kullandığını varsayalım. Kullanıcı bu dosyayı C:\custom_fonts klasörüne koyar ve bu klasöre işaret eden bir FolderFontSource örneği oluşturur. Bu örnek FontSettings sınıfına aktarılır ve ardından “sample.docx” dosyası HTML formatına render edilir. Sonuçta çıktı HTML belgesinde “AAA” yazı tipi kullanılacaktır.
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
using GroupDocs.Viewer.Fonts;
// ...
// Yazı tipi kaynağını belirt.
FolderFontSource fontSource =
new FolderFontSource(@"C:\custom_fonts", SearchOption.TopFolderOnly);
FontSettings.SetFontSources(fontSource);
using (Viewer viewer = new Viewer("sample.docx"))
{
// HTML dosyası oluştur.
HtmlViewOptions viewOptions = HtmlViewOptions.ForEmbeddedResources();
viewer.View(viewOptions);
}
Eksik yazı tipini değiştirme
Kullanıcı, bir belgenin “AAA” yazı tipini kullandığını biliyorsa, hedef makinede bu yazı tipinin kurulu olmadığını ancak ikili içeriğine erişimi yoksa, eksik “AAA” yerine başka bir yazı tipi “BBB” belirtebilir. Bu durum önceki örnekten farklıdır; çünkü görünüm seçenekleri aracılığıyla yapılır ve ardından bu seçenekler Viewer.View() metoduna iletilir.
Bu seçenek, DefaultFontName özelliğiyle tanımlanır; bu özellik, abstract sınıf BaseViewOptions içinde yer alır ve tüm render seçenekleri için ortaktır: HtmlViewOptions, PdfViewOptions, PngViewOptions ve JpgViewOptions.
Bu özellik ayarlandığında, GroupDocs.Viewer render sırasında mevcut olmayan her yazı tipinin yerine bu belirtilen yazı tipini kullanır. Örneğin, belgede İngilizce dışı karakterler içeren bir yazı tipi varsa, eksik yazı tiplerini aynı karakter setine sahip bir yazı tipiyle değiştirmek için DefaultFontName değerini belirtebilirsiniz. Tabii ki, DefaultFontName özelliğinde belirtilen yazı tipi, belgeyi render eden işletim sistemine kurulu olmalıdır.
Aşağıdaki kod örneği, varsayılan yazı tipi adının nasıl ayarlanacağını gösterir:
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
using (Viewer viewer = new Viewer("sample.pptx"))
{
// HTML belgeyi gömülü kaynaklarla render etmek için seçenek oluştur.
HtmlViewOptions viewOptions = HtmlViewOptions.ForEmbeddedResources();
// Seçeneklerde varsayılan bir yazı tipi adı belirt.
viewOptions.DefaultFontName = "Courier New";
// Giriş PPTX’i çıktı HTML’e render et.
viewer.View(viewOptions);
}
HTML için yazı tiplerini dışlama
Belgeler HTML formatına render edildiğinde, GroupDocs.Viewer varsayılan olarak kullanılan tüm yazı tiplerini HTML belgesine aktarır. Bu, izleyici cihazında gereken yazı tipleri bulunmasa dahi doğru görüntülenmesini sağlar. Yazı tipleri, sonuç HTML belgesinde dış kaynaklar olarak (HtmlViewOptions.ForExternalResources) saklanabilir veya data URI scheme üzerinden base64 kodlamasıyla (HtmlViewOptions.ForEmbeddedResources) doğrudan HTML işaretlemesine gömülebilir. Yazı tipi dışa aktarımı, neredeyse tüm yazı tipi desteği sunan belge formatları tarafından desteklenir: Microsoft Office (Excel dışındaki), OpenDocument formatları, e‑postalar, PDF, e‑Kitaplar vb.
Bazen bu özellik istenmez. Yazı tipleri eklendiğinde, oluşturulan HTML belgesinin boyutu belirgin şekilde artar. Eğer HTML belgesinin görüntüleneceği hedef makine veya cihaz tüm gerekli yazı tiplerini zaten kurulu ise, tarayıcı sistemde yüklü bu yazı tiplerini kullanabilir.
Bu ihtiyacı karşılamak için GroupDocs.Viewer, yazı tiplerini dışlama yeteneğine sahiptir ve bu iki şekilde yapılabilir: tüm yazı tiplerini dışlama ve sadece belirli yazı tiplerini dışlama.
Bu iki seçenek, HtmlViewOptions sınıfında farklı özellikler olarak sunulur:
ExcludeFontsbir bayraktır;trueolduğunda, üretilecek HTML belgesine kullanılan tüm yazı tiplerinin dışa aktarımı devre dışı bırakılır. Varsayılan değerfalse(devre dışı)’dır.FontsToExclude, dışlanacak yazı tipi adlarını içeren birstringlistesidir. Varsayılan olarak boş bir listedir – hiçbir yazı tipi dışlanmaz. Bu seçenek,ExcludeFontsözelliğifalseolduğunda çalışır.
Aşağıdaki iki kod örneği bu olasılıkları gösterir: ilki ExcludeFonts kullanımını, ikincisi ise FontsToExclude listesini gösterir.
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
using (Viewer viewer = new Viewer("sample.docx"))
{
// HTML dosyası oluştur.
var viewOptions = HtmlViewOptions.ForEmbeddedResources();
viewOptions.ExcludeFonts = true;
viewer.View(viewOptions);
}
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
using (Viewer viewer = new Viewer("presentation.pptx"))
{
// HTML dosyası oluştur.
var viewOptions = HtmlViewOptions.ForEmbeddedResources();
viewOptions.FontsToExclude.Add("Times New Roman"); // Times New Roman yazı tipini dışla.
viewOptions.FontsToExclude.Add("Arial"); // Arial yazı tipini dışla.
viewer.View(viewOptions);
}
Sonuç
GroupDocs.Viewer, farklı formatlardaki belgeleri yaygın “görüntülenebilir” formatlara — HTML, PDF, JPEG ve PNG — dönüştürmeye odaklanmıştır. Son dönemde ise yazı tipi işleme konusunda bir dizi kullanışlı özellik ekledik; bu özellikler sayesinde kullanılan yazı tiplerini inceleyebilir, dışa aktarımını ayarlayabilir ve yazı tipi ikamesini kontrol edebilirsiniz.
Ayrıca Bakınız
- Yüklenmiş belgede kullanılan tüm yazı tiplerini alma
- Özel yazı tipleri ayarlama
- Eksik yazı tipini değiştirme
- HTML’ye render ederken yazı tiplerini dışlama
Ücretsiz Deneme Alın
GroupDocs.Viewer for .NET’in ücretsiz deneme sürümünü releases.groupdocs.com adresinden indirebilirsiniz. Ayrıca buradan geçici bir lisans alarak tüm özellik ve işlevleri kısıtlama olmadan deneyebilirsiniz.