Allsorts est un analyseur de police, un moteur de mise en forme et un sous-ensemble pour OpenType, Woff et Woff2 entièrement écrit en rouille. Ce référentiel contient des outils qui ont été développés pour déboguer et tester les ALLSORS et fournir des exemples de son utilisation.
Remarque: Ces outils sont à des fins de démonstration, de référence et de débogage. Vous ne devez pas compter sur eux pour les flux de travail de production.
Outils disponibles:
bitmaps - vider les bitmaps à partir des polices bitmapcmap - Imprimer le caractère aux mappages de glyphesdump - Informations sur les polices de déchargehas-table - Vérifiez si une police a un tableau particulierinstance - Créez une instance statique d'une police à partir d'une police variablelayout-features - Imprimez une liste des fonctionnalités GSUB et GPOS d'une policeshape - Appliquer la mise en forme sur les glyphes d'une policespecimen - Générez un spéciment de police HTML pour une policesubset - sous-ensemble une policevalidate - Analyser la police fournie, signalant des échecsvariations - Énumérez les axes de variation d'une police variableview - Générer des SVG à partir de glyphesbitmaps L'outil bitmaps extrait les bitmaps des polices contenant des bitmaps Glyph dans les tables EBLC / EBDT ou CBLC / CBDT .
-o est le chemin vers le répertoire pour écrire les bitmaps. Il sera créé s'il n'existe pas. Les images sont écrites en PNG dans un sous-répertoire pour chaque frappe (taille). Le format est {ppem_x}x{ppem_y}@{bit_depth} , les fichiers sont nommés {glyph_id}.png :
terminus
├── 12x12@1
│ ├── 0.png
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 7.png
⋮ ⋮
├── 14x14@1
│ ├── 0.png
⋮ ⋮
└── 32x32@1
⋮ ⋮
allsorts bitmaps -o noto-color-emoji NotoColorEmoji.ttf
cmap L'outil cmap choisit une sous-table cmap préférée et vide le caractère aux entrées d'index Glyph. Si le codage de la table est Unicode, les caractères sont imprimés avec le point de code, sinon la valeur numérique du caractère est imprimée.
-f , --font spécifie le chemin d'accès au fichier de police.-i , --index est l'index de la police à vider (pour TTC, WOFF2) (par défaut: 0). $ allsorts cmap --font profontn.otb
cmap sub-table encoding: Unicode
'' U+0000 -> 0
'' U+0001 -> 1
'' U+0002 -> 2
⋮
'?' U+003F -> 63
'@' U+0040 -> 64
'A' U+0041 -> 65
'B' U+0042 -> 66
⋮
'»' U+00BB -> 187
'¼' U+00BC -> 188
'½' U+00BD -> 189
'¾' U+00BE -> 190
'¿' U+00BF -> 191
'À' U+00C0 -> 192
'Á' U+00C1 -> 193
'Â' U+00C2 -> 194
'Ã' U+00C3 -> 195
'Ä' U+00C4 -> 196
⋮
dump L'outil dump imprime ou extrait les informations d'un fichier de police.
allsorts dump path/to/font imprime des informations sur la police.
--name comprend les métadonnées contenues dans la table name dans la sortie.-c peut être utilisé pour imprimer des informations sur une police ou un tableau CFF non enveloppés dans un conteneur TrueType ou OpenType.-t extrait le tableau nommé de la police fournie. La sortie doit être redirigé vers un fichier. Par exemple allsorts dump -t glyf > glyf.bin-g imprime des informations sur un glyphe spécifique dans une police.-l imprime tous les décalages de la table loca dans la police. $ allsorts dump noto-subset.otd | head
TTF
- version: 0x4f54544f
- num_tables: 9
CFF (checksum: 0x625ba831, offset: 156, length: 166505)
OS/2 (checksum: 0x9f6306c8, offset: 166664, length: 96)
cmap (checksum: 0x131b2742, offset: 166760, length: 274)
head (checksum: 0x09e560e8, offset: 167036, length: 54)
hhea (checksum: 0x0c1109cf, offset: 167092, length: 36)
hmtx (checksum: 0x1b9b0310, offset: 167128, length: 52)
maxp (checksum: 0x000d5000, offset: 167180, length: 6)
name (checksum: 0x1f3037ad, offset: 167188, length: 418)
post (checksum: 0xff860032, offset: 167608, length: 32)
- CFF:
- version: 1.0
- name: NotoSansJP-Regular
- num glyphs: 13
- charset: Custom
- variant: CID
has-table L'outil has-table vérifie si le fichier de police fourni contient le tableau passé via l'argument -t . Si la police contient le tableau, il sort avec le succès de l'état (0), si la police ne contient pas le tableau, il quitte avec l'état 1.
Cet outil est pratique combiné avec find , pour localiser les polices qui ont la table souhaitée.
-t , --table TABLE pour vérifier-i , --index INDEX de la police à vérifier (pour TTC, woff2) (par défaut: 0)-p , --print-file Imprimez le chemin vers la police s'il contient le tableau.-v , --invert-match qui n'ont pas la table donnée Dans cet exemple, nous recherchons dans le répertoire actuel des fichiers se terminant par ttf , otf ou otc et vérifions s'ils contiennent une table EBLC . Si la table est trouvée, le chemin vers la police est imprimé.
find . -regextype posix-extended -type f -iregex '.*.(ttf|otf|otc)$' -exec allsorts has-table -t EBLC -p {} ;
instance L'outil instance applique un ensemble de valeurs (tuple) aux axes de variation d'une police variable pour produire une police statique et non variable avec ces paramètres.
-t , --tuple est une liste de valeurs séparées par des virgules une pour chaque axe de variation de la police. L'outil variations répertorie les axes, leur commande et les limites.-o , --output est le chemin de la police de sortie. Dans cet exemple, la police a deux axes: UNDO et UNDS . Nous fournissons une valeur de 500 pour chacun et écrivons la police de sortie à UnderlineTest.ttf .
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-featuresImprime une liste en retrait des fonctionnalités GSUB et GPOS d'une police.
$ layout-features fonts/devanagari/AnnapurnaSIL-Regular.ttf
Table: GSUB
Script: DFLT
Language: default
Feature: aalt
Lookups: 56
Feature: abvs
Lookups: 27,28,29,30
Feature: akhn
Lookups: 4
Feature: blwf
Lookups: 9
# additional output omitted
shape L'outil shape façonne le texte fourni en fonction de la police, du langage et du script fourni. Il imprime les glyphes avant et après la mise en forme.
-f , --font PATH vers le fichier de police-i , --index INDEX de la police à façonner (pour TTC, woff2) (par défaut: 0)-s , --script SCRIPT script à façonner-l , --lang LANG Langue à façonner--vertical Disposition verticale verticale, la valeur par défaut est horizontale $ shape -f fonts/devanagari/AnnapurnaSIL-Regular.ttf -s deva -l HIN 'शब्दों और वाक्यों की तरह'
# output omitted
specimen L'outil specimen génère une feuille d'échantillon de police HTML contenant un exemple de texte définie dans la police ainsi que des informations sur la police et ses fonctionnalités prises en charge.
-i , --index INDEX de la police à sous-ensemble (pour TTC, WOFF2) (par défaut: 0)--sample-text TEXT Exemple de texte à utiliser dans l'échantillon de police $ allsorts specimen ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
subset L'outil subset prend une police source et du texte et écrit une nouvelle version de la police source contenant uniquement les glyphes requis pour le texte fourni.
-t , --text TEXT sous-ensemble la police pour inclure les glyphes à partir du texte-a , --all incluent tous les glyphes de la police de sous-ensemble-i , --index INDEX de la police à sous-ensemble (pour TTC, WOFF2) (par défaut: 0) $ allsorts subset -t 'This a subsetting test' NotoSansJP-Regular.otf noto-subset.otf
Number of glyphs in new font: 13
validate L'outil validate tente d'analyser tous les glyphes (ou divers dicts dans le cas de CFF) dans la police fournie. Il signale toutes les erreurs rencontrées mais est autrement silencieuse. Cette commande a été utile pour les tests en vrac allSorts contre un grand répertoire de polices du monde réel.
$ allsorts validate ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
$ fd '.(ttf|otf|ttc)$' /usr/share/fonts | sort | parallel --bar allsorts validate {}
variations L'outil variations répertorie les informations sur une police variable. Les informations comprennent:
Cet exemple imprime les informations de variation pour la police à ../text-rendering-tests/fonts/TestHVARTwo.ttf .
$ allsorts variations ../text-rendering-tests/fonts/TestHVARTwo.ttf
Axes: (2)
- wght = min: 0, max: 1000, default: 0
- cntr = min: 0, max: 100, default: 0
Instances:
Subfamily: ExtraLight
PostScript Name: TestFont-ExtraLight
Coordinates: [0.0, 0.0]
Subfamily: Light
PostScript Name: TestFont-Light
Coordinates: [150.0, 0.0]
Subfamily: Regular
PostScript Name: TestFont-Regular
Coordinates: [394.0, 0.0]
Subfamily: Semibold
PostScript Name: TestFont-Semibold
Coordinates: [600.0, 0.0]
Subfamily: Bold
PostScript Name: TestFont-Bold
Coordinates: [824.0, 0.0]
Subfamily: Black
PostScript Name: TestFont-Black
Coordinates: [1000.0, 0.0]
Subfamily: Black Medium Contrast
PostScript Name: TestFont-BlackMediumContrast
Coordinates: [1000.0, 50.0]
Subfamily: Black High Contrast
PostScript Name: TestFont-BlackHighContrast
Coordinates: [1000.0, 100.0]
view L'outil view façonne le texte fourni ou la liste des points de code en fonction de la police, du langage et du script fourni. Ensuite, il génère un SVG des glyphes.
-f , --font PATH vers le fichier de police-s , --script SCRIPT script à façonner-l , --lang LANG Langue à façonner--mark-origin Marquez l'origine de chaque glyphe avec un cross-hair--margin num ou top,right,bottom,left Spécifiez une marge à ajouter au bord du SVG--fg-colour rrggbbaa Réglez la couleur de remplissage des glyphes--bg-colour rrggbbaa Réglez la couleur d'arrière-plan du SVG généré--fg-color rrggbbaa alias pour --fg-colour--bg-color rrggbbaa Alias pour --bg-colour-t , --text TEXT à rendre-c , --codepoints CODEPOINTS Liste des points de code de codepoints (en tant que nombres hexadécimaux) pour rendre-i , --indices GLYPH_INDICES Liste des indices de glyphes séparés par les virgules à rendre-F , --features FEATURES de la liste des fonctionnalités des fonctionnalités d'OpenType à activer (Remarque: Active uniquement ces fonctionnalités) $ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva -t 'खि'
# output omitted
$ allsorts view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva -c '916,93f'
# output omitted
Dans cet exemple, la fonction OpenType pres est activée, ce qui permet à Glyph 30 d'être remplacé par son formulaire de présentation spécial (Glyph 547).
$ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva --features pres -i '30,54'
# output omitted
Version de la rouille prise en charge minimale: 1.70.0
Pour construire les outils, assurez-vous que la rouille soit installée.
cargo build --releasecargo install --path . Il existe un package AUR pour allsorts-tools :
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
Les contributions sont les bienvenues, veuillez vous référer au guide des contributions Allsorts pour plus de détails.
Nous visons à respecter les normes communautaires de la rouille:
Nous nous engageons à fournir un environnement convivial, sûr et accueillant pour tous, quels que soient le sexe, l'orientation sexuelle, le handicap, l'ethnicité, la religion ou les caractéristiques personnelles similaires.
Nous suivons le code de conduite de la rouille.
AllSorts et ces outils sont distribués selon les termes de la licence Apache (version 2.0).
Voir la licence pour plus de détails.