title: MicroType Express
text: # MicroType Express
  
  MicroType Express (MTX) est un format de compression de police vectorielle libre, créé initialement par Monotype Imaging à destination du matériel embarqué, où les contraintes d'espace de stockage et de mémoire vive sont fortes. Il a été soumis au W3C, pour devenir un standard du web le 8 mars 2008. Certaines de ses innovations ont finalement été intégrées au format Embedded OpenType (EOT) et au format WOFF2. Depuis la soumission au W3C, le format est sous licence MTX, licence libre permettant l'utilisation et réutilisation complète et sans commission, jusqu'à la date d'expiration du brevet. L’API de Windows permet de créer des polices EOT avec MTX. Google a aussi produit le logiciel sfntly permettant de créer des polices EOT avec MTX sans Windows.
  
  Plusieurs techniques de compression de données sont utilisées, parmi lesquels une meilleure gestion de la taille des informations (fixe et plus réduite ou bien de taille variable) en prenant compte les cas des utilisations existantes des polices vectorielles, la réutilisation de contours identiques et un algorithme générique de compression de données.
  
  * Cette norme utilise l'algorithme de compression sans perte LZCOMP pour le stockage de l'ensemble des données.
  * La table de définition des caractères est convertie du format TrueType (TTF) au format Compact Table Format (CTF) en éliminant les doublons, en supprimant la table loca, reconstruite à la volée pendant la décompression. La table cvt est rendue plus compacte en utilisant une référence à l'élément précédent plutôt que référence absolue. hdmx et vdmx sont encodés au niveau des bits, le code prédit le contenu et ajoute à ces tables, prédiction et prédiction d'erreur.
  * Les chemins de contours des glyphes sont toujours calculés de façon relative, plutôt qu'absolue, et dans un format compact, permettant des comparaison de courbes identiques pour une meilleure compression, par un encodage entropique de Huffman dans un second temps.
  * Les glyphes sont stockés dans un bloc global, ordonné, puis, les instructions de poussée (push) dans de pile, généralement réduite sont séparées des données poussées par ces instructions. La seconde phase consiste à compresser ces instructions appelées cycliquement dans la pile d’exécution des codes d'opération, en utilisant un code correspondant au schéma de leur répétition.
  * Les instructions de changement d'échelle des glyphes sont stockées séparément, dans la table nommée Glyph Program Table
  