.NET Yazı Tipi Yönetimi API'sı

Dijital tipografide yazı tipleri, karakterlerin görünümü için kullanılacak belirli stilleri tanımlar. Çoğu zaman yazı tipleri, belgelerde ve web sayfalarında metne stil vermek için kullanılır. Her yazı tipi, karakterlerin boyutu, ağırlığı, stilleri ve kodlaması hakkında bilgi içeren bir dosyada açıklanmıştır. Yazı tipleri, çeşitli dosya biçimlerinin önemli bir parçası olduğundan, Aspose, TrueType, CFF, OpenType gibi popüler yazı tipi türlerinin işlenmesi ve işlenmesi için özel bir API sunmaktadır. ve Tip1. Bu makalede, Aspose.Font for .NET ile C# kullanarak yazı tiplerinden bilgi yüklemeyi, kaydetmeyi ve çıkarmayı öğreneceksiniz.

.NET Font Manipülasyon API’si - Ücretsiz İndirme

Aspose.Font for .NET, .NET uygulamalarınızda C# kullanarak yazı tipi yönetimi özelliklerini uygulamanıza izin veren şirket içi bir API’dir. Yazı tipinden yükleme, kaydetme ve bilgi çıkarmanın yanı sıra API, gerekirse glifi veya metni oluşturmanıza da olanak tanır. API’yi indirebilir veya NuGet kullanarak .NET uygulamalarınıza kurabilirsiniz.

PM> Install-Package Aspose.Font

C# Kullanarak Dosyadan Yazı Tiplerini Yükleme veya Kaydetme

Yazı tipi bilgilerini almak için dijital depolama alanınızda saklanan dosyadan bir yazı tipi yükleyebilirsiniz. Aspose.Font for .NET, CFF, TrueType, vb. gibi belirli yazı tipleriyle başa çıkmak için ayrı sınıflar sunar. Aşağıda bir yazı tipi yüklemek ve kaydetmek için gereken adımlar yer almaktadır.

  • FontDefinition sınıfını kullanarak dosyadan yazı tipini yükleyin (dosyanın yolunu veya bayt dizisini kullanarak).
  • CffFont, TtfFont veya Type1Font sınıfını kullanarak yazı tipi bilgilerine erişin.
  • Dosyayı kaydedin (gerekirse).

CFF Yazı Tipini Yükleyin ve Kaydedin

Aşağıdaki kod örneği, C# kullanarak CFF yazı tiplerinin nasıl yüklenip kaydedileceğini gösterir.

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
//Yazı tipinin yükleneceği bayt dizisi
string dataDir = RunExamples.GetDataDir_Data();

byte[] fontMemoryData = File.ReadAllBytes(dataDir + "OpenSans-Regular.cff");
FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData)));
CffFont cffFont = Aspose.Font.Font.Open(fd) as CffFont;

//Yeni yüklenen CffFont nesnesinden alınan verilerle çalışın

//CffFont'u diske kaydet
//Tam yol ile Çıktı Yazı tipi dosya adı
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

TrueType Yazı Tipini Yükleyin ve Kaydedin

Aşağıdaki kod örneği, C# kullanarak TrueType yazı tiplerinin nasıl yüklenip kaydedileceğini gösterir.

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
//Yazı tipinin yükleneceği bayt dizisi
string dataDir = RunExamples.GetDataDir_Data();
            
byte[] fontMemoryData = File.ReadAllBytes(dataDir + "Montserrat-Regular.ttf");
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new ByteContentStreamSource(fontMemoryData)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

//Yeni yüklenen TtfFont nesnesinden alınan verilerle çalışın

//TtfFont'u diske kaydet
//Tam yol ile Çıktı Yazı tipi dosya adı
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

Type1 Yazı Tipini Yükle ve Kaydet

Aşağıdaki kod örneği, C# kullanarak Type1 yazı tiplerinin nasıl yüklenip kaydedileceğini gösterir.

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

C# kullanarak Font Metriklerini Ayıkla

Aspose.Font for .NET ayrıca Ascender, Descender, TypoAscender, TypoDescender ve UnitsPerEm gibi yazı tipi metrik bilgilerini almanıza olanak tanır. Bunu yapmak için gereken adımlar aşağıdadır.

  • TrueType veya Type1 yazı tipini dosyadan yüklemek için FontDefinition sınıfını kullanın.
  • Type1Font, TtfFont, vb. gibi ilgili yazı tipi sınıfını kullanarak yazı tipini açın.
  • Yazı tipinin ölçüm bilgilerine erişin.

Aşağıdaki kod örnekleri, C# kullanarak TrueType ve Type1 yazı tiplerinden yazı tipi ölçülerinin nasıl çıkarılacağını gösterir.

TrueType Yazı Tipinden Metrikleri Çıkarın

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = Aspose.Font.Font.Open(fd) as TtfFont;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

//'A' sembolü için yazı tipi glifi hakkındaki bilgilere erişmek için yazı tipinden TtfCMapFormatBaseTable nesnesi olarak cmap unicode kodlama tablosunu alın.
//Ayrıca glif'e erişmek için fontun TtfGlyfTable (tablo 'glyf') nesnesine sahip olduğunu kontrol edin.
Aspose.Font.TtfCMapFormats.TtfCMapFormatBaseTable cmapTable = null;
if (font.TtfTables.CMapTable != null)
{
    cmapTable = font.TtfTables.CMapTable.FindUnicodeTable();
}
if (cmapTable != null && font.TtfTables.GlyfTable != null)
{
    Console.WriteLine("Font cmap unicode table: PlatformID = " + cmapTable.PlatformId + ", PlatformSpecificID = " + cmapTable.PlatformSpecificId);

    //'A' sembolü için kod
    char unicode = (char)65;

    //'A' için glif dizini
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //'A' için glif
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //Glif ölçümlerini yazdır
            Console.WriteLine("Glyph metrics for 'A' symbol:");
            string bbox = string.Format(
                "Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
                glyph.GlyphBBox.XMin, glyph.GlyphBBox.XMax,
                glyph.GlyphBBox.YMin, glyph.GlyphBBox.YMax);
            Console.WriteLine(bbox);
            Console.WriteLine("Width:" + font.Metrics.GetGlyphWidth(new GlyphUInt32Id(glIndex)));
        }
    }
}

Type1 Yazı Tipinden Metrikleri Çıkarın

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

C# kullanarak Yazı Tiplerindeki Latin Sembollerini Algıla

Aspose.Font for .NET kullanarak glif kodlarının kodunu çözerek yazı tiplerindeki Latince metni de tespit edebilirsiniz. Aşağıda bu işlemi gerçekleştirmek için adımlar verilmiştir.

  • FontDefinition sınıfını kullanarak dosyadan Fontu yükleyin.
  • İlgili yazı tipi sınıfının DecodeToGid() yöntemini kullanarak GlyphId kodunu çözün.

Aşağıdaki kod örnekleri, C# kullanarak TrueType ve Type1 yazı tiplerindeki Latin sembollerinin kodunun nasıl çözüleceğini gösterir.

TrueType Yazı Tipinde Latin Sembollerini Algıla

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = ttfFont.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", ttfFont.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", ttfFont.FontName));
}

Type1 Yazı Tipinde Latin Sembollerini Algıla

// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-font/Aspose.Font-for-.NET adresine gidin.
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = font.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", font.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", font.FontName));
}

Çözüm

Bu yazıda, C# kullanarak programlı olarak CFF, TrueType ve Type1 yazı tiplerini yüklemeyi ve kaydetmeyi gördünüz. Ayrıca, .NET uygulamalarınızdaki TrueType ve Type1 yazı tiplerinden yazı tipi ölçüm bilgilerini nasıl çıkaracağınızı öğrendiniz. Aspose.Font for .NET tarafından sunulan daha ilginç özellikleri dokümantasyonda keşfedebilirsiniz. Daha fazla güncelleme için Aspose.Font’u blog ziyaret etmeye devam edin.