Allsortsは、オペンタイプ、Woff、およびWoff2用のフォントパーサー、シェーピングエンジン、およびSubsetterです。このリポジトリには、Allsortsをデバッグおよびテストし、その使用の例を提供するために開発されたツールが含まれています。
注:これらのツールは、デモンストレーション、参照、およびデバッグ目的です。生産ワークフローのためにそれらに頼らないでください。
利用可能なツール:
bitmaps - ビットマップフォントからビットマップをダンプしますcmap - グリフマッピングに文字を印刷しますdump - フォント情報をダンプしますhas-table - フォントに特定のテーブルがあるかどうかを確認しますinstance - 変数フォントからフォントの静的インスタンスを作成しますlayout-features - フォントのGSUBとGPOの機能のリストを印刷しますshape - フォントからグリフにシェーピングを適用しますspecimen - フォント用のHTMLフォント標本を生成するsubset - サブセットフォントvalidate - 付属のフォントを解析し、障害を報告しますvariations - 変数フォントのバリエーション軸をリストしますview - グリフからSVGを生成しますbitmaps bitmapsツールは、 EBLC / EBDTまたはCBLC / CBDTテーブルのGlyph Bitmapsを含むフォントからビットマップを抽出します。
-o 、ビットマップを書き込むためのディレクトリへのパスです。存在しない場合は作成されます。 画像は、各ストライク(サイズ)のサブディレクトリのPNGとして書き込まれます。フォーマットは{ppem_x}x{ppem_y}@{bit_depth}で、ファイルは{glyph_id}.png :namedです。
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インデックスエントリにダンプします。テーブルのエンコードがユニコードの場合、文字はコードポイントとともに印刷されます。そうしないと、文字の数値が印刷されます。
-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)で終了します(0)、フォントにテーブルが含まれていない場合、ステータス1で終了します。
このツールは、目的のテーブルを持つフォントを見つけるために、 findと組み合わせて便利です。
-t 、 --table TABLEテーブル-i 、 --index INDEX index index of the font(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 、フォントの各変動軸に対して1つの値のコンマ分離リストです。 variationsツールには、軸、順序、および制限がリストされます。-o 、 --outputは出力フォントへのパスです。 この例では、フォントには2つの軸があります: UNDOに戻すとUNDS 。それぞれに500の値を提供し、 UnderlineTest.ttfに出力フォントを書き込みます。
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-featuresフォントのGSUBおよびGPOの機能のインデントリストを印刷します。
$ 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 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の場合のさまざまなDICT)を解析しようとします。遭遇したエラーを報告しますが、そうでなければ沈黙しています。このコマンドは、現実世界のフォントの大規模なレパートリーに対する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で印刷します。
$ 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コードポイントのコンマ分離されたリスト(16進数として)をレンダリングする-i 、 --indices GLYPH_INDICES glyph indedicesのコンマ分離リストをレンダリングする-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
ツールを構築するには、Rustがインストールされていることを確認してください。
cargo build --releasecargo install --path . allsorts-tools用のAURパッケージがあります。
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
貢献を歓迎します。詳細については、Allsorts Contributing Guideを参照してください。
私たちは、さびコミュニティの基準を維持することを目指しています:
私たちは、性別、性的指向、障害、民族性、宗教、または同様の個人的な特徴に関係なく、すべての人に友好的で安全で歓迎の環境を提供することを約束しています。
錆の行動規範に従います。
Allsortsとこれらのツールは、Apacheライセンスの条件(バージョン2.0)の条件の下で配布されます。
詳細については、ライセンスを参照してください。