Allsorts是一種字體解析器,塑造引擎和子集,用於Opentype,Woff和Woff2完全用Rust寫成。該存儲庫包含用於調試和測試Allsorts的工具,並提供了其使用的示例。
注意:這些工具用於演示,參考和調試目的。您不應依靠它們進行生產工作流程。
可用工具:
bitmaps - 位圖字體的轉儲位圖cmap打印字符到字形映射dump - 轉儲字體信息has-table - 檢查字體是否具有特定表格instance - 從變量字體創建字體的靜態實例layout-features - 打印字體的GSUB和GPOS功能列表shape - 從字體上施加塑形specimen - 生成字體的HTML字體spackimentsubset - 子集字體validate - 解析提供的字體,報告任何故障variations - 列出可變字體的變化軸view - 從字形生成SVGbitmaps bitmaps工具從EBLC / EBDT或CBLC / CBDT表中的字體上提取位圖。
-o是通往將位圖寫入的目錄的途徑。如果不存在,它將創建。 圖像在每個罷工(大小)的子目錄中以pngs的形式寫出。格式為{ppem_x}x{ppem_y}@{bit_depth} ,這些文件被命名為{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 cmap工具選擇了首選的cmap子桌,並將字符倒入Glyph索引條目。如果表格的編碼是Unicode,則將字符與代碼點一起打印,否則僅打印字符的數字值。
-f , --font指定字體文件的路徑。-i , --index是要轉儲字體的索引(對於TTC,WOFF2)(默認值: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 dump工具從字體文件打印或提取信息。
allsorts dump path/to/font打印出有關字體的信息。
--name包括輸出中的name表中包含的元數據。-c可用於打印有關未包裝在TrueType或Opentype容器中的CFF字體或表格的信息。-t從提供的字體中提取命名表。輸出應重定向到文件。例如allsorts dump -t glyf > glyf.bin-g在字體中打印有關特定字形的信息。-l在字體中的loca表中打印出所有偏移。 $ 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 has-table工具檢查提供的字體文件是否包含通過-t參數傳遞的表。如果字體包含表格成功(0)退出的表,如果字體不包含其帶有狀態1的表格。
該工具與find相結合,以找到具有所需表格的字體。
-t , --table TABLE表-i , --index INDEX索引要檢查(用於TTC,WOFF2)(默認值:0)-p , --print-file打印通往字體的路徑,如果它包含表。-v , --invert-match選擇沒有給定表的字體在此示例中,我們搜索當前目錄以在ttf , otf或otc中結束的文件,並檢查它們是否包含EBLC表。如果找到了表,則打印了通往字體的路徑。
find . -regextype posix-extended -type f -iregex '.*.(ttf|otf|otc)$' -exec allsorts has-table -t EBLC -p {} ;
instance該instance工具將一組值(元組)應用於可變字體的變化軸,以與這些設置一起產生靜態的,不可變化的字體。
-t , --tuple是一個字體的每個變體軸一個逗號分隔的值。 variations工具將列出軸,其順序和限制。-o , --output是輸出字體的路徑。 在此示例中,字體具有兩個軸: UNDO和UNDS 。我們為每個值提供500個值,並將輸出字體寫入UnderlineTest.ttf 。
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-features打印了字體的GSUB和GPOS功能的縮進列表。
$ 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 shape工具根據提供的字體,語言和腳本塑造所提供的文本。它在塑造之前和之後打印出字形。
-f , --font PATH通往字體的路徑-i , --index INDEX形狀(對於ttc,woff2)(默認值:0)-s , --script SCRIPT腳本要形成-l , --lang LANG語言--vertical垂直垂直佈局,默認值是水平的 $ shape -f fonts/devanagari/AnnapurnaSIL-Regular.ttf -s deva -l HIN 'शब्दों और वाक्यों की तरह'
# output omitted
specimen specimen工俱生成了一個HTML字體樣品表,其中包含字體中設置的示例文本以及有關字體及其支持的功能的信息。
-i , --index INDEX索引到子集(對於TTC,Woff2)(默認值:0)--sample-text TEXT文本用於字體樣品 $ allsorts specimen ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
subset subset工具採用源字體和一些文本,並寫入新版本的源字體,僅包含所提供文本所需的字形。
-t , --text TEXT集字體以包含文本的字形-a , --all在子集字體中都包含所有字形-i , --index INDEX索引到子集(對於TTC,Woff2)(默認值:0) $ allsorts subset -t 'This a subsetting test' NotoSansJP-Regular.otf noto-subset.otf
Number of glyphs in new font: 13
validate validate工具試圖在所提供的字體中解析所有字形(或CFF的各種尺寸)。它報告遇到的任何錯誤,但否則會保持沉默。該命令對於對Allsorts的批量測試很有用,以針對真實世界字體的大量曲目。
$ allsorts validate ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
$ fd '.(ttf|otf|ttc)$' /usr/share/fonts | sort | parallel --bar allsorts validate {}
variations variations工具列出了有關變量字體的信息。信息包括:
此示例在../text-rendering-tests/fonts/TestHVARTwo.ttf 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 view工具根據提供的字體,語言和腳本塑造所提供的文本或編碼點列表。然後,它生成一個SVG的字形。
-f , --font PATH通往字體的路徑-s , --script SCRIPT腳本要形成-l , --lang LANG語言--mark-origin用十字形標記每個字形的起源--margin num或top,right,bottom,left指定一個要添加到SVG邊緣的邊距--fg-colour rrggbbaa設置了字形的填充顏色--bg-colour rrggbbaa設置了生成的SVG的背景顏色--fg-color rrggbbaa別名 - --fg-colour--bg-color rrggbbaa別名--bg-colour-t , --text TEXT文本渲染-c , --codepoints CODEPOINTS comma comma condepoints codepoints(作為十六進制數字)渲染-i , --indices GLYPH_INDICES逗號分隔的字形指數列表-F , --features FEATURES逗號分隔的Opentype功能的列表(注意:僅啟用這些功能) $ 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
在此示例中,啟用了Opentype pres功能,該功能允許Glyph 30由其特殊演示表(Glyph 547)代替。
$ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva --features pres -i '30,54'
# output omitted
最低支持的銹版本: 1.70.0
為了構建工具,請確保您安裝了生鏽。
cargo build --releasecargo install --path .有一個用於allsorts-tools的AUR軟件包:
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
歡迎捐款,請參閱《 Allsorts貢獻指南》以獲取更多詳細信息。
我們旨在維護生鏽社區標準:
無論性別,性取向,殘疾,種族,宗教或類似的個人特徵,我們都致力於為所有人提供一個友好,安全和熱情的環境。
我們遵循鏽蝕守則。
Allsorts和這些工具是根據Apache許可證的條款(版本2.0)分發的。
有關詳細信息,請參見許可證。