Allsorts ist ein Schriftart -Parser, eine Formungsmotor und ein Subsetter für OpenType, WOFF und WOFF2, der vollständig in Rost geschrieben ist. Dieses Repository enthält Tools, die entwickelt wurden, um Allsorts zu debuggen und zu testen und Beispiele für die Verwendung zu liefern.
HINWEIS: Diese Tools dienen Demonstrations-, Referenz- und Debugging -Zwecken. Sie sollten sich nicht auf sie für Produktionsworkflows verlassen.
Verfügbare Werkzeuge:
bitmaps - Bitmaps aus Bitmap -Schriftarten entlassencmap - Drucken Sie den Zeichen für Glyphenzuordnungendump - Dump -Schriftinformationenhas-table -prüfen Sie, ob eine Schriftart eine bestimmte Tabelle hatinstance - Erstellen Sie eine statische Instanz einer Schriftart aus einer variablen Schriftartlayout-features -Drucken Sie eine Liste der GSUB- und GPOS-Funktionen einer Schriftart ausshape - Die Formung von einer Schriftart auf Glyphen auftragenspecimen - Generieren Sie ein HTML -Schriftart für eine Schriftartsubset - Untergruppe einer Schriftartvalidate - analysieren Sie die mitgelieferte Schriftart und melden Sie etwaige Fehlervariations - Listen Sie die Variationsachsen einer variablen Schriftart aufview - SVGs aus Glyphen erzeugenbitmaps Das bitmaps -Tool extrahiert Bitmaps aus Schriftarten, die Glyphbitmaps entweder in den EBLC / EBDT oder CBLC / CBDT -Tabellen enthalten.
-o ist der Weg zum Verzeichnis, um die Bitmaps zu schreiben. Es wird erstellt, wenn es nicht existiert. Die Bilder werden als PNGs in einem Unterabschluss für jeden Streik (Größe) ausgeschrieben. Das Format lautet {ppem_x}x{ppem_y}@{bit_depth} , die Dateien heißen {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 Das cmap Tool wählt eine bevorzugte cmap Untertabelle aus und bringt das Zeichen in Glyph-Indexeinträge ab. Wenn die Codierung der Tabelle Unicode ist, werden die Zeichen zusammen mit dem Codepunkt gedruckt, andernfalls wird nur der numerische Wert des Zeichens gedruckt.
-f , --font gibt den Pfad zur Schriftart Datei an.-i , --index ist Index der Schriftart zu Dump (für TTC, WOFF2) (Standard: 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 Das dump -Tool druckt oder extrahiert Informationen aus einer Schriftart.
allsorts dump path/to/font druckt Informationen zur Schriftart aus.
--name enthält die in der name in der Ausgabe enthaltenen Metadaten.-c kann verwendet werden, um Informationen zu einer CFF -Schriftart oder einer Tabelle zu drucken, die nicht in einen TrueType- oder Openentyp -Container eingewickelt ist.-t extrahiert die benannte Tabelle aus der mitgelieferten Schriftart. Die Ausgabe sollte in eine Datei umgeleitet werden. ZB allsorts dump -t glyf > glyf.bin-g druckt Informationen zu einer bestimmten Glyphe in einer Schriftart.-l druckt alle Offsets in der loca -Tabelle in der Schriftart aus. $ 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 Das has-table -Tool prüft, ob die mitgelieferte Schriftart die Tabelle über das über das Argument -t übergebene Tabelle enthält. Wenn die Schriftart die Tabelle enthält, die sie mit dem Statuserfolg (0) beendet, enthält die Schriftart nicht die Tabelle mit Status 1.
Dieses Tool ist praktisch mit find , um Schriftarten mit der gewünschten Tabelle zu finden.
-t , --table TABLE Tabelle, um nach zu überprüfen-i , --index INDEX Index der Schriftart zu überprüfen (für TTC, WOFF2) (Standard: 0)-p , --print-file Drucken Sie den Pfad zur Schriftart, wenn er die Tabelle enthält.-v , --invert-match -Schriftarten, die nicht die angegebene Tabelle haben In diesem Beispiel suchen wir das aktuelle Verzeichnis nach Dateien, die in ttf , otf oder otc enden, und überprüfen, ob sie eine EBLC -Tabelle enthalten. Wenn die Tabelle gefunden wird, wird der Pfad zur Schriftart gedruckt.
find . -regextype posix-extended -type f -iregex '.*.(ttf|otf|otc)$' -exec allsorts has-table -t EBLC -p {} ;
instance Das instance wendet eine Reihe von Werten (Tupel) auf die Variationsachsen einer variablen Schriftart an, um eine statische, nicht variable Schriftart mit diesen Einstellungen zu erzeugen.
-t , --tuple ist eine von der Kommas getrennte Liste von Werten für jede Variationsachse der Schriftart. Das variations -Tool listet die Achsen, ihre Ordnung und die Grenzen auf.-o , --output ist der Pfad zur Ausgangsschrift. In diesem Beispiel hat die Schrift zwei Achsen: UNDO und und UNDS . Wir liefern für jeden einen Wert von 500 und schreiben die Ausgangsschrift in UnderlineTest.ttf .
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-featuresDruckt eine eingedrückte Liste der GSUB- und GPOS -Funktionen einer Schriftart.
$ 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 Das shape prägt den gelieferten Text gemäß der mitgelieferten Schrift, Sprache und Skript. Es druckt die Glyphen vor und nach der Formung aus.
-f , --font PATH Pfad für Schriftart zur Schriftart Datei-i , --index INDEX -Index der Schriftart an Form (für TTC, WOFF2) (Standard: 0)-s , --script SCRIPT -Skriptskripts zu formen-l , --lang LANG -Sprache zu formen--vertical vertikales Layout, Standard ist horizontal $ shape -f fonts/devanagari/AnnapurnaSIL-Regular.ttf -s deva -l HIN 'शब्दों और वाक्यों की तरह'
# output omitted
specimen Das specimen -Tool generiert ein HTML -Schriftartenblatt mit einem in der Schriftart festgelegten Beispieltext sowie Informationen über die Schriftart und deren unterstützten Funktionen.
-i , --index INDEX -Index der Schriftart an die Teilmenge (für TTC, WOFF2) (Standard: 0)--sample-text TEXT die im Schriftartikum verwendet werden soll $ allsorts specimen ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
subset Das subset Tool nimmt eine Quellschrift und einen Text ein und schreibt eine neue Version der Quellschrift, die nur die für den angegebenen Text erforderlichen Glyphen enthält.
-t , --text TEXT -Subset der Schriftart, um Glyphen aus dem Text einzuschließen-a , --all enthalten alle Glyphen in der Teilmenge -Schriftart-i , --index INDEX -Index der Schriftart an die Teilmenge (für TTC, WOFF2) (Standard: 0) $ allsorts subset -t 'This a subsetting test' NotoSansJP-Regular.otf noto-subset.otf
Number of glyphs in new font: 13
validate Das validate versucht, alle Glyphen (oder verschiedene Diktate im Fall von CFF) in der mitgelieferten Schriftart zu analysieren. Es meldet alle aufgetretenen Fehler, aber ansonsten still. Dieser Befehl war nützlich für Bulk -Tests gegen ein großes Repertoire realer Welt.
$ allsorts validate ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
$ fd '.(ttf|otf|ttc)$' /usr/share/fonts | sort | parallel --bar allsorts validate {}
variations Das variations -Tool listet Informationen zu einer variablen Schriftart auf. Die Informationen umfassen:
Dieses Beispiel druckt Variationsinformationen für die Schriftart unter ../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 Das view prägt den angegebenen Text oder die Liste der CodePoints gemäß der mitgelieferten Schriftart, Sprache und Skript. Dann erzeugt es ein SVG der Glyphen.
-f , --font PATH Pfad für Schriftart zur Schriftart Datei-s , --script SCRIPT -Skriptskripts zu formen-l , --lang LANG -Sprache zu formen--mark-origin Sie den Ursprung jeder Glyphe mit einem Kreuzhaar--margin num oder top,right,bottom,left Geben Sie einen Rand an, der am Rand des SVG hinzugefügt werden soll--fg-colour rrggbbaa Setzen Sie die Füllfarbe der Glyphen--bg-colour rrggbbaa Setzen Sie die Hintergrundfarbe des erzeugten SVG--fg-color rrggbbaa alias für --fg-colour--bg-color rrggbbaa alias für --bg-colour-t , --text TEXT Text zum Rendern-c , --codepoints CODEPOINTS Comma-getrennte Liste von CodePoints (als Hexadezimalzahlen), um sie zu rendern-i , --indices GLYPH_INDICES Comma-getrennte Liste der Glyphenindizes zum Rendern-F , --features FEATURES Comma-getrennte Liste von OpenType-Funktionen, die aktiviert werden sollen (Hinweis: Ermöglicht diese Funktionen nur) $ 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
In diesem Beispiel ist die Opentype pres -Funktion aktiviert, wodurch Glyphe 30 durch das spezielle Präsentationsformular (Glyphe 547) ersetzt werden kann.
$ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva --features pres -i '30,54'
# output omitted
Minimum unterstützte Rust -Version: 1.70.0
Um die Werkzeuge zu erstellen, stellen Sie sicher, dass Sie Rost installiert haben.
cargo build --releasecargo install --path . Es gibt ein AUR-Paket für allsorts-tools :
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
Beiträge sind willkommen. Weitere Informationen finden Sie im Allsorts -Leitfaden für weitere Informationen.
Wir wollen die Rust -Community -Standards aufrechterhalten:
Wir sind bestrebt, ein freundliches, sicheres und einladendes Umfeld für alle zu schaffen, unabhängig von Geschlecht, sexueller Orientierung, Behinderung, ethnischer Zugehörigkeit, Religion oder ähnlichem persönlichen Merkmal.
Wir folgen dem Rost -Verhaltenskodex.
Allsorts und diese Tools werden unter den Bestimmungen der Apache -Lizenz (Version 2.0) verteilt.
Weitere Informationen finden Sie in Lizenz.