Текущая версия: 0.2.0
Парсер Truetype для чтения, глифидов, имен, описаний и информации о кернинге из 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
}
}
}
}