کتابخانه رایگان C# .NET برای بارگذاری، خواندن و رسم قلمها
کتابخانه منبع باز C# .NET برای بارگذاری، خواندن و رسم انواع مختلف قلمها مانند TrueType، CFF، Woff، Woff2 و بسیاری دیگر.
هنگامی که صحبت از کار با قلمها بهصورت برنامهنویسی میشود، توسعهدهندگان نرمافزار اغلب به ابزارها و کتابخانههای قدرتمندی برای مدیریت عملیات مختلف مرتبط با قلم نیاز دارند. یکی از این کتابخانههای منبع باز قدرتمند که در میان توسعهدهندگان محبوبیت یافته است، کتابخانه SixLabors Fonts است. Fonts یک کتابخانه منبع باز بسیار مفید برای C# .NET است که مجموعهای جامع از قابلیتها را برای کار با انواع مختلف قلمها در برنامههای C# فراهم میکند. این کتابخانه توسط تیم Six Labors توسعه یافته و هدف آن سادهسازی وظایف مربوط به مدیریت قلم و آسانتر کردن کار توسعهدهندگان با نوعخطها بهصورت برنامهنویسی است. چه کاربران نیاز به بارگذاری، رندر، اندازهگیری یا دستکاری قلمها داشته باشند، کتابخانه Fonts یک API تمیز و شهودی برای تمام این عملیات ارائه میدهد.
کتابخانه متنباز Fonts چندین ویژگی برای دستکاری و سفارشیسازی قلمها فراهم میکند که به توسعهدهندگان نرمافزار امکان میدهد عناصر متنی منحصربهفرد و بصری جذاب را در برنامههای خود ایجاد کنند. ویژگیهای مهمی در این کتابخانه وجود دارد، از جمله بارگذاری قلمها از منابع مختلف (مسیرها، جریانها یا منابع جاسازیشده)، قابلیتهای رندرینگ گلیف با کیفیت بالا، انجام چیدمان دقیق متن و تراز کردن، پردازش متن یونیکد، سازماندهی قلمها در مجموعهها و موارد دیگر.
کتابخانه Fonts بر پایه .NET Standard ساخته شده است، بهطوری که با چندین پلتفرم و چارچوب، از جمله .NET Core، .NET Framework، Xamarin و Mono سازگار است. این کتابخانه API ساده و شهودی ارائه میدهد که برای توسعهدهندگان با هر سطح مهارتی قابل دسترسی است. چه در حال ساخت یک برنامه دسکتاپ، سرویس وب یا برنامه موبایل باشید، کتابخانه Fonts پایهای محکم برای تمام نیازهای مدیریت قلم شما فراهم میکند. پس آن را امتحان کنید و دنیای خلاقانه قلمها را در برنامههای خود با کتابخانه متنباز Fonts باز کنید.
شروع کار با قلمها
روش پیشنهادی برای نصب فونتها استفاده از NuGet است. لطفاً برای نصب روان از دستور زیر استفاده کنید.
نصب قلمها از طریق NuGet
PM > Install-Package SixLabors.Fonts –PreRelease
همچنین میتوانید بهصورت دستی نصب کنید؛ فایلهای آخرین نسخه را مستقیماً از مخزن GitHub دانلود کنید.
بارگذاری و خواندن جزئیات قلم در برنامههای C#
کتابخانه متنباز فونتها به توسعهدهندگان نرمافزار امکان بارگذاری انواع مختلف فونتها و نمایش جزئیات کامل آنها را در برنامههای C# میدهد. این کتابخانه از بارگذاری فونتها از منابع مختلفی شامل مسیرهای فایل، جریانها، منابع جاسازیشده و موارد دیگر پشتیبانی میکند. این انعطافپذیری به توسعهدهندگان اجازه میدهد تا بارگذاری فونت را بهصورت یکپارچه در برنامههای خود ادغام کنند. کتابخانه از کار با فونتهای TrueType، فونتهای OpenType با خطوط CFF1، Woff، Woff2 و غیره پشتیبانی میکند. مثال زیر نشان میدهد چگونه میتوان توضیحاتی درباره فونت TTF را با استفاده از دستورات C# خواند.
چگونه توصیف قلم را با استفاده از API C# بخوانیم؟
FontDescription description = null;
using(var fs = File.OpenRead("Font.ttf")){
description = FontDescription.Load(fs); // once it has loaded the data the stream is no longer required and can be disposed of
}
string name = description.FontName(CultureInfo.InvariantCulture);
پشتیبانی از مجموعههای قلمها از طریق C#
کتابخانه منبع باز Fonts به توسعهدهندگان نرمافزار امکان سازماندهی فونتها در مجموعهها را میدهد، بهطوری که مدیریت و جابجایی بین خانوادهها و سبکهای مختلف فونت آسانتر شود. تنها با چند خط کد، توسعهدهندگان میتوانند مجموعههای سفارشی فونت ایجاد کنند. این کتابخانه همچنین پشتیبانی از ویژگیهای پیشرفته OpenType شامل جایگزینی گلیف (GSUB) و موقعیتیابی گلیف (GPOS) را فراهم کرده است. مثال زیر نشان میدهد که چگونه توسعهدهندگان میتوانند با مجموعههای فونت در برنامههای C# کار کنند.
چگونه با مجموعه sFont از طریق کد C# کار کنیم؟
using SixLabors.Fonts;
FontCollection collection = new();
collection.Add("path/to/font.ttf");
collection.Add("path/to/font2.ttf");
collection.Add("path/to/emojiFont.ttf");
collection.AddCollection("path/to/font.ttc");
if(collection.TryFind("Font Name", out FontFamily family))
if(collection.TryFind("Emoji Font Name", out FontFamily emojiFamily))
{
// family will not be null here
Font font = family.CreateFont(12, FontStyle.Italic);
// TextOptions provides comprehensive customization options support
TextOptions options = new(font)
{
// Will be used if a particular code point doesn't exist in the font passed into the constructor. (e.g. emoji)
FallbackFontFamilies = new [] { emojiFamily }
};
FontRectangle rect = TextMeasurer.Measure("Text to measure", options);
}