If you’ve ever built a Windows Forms application and tested it on a high‑DPI monitor (4K, 125%, 150%, 200% scaling), you’ve witnessed the icon blur. A beautifully designed 32×32 pixel icon becomes a smeared, fuzzy mess the moment the operating system tries to stretch it to match the screen’s scaling factor.
This isn’t a bug in your code – it’s a fundamental limitation of raster (bitmap) image formats like .png and .ico.
A PNG or ICO file stores an icon as a fixed grid of colored pixels. At 100% DPI (96 DPI standard), every pixel maps perfectly to a physical screen pixel. But modern screens have much higher pixel densities. To keep UI elements physically the same size, Windows tells applications to render at a larger logical scale – for example, 150% means every control (and every icon) must be drawn 1.5× larger.
With a bitmap, there is no extra detail beyond the original grid. The graphics engine must interpolate – guess what the extra pixels should look like. This interpolation creates:
- Blur and softness: edges become undefined.
- Jagged “stair‑step” artifacts: diagonal lines look pixelated.
- Inconsistent appearance: icons designed at 16×16 look completely different from those forced to render at 24×24 or 32×32.
Even the common “multi‑resolution ICO” trick (embedding several fixed sizes like 16×16, 32×32, 48×48) fails at fractional scaling values like 125% or 175%, because the scaling factor rarely matches an exact pre‑made size. The result is always a compromise.
إذا قمت سابقاً ببناء تطبيق Windows Forms وجربته على شاشة عالية الدقة (4K، أو إعدادات تكبير مثل 125% أو 150% أو 200%)، فأنت بالتأكيد لاحظت ضبابية الأيقونات. أيقونة صممت بدقة 32×32 بكسل تتحول إلى فوضى مشوشة عندما يحاول النظام تمديدها لتتناسب مع معامل التكبير.
هذا ليس خطأً في كودك – بل هو قصور جوهري في الصيغ النقطية (Bitmap) مثل PNG و ICO.
ملف PNG أو ICO يخزّن الأيقونة على هيئة شبكة ثابتة من البكسلات الملوّنة. عند دقة 100% (96 DPI)، كل بكسل يقابل تماماً بكسل شاشة حقيقي. لكن الشاشات الحديثة تملك كثافة بكسلات أعلى بكثير. وللحفاظ على الحجم الفعلي للعناصر، يطلب ويندوز من التطبيقات أن ترسم بمقياس منطقي أكبر – مثلاً 150% تعني أن كل عنصر (وكل أيقونة) يجب رسمه بحجم 1.5 ضعف.
مع الصورة النقطية، لا توجد تفاصيل إضافية خارج الشبكة الأصلية. محرك الرسم يضطر إلى الاستكمال (Interpolation) – أي تخمين كيف يجب أن تبدو البكسلات الإضافية. هذا الاستكمال ينتج عنه:
- ضبابية وتلاشي: الحواف تصبح غير محددة.
- تشوهات (Stair‑step): الخطوط القطرية تبدو مكعبة.
- مظهر غير متجانس: أيقونات 16×16 تبدو مختلفة تماماً عند رسمها بحجم 24×24 أو 32×32.
حتى حيلة الأيقونات متعددة الأحجام (ICO تحتوي على عدة طبقات 16×16، 32×32، 48×48) تفشل عند معاملات تكبير كسرية مثل 125% أو 175%، لأن المعامل نادراً ما يطابق أحد الأحجام الجاهزة. والنتيجة دائماً حل وسط غير مرضٍ.
Icon fonts (.ttf / .otf) solve every scaling problem mentioned above by design. Instead of storing pixels, they store mathematical outlines – just like the system fonts you use for text (Segoe UI, Arial, etc.).
- Infinite resolution: A vector outline is resolution‑independent. When you render it at 16pt, 64pt, or 256pt, the operating system recalculates the exact shape using the same mathematical curves. The result is perfect sharpness at any DPI level – no interpolation, no blur.
- Sub‑pixel rendering: Modern font engines apply anti‑aliasing (ClearType) that leverages the physical arrangement of LCD sub‑pixels, making icon edges even smoother and more readable than a bitmap could ever achieve.
- Consistency across the entire application: Because icon fonts are rendered by the same text layout engine as labels and buttons, they automatically respect the system’s DPI settings. You set a font size in points, and the system handles the rest.
- Scalability (Flexibility when resizing): Raster images (such as PNG or ICO files) come in fixed sizes; if you try to scale them up or down, they do not adapt well because their dimensions are predetermined. In contrast, using an icon font offers complete flexibility during application development, as the icons are treated just like standard characters.
When you use a custom icon font in a Windows Forms application, you must deliver the font file (.ttf / .otf) to every user’s machine so that the operating system can render the icons. How you deliver it directly impacts security, reliability, and maintenance.
Fonts are normally stored in C:\Windows\Fonts and are available to all applications. To make a custom font available, you have three options:
| Approach | Problems |
|---|---|
| 1. Install font globally | - Requires administrator rights (UAC prompt). - Pollutes the system font folder permanently. - May conflict with other versions of the same font. - Uninstalling your app does not remove the font. - Breaks on locked‑down corporate environments. |
| 2. Ship font as a loose file | - The .ttf must be placed next to the .exe – easy to delete or lose.- Network deployments and shortcuts break if the file is missing. - Extra file means extra support headaches. |
| 3. Embed font as resource | ✅ No admin rights needed. ✅ Single‑file deployment – font lives inside the .exe.✅ Impossible to lose or misplace. ✅ Isolated – no other app can see or interfere with it. ✅ Clean uninstall – nothing left behind. |
Embedding the font as a binary resource inside your .exe works by loading the font data directly into unmanaged memory and registering it with GDI+ via PrivateFontCollection.AddMemoryFont. The font exists only in the memory of your process and is completely invisible to the rest of the system. This technique:
- Bypasses the need for administrator elevation – no setup, no UAC pop‑ups.
- Guarantees the exact version of the font you tested with – no risk of a user replacing it with an incompatible copy.
- Enables true single‑file deployments (xcopy, ClickOnce, MSIX) with no external dependencies.
- Keeps the user’s system clean – the font disappears when the application exits.
⚠️ Critical implementation note: The memory block holding the font data must not be freed until thePrivateFontCollectionis disposed. Premature cleanup causes rendering crashes. Our architecture uses deferred cleanup (tracking allIntPtrpointers and freeing them only on application exit) to guarantee safety.
- Zero installation on the client machine: By embedding the font file directly inside your
.exeas a resource, you bypass the need to install anything in the Windows Fonts folder. The font is loaded entirely from memory and stays private to your application. - Single‑file deployment: The icon set travels with your executable – no extra PNG files to lose or mismanage.
- Flexibility: You can change the icon color, size, or even apply text effects (bold, outline) just by modifying the
Fontobject’s properties. No need to ask a designer for a new asset file.
- دقة غير محدودة: المخطط المتجهي Vector مستقل عن الدقة. عندما ترسمه بحجم 16 أو 64 أو 256 نقطة، يعيد النظام حساب الشكل بدقة باستخدام نفس المنحنيات الرياضية. والنتيجة حدة كاملة عند أي مستوى DPI – بلا استكمال ولا ضبابية.
- عرض تحت البكسلي (Sub‑pixel): محركات الخطوط الحديثة تطبق صقل الحواف (ClearType) الذي يستغل الترتيب الفيزيائي للبكسلات الثانوية في شاشات LCD، مما يجعل حواف الأيقونة أكثر نعومة وقراءةً مما يمكن لأي صورة نقطية تحقيقه.
- تجانس تام عبر التطبيق: لأن خطوط الأيقونات ترسم بواسطة نفس محرك تنسيق النصوص، فهي تحترم تلقائياً إعدادات DPI للنظام. أنت تحدد حجم الخط بالنقاط، والنظام يتولى الباقي.
- مرونة عند التكبير والتصغير: إذا كانت لديك صورة نقطية من النوع png أو ico فهي تأتي بحجم محدد مسبقاً وإذا أردت تكبيرها أو تصغيرها فهي لا تستجيب بشكل جيد لأن أبعادها مقيدة، ولكن عند استخدام خط يحتوي على الأيقونات فستحصل على مرونة كاملة في عملية تطوير التطبيقات لأنك ستعامل الأيقونات وكأنها حروف عادية.
🌐 مشكلة تضمين الخط: لماذا تضمين الخط داخل ملف .exe مهم بدلاً من الاعتماد على خطوط الويندوز المثبتة مسبقاً؟
عندما تستخدم خط أيقونات مخصصاً في تطبيق Windows Forms، يجب أن يصل ملف الخط (.ttf / .otf) إلى جهاز كل مستخدم ليتمكن النظام من رسم الأيقونات. الطريقة التي تختارها للتوصيل تؤثر مباشرة على الأمان والموثوقية والصيانة.
الخطوط عادةً ما تخزن في C:\Windows\Fonts وتكون متاحة لجميع التطبيقات. هناك ثلاث طرق لجعل خط مخصص متاحاً:
| الطريقة | المشاكل |
|---|---|
| 1. تثبيت الخط بشكل نظامي | - يتطلب صلاحيات مدير (ظهور UAC). - يلوث مجلد خطوط النظام بشكل دائم. - قد يتعارض مع نسخ أخرى من نفس الخط من برامج أخرى. - إزالة التطبيق لا تزيل الخط – يضطر المستخدم للتنظيف يدوياً. - يفشل في بيئات الشركات المقفلة حيث يُمنع تثبيت الخطوط. |
| 2. توزيع الخط كملف منفصل | - يجب أن يوضع بجانب .exe – سهل الحذف أو التغيير أو الضياع.- الانتشار الشبكي والاختصارات تنكسر إذا اختفى الملف. - ملف إضافي يعني صداع دعم فني إضافي. |
| 3. تضمين الخط كمورد | ✅ لا حاجة لصلاحيات مدير. ✅ نشر أحادي الملف – الخط يعيش داخل .exe.✅ مستحيل ضياعه أو تغييره. ✅ معزول – لا تطبيق آخر يمكنه رؤية الخط أو التداخل معه. ✅ إزالة نظيفة – لا يترك أثراً بعد الحذف. |
تضمين الخط كمورد ثنائي داخل .exe يتم عبر تحميل بيانات الخط إلى ذاكرة غير مدارة وتسجيلها مع GDI+ باستخدام PrivateFontCollection.AddMemoryFont. الخط يوجد فقط في ذاكرة عمليتك وهو غير مرئي تماماً لبقية النظام. هذا الأسلوب:
- يتجاوز الحاجة لصلاحيات المسؤول – لا تنصيب، ولا نوافذ UAC منبثقة.
- يضمن النسخة الدقيقة التي اختبرتها – لا خطر من استبدال المستخدم لها بنسخة غير متوافقة.
- يمكّن النشر الحقيقي أحادي الملف (xcopy، ClickOnce، MSIX) بدون أي ارتباطات خارجية.
- يحافظ على نظام المستخدم نظيفاً – الخط يختفي عند خروج التطبيق.
⚠️ ملاحظة تنفيذية حرجة: كتلة الذاكرة التي تحوي بيانات الخط يجب ألا تُحرّر قبل التخلص منPrivateFontCollection. التحرير المبكر يسبب أعطالاً في الرسم. بنيتنا تستخدم التنظيف المؤجل (تتبع جميع مؤشراتIntPtrوتحريرها فقط عند خروج التطبيق) لضمان السلامة الكاملة.
- صفر تثبيت على جهاز العميل: عبر تضمين ملف الخط كمورد داخل
.exe، تتجاوز الحاجة لتثبيت أي شيء في مجلد الخطوط. يُحمّل الخط بالكامل من الذاكرة ويبقى خاصاً بتطبيقك. - نشر أحادي الملف: مجموعة الأيقونات تسافر داخل الملف التنفيذي – لا ملفات PNG ضائعة أو منسية.
- مرونة: تستطيع تغيير لون الأيقونة أو حجمها أو حتى تطبيق تأثيرات (خط عريض، حدود) بمجرد تعديل خصائص كائن
Font. لا حاجة لطلب ملف جديد من المصمم.
Before writing code, the font file (.ttf or .otf) must be bundled inside the application executable.
قبل كتابة الكود، يجب دمج ملف الخط داخل ملف التطبيق التنفيذي عبر الخطوات التالية:
- In Solution Explorer, right-click the project and select Properties.
- Go to Resources; if it does not exist, click the link to create it.
- Click the Add Resource drop-down menu and select Add Existing File… (or click the + icon).
- In the file selection window, change the file type filter to All Files or Font Files and select your font. Your font is now included in the project resources.
- من Solution Explorer، اضغط بزر الفأرة الأيمن على المشروع واختر Properties.
- اذهب إلى تبويب Resources، وإذا لم يكن موجوداً اضغط على الرابط لإنشائه.
- اضغط على القائمة المنسدلة Add Resource واختر Add Existing File… أو اضغط على علامة +.
- في نافذة اختيار الملف، غيّر فلتر النوع إلى اختيار كافة الملفات ومن ثم قم باختيار الخط المطلوب.
الآن خطك أصبح متاحاً وموجوداً في Resources المشروع كـ
byte[].
Here is the clean, production-grade generic code. Copy this framework directly into your Form file (Form1.cs).
هذا هو الكود العام والآمن، يمكنك نسخه ولصقه مباشرة داخل ملف النافذة لديك.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WinForms_IconFont_Demo
{
public partial class MainForm : Form
{
// 1. Unified collection to store and manage custom font families
private PrivateFontCollection _privateFonts = new PrivateFontCollection();
// 2. Generic font instances that will hold our custom icon fonts
private Font _iconFontPrimary;
private Font _iconFontSecondary;
// 3. Track unmanaged memory pointers to guarantee deferred, safe cleanup upon closing
private List<IntPtr> _fontPointers = new List<IntPtr>();
// Win32 API to register the memory-resident font into the Windows GDI subsystem
[DllImport("gdi32.dll")]
private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts);
public MainForm()
{
InitializeComponent();
// Execute the lifecycle steps
LoadAllFonts();
ApplyFontsToControls();
// Bind the cleanup event to prevent memory corruption/leaks
this.FormClosed += MainForm_FormClosed;
}
/// <summary>
/// A generic, reusable method to load a font from resources into unmanaged memory.
/// </summary>
private Font CreateFontFromResource(byte[] fontResourceData, float fontSize)
{
// Allocate unmanaged block of memory matching the font size
IntPtr fontPtr = Marshal.AllocCoTaskMem(fontResourceData.Length);
// Copy the raw byte array into the allocated unmanaged memory pointer
Marshal.Copy(fontResourceData, 0, fontPtr, fontResourceData.Length);
// Register the font with the native OS graphics subsystem (explicitly 1 font package)
uint numFonts = 1;
AddFontMemResourceEx(fontPtr, (uint)fontResourceData.Length, IntPtr.Zero, ref numFonts);
// Append the font to our managed PrivateFontCollection
_privateFonts.AddMemoryFont(fontPtr, fontResourceData.Length);
// Save pointer reference for bulk cleanup when the application exits
_fontPointers.Add(fontPtr);
// Instantiate the Font object using the most recently added index
int lastFontIndex = _privateFonts.Families.Length - 1;
return new Font(_privateFonts.Families[lastFontIndex], fontSize, FontStyle.Regular, GraphicsUnit.Point);
}
/// <summary>
/// PLACEHOLDER A: Load your custom fonts here.
/// </summary>
private void LoadAllFonts()
{
// Change 'Properties.Resources.YOUR_FONT' to your actual resource name, and adjust the size (e.g., 24, 32)
_iconFontPrimary = CreateFontFromResource(Properties.Resources.Design_icons, 24);
_iconFontSecondary = CreateFontFromResource(Properties.Resources.System_icons, 32);
}
/// <summary>
/// PLACEHOLDER B: Bind your fonts and glyphs to your UI controls.
/// </summary>
private void ApplyFontsToControls()
{
// Example for Primary Font (e.g., Toolbar Buttons)
button1.Font = _iconFontPrimary;
button1.Text = "\ue908"; // Replace with your Unicode glyph code
button2.Font = _iconFontPrimary;
button2.Text = "\ue937";
// Example for Secondary Font (e.g., Status Bar Icons)
button6.Font = _iconFontSecondary;
button6.Text = "\uf247";
}
/// <summary>
/// Clean up allocated resources cleanly upon form closure.
/// </summary>
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
// Dispose managed font wrappers
if (_iconFontPrimary != null) _iconFontPrimary.Dispose();
if (_iconFontSecondary != null) _iconFontSecondary.Dispose();
if (_privateFonts != null) _privateFonts.Dispose();
// Release all unmanaged memory buffers at once
foreach (IntPtr ptr in _fontPointers)
{
if (ptr != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(ptr);
}
}
_fontPointers.Clear();
}
}
}To adapt this code to your specific project, you only need to modify two specific places:
لتطويع هذا الكود ليناسب مشروعك الخاص، تحتاج فقط إلى تعديل مكانيين محددين:
Update the resource reference to match your actual .ttf file name inside your Resources.
قم بتحديث مرجع المورد ليتطابق مع الاسم الفعلي لملف .ttf الموجود ضمن مجلد الموارد (Resources) لديك.
// Replace 'Design_icons' with the exact name of your resource file.
// You can also change the font size value (e.g. 24, 40) right here.
_iconFontPrimary = CreateFontFromResource(Properties.Resources.YOUR_FONT_RESOURCE_NAME, 24);Assign the font variable to your specific WinForms controls (Buttons, Labels, Tabs) and input the correct Unicode for the icon you want to render. قم بتعيين متغير الخط لعناصر تحكم WinForms المحددة (الأزرار، والتسميات، وعلامات التبويب)، وأدخل رمز Unicode الصحيح للأيقونة التي ترغب في عرضها.
yourButtonName.Font = _iconFontPrimary; // Set the font target
yourButtonName.Text = "\uXXXX"; // Insert the specific Unicode value (e.g., "\ue908")Important
English: Before running the code, make sure to adjust the following names to match your current project structure:
- Namespace: Replace
WinForms_IconFont_Demowith your project's actual namespace. - Form Class Name: Change
MainFormin the class definition (public partial class MainForm : Form) and constructor (public MainForm()) to match your Form's actual class name (e.g.,Form1).
العربية: قبل البدء ببدء تشغيل أو نسخ الكود، يرجى التأكد من تعديل المسميات التالية لتتطابق مع هيكلية مشروعك:
- مساحة الأسماء (Namespace): استبدل
WinForms_IconFont_Demoبـ Namespace الخاص بمشروعك الحقيقي. - اسم الفئة/النافذة (Form Class): قم بتغيير الاسم
MainFormفي تعريف الفئة (public partial class MainForm : Form) وفي المشيد (public MainForm()) ليتطابق مع الاسم الفعلي للنافذة لديك (مثلForm1).
Custom icon fonts do not use standard letters (like 'A', 'B', 'C'). Instead, they map vector icon designs to special placeholders called Unicode Character Points (usually looking like \ue908 or \uf1ba). When you assign an icon font to a button and change its text to one of these codes, Windows Forms draws the high-resolution vector symbol instead of text.
أيقونات الخطوط لا تستخدم الأحرف العادية (مثل أ، ب، ج). بدلاً من ذلك، تقوم بربط الأيقونات الشعاعية برموز برمجية خاصة تُسمى Unicode Character Points (تظهر عادةً على شكل \ue908 أو \uf1ba). عندما تقوم بتعيين الخط المخصص لزر ما وتكتب هذا الكود في خاصية الـ Text، يقوم النظام برسم الأيقونة بدقة عالية بدلاً من النص العادي.
🌐 Finding Icons Using the Repository's HTML Indexes | العثور على الأيقونات باستخدام فهارس HTML الخاصة بالمستودع
To make finding icons effortless, every font pack included in this repository comes with its own Interactive HTML index file located in the same directory.
لتسهيل العثور على الأيقونات، يأتي كل خط في هذا المستودع مصحوباً بملف HTML تفاعلي خاص به في نفس المجلد.
🛠️ How to use it:
- Open the
.htmlfile corresponding to your font in any browser (Chrome, Edge, etc.).- You will see a clean, visual grid displaying every single icon contained inside that font pack.
- Use the integrated Search Bar at the top of the webpage to quickly find specific icons (e.g., searching for "save", "settings", "user").
- Next to the icon, copy the provided Unicode value.
- In your C# code, prefix the code with
\u(e.g., if the HTML index showse908, paste it into Visual Studio as"\ue908").
🛠️ طريقة الاستخدام:
- افتح ملف الـ
.htmlالخاص بالخط الذي تريده في أي متصفح إنترنت.- ستظهر لك لوحة تفاعلية تعرض جميع الأيقونات الموجودة داخل هذا الخط بشكل مرئي.
- يمكنك استخدام شريط البحث المدمج في أعلى الصفحة للبحث عن أيقونة معينة بالاسم (مثال: ابحث عن "save" أو "home").
- ستجد بجانب كل أيقونة رمز الـ Unicode الخاص بها.
- لتبنيها داخل كود C#، قم بإضافة الرمز
\uقبل الكود (مثال: إذا كان الرمز في صفحة الـ HTML هوe908، اكتبه في فيجوال ستوديو بهذا الشكل"\ue908").
This repository contains a massive, well-categorized library of custom vector icon fonts. Each pack is meticulously structured to include the font files along with an interactive HTML index for easy search and preview.
يحتوي هذا المستودع على مكتبة ضخمة ومنظمة من خطوط الأيقونات الشعاعية. تم ترتيب كل حزمة لتشمل ملفات الخطوط بالإضافة إلى ملف HTML تفاعلي لتسهيل البحث واستعراض الأيقونات.
The collection contains over 9,000+ scalable vector icons divided into 26 specialized categories to fit any user interface design required in your desktop software.
تضم المجموعة أكثر من 9,000 أيقونة شعاعية قابلة للتكبير والتصغير، مقسمة إلى 26 تصنيفاً متخصصاً لتناسب كافة احتياجات واجهات المستخدم في برامجك.
| # | Package Name (اسم الحزمة) | Total Icons (عدد الأيقونات) | Directory Name (اسم المجلد) |
|---|---|---|---|
| 1 | FALCON Icon Collection Pack 1 | 2001 | FALCON_Icons_Collection_Pack1 |
| 2 | General Icons Filled Pack 3 | 1053 | Gereral_Icons_Filled_Pack3 |
| 3 | FALCON Icon Collection Pack 2 | 699 | FALCON_Icon_Collection_Pack2 |
| 4 | Brands Icon Pack 1 | 606 | Brands_Icons_Pack1 |
| 5 | General Icons PACK 2 | 562 | General_Icons_Pack2 |
| 6 | Brands Icon Pack 2 | 501 | Brands_Icons_Pack2 |
| 7 | General Icon Pack 1 | 491 | General_Icons_Pack1 |
| 8 | System Icons | 348 | System_Icons |
| 9 | Logos Icons | 300 | Logos_Icons |
| 10 | Media Icons | 296 | Media_Icons |
| 11 | Documents Icons | 244 | Documents_Icons |
| 12 | Design Icons | 236 | Design_Icons |
| 13 | Business Icons | 220 | Business_Icons |
| 14 | Devices Icons | 192 | Devices_Icons |
| 15 | Arrows Icons | 178 | Arrows_Icons |
| 16 | Finance Icons | 172 | Finance_Icons |
| 17 | Map Icons | 172 | Map_Icons |
| 18 | Editor Icons | 151 | Editor_Icons |
| 19 | Others Icons | 116 | Others_Icons |
| 20 | Communications Icons | 92 | Communication_Icons |
| 21 | Medical Icons | 84 | Medical_Icons |
| 22 | Weather Icons | 82 | Weather_Icons |
| 23 | Development Icons | 66 | Development_Icons |
| 24 | Buildings Icons | 62 | Buildings_Icons |
| 25 | Users Icons | 53 | Users_Icons |
| 26 | Game Sport Icons | 50 | Game_Sports_Icons |
| 📐 | Total Icons Library | 9,061 Icons |
Each icon package directory in this repository follows a clean, standardized layout generated by IcoMoon. It provides everything you need from raw font files to interactive preview web pages.
يتبع كل مجلد من مجلدات حزم الأيقونات في هذا المستودع هيكلية موحدة ونظيفة (تم إنشاؤها عبر IcoMoon). توفر هذه الهيكلية كل ما تحتاجه بدءاً من ملفات الخطوط الخام وحتى صفحات الاستعراض التفاعلية.
Inside every individual folder, you will find the following assets:
داخل كل مجلد فرعي، ستجد الملفات والعناصر التالية:
- English: Contains the core scalable font files. The
.ttffile inside this folder is the one you will import into Visual Studio'sResources.resx. - العربية: يحتوي على ملفات الخطوط الأساسية. ملف الـ
.ttfالموجود داخل هذا المجلد هو الملف الذي ستقوم بتضمينه داخل موارد مشروعكResources.resx.
- English: The visual index/cheat-sheet for the specific pack (e.g.,
Arrows_Icons.html). Open this in any browser to search, filter, and copy the precise Unicode points for your C# code. - العربية: الفهرس المرئي المخصص للحزمة (مثل
Arrows_Icons.html). يمكنك فتحه في أي متصفح للبحث عن الأيقونات، وتصفيتها، ونسخ أكواد الـ Unicode الخاصة بها لاستخدامها في كود C#.
- English: The metadata configuration file containing the project definition, glyph mappings, and character codes. You can re-import this file back into tools like IcoMoon to edit or expand the font pack later.
- العربية: ملف البيانات الوصفية (Metadata) الذي يحتوي على إعدادات المشروع وخريطة الرموز وأكوادها. يمكنك إعادة استيراد هذا الملف في أدوات مثل IcoMoon لتعديل حزمة الخطوط أو توسيعها لاحقاً.
- English: Contains the CSS rules and class mappings for web projects. While not strictly used in Windows Forms, it serves as a valuable reference for internal font naming conventions.
- العربية: يحتوي على قواعد التنسيق وربط الكلاسات المخصصة لمشاريع الويب. بالرغم من عدم استخدامه مباشرة في تطبيقات Windows Forms، إلا أنه يمثل مرجعاً ممتازاً لمعرفة الأسماء البرمجية الداخلية للأيقونات.
- English: Internal components and assets required to properly render and style the interactive HTML preview page.
- العربية: المكونات والملفات المساعدة المطلوبة لتشغيل وعرض صفحة الـ HTML التفاعلية وتنسيقها بشكل صحيح.
Desktop Application Developer & Software Architect
Crafting clean, high-performance, and high-DPI aware Windows Forms applications.
We welcome contributions of any kind – icon pack suggestions, performance improvements, documentation translation, or bug fixes. Please open an issue to discuss your ideas or submit a pull request directly. All contributions are valued, and kind, constructive communication is our standard.
This project is licensed under the MIT License. See the LICENSE file for details. You are free to use, modify, and distribute the code in personal or commercial projects, provided the original copyright notice remains intact.
