ফ্রি C# .NET লাইব্রেরি ফন্ট লোড, রিড ও ড্র করার জন্য
ওপেন সোর্স C# .NET লাইব্রেরি বিভিন্ন ধরনের ফন্ট যেমন TrueType, CFF, Woff, Woff2 এবং আরও অনেকের লোড, রিড ও ড্র করার জন্য।
ফন্টের সঙ্গে প্রোগ্রাম্যাটিকভাবে কাজ করার সময়, সফটওয়্যার ডেভেলপারদের প্রায়ই বিভিন্ন ফন্ট-সম্পর্কিত অপারেশন পরিচালনার জন্য শক্তিশালী টুল এবং লাইব্রেরির প্রয়োজন হয়। এমনই একটি শক্তিশালী ওপেন-সোর্স লাইব্রেরি যা ডেভেলপারদের মধ্যে জনপ্রিয়তা অর্জন করেছে তা হল SixLabors Fonts লাইব্রেরি। Fonts একটি খুবই উপকারী ওপেন-সোর্স C# .NET লাইব্রেরি, যা C# অ্যাপ্লিকেশনের মধ্যে বিভিন্ন ধরনের ফন্টের সঙ্গে কাজ করার জন্য বিস্তৃত কার্যকারিতা প্রদান করে। Six Labors টিম দ্বারা উন্নত, এই Fonts লাইব্রেরি ফন্ট হ্যান্ডলিং কাজগুলোকে সহজ করার এবং ডেভেলপারদের টাইপফেস প্রোগ্রাম্যাটিকভাবে ব্যবহার করা সহজ করার লক্ষ্য রাখে। ব্যবহারকারীরা ফন্ট লোড, রেন্ডার, মেজার বা ম্যানিপুলেট করতে চাইলে, Fonts লাইব্রেরি এই সব অপারেশনের জন্য একটি পরিষ্কার এবং স্বজ্ঞাত API প্রদান করে।
ওপেন সোর্স ফন্টস লাইব্রেরি ফন্ট ম্যানিপুলেশন এবং কাস্টমাইজেশনের জন্য বিভিন্ন ফিচার প্রদান করে, যা সফটওয়্যার ডেভেলপারদের তাদের অ্যাপ্লিকেশনে অনন্য এবং দৃষ্টিনন্দন টেক্সট উপাদান তৈরি করতে সক্ষম করে। লাইব্রেরির অংশ হিসেবে বেশ কিছু গুরুত্বপূর্ণ ফিচার রয়েছে, যেমন বিভিন্ন উৎস (পাথ, স্ট্রিম, অথবা এমবেডেড রিসোর্স) থেকে ফন্ট লোড করা, উচ্চমানের গ্লিফ রেন্ডারিং সক্ষমতা, সঠিক টেক্সট লেআউট এবং অ্যালাইনমেন্ট সম্পাদন, ইউনিকোড টেক্সট হ্যান্ডলিং, ফন্টগুলোকে কালেকশনে সংগঠিত করা এবং আরও অনেক কিছু।
ফন্টস লাইব্রেরি .NET স্ট্যান্ডার্ডের উপর নির্মিত, যা .NET কোর্স, .NET ফ্রেমওয়ার্ক, জ্যামারিন এবং মোনোসহ একাধিক প্ল্যাটফর্ম এবং ফ্রেমওয়ার্কের সাথে সামঞ্জস্যপূর্ণ করে। লাইব্রেরি একটি সহজ এবং স্বজ্ঞাত API প্রদান করে, যা সব স্তরের ডেভেলপারদের জন্য সহজলভ্য। আপনি ডেস্কটপ অ্যাপ্লিকেশন, ওয়েব সার্ভিস বা মোবাইল অ্যাপ তৈরি করুন না কেন, ফন্টস লাইব্রেরি আপনার সমস্ত ফন্ট ম্যানেজমেন্ট চাহিদার জন্য একটি দৃঢ় ভিত্তি প্রদান করে। তাই, একবার চেষ্টা করুন এবং ওপেন সোর্স ফন্টস লাইব্রেরি দিয়ে আপনার অ্যাপ্লিকেশনে সৃজনশীল ফন্টের জগৎ উন্মোচন করুন।
ফন্টের সাথে শুরু করা
ফন্টস ইনস্টল করার সুপারিশকৃত পদ্ধতি হল NuGet ব্যবহার করা। মসৃণ ইনস্টলেশনের জন্য দয়া করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
NuGet এর মাধ্যমে ফন্ট ইনস্টল করুন
PM > Install-Package SixLabors.Fonts –PreRelease
আপনি এটি ম্যানুয়ালি ইনস্টলও করতে পারেন; সর্বশেষ রিলিজ ফাইলগুলি সরাসরি GitHub রিপোজিটরি থেকে ডাউনলোড করুন।
C# অ্যাপের মধ্যে ফন্টের বিস্তারিত লোড ও পড়া
ওপেন সোর্স ফন্টস লাইব্রেরি সফটওয়্যার ডেভেলপারদের বিভিন্ন ধরনের ফন্ট লোড করতে এবং C# অ্যাপ্লিকেশনের মধ্যে এর সম্পূর্ণ বিবরণ প্রদর্শন করতে সক্ষম করে। লাইব্রেরিটি ফাইল পাথ, স্ট্রিম, এমবেডেড রিসোর্স ইত্যাদি সহ বিভিন্ন উৎস থেকে ফন্ট লোড করার সমর্থন দেয়। এই নমনীয়তা ডেভেলপারদের তাদের অ্যাপ্লিকেশনে ফন্ট লোডিং সহজে সংযুক্ত করতে সহায়তা করে। লাইব্রেরিটি TrueType ফন্ট, CFF1 আউটলাইন সহ OpenType ফন্ট, Woff, Woff2 ইত্যাদি নিয়ে কাজ করার সমর্থন প্রদান করে। নিম্নলিখিত উদাহরণটি C# কমান্ড ব্যবহার করে TTF ফন্টের বর্ণনা কীভাবে পড়তে হয় তা দেখায়।
C# API ব্যবহার করে ফন্টের বর্ণনা কীভাবে পড়বেন?
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# অ্যাপ্লিকেশনের মধ্যে ফন্ট সংগ্রহের সাথে কাজ করতে পারেন।
C# কোডের মাধ্যমে sFont সংগ্রহের সঙ্গে কীভাবে কাজ করবেন?
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);
}