เวอร์ชันปัจจุบัน: 0.2.0
ตัวแยกวิเคราะห์ truetype สำหรับการอ่าน, glyphids, ชื่อ, คำอธิบายและข้อมูล kerning จากแบบอักษร Truetype รองรับ .NetStandard 2.0 , .Net 4.6.1 และสูงกว่า
คุณสามารถเพิ่มไลบรารีนี้ลงในโครงการของคุณได้โดยตรงโดยใช้ NUGET:
Install-Package RoyT.TrueType
สำหรับข้อมูลเพิ่มเติมกรุณาเยี่ยมชมบล็อกของฉันที่ http://roy-t.nl
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับรูปแบบฟอนต์ Truetype และคำศัพท์ที่ใช้ที่นี่ดูข้อมูลจำเพาะแบบเปิด
สามารถอ่านตารางต่อไปนี้ของแบบอักษรทั้งหมดที่มีอยู่ในการติดตั้ง Windows 10 มาตรฐาน:
มันเผยให้เห็นทั้ง API ที่ใช้งานง่ายเพื่อรับข้อมูลที่เป็นประโยชน์โดยตรงจากตารางเหล่านี้ แต่ยังเปิดเผยตารางด้วยตนเองเพื่อให้คุณเพิ่มการตีความข้อมูลของคุณเอง
มันทำงานกับทั้ง .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
}
}
}
}