vectorcraft/crates/pdf/src
BFlat 079f9a8b9a Fix #296: variable fonts list and draw every named style
The font database made one style per font file, so a variable font
such as Figtree[wght].ttf listed only its default instance (Light).
Faces now also yield their fvar named instances, each a style of the
family named by its subfamily name (the default instance is the face
itself; unnamed or duplicate instances are left out; axes and
instances read are capped). The system font scan reads the fvar table
beside the name table, so installed instances are listed before the
file is loaded and found by name and by PostScript name.

An instance face carries its axis settings: skrifa draws its outlines
and reads its metrics and advances at that location, harfrust shapes
with a ShaperInstance, so layout, the canvas, Create Outlines and hit
testing all use the instance. PDF export embeds it through krilla's
Font::new_variable, SVG @font-face through subsetter's
subset_with_variations: both write a static font of that instance.

Tests build a small variable font in code (test_fonts, via
write-fonts; no font file is committed) and check listing, resolving,
glyphs and advances, PDF and SVG export and damaged fvar/gvar tables;
Bahnschrift and Segoe UI Variable are checked where installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:01:26 +07:00
..
print M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
editing.rs M4.85: PDF security: encryption at every compatibility level, permissions, either password opens 2026-10-05 15:24:16 +07:00
encrypt.rs Lint: as_chunks for constant chunk sizes, as clippy 1.99 asks 2026-10-05 12:14:56 -07:00
export.rs Fix #296: variable fonts list and draw every named style 2026-10-07 21:01:26 +07:00
forms.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
images.rs M4.73: PDF colour conversion, ICC profiles and output intent 2026-10-05 16:25:20 +07:00
import.rs PDF/.ai import: art of a neighbouring artboard stays on its own page 2026-10-07 13:20:07 +07:00
import_color.rs M4.46: PDF import keeps CMYK, Gray and spot colours 2026-10-05 09:37:11 +07:00
import_mask.rs M4.61: PDF import fidelity: opacity masks, isolate/knockout, pattern swatches, editable text, gradient meshes, stop opacity and Extend 2026-10-05 13:05:12 +07:00
import_scan.rs M4.62: PDF/.ai layers from optional content: named layers with visibility, print state and lock; art that is off as hidden layers 2026-10-05 13:05:12 +07:00
import_shading.rs M4.61: PDF import fidelity: opacity masks, isolate/knockout, pattern swatches, editable text, gradient meshes, stop opacity and Extend 2026-10-05 13:05:12 +07:00
import_text.rs PDF/.ai import: the last glyph of type on a path stays on its path 2026-10-07 13:03:00 +07:00
lab_spot.rs M4.73: PDF colour conversion, ICC profiles and output intent 2026-10-05 16:25:20 +07:00
lib.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
linearize.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
marks.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
output.rs M4.82: PDF export writes top-level layers as PDF layers 2026-10-05 17:39:28 +07:00
pages.rs M4.85: PDF security: encryption at every compatibility level, permissions, either password opens 2026-10-05 15:24:16 +07:00
patch.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
pdfx.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
post.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
presets.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
settings.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
syntax.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
tests.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_blend.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_charstroke.rs M3.40: stroke on type — the Stroke panel edits the characters' stroke 2026-10-05 01:09:55 +07:00
tests_cmykblend.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_compression.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_dashalign.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_editing.rs M4.43: PDFs and .ai files reopen editable; Save As writes PDF-compatible .ai 2026-10-05 10:34:15 +07:00
tests_encrypt.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_focal.rs M3.98: radial annotator extent ellipse, aspect handle and off-centre focal point 2026-10-05 04:43:43 +07:00
tests_fx.rs M3.43: effects render on type, placed images, symbol instances, blends, envelopes, meshes and repeats; a fill or stroke's own raster effects render and export as SVG filters on that element 2026-10-04 23:15:13 +07:00
tests_import_color.rs M4.46: PDF import keeps CMYK, Gray and spot colours 2026-10-05 09:37:11 +07:00
tests_import_fidelity.rs PDF/.ai import: the last glyph of type on a path stays on its path 2026-10-07 13:03:00 +07:00
tests_import_layers.rs M4.62: PDF/.ai layers from optional content: named layers with visibility, print state and lock; art that is off as hidden layers 2026-10-05 13:05:12 +07:00
tests_import_options.rs PDF/.ai import: art of a neighbouring artboard stays on its own page 2026-10-07 13:20:07 +07:00
tests_layers.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
tests_marks.rs M4.72: PDF export draws printer's marks in Registration around each page 2026-10-05 13:05:20 +07:00
tests_output.rs M4.73: PDF colour conversion, ICC profiles and output intent 2026-10-05 16:25:20 +07:00
tests_pdf13.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
tests_pdfx.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_presets.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_print.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
tests_printadvanced.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
tests_realtext.rs Fix #296: variable fonts list and draw every named style 2026-10-07 21:01:26 +07:00
tests_settings.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
tests_stroke.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_strokeout.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_textstroke.rs M4.59: pattern strokes and freeform gradients keep their look in PDF 2026-10-05 11:52:35 +07:00
tests_webview.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00