Allsorts es un analizador de fuentes, un motor de configuración y subconjunto para OpenType, Woff y Woff2 escrito por completo en Rust. Este repositorio contiene herramientas que fueron desarrolladas para depurar y probar AllSorts y proporcionar ejemplos de su uso.
Nota: Estas herramientas son para fines de demostración, referencia y depuración. No debe confiar en ellos para los flujos de trabajo de producción.
Herramientas disponibles:
bitmaps : volcar mapas de bits de fuentes de mapa de bitscmap - Imprimir carácter a mapeos de glifodump - Dump Fuente Informaciónhas-table -Verifique si una fuente tiene una tabla en particularinstance : cree una instancia estática de una fuente a partir de una fuente variablelayout-features : imprima una lista de las características de GSUB y GPOS de una fuenteshape : aplique la configuración a los glifos desde una fuentespecimen : genere una especie de fuente HTML para una fuentesubset - subconjunto una fuentevalidate : analizar la fuente suministrada, informando cualquier fallasvariations : enumere los ejes de variación de una fuente variableview - Generar SVG a partir de glifosbitmaps La herramienta bitmaps extrae mapas de bits de fuentes que contienen mapas de bits de glifo en las tablas EBLC / EBDT o CBLC / CBDT .
-o es el camino al directorio para escribir los mapas de bits. Se creará si no existe. Las imágenes se escriben como PNG en un subdirectorio para cada ataque (tamaño). El formato es {ppem_x}x{ppem_y}@{bit_depth} , los archivos se denominan {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 La herramienta cmap elige una sub-mesa cmap preferida y arroja el carácter a las entradas del índice de glifo. Si la codificación de la tabla es unicode, los caracteres se imprimen junto con el punto de código, de lo contrario, solo se imprime el valor numérico del carácter.
-f , --font especifica la ruta al archivo de fuentes.-i , --index es el índice de la fuente para volcar (para TTC, woff2) (predeterminado: 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 La herramienta dump imprime o extrae información de un archivo de fuente.
allsorts dump path/to/font imprime información sobre la fuente.
--name incluye los metadatos contenidos en la tabla name en la salida.-c se puede usar para imprimir información sobre una fuente o tabla CFF no envuelta en un contenedor TrueType u OpenType.-t extrae la tabla nombrada de la fuente suministrada. La salida debe redirigirse a un archivo. Por ejemplo, allsorts dump -t glyf > glyf.bin-g imprime información sobre un glifo específico en una fuente.-l imprime todas las compensaciones en la tabla loca en la fuente. $ 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 La herramienta has-table compite si el archivo de fuente suministrado contiene la tabla pasada a través del argumento -t . Si la fuente contiene la tabla, sale con el éxito del estado (0), si la fuente no contiene la tabla, sale con el estado 1.
Esta herramienta es útil combinada con find , para localizar fuentes que tengan la tabla deseada.
-t , table de --table TABLE para verificar-i , --index INDEX de la fuente para verificar (para TTC, woff2) (predeterminado: 0)-p , --print-file Imprima la ruta a la fuente si contiene la tabla.-v , --invert-match Fonts de selección de selección que no tienen la tabla dada En este ejemplo, buscamos en el directorio actual los archivos que terminan en ttf , otf o otc y verificamos si contienen una tabla EBLC . Si se encuentra la tabla, se imprime la ruta a la fuente.
find . -regextype posix-extended -type f -iregex '.*.(ttf|otf|otc)$' -exec allsorts has-table -t EBLC -p {} ;
instance La herramienta instance aplica un conjunto de valores (TUPLE) a los ejes de variación de una fuente variable para producir una fuente estática y no variable con esas configuraciones.
-t , --tuple es una lista de valores separada por comas uno para cada eje de variación de la fuente. La herramienta variations enumerará los ejes, su orden y los límites.-o , --output es la ruta a la fuente de salida. En este ejemplo, la fuente tiene dos ejes: UNDO y UNDS . Suministramos un valor de 500 para cada uno y escribimos la fuente de salida a UnderlineTest.ttf .
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-featuresImprime una lista sangrada de las funciones GSUB y GPOS de una fuente.
$ 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 La herramienta shape da forma al texto suministrado de acuerdo con la fuente suministrada, el idioma y el script. Imprime los glifos antes y después de dar forma.
-f , --font PATH a archivo Font-i , --index INDEX de la fuente a la forma (para TTC, woff2) (predeterminado: 0)-s , --script SCRIPT script para dar forma-l , --lang LANG para dar forma--vertical vertical vertical, el valor predeterminado es horizontal $ shape -f fonts/devanagari/AnnapurnaSIL-Regular.ttf -s deva -l HIN 'शब्दों और वाक्यों की तरह'
# output omitted
specimen La herramienta specimen genera una hoja de muestras de fuentes HTML que contiene texto de muestra establecido en la fuente, así como información sobre la fuente y sus características compatibles.
-i , --index INDEX de la fuente a subconjunto (para TTC, woff2) (predeterminado: 0)--sample-text TEXT de muestra para usar en la muestra de fuente $ allsorts specimen ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
subset La herramienta subset toma una fuente de origen y algún texto y escribe una nueva versión de la fuente de origen que solo contiene los glifos requeridos para el texto suministrado.
-t , --text TEXT subconjunto de la fuente para incluir glifos del texto-a , --all incluyen todos los glifos en la fuente de subconjunto-i , --index INDEX de la fuente a subconjunto (para TTC, woff2) (predeterminado: 0) $ allsorts subset -t 'This a subsetting test' NotoSansJP-Regular.otf noto-subset.otf
Number of glyphs in new font: 13
validate La herramienta validate intenta analizar todos los glifos (o varios dicones en el caso de CFF) en la fuente suministrada. Reporta cualquier error encontrado, pero no está en silencio. Este comando fue útil para pruebas a granel AllSorts contra un gran repertorio de fuentes del mundo real.
$ allsorts validate ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
$ fd '.(ttf|otf|ttc)$' /usr/share/fonts | sort | parallel --bar allsorts validate {}
variations La herramienta variations enumera la información sobre una fuente variable. La información incluye:
Este ejemplo imprime información de variación para la fuente en ../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 La herramienta view da forma al texto suministrado o la lista de puntos de código de código de acuerdo con la fuente suministrada, el idioma y el script. Luego, genera un SVG de los glifos.
-f , --font PATH a archivo Font-s , --script SCRIPT script para dar forma-l , --lang LANG para dar forma--mark-origin Marque el origen de cada glifo con un paso de campo--margin num o top,right,bottom,left especifica un margen que se agregará al borde del SVG--fg-colour rrggbbaa establece el color de relleno de los glifos--bg-colour rrggbbaa establece el color de fondo del SVG generado--fg-color rrggbbaa para --fg-colour--bg-color rrggbbaa para --bg-colour-t , --text TEXT para renderizar-c , --codepoints CODEPOINTS Lista de puntos de código de código (como números hexadecimales) para renderizar-i , --indices GLYPH_INDICES Lista de índices de glifo se separó de los glifos para renderizar-F , --features FEATURES se separan en la lista de características de OpenType para habilitar (nota: Solo habilita estas características) $ 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
En este ejemplo, la función OpenType pres está habilitada, lo que permite que Glyph 30 sea reemplazado por su forma de presentación especial (Glyph 547).
$ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva --features pres -i '30,54'
# output omitted
Versión mínima de óxido compatible: 1.70.0
Para construir las herramientas, asegúrese de tener óxido instalado.
cargo build --releasecargo install --path . Hay un paquete AUR para allsorts-tools :
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
Las contribuciones son bienvenidas, consulte la Guía de contribución de AllSorts para obtener más detalles.
Nuestro objetivo es mantener los estándares de la comunidad de Rust:
Estamos comprometidos a proporcionar un ambiente amigable, seguro y acogedor para todos, independientemente de su género, orientación sexual, discapacidad, etnia, religión o características personales similares.
Seguimos el Código de Conducta de Rust.
Allsorts y estas herramientas se distribuyen bajo los términos de la licencia Apache (versión 2.0).
Vea la licencia para más detalles.