Versi Saat Ini: 0.2.0
Parser truetype untuk membaca, mesin terbang, nama, deskripsi, dan informasi kerning dari font truetype. Mendukung .NetStandard 2.0 , .Net 4.6.1 dan lebih tinggi.
Anda dapat secara langsung menambahkan perpustakaan ini ke proyek Anda menggunakan Nuget:
Install-Package RoyT.TrueType
Untuk informasi lebih lanjut, silakan kunjungi blog saya di http://roy-t.nl.
Untuk mempelajari lebih lanjut tentang format font truetype dan terminologi yang digunakan di sini, lihat spesifikasi tipe terbuka.
Ini dapat membaca tabel berikut dari semua font yang ada di instalasi Windows 10 standar:
Ini memperlihatkan keduanya yang mudah digunakan API untuk secara langsung mendapatkan informasi yang berguna dari tabel ini, tetapi juga memperlihatkan tabel itu sendiri sehingga Anda menambahkan interpretasi data Anda sendiri
Ini bekerja pada .Net Core 1.0 dan .Net 4.6.1 dan lebih tinggi dengan Targetting .Net standard 1.6
Referensi
| Format subtabel | didukung/tidak didukung | perkataan |
|---|---|---|
| Pemetaan tersegmentasi ke nilai delta | didukung | Paling umum |
| Pemetaan meja yang dipangkas | didukung | |
| Cakupan tersegmentasi | didukung | |
| Tabel Pengkodean Byte | didukung | Paling tidak umum |
| Pemetaan byte tinggi melalui meja | tidak didukung | Saya belum melihat font yang menggunakan ini, sampel selamat datang |
| Campuran 16-bit dan 32-bit dicampur | tidak didukung | Saya belum melihat font yang menggunakan ini, sampel selamat datang |
| Array terpangkas | tidak didukung | Saya belum melihat font yang menggunakan ini, sampel selamat datang |
| Pemetaan jangkauan banyak-ke-satu | tidak didukung | Saya belum melihat font yang menggunakan ini, sampel selamat datang |
| Urutan variasi unicode | tidak didukung | Menentukan variasi mesin terbang tunggal |
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
}
}
}
}