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)分发的。
有关详细信息,请参见许可证。