API Manajemen Font .NET

Dalam [tipografi] digital 1, font menentukan gaya tertentu yang akan digunakan untuk penampilan karakter. Paling sering, font digunakan dalam dokumen dan halaman web untuk mengatur gaya teks. Setiap font dijelaskan dalam file yang berisi informasi tentang ukuran karakter, berat, gaya, serta penyandian. Karena font adalah bagian penting dari berbagai format file, Aspose menawarkan API khusus untuk menangani manipulasi dan rendering jenis font populer termasuk TrueType, CFF, OpenType, dan Tipe1. Pada artikel ini, Anda akan mempelajari cara memuat, menyimpan, dan mengekstrak informasi dari font menggunakan C# dengan Aspose.Font for .NET.

API Manipulasi Font .NET - Unduhan Gratis

Aspose.Font for .NET adalah API lokal yang memungkinkan Anda mengimplementasikan fitur manajemen font menggunakan C# dalam aplikasi .NET Anda. Selain memuat, menyimpan, dan mengekstraksi informasi dari font, API juga memungkinkan Anda merender glyph atau teks jika diperlukan. Anda dapat mengunduh API atau menginstalnya di dalam aplikasi .NET Anda menggunakan NuGet.

PM> Install-Package Aspose.Font

Muat atau Simpan Font Dari File menggunakan C#

Anda dapat memuat font dari file yang disimpan di penyimpanan digital Anda untuk mengambil informasi font. Aspose.Font for .NET memperlihatkan kelas terpisah untuk menangani jenis font tertentu yaitu CFF, TrueType, dll. Berikut ini adalah langkah-langkah untuk memuat dan menyimpan font.

  • Muat font dari file (menggunakan jalur file atau larik byte) menggunakan kelas FontDefinition.
  • Akses informasi font menggunakan kelas CffFont, TtfFont, atau Type1Font.
  • Simpan file (jika diperlukan).

Muat dan Simpan Font CFF

Contoh kode berikut menunjukkan cara memuat dan menyimpan font CFF menggunakan C#.

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
//array byte untuk memuat Font dari
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;

//Bekerja dengan data dari objek CffFont yang baru saja dimuat

//Simpan CffFont ke disk
//Keluarkan nama file Font dengan path lengkap
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

Muat dan Simpan Font TrueType

Contoh kode berikut menunjukkan cara memuat dan menyimpan font TrueType menggunakan C#.

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
//array byte untuk memuat Font dari
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;

//Bekerja dengan data dari objek TtfFont yang baru saja dimuat

//Simpan TtfFont ke disk
//Keluarkan nama file Font dengan path lengkap
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

Muat dan Simpan Font Type1

Contoh kode berikut menunjukkan cara memuat dan menyimpan font Type1 menggunakan C#.

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
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;

Ekstrak Metrik Font menggunakan C#

Aspose.Font for .NET juga memungkinkan Anda mengambil informasi metrik font seperti Ascender, Descender, TypoAscender, TypoDescender, dan UnitsPerEm. Berikut ini adalah langkah-langkah untuk melakukannya.

  • Gunakan kelas FontDefinition untuk memuat font TrueType atau Type1 dari file.
  • Buka font menggunakan kelas jenis font masing-masing yaitu Type1Font, TtfFont, dll.
  • Akses informasi metrik font.

Contoh kode berikut menunjukkan cara mengekstrak metrik font dari font TrueType dan Type1 menggunakan C#.

Ekstrak Metrik dari TrueType Font

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
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);

//Dapatkan tabel encoding unicode cmap dari font sebagai objek TtfCMapFormatBaseTable untuk mengakses informasi tentang font glyph untuk simbol 'A'.
//Periksa juga apakah font memiliki objek TtfGlyfTable (tabel 'glyf') untuk mengakses mesin terbang.
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);

    //Kode untuk simbol 'A'
    char unicode = (char)65;

    //Indeks mesin terbang untuk 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //Mesin terbang untuk 'A'
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //Cetak metrik mesin terbang
            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)));
        }
    }
}

Ekstrak Metrik dari Font Type1

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
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);

Deteksi Simbol Latin dalam Font menggunakan C#

Anda juga dapat mendeteksi teks Latin dalam font dengan mendekode kode mesin terbang menggunakan Aspose.Font for .NET. Berikut ini adalah langkah-langkah untuk melakukan operasi ini.

  • Muat Font dari file menggunakan kelas FontDefinition.
  • Dekode GlyphId menggunakan metode DecodeToGid() dari kelas font masing-masing.

Contoh kode berikut menunjukkan cara mendekode simbol Latin dalam font TrueType dan Type1 menggunakan C#.

Deteksi Simbol Latin di TrueType Font

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
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));
}

Deteksi Simbol Latin di Font Type1

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-font/Aspose.Font-for-.NET
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));
}

Kesimpulan

Pada artikel ini, Anda telah melihat cara memuat dan menyimpan font CFF, TrueType, dan Type1 secara terprogram menggunakan C#. Selain itu, Anda telah mempelajari cara mengekstrak informasi metrik font dari font TrueType dan Type1 dalam aplikasi .NET Anda. Anda dapat menjelajahi lebih banyak fitur menarik yang ditawarkan oleh Aspose.Font for .NET di dokumentasi. Untuk pembaruan lainnya, terus kunjungi Aspose.Font blog.