NET Font Management API

در دیجیتال تایپوگرافی، فونت‌ها سبک‌های خاصی را برای ظاهر کاراکترها تعریف می‌کنند. اغلب از فونت ها در اسناد و صفحات وب برای سبک سازی متن استفاده می شود. هر فونت در یک فایل توضیح داده شده است که حاوی اطلاعاتی در مورد اندازه، وزن، سبک و همچنین رمزگذاری کاراکترها است. از آنجایی که فونت ها بخش مهمی از فرمت های مختلف فایل هستند، Aspose یک API اختصاصی برای مقابله با دستکاری و ارائه انواع فونت های محبوب از جمله TrueType، CFF، OpenType ارائه می دهد. و Type1. در این مقاله، نحوه بارگیری، ذخیره و استخراج اطلاعات از فونت ها با استفاده از سی شارپ با Aspose.Font for .NET را خواهید آموخت.

.NET Font Manipulation API - دانلود رایگان

Aspose.Font for .NET یک API داخلی است که به شما امکان می دهد ویژگی های مدیریت فونت را با استفاده از C# در برنامه های NET خود پیاده سازی کنید. همراه با بارگیری، ذخیره و استخراج اطلاعات از فونت، API همچنین به شما امکان می دهد در صورت نیاز، گلیف یا متن را رندر کنید. می‌توانید API را دانلود یا در برنامه‌های NET خود با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.Font

بارگیری یا ذخیره فونت ها از فایل با استفاده از C#

می توانید یک فونت را از فایل ذخیره شده در حافظه دیجیتال خود برای بازیابی اطلاعات فونت بارگذاری کنید. Aspose.Font برای دات نت کلاس های جداگانه ای را برای مقابله با انواع خاصی از فونت ها مانند CFF، TrueType و غیره در معرض دید قرار می دهد. مراحل زیر برای بارگیری و ذخیره فونت آمده است.

  • فونت را از فایل بارگیری کنید (با استفاده از مسیر فایل یا آرایه بایت) با استفاده از کلاس FontDefinition.
  • با استفاده از کلاس CffFont، TtfFont یا Type1Font به اطلاعات فونت دسترسی پیدا کنید.
  • فایل را ذخیره کنید (در صورت نیاز).

فونت CFF را بارگیری و ذخیره کنید

نمونه کد زیر نحوه بارگذاری و ذخیره فونت های CFF با استفاده از C# را نشان می دهد.

// برای نمونه‌های کامل و فایل‌های داده، لطفاً به https://github.com/aspose-font/Aspose.Font-for-.NET بروید
//آرایه بایتی برای بارگیری قلم از
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;

//با داده های شی CffFont که به تازگی بارگذاری شده است کار کنید

//CffFont را در دیسک ذخیره کنید
//نام فایل فونت خروجی با مسیر کامل
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

فونت TrueType را بارگیری و ذخیره کنید

نمونه کد زیر نحوه بارگیری و ذخیره فونت های TrueType را با استفاده از C# نشان می دهد.

// برای نمونه‌های کامل و فایل‌های داده، لطفاً به https://github.com/aspose-font/Aspose.Font-for-.NET بروید
//آرایه بایتی برای بارگیری قلم از
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;

//با داده های موجود از شی TtfFont که به تازگی بارگذاری شده است کار کنید

//TtfFont را روی دیسک ذخیره کنید
//نام فایل فونت خروجی با مسیر کامل
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

فونت Type1 را بارگیری و ذخیره کنید

نمونه کد زیر نحوه بارگیری و ذخیره فونت های Type1 را با استفاده از C# نشان می دهد.

// برای نمونه‌های کامل و فایل‌های داده، لطفاً به 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;

استخراج متریک فونت با استفاده از سی شارپ

Aspose.Font for .NET همچنین به شما امکان می دهد اطلاعات متریک فونت مانند Ascender، Descender، TypoAscender، TypoDescender و UnitsPerEm را بازیابی کنید. در زیر مراحل انجام این کار آمده است.

  • از کلاس FontDefinition برای بارگیری فونت TrueType یا Type1 از فایل استفاده کنید.
  • فونت را با استفاده از کلاس نوع فونت مربوطه مانند Type1Font، TtfFont و غیره باز کنید.
  • به اطلاعات متریک فونت دسترسی پیدا کنید.

نمونه کد زیر نحوه استخراج متریک فونت از فونت های TrueType و Type1 را با استفاده از C# نشان می دهد.

استخراج معیارها از فونت TrueType

// برای نمونه‌های کامل و فایل‌های داده، لطفاً به 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);

//جدول رمزگذاری یونیکد cmap را از فونت به عنوان شی TtfCMapFormatBaseTable دریافت کنید تا به اطلاعات مربوط به علامت قلم برای نماد "A" دسترسی داشته باشید.
//همچنین بررسی کنید که فونت دارای شیء TtfGlyfTable (جدول 'glyf') برای دسترسی به حروف باشد.
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".
    char unicode = (char)65;

    //شاخص گلیف برای 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //گلیف برای "A"
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //چاپ معیارهای علامت
            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 استخراج کنید

// برای نمونه‌های کامل و فایل‌های داده، لطفاً به 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);

تشخیص نمادهای لاتین در فونت ها با استفاده از C#

همچنین می توانید با رمزگشایی کدهای گلیف با استفاده از Aspose.Font برای دات نت، متن لاتین را در فونت ها تشخیص دهید. مراحل زیر برای انجام این عملیات آورده شده است.

  • با استفاده از کلاس FontDefinition فونت را از فایل بارگیری کنید.
  • GlyphId را با استفاده از متد DecodeToGid() کلاس فونت مربوطه رمزگشایی کنید.

نمونه کد زیر نحوه رمزگشایی نمادهای لاتین در فونت های TrueType و Type1 را با استفاده از C# نشان می دهد.

تشخیص نمادهای لاتین در فونت TrueType

// برای نمونه های کامل و فایل های داده، لطفاً به 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));
}

تشخیص نمادهای لاتین در فونت Type1

// برای نمونه‌های کامل و فایل‌های داده، لطفاً به 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));
}

نتیجه

در این مقاله نحوه بارگذاری و ذخیره فونت های CFF، TrueType و Type1 را به صورت برنامه نویسی با استفاده از سی شارپ مشاهده کرده اید. علاوه بر این، یاد گرفته‌اید که چگونه اطلاعات متریک فونت را از فونت‌های TrueType و Type1 در برنامه‌های NET خود استخراج کنید. می‌توانید ویژگی‌های جالب‌تری را که توسط Aspose.Font برای دات‌نت ارائه می‌شود در مستندات کاوش کنید. برای به‌روزرسانی‌های بیشتر، به Aspose.Font blog مراجعه کنید.