TrueType
1.0.0
الإصدار الحالي: 0.2.0
محلل ثلاثي النمط للقراءة ، الغليفيد ، الأسماء ، الأوصاف ، ومعلومات kerning من خطوط trueType. يدعم .NetStandard 2.0 ، .Net 4.6.1 وأعلى.
يمكنك إضافة هذه المكتبة مباشرة إلى مشروعك باستخدام Nuget:
Install-Package RoyT.TrueType
لمزيد من المعلومات ، يرجى زيارة مدونتي على http://roy-t.nl.
لمعرفة المزيد حول تنسيق خط truetype والمصطلحات المستخدمة هنا ، انظر مواصفات النوع المفتوح.
يمكنه قراءة الجداول التالية لجميع الخطوط الموجودة في تثبيت Windows 10 القياسي:
إنه يعرض كلا من واجهة برمجة التطبيقات سهلة الاستخدام للحصول على معلومات مفيدة مباشرة من هذه الجداول ، ولكنها تعرض أيضًا الجداول نفسها بحيث تضيف تفسيرك الخاص للبيانات
إنه يعمل على كلا .Net Core 1.0 و .Net 4.6.1 وأعلى عن طريق استهداف .Net standard 1.6
مرجع
| تنسيق خاضع | دعم/غير مدعوم | ملاحظات |
|---|---|---|
| رسم الخرائط المدمجة لقيم دلتا | مدعوم | الأكثر شيوعا |
| رسم خرائط الجدول القطع | مدعوم | |
| تغطية مجزأة | مدعوم | |
| جدول تشفير البايت | مدعوم | الأقل شيوعا |
| رسم خرائط عالية البايت من خلال الطاولة | غير مدعوم | لم أر خطًا يستخدم هذا حتى الآن ، نرحب بالعينات |
| تغطية مختلطة 16 بت و 32 بت | غير مدعوم | لم أر خطًا يستخدم هذا حتى الآن ، نرحب بالعينات |
| صفيف قلص | غير مدعوم | لم أر خطًا يستخدم هذا حتى الآن ، نرحب بالعينات |
| العديد من التعيينات النطاق | غير مدعوم | لم أر خطًا يستخدم هذا حتى الآن ، نرحب بالعينات |
| تسلسل تباين Unicode | غير مدعوم | يحدد الاختلافات في حروف رسومية واحدة |
var font = TrueTypeFont . FromFile ( @"C:WindowsFontsarial.ttf" ) ;
// Using the helper functions
var glyphIndex = GlyphHelper . GetGlyphIndex ( 'A' , font ) ; // 36
var horizontalKerning = KerningHelper . GetHorizontalKerning ( 'A' , 'W' , font ) ; // -76
var name = NameHelper . GetName ( NameId . FontSubfamilyName , new CultureInfo ( "nl-NL" ) , font ) ; // Standaard
// Diving in deep yourself to get some specific information is also possible
if ( font . KernTable . SubtableCount > 0 )
{
var leftCode = GlyphHelper . GetGlyphIndex ( left , font ) ;
var rightCode = GlyphHelper . GetGlyphIndex ( right , font ) ;
foreach ( var subTable in font . KernTable . Subtables )
{
if ( subTable . Format0 != null && subTable . Direction == Direction . Vertical
&& subTable . Values == Values . Kerning )
{
var pair = new KerningPair ( ( ushort ) leftCode , ( ushort ) rightCode ) ;
if ( subTable . Format0 . Map . TryGetValue ( pair , out var value ) )
{
// Do something
}
}
}
}