Allsorts adalah parser font, mesin pembentuk, dan subsetter untuk OpenType, Woff, dan Woff2 yang sepenuhnya ditulis dalam karat. Repositori ini berisi alat yang dikembangkan untuk men -debug dan menguji allsorts dan memberikan contoh penggunaannya.
Catatan: Alat -alat ini untuk tujuan demonstrasi, referensi, dan debugging. Anda tidak boleh mengandalkannya untuk alur kerja produksi.
Alat yang tersedia:
bitmaps - buang bitmap dari font bitmapcmap - Cetak karakter ke pemetaan mesin terbangdump - Informasi Font Buanghas-table -Periksa apakah font memiliki tabel tertentuinstance - Buat instance statis dari font dari font variabellayout-features -Cetak daftar fitur GSUB dan GPO fontshape - Terapkan membentuk mesin terbang dari fontspecimen - Hasilkan Spesimen Font HTML untuk Fontsubset - subset a fontvalidate - Parse font yang disediakan, melaporkan kegagalan apa punvariations - Sebutkan sumbu variasi font variabelview - Hasilkan SVG dari Glyphsbitmaps Alat bitmaps mengekstrak bitmap dari font yang mengandung bitmap glyph baik di tabel EBLC / EBDT atau CBLC / CBDT .
-o adalah jalan menuju direktori untuk menulis bitmap. Itu akan dibuat jika tidak ada. Gambar ditulis sebagai PNG dalam sub-direktori untuk setiap pemogokan (ukuran). Formatnya adalah {ppem_x}x{ppem_y}@{bit_depth} , file dinamai {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 Alat cmap memilih sub-table cmap yang disukai dan membuang karakter ke entri indeks mesin terbang. Jika pengkodean tabel adalah unicode maka karakter dicetak bersama dengan titik kode, jika tidak hanya nilai numerik dari karakter yang dicetak.
-f , --font menentukan jalur ke file font.-i , --index adalah indeks font ke dump (untuk ttc, woff2) (default: 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 Alat dump mencetak atau mengekstrak informasi dari file font.
allsorts dump path/to/font mencetak informasi tentang font.
--name termasuk metadata yang terkandung dalam tabel name dalam output.-c dapat digunakan untuk mencetak informasi tentang font atau tabel CFF yang tidak dibungkus dengan wadah Truetype atau OpenType.-t mengekstrak meja yang disebutkan dari font yang disediakan. Output harus dialihkan ke file. Misalnya allsorts dump -t glyf > glyf.bin-g mencetak informasi tentang mesin terbang tertentu dalam font.-l mencetak semua offset di tabel loca di font. $ 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 Alat has-table periksa apakah file font yang disediakan berisi tabel yang dilewatkan melalui argumen -t . Jika font berisi tabelnya keluar dengan keberhasilan status (0), jika font tidak berisi tabel, ia keluar dengan status 1.
Alat ini berguna dikombinasikan dengan find , untuk menemukan font yang memiliki tabel yang diinginkan.
-t , --table TABLE untuk diperiksa-i , --index INDEX Font untuk Memeriksa (untuk TTC, WOFF2) (Default: 0)-p , --print-file mencetak jalur ke font jika berisi tabel.-v , --invert-match Font Select yang tidak memiliki tabel yang diberikan Dalam contoh ini, kami mencari direktori saat ini untuk file yang berakhir di ttf , otf , atau otc dan memeriksa untuk melihat apakah mereka berisi tabel EBLC . Jika tabel ditemukan, jalur ke font dicetak.
find . -regextype posix-extended -type f -iregex '.*.(ttf|otf|otc)$' -exec allsorts has-table -t EBLC -p {} ;
instance Alat instance menerapkan satu set nilai (tuple) ke sumbu variasi font variabel untuk menghasilkan font statis dan non-variabel dengan pengaturan tersebut.
-t , --tuple adalah daftar nilai yang terpisah koma satu untuk setiap sumbu variasi font. Alat variations akan mencantumkan sumbu, urutan, dan batasannya.-o , --output adalah jalur ke font output. Dalam contoh ini font memiliki dua sumbu: UNDO dan UNDS . Kami menyediakan nilai 500 untuk masing -masing dan menulis font output ke UnderlineTest.ttf .
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-featuresMencetak daftar indentasi fitur GSUB dan GPO font.
$ 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 Alat shape membentuk teks yang disediakan sesuai dengan font, bahasa, dan skrip yang disediakan. Ini mencetak mesin terbang sebelum dan sesudah dibentuk.
-f , --font PATH Path Path to Font File-i , --index INDEX Font untuk Bentuk (untuk TTC, WOFF2) (Default: 0)-s , --script SCRIPT Script Script to Shape-l , --lang LANG untuk membentuk--vertical Vertikal Vertikal, Default horizontal $ shape -f fonts/devanagari/AnnapurnaSIL-Regular.ttf -s deva -l HIN 'शब्दों और वाक्यों की तरह'
# output omitted
specimen Alat specimen menghasilkan lembar spesimen font HTML yang berisi teks sampel yang diatur dalam font serta informasi tentang font dan fitur yang didukung.
-i , --index INDEX Font ke Subset (untuk TTC, WOFF2) (Default: 0)--sample-text TEXT teks untuk digunakan dalam spesimen font $ allsorts specimen ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
subset Alat subset mengambil font sumber dan beberapa teks dan menulis versi baru dari font sumber yang hanya berisi mesin terbang yang diperlukan untuk teks yang disediakan.
-t , --text TEXT Subset Font untuk memasukkan mesin terbang dari teks-a , --all termasuk semua mesin terbang dalam font subset-i , --index INDEX Font ke Subset (untuk TTC, WOFF2) (Default: 0) $ allsorts subset -t 'This a subsetting test' NotoSansJP-Regular.otf noto-subset.otf
Number of glyphs in new font: 13
validate Alat validate mencoba mengurai semua mesin terbang (atau berbagai dikt dalam kasus CFF) dalam font yang disediakan. Ini melaporkan setiap kesalahan yang ditemui tetapi tidak diam. Perintah ini berguna untuk pengujian massal allsorts terhadap repertoar besar font dunia nyata.
$ allsorts validate ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
$ fd '.(ttf|otf|ttc)$' /usr/share/fonts | sort | parallel --bar allsorts validate {}
variations Alat variations mencantumkan informasi tentang font variabel. Informasinya meliputi:
Contoh ini mencetak informasi variasi untuk font di ../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 Alat view membentuk teks atau daftar codepoint yang disediakan sesuai dengan font, bahasa, dan skrip yang disediakan. Kemudian, ia menghasilkan SVG dari mesin terbang.
-f , --font PATH Path Path to Font File-s , --script SCRIPT Script Script to Shape-l , --lang LANG untuk membentuk--mark-origin Tandai asal dari masing-masing mesin terbang dengan rambut silang--margin num atau top,right,bottom,left tentukan margin untuk ditambahkan ke tepi svg--fg-colour rrggbbaa mengatur warna pengisian mesin terbang--bg-colour rrggbbaa mengatur warna latar belakang svg yang dihasilkan--fg-color rrggbbaa alias untuk --fg-colour--bg-color rrggbbaa Alias untuk --bg-colour-t , --text TEXT untuk diterjemahkan-c , --codepoints CODEPOINTS Daftar Codepoints yang Dipisahkan Koma (sebagai Hexadecimal Numbers) untuk diterjemahkan-i , --indices GLYPH_INDICES daftar indeks mesin terbang yang dipisahkan koma untuk diterjemahkan-F , --features FEATURES daftar fitur openType yang dipisahkan koma untuk mengaktifkan (Catatan: Hanya memungkinkan fitur ini) $ 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
Dalam contoh ini, fitur OpenType pres diaktifkan, yang memungkinkan Glyph 30 digantikan oleh formulir presentasi khusus (Glyph 547).
$ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva --features pres -i '30,54'
# output omitted
Versi karat yang didukung minimum: 1.70.0
Untuk membangun alat, pastikan Anda memasang karat.
cargo build --releasecargo install --path . Ada paket AUR untuk allsorts-tools :
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
Kontribusi dipersilakan, silakan merujuk ke Panduan Kontribusi AllSorts untuk lebih jelasnya.
Kami bertujuan untuk menegakkan standar komunitas karat:
Kami berkomitmen untuk menyediakan lingkungan yang ramah, aman dan ramah untuk semua, terlepas dari jenis kelamin, orientasi seksual, kecacatan, etnis, agama, atau karakteristik pribadi yang serupa.
Kami mengikuti kode perilaku karat.
Allsorts dan alat -alat ini didistribusikan berdasarkan ketentuan lisensi Apache (versi 2.0).
Lihat lisensi untuk detailnya.