Version actuelle: 0.2.0
Un analyseur TrueType pour la lecture, les glyphides, les noms, les descriptions et les informations de création à partir de polices TrueType. Prend en charge .NetStandard 2.0 , .Net 4.6.1 et plus.
Vous pouvez ajouter directement cette bibliothèque à votre projet à l'aide de NuGet:
Install-Package RoyT.TrueType
Pour plus d'informations, veuillez visiter mon blog à http://roy-t.nl.
Pour en savoir plus sur le format de police TrueType et la terminologie utilisée ici, consultez la spécification de type ouvert.
Il peut lire les tables suivantes de toutes les polices qui existent dans une installation standard de Windows 10:
Il expose à la fois une API facile à utiliser pour obtenir directement des informations utiles de ces tableaux, mais expose également les tableaux eux-mêmes afin d'ajouter votre propre interprétation des données
Il fonctionne à la fois sur .Net Core 1.0 et .Net 4.6.1 et plus en ciblant .Net standard 1.6
Référence
| Format de sous-table | supporté / non pris en charge | remarques |
|---|---|---|
| Mappage segmenté aux valeurs delta | soutenu | Le plus commun |
| Mappage de table taillé | soutenu | |
| Couverture segmentée | soutenu | |
| Tableau de codage d'octets | soutenu | Le moins commun |
| Cartographie élevée à travers la table | non pris en charge | Je n'ai pas vu une police qui l'utilise encore, les échantillons sont les bienvenus |
| Couverture mixte 16 bits et 32 bits | non pris en charge | Je n'ai pas vu une police qui l'utilise encore, les échantillons sont les bienvenus |
| Baignade | non pris en charge | Je n'ai pas vu une police qui l'utilise encore, les échantillons sont les bienvenus |
| Mappages de gamme plusieurs à un | non pris en charge | Je n'ai pas vu une police qui l'utilise encore, les échantillons sont les bienvenus |
| Séquences de variation Unicode | non pris en charge | Spécifie les variations d'un seul glyphe |
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
}
}
}
}