Skip to content

0.0.1

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 22 May 11:41
· 527 commits to main since this release
e0b1cb4

What's Changed

  • Spinning up compiler repo by @rsheeter in #1
  • Design space axis to IR axis by @rsheeter in #2
  • Starting on change tracking by @rsheeter in #5
  • Remove empty test that will never be populated by @rsheeter in #7
  • Let loose the mighty fontir, fenris lesser known cousin by @rsheeter in #8
  • Add the ability to consider A changed if B changes. by @rsheeter in #9
  • Add a very stripped down sample of a designspace to use in fontc tests by @rsheeter in #11
  • [testdata] add required layercontents.plist, plus DS source with 'layer' attribute by @anthrotype in #13
  • Start figuring out which things we need to rebuild in fontc by @rsheeter in #10
  • Rough in parallel designspace glyph to IR processing by @rsheeter in #12
  • Pay attention to layer when loading glif files by @rsheeter in #15
  • Provide the location when creating glif work by @rsheeter in #16
  • A .glyphs VF for testing by @rsheeter in #19
  • Add the ability to capture the state of a slice. by @rsheeter in #20
  • Add the ability to read glyphs files by @rsheeter in #21
  • Find the glyphs in a .glyphs and sketch out wiring to process them by @rsheeter in #24
  • Use hashable types and derived plist conversion instead of raw access by @rsheeter in #25
  • Add glyphs 2 (as written by glyphs 3) examples by @rsheeter in #29
  • replace toml-rs with serde_yaml by @anthrotype in #31
  • Capture the plan by @rsheeter in #32
  • Start to convert Glyphs v2 to Glyphs v3 by @rsheeter in #30
  • Use a release of Norad again by @rsheeter in #36
  • Remove unused fontations deps by @rsheeter in #38
  • Parse unicode from glyphs files by @rsheeter in #37
  • Playing with how to move state around by @rsheeter in #39
  • Start emitting IR for UFO glifs by @anthrotype in #18
  • Get the axis ranges from .glyphs files by @rsheeter in #42
  • Add a piecewise linear map based on the python version by @rsheeter in #46
  • Push Glyphs axes => StaticMetadata using Context by @rsheeter in #43
  • <3 units by @rsheeter in #55
  • Mk2 of unit interchange by @rsheeter in #56
  • Use updated converters on .designspace files by @rsheeter in #57
  • Restore smoke test by @rsheeter in #58
  • Load Glyphs v2 axis mappings, example based on Texturina, into converter by @rsheeter in #59
  • Create blank GlyphInstances at correct NormalizedLocation for .glyphs by @rsheeter in #60
  • Use an enum to distinguish Path from Component, populate for Glyphs 2 and 3 by @rsheeter in #63
  • Use IndexSet for glyph order by @rsheeter in #67
  • Make Location a type so it can have impl's by @rsheeter in #68
  • Make it possible to change the build dir by @rsheeter in #71
  • First pass at executing job graph by @rsheeter in #69
  • Code review on #69 from @anthrotype by @rsheeter in #77
  • Add a simple test ufo+ds that has features by @rsheeter in #78
  • Fontdrasil by @rsheeter in #79
  • Add wiring for backend tasks by @rsheeter in #82
  • Build fea files in ufo+ds if identical across masters by @rsheeter in #81
  • Use SmolStr instead of String in WorkIdentifier::GlyphName by @rsheeter in #88
  • Read and honor Axis Location on font masters by @rsheeter in #83
  • Compile simple - no token expansion - fea for .glyphs by @rsheeter in #91
  • Use Kurbo's Point and Affine types by @rsheeter in #101
  • small: fix some error format strings by @rsheeter in #105
  • glyphs contour and component conversion by @rsheeter in #98
  • Update path handling based on smoke test by @rsheeter in #108
  • Use kurbo::BezPath instead of our own in-house contour by @rsheeter in #104
  • small: support tag on feature by @rsheeter in #107
  • Fill in qcurve by @rsheeter in #111
  • Move non-uniform to it's own test by @rsheeter in #114
  • [glyphs-reader] Fix order of combined affine transform by @anthrotype in #113
  • Use upcoming compile api for fea-rs by @rsheeter in #97
  • Make clippy happy @ 1.67 by @rsheeter in #118
  • VariationModel in Rust, part 1 by @rsheeter in #117
  • Store a VariationModel in StaticMetadata by @rsheeter in #119
  • Add a phase that eliminates mixed contour+component glyphs; legal in source but not binary by @rsheeter in #123
  • Update kurbo by @rsheeter in #126
  • Add the ability to filter glyphs to be processed by @rsheeter in #127
  • Forgive me oh wise and powerful clippy by @rsheeter in #129
  • Very sophisticated instructions by @rsheeter in #133
  • Make ACL system more flexible (static glyf, 1 of 3) by @rsheeter in #130
  • Build simple glyphs (static glyf, 2 of 3) by @rsheeter in #131
  • Composite glyphs (static glyf, 3 of 3) by @rsheeter in #132
  • Build a simple cmap by @rsheeter in #134
  • Emit mvp post by @rsheeter in #139
  • Try to de-duplicate some of our Context helpers by @rsheeter in #140
  • Rough in hmtx by @rsheeter in #143
  • Properly round advances when building hmtx by @rsheeter in #151
  • Assemble final font by @rsheeter in #148
  • Improve composite glyf bbox computation by @rsheeter in #153
  • Create the minimal maxp for a TrueType outlines font by @rsheeter in #154
  • Add a minimal head table. Our fonts now ttx. by @rsheeter in #156
  • [fontc] move Args to args module by @cmyr in #159
  • [fontc] Replace test_args with Args::for_test by @cmyr in #160
  • Add hhea by @rsheeter in #158
  • [fontc] Move Config to new 'config' module by @cmyr in #161
  • [fontc] Make Config::init return errors by @cmyr in #165
  • Update deps by @cmyr in #163
  • [fontc] Recompute config path as needed by @cmyr in #166
  • Require Glyph to have a default location, make that instance easy to get by @rsheeter in #167
  • [fontc] Move ChangeDetector into change_detector.rs by @cmyr in #168
  • [fontc] Split main.rs and lib.rs by @cmyr in #169
  • [fontc] Add workload module by @cmyr in #175
  • Rework AccessFn type by @cmyr in #177
  • Combine identical impl blocks by @cmyr in #180
  • Remove unnecessary bounds on types by @cmyr in #179
  • Remove doc(hidden) from test helper by @cmyr in #178
  • Add 'name' values to WghtVar.glyphs by @rsheeter in #182
  • Set all the names I could find by @rsheeter in #183
  • Take 'name' entries from the default master for UFO+designspace by @rsheeter in #171
  • Support lang=dflt names from .glyphs 2 and 3 by @rsheeter in #184
  • Don't lose post by @rsheeter in #191
  • MVP OS2: the default by @rsheeter in #190
  • Move to write-fonts 0.1.5; it fixes cmap by @rsheeter in #193
  • Produce a font that renders by @rsheeter in #194
  • Mention githooks in README by @cmyr in #197
  • Add a script and a CI to fire it that builds a font and runs OTS on it by @rsheeter in #199
  • [ufo2fontir] Codegolf computing UPM by @cmyr in #198
  • Read ascender and descender from the default UFO by @rsheeter in #200
  • Update CI to match googlefonts/fontations#254 by @rsheeter in #202
  • Minor cleanup by @cmyr in #181
  • Fix 'no default master' error for empty glyphs by @anthrotype in #186
  • Capture glyphs v3 ascender/descender and plumb through to IR by @rsheeter in #201
  • x-height and cap height by @rsheeter in #203
  • Use a loc:metrics map by @rsheeter in #206
  • Basic fvar by @rsheeter in #211
  • Use font_types NameId by @rsheeter in #216
  • Avar mk1 by @rsheeter in #213
  • Use font_types definition of Tag for IR by @rsheeter in #215
  • Fix bad merge by @rsheeter in #218
  • Fix fvar filtering bug by @rsheeter in #219
  • add pre-push git hook to check for println! or eprintln! statements in Rust files by @anthrotype in #204
  • Vendor ID by @rsheeter in #221
  • Use kurbo 0.9.2 to get fix to cubic to quadratic by @rsheeter in #222
  • allow to set fontc --emit-ir=false by @anthrotype in #225
  • bump write-fonts to 0.1.7, fixes building cmap with large idDeltas by @anthrotype in #228
  • build post format 2.0 containing glyph names by default by @anthrotype in #229
  • Build a simple font w/o OTS warnings by @rsheeter in #231
  • [fontbe/head] set created/modified to current timestamp or SOURCE_DATE_EPOCH by @anthrotype in #232
  • Filename does not align with a single location by @rsheeter in #234
  • Add get deltas method by @rsheeter in #230
  • Expose and fix bug where metrics would capture for glyph-only layers by @rsheeter in #238
  • GlyphPathBuilder: always output implicit closing line for closed paths by @anthrotype in #239
  • Add a test .designspace with two axes, one to move X and the other Y by @rsheeter in #242
  • Adjust handling of env var in a test by @rsheeter in #243
  • Compile a gvar for Texturina that ttx accepts by @rsheeter in #246
  • Tweak to make testing with glyph name filter easier by @rsheeter in #247
  • Compile simple VFs w/gvar that works in a browser by @rsheeter in #236
  • Use skrifa from crates by @dfrg in #253
  • Add examples of glyphs files with instances by @rsheeter in #254
  • Move to kurbo 0.9.3 to fix compilation failure by @rsheeter in #256
  • Load .glyphs instances and use them to inform axis rigging by @rsheeter in #252
  • [ci] test all packages individually by @dfrg in #258
  • Use #[fromplist(rest)] instead of #[rest] by @rsheeter in #259
  • Pick short or long loca by @rsheeter in #260
  • Correct comment by @rsheeter in #265
  • Obey emit_ir more closely by @rsheeter in #261
  • Only convert to contours if basis vectors vary by @rsheeter in #266
  • Set USE_MY_METRICS similar to how ufo2ft does it by @rsheeter in #267
  • Preallocate delta buffer by @rsheeter in #269
  • Support component flattening by @rsheeter in #268
  • Make arg and flag defaults match by @rsheeter in #271
  • Centralize versions of shared dependencies by @rsheeter in #272
  • Don't crash when a glyph bbox x_max is < 0 by @rsheeter in #273
  • From plist fixups by @cmyr in #274
  • Add a comment about point stream => bezpath by @rsheeter in #276
  • Filter implied on curves for interpolatable glyphs by @anthrotype in #277
  • Update to latest fea-rs, write-fonts by @rsheeter in #280
  • Parse more unquoted strings by @madig in #282
  • Use font-types serde support by @rsheeter in #284
  • Fire IUP optimization per glyph by @rsheeter in #279
  • Use latest write-fonts so we produce identical cmap's for Oswald. by @rsheeter in #289
  • Helper for frequent diff pattern by @rsheeter in #288
  • Explore using the glyphsLib datafile to figure out if things are nonspacing marks by @rsheeter in #287
  • Add basic support for named instances for .glyphs files by @rsheeter in #293
  • Make Oswald OS/2 from fontc closer to that from fontmake by @rsheeter in #294
  • Support ttx_diff.py run on a .designspace by @rsheeter in #295
  • Bring OS/2 and named instance support for ufo+ds up to par with .glyphs by @rsheeter in #297
  • Update README.md by @rsheeter in #303
  • Update write-fonts, fea-rs by @cmyr in #302
  • Make fsSelection match for Oswald by @rsheeter in #298
  • Set OS/2 unicode ranges by @rsheeter in #299
  • Set codepage range bits in OS/2 by @rsheeter in #301
  • Match outlineCompiler.py default value for break char by @rsheeter in #305
  • Set first/last char index on OS/2 by @rsheeter in #304
  • Improve handling of fea-rs output by @rsheeter in #306
  • Didn't rename dir in ttx_dif.py by @rsheeter in #311
  • Compute usMaxContext for GSUB by @rsheeter in #309
  • Make Oswald 'name' match fontmake by @rsheeter in #314
  • Match glyphsLib/ufo2ft defaults for underline thickness/position by @rsheeter in #315
  • This updates to new versions of fontations + fea-rs by @cmyr in #319
  • Improve hhea enough to match for Oswald by @rsheeter in #317
  • Appease clippy by @rsheeter in #322
  • Use the real sort order for 'name' by @rsheeter in #321
  • Update a comment by @rsheeter in #323
  • Remove sort; I get identical name regardless by @rsheeter in #326
  • Update root readme by @rsheeter in #325
  • Make maxp almost match for Oswald by @rsheeter in #320
  • Set more of head correctly by @rsheeter in #324
  • Remove checksum from diff by @rsheeter in #328
  • Write a rudimentary STAT by @rsheeter in #329
  • Add example .glyphs kern and ability to read it by @rsheeter in #330
  • Update fontations by @cmyr in #332
  • require write-fonts 0.6.1 by @anthrotype in #335
  • Add/update test files with kerning data by @rsheeter in #331
  • ttx_diff.py: pass --drop-implied-oncurves fontmake option to reduce glyf diff by @anthrotype in #336
  • Resolve fea includes for UFO against dir containing .ufo by @rsheeter in #337
  • Model kerning in IR and capture it for .glyphs and .designspace by @rsheeter in #334
  • Take the default master as authoritative in designspace kerning by @rsheeter in #338
  • only test for use_my_metrics component flags for the default instance by @anthrotype in #340
  • Update to write-fonts 0.6.2 to get updated reverse pen by @rsheeter in #341
  • Use latest norad; stop manually adding instances by @rsheeter in #342
  • Update fontations/fea-rs by @cmyr in #343
  • Update fontations crates + fea-rs by @cmyr in #344
  • [fontir] Use common rust method names in Location by @cmyr in #346
  • Use tag instead of name in Location by @rsheeter in #348
  • Use display representations when logging errors by @cmyr in #350
  • Bump norad and fea-rs by @cmyr in #351
  • [fontir] Minor fixups in variations.rs by @cmyr in #353
  • Housekeeping: a work should know it's own id by @rsheeter in #356
  • Housekeeping: Let Work tell us what ids it completed by @rsheeter in #358
  • Update fontations & fea-rs by @cmyr in #360
  • Housekeeping: let work tell us dependencies and what it reads/writes by @rsheeter in #359
  • bump fea-rs dep to 0.9.1 by @anthrotype in #364
  • Include source info when writing logs by @cmyr in #368
  • Tiny refactor in main runloop by @cmyr in #370
  • Update syn by @cmyr in #366
  • Remove most impls of From<&T> by @cmyr in #372
  • Update fea-rs/fontations by @cmyr in #374
  • Halt runloop when jobs panic by @cmyr in #371
  • [ufo2fontir] Fix for optional designspace names by @cmyr in #376
  • Update fontations/fea-rs by @cmyr in #379
  • must follow fvar axes order when building gvar GlyphDeltas by @anthrotype in #387
  • GlyphPathBuilder: support contours starting with offcurves or without oncurves by @anthrotype in #385
  • Restore fine-grained glyph work dependencies by @rsheeter in #380
  • fontbe/gvar: don't skip glyphs without variations by @anthrotype in #389
  • iup_delta_optimize' contour_ends wants endpoint indices, must -1 lengths by @anthrotype in #390
  • Restore the ability to produce a meaningful flamegraph by @rsheeter in #391
  • Document flamegraph, it's quite handy by @rsheeter in #392
  • Script that helps compare build time across branches by @rsheeter in #394
  • Use fontations Glyph enum by @cmyr in #382
  • Use fontations glyf/loca builder by @cmyr in #383
  • bump write-fonts to 0.14.1 by @anthrotype in #401
  • Preallocate some buffers based on flamegraph by @rsheeter in #393
  • Tweak is_nonspacing_mark_name based on flamegraph by @rsheeter in #395
  • Use GDEF table provided by fea-rs by @cmyr in #405
  • Generate kern fea and pass to fea-rs by @rsheeter in #373
  • [features] Update fea-rs to allow axis unit suffixes by @cmyr in #408
  • Add merge_group to on: by @rsheeter in #409
  • Generate kerning fea with normalized units by @rsheeter in #410
  • Try to parallelize test execution by @rsheeter in #411
  • Fix glyph variations for sparse and intermediate masters by @anthrotype in #403
  • Add kerning to fea include test to trigger breakage; fix it by @rsheeter in #413
  • Manually catch & print errors in main() by @cmyr in #416
  • Update to fea-rs floating like a butterfly by @rsheeter in #418
  • Fix clippy, format, etc after rustup by @rsheeter in #419
  • Prove no outlines take no glyf space by @rsheeter in #424
  • Use pub(crate) in fontir/src/serde.rs by @rsheeter in #425
  • Generate missing .notdef like ufo2ft by @rsheeter in #423
  • Fix MissingAxisTentError when building Oswald by @anthrotype in #427
  • leave generated .notdef glyph unmapped in cmap by @anthrotype in #428
  • Rename static metadata fields for clarity by @rsheeter in #431
  • Housekeeping by @rsheeter in #432
  • Update fontations/fea-rs by @cmyr in #433
  • avar was wrong if default was min or max value for the axis by @rsheeter in #434
  • Bump fea-rs to 0.16.1 by @cmyr in #437
  • Add support for anchors to IR and glyphs2fontir by @rsheeter in #438
  • Script generating designspaces from .glyphs by @rsheeter in #439
  • Capture anchors in glyphs and ufo 2 fontir by @rsheeter in #440
  • add requirements.txt for ttx_diff.py by @anthrotype in #444
  • add --compile-features=false to disable FEA compilation by @anthrotype in #446
  • Improve plist ergonomics by @cmyr in #450
  • Support loading from .glyphspackage by @anthrotype in #447
  • glyphs-reader: ignore nodes userData by @anthrotype in #452
  • Tweak root readme by @rsheeter in #455
  • Capture instructions to narrow a flamegraph by @rsheeter in #460
  • Update fontc/Cargo.toml by @chrissimpkins in #459
  • Add a visualization of thread activity by @rsheeter in #443
  • Move consistent transform computation to glyph and avoid allocation by @rsheeter in #462
  • Filter out disabled features in glyphs files by @rsheeter in #463
  • Update for new delta IUP API by @cmyr in #471
  • Improve handling of composite glyph deltas by @cmyr in #472
  • skip avar segments when they are all identity mappings by @anthrotype in #470
  • Optionally eliminate components with transforms to match gftools by @rsheeter in #480
  • ufo2fontir: prefer use instance.stylename by @anthrotype in #481
  • skip feature IR job if --compile-features=false by @anthrotype in #482
  • use BezPath::reverse_subpaths() from latest kurbo by @anthrotype in #484
  • Update verbose flag string by @rsheeter in #485
  • Reverse TrueType glyph contour direction by default to match fontmake by @anthrotype in #475
  • Add an underscore after capitals in glyph names by @rsheeter in #486
  • Further improve generation of safe filenames by @rsheeter in #488
  • Parse plists directly into the target structures instead of building a graph of enums first by @rsheeter in #467
  • Update README.md by @rsheeter in #491
  • Postscript names for UFO sources by @RickyDaMa in #489
  • [ttx_diff.py] remove fontmake's --no-production-names flag by @anthrotype in #498
  • [ttx_diff.py] pass --no-production-names until supported for both .glyphs & DS by @anthrotype in #500
  • Update README.md by @rsheeter in #497
  • Don't lose MiscMetadata in serde by @rsheeter in #501
  • Move coords to fontdrasil so fea-rs can agree with us on what NormalozedLocation looks like by @rsheeter in #503
  • Merge fea-rs repo by @cmyr in #505
  • Update fea-lsp dependencies by @cmyr in #512
  • [ci] Merge fea-rs actions into main CI workflow by @cmyr in #511
  • Add an allowlist for prints and permit a few by @rsheeter in #514
  • [ci] Address remaining eprintln statements in fea-rs by @cmyr in #515
  • [chore] Update manifests post fea-rs merge by @cmyr in #513
  • Remove unused quick-xml by @anthrotype in #518
  • fea-rs => fontc coords by @rsheeter in #516
  • feature writer api by @rsheeter in #517
  • Fixup 'default-run' settings by @cmyr in #521
  • Build HVAR (take 2) by @anthrotype in #527
  • First step toward marks by @rsheeter in #492
  • [fea-rs] Rename gsub/gpos module to gsub/gpos{_builders} by @cmyr in #534
  • [fea-rs] Tweak logic for assigning glyph class ids by @cmyr in #536
  • [fea-rs] Update fonttools test data files by @cmyr in #540
  • Add support for intermediate (aka "brace") layers from Glyphs sources by @anthrotype in #538
  • New test file plus instructions to make more by @rsheeter in #543
  • Add 'GlyphSet' type to fea-rs to encode the property of a sorted & deduped set of glyphs by @cmyr in #539
  • Add test files that restrict glyph export by @rsheeter in #546
  • Correct family for WghtVar_NoExport.glyphs so it exports to expected .designspace by @rsheeter in #547
  • Make the export status of a glyph available by @rsheeter in #548
  • Do not retain glyphs we should not retain by @rsheeter in #549
  • Match fontmake defaults for fsType by @rsheeter in #553
  • Update README.md by @rsheeter in #554
  • Fix MissingGlyphId while building mark feature with a non-export glyph with anchors by @anthrotype in #557
  • Push building a lookup up one level by @rsheeter in #560
  • [fontc] Ensure feature code is deterministic by @cmyr in #561
  • Title for timing elements by @rsheeter in #563
  • Capture timing for early stages by @rsheeter in #564
  • Directly interfere to start kern sooner by @rsheeter in #562
  • [fea-rs] ensure first wins when specific kern rules conflict by @anthrotype in #566
  • ensure non-export glyphs get pruned from kerning groups by @anthrotype in #558
  • [glyphs-reader] fix a typo by @anthrotype in #570
  • Add support for 'Virtual Master' Glyphs.app's custom parameter by @anthrotype in #569
  • Don't block on glyph order if you don't have to by @rsheeter in #565
  • don't emit IR by default and rename option to --incremental by @anthrotype in #575
  • Move construction of kerning and mark structures to feed to fea-rs into separate jobs that can run in parallel by @rsheeter in #567
  • make input arg positional, add -o/--output-file option by @anthrotype in #576
  • Add GS main branch build CI testing by @chrissimpkins in #574
  • [ttx_diff] Run black formatter by @cmyr in #583
  • [fontc/args] don't take true|false argument in --incremental by @anthrotype in #580
  • [gsbuild] remove superflous --source CLI flag, use positional input source by @anthrotype in #579
  • Add tool for generating a normalized text representation of mark/kerning rules by @cmyr in #578
  • Add automated clap --version / -V CLI version string support by @chrissimpkins in #587
  • Bump OTS testing version to latest by @chrissimpkins in #588
  • [fontbe/avar] don't skip no-op segment maps by @anthrotype in #586
  • [fontc] More code reuse in fontc tests by @cmyr in #584
  • Build builder with 'build' instead of TryInto by @cmyr in #592
  • [ttx_diff] fix minor typo by @anthrotype in #595
  • [fea-rs] Disable printing in test by @cmyr in #597
  • Add verbose debugging version reporting by @chrissimpkins in #590
  • [ci] Add OTS tests on GS builds by @chrissimpkins in #589
  • [workload] exclude non-runnable jobs when popping items from the run_queue by @anthrotype in #600
  • [marks] Add bases for mark2mark lookups by @cmyr in #577
  • [fontbe] make cu2qu tolerance relative to UPEM by @anthrotype in #599
  • [chore] Rationalize imports by @cmyr in #596
  • Tidy up by @rsheeter in #603
  • [chore] Update fontations crates by @cmyr in #605
  • Note what each crate is for in its readme by @rsheeter in #602
  • Use is identity by @cmyr in #606
  • Add variable-aware ValueRecord and Anchor types to fea-rs by @cmyr in #598
  • Delete SimpleCompile by @rsheeter in #604
  • Construct kerning/mark lookup builders direclty by @cmyr in #609
  • [features] Improve PreviouslyAssignedClass error by @cmyr in #613
  • [fontir] Remove custom serde impl for Kerning by @cmyr in #614
  • Remove custom serde impls for fontir::ir module by @cmyr in #615
  • [ttx_diff] Get ttx_diff working again by @cmyr in #617
  • Allow .glyphs to specify fsType by @rsheeter in #621
  • move italic_angle to StaticMetadata; set in post table by @anthrotype in #622
  • Use italic_angle to set default hhea caret slope/run by @anthrotype in #623
  • [glypsh-reader] fix ParseIntError when custom param has unquoted string by @anthrotype in #626
  • Improve error messages in fontc/fontir by @cmyr in #625
  • move underline_thickness/position to GlobalMetrics as they are MVAR-iable by @anthrotype in #627
  • Remove Access::Custom; it forces table scans to figure out what can run by @rsheeter in #573
  • support strikeout/subscripts/superscripts pos/size settings in ir::GlobalMetrics by @anthrotype in #631
  • [layout-normalizer] skip if GPOS not present by @anthrotype in #630
  • Allow 0.1% of coordinates to differ from fontmake by 1 by @rsheeter in #629
  • [fontc] Validate glyph fliter regex at parse time by @cmyr in #624
  • Cleanup for the CoordConverter type by @cmyr in #633
  • [fontdrasil] Make piecewise_linear_map module private by @cmyr in #634
  • [ufo2fontir] Avoid duplicate loading of kerning groups by @cmyr in #636
  • Add an error type to the VariationInfo trait by @rsheeter in #635
  • use units_per_em for default caret_slope_rise by @anthrotype in #637
  • match ufo2ft's default ascender/descender settings by @anthrotype in #638
  • Small GlyphName improvements by @cmyr in #645
  • Try spreading FE kerning across threads per location by @rsheeter in #642
  • Spread BE kerning across threads by @rsheeter in #644
  • [ttx_diff] Fix incorrect subtable handling by @cmyr in #650
  • [ttx_diff] Fix incorrect path in build script by @cmyr in #651
  • [ttx_diff] Group language systems with identical lookups by @cmyr in #653
  • [ttx_diff] Actually handle extension lookups by @cmyr in #654
  • Fix instability of kerning output by @rsheeter in #655
  • Stable name order by @rsheeter in #659
  • [fontdrasil] Typed coordinate spaces by @cmyr in #632
  • [ci] Fail CI if docs contain broken links by @cmyr in #658
  • [ttx_diff] Split up normalizer gpos module by @cmyr in #661
  • [ttx_diff] Better handling of pairpos subtables by @cmyr in #662
  • [chore] Update write-fonts to 0.21.0 by @cmyr in #665
  • [ttx_diff] Better handling of mark pos subtables by @cmyr in #663
  • layout-normalizer: fix clippy, VariationStoreBuilder::new(0) by @anthrotype in #667
  • Add MVAR test files exercising all global metrics by @anthrotype in #666
  • build MVAR table from variable GlobalMetrics by @anthrotype in #648
  • [ttx_diff] Less type erasure in layout-normalizer by @cmyr in #669
  • CI to expose build instability by @rsheeter in #656
  • bump write-fonts to 0.21.1 by @anthrotype in #673
  • make clippy happy again by @anthrotype in #674
  • Fix the order of BE kern gathering by @rsheeter in #678
  • Add repeatable-builds.sh and test Oswald as well by @anthrotype in #676
  • [ttx_diff]: Normalize kern rules by @cmyr in #670
  • [ttx_diff] Normalize marks by @cmyr in #671
  • [chore] Update fea-rs tests fonttools version by @cmyr in #679
  • [fea-rs] Fixups for ttx_test util by @cmyr in #681
  • [fea-rs] Tweak ligature sort order by @cmyr in #680
  • Update to new write-fonts version by @cmyr in #683
  • Add fontra2fontir without an actual implementation by @rsheeter in #685
  • [fea-rs] Remove 'rel_pos' from Node by @cmyr in #687
  • Find the glyphs of a .fontra by @rsheeter in #686
  • [fea-rs] Remove use of Cell from Node by @cmyr in #689
  • Serde type for the fontra font-data.json file by @rsheeter in #690
  • Make a rudimentary static metadata for .fontra by @rsheeter in #691
  • [fontir] Rename Features -> FeaturesSrc by @cmyr in #694
  • [fea-rs] rollup of changes to support more manual control from fontc by @cmyr in #693
  • Split feature work into separate parsing & compilation steps by @cmyr in #695
  • [fontbe] Fix path for FeaturesAst by @cmyr in #699
  • Parse Fontra glyphs as far as contours by @rsheeter in #692
  • use the latest fontmake 3.8.0 by @anthrotype in #702
  • fea-rs: conditional compilation of GPOS & GSUB by @cmyr in #703
  • Revert "use the latest fontmake 3.8.0" by @anthrotype in #704
  • [fontbe] Write out glyph order when --emit-debug is set by @cmyr in #705
  • Start to parse Fontra components by @rsheeter in #701
  • [fea-rs] Fixup test-data/README.md by @cmyr in #708
  • requirements.txt: update fontmake to 3.8.1 by @anthrotype in #707
  • [fea-rs] Update fontools test cases by @cmyr in #710
  • [fontbe] Validate FEA AST at parse time by @cmyr in #706
  • Try to make field matching in fontra more obvious with newtypes. Don't reinvent chunks. by @rsheeter in #711
  • [clippy] Push the rock back up the hill by @cmyr in #712
  • [ttx_diff] Use new lookup API in normalizer by @cmyr in #714
  • Make a UFO-only compile run through by @rsheeter in #716
  • [fea-rs] Stop printing ttx version in test by @cmyr in #715
  • Correct case of subfamily name by @simoncozens in #719
  • [fea-rs] Support inline 'by Null' in contextual sub by @cmyr in #718
  • [ttx_diff] skip STAT if it is missing by @anthrotype in #722
  • [fea-rs] Improve glyph class parsing error messages by @cmyr in #720
  • Correct ordering of transform coefficients by @simoncozens in #721
  • [fea-rs] Remove ClassId, add gdef classes to output by @cmyr in #723
  • [chore] Fix deprecation in chrono crate by @cmyr in #726
  • Add KernGroup type by @cmyr in #725
  • Kern alignment by @cmyr in #727
  • [chore]: Update fontations crates by @cmyr in #729
  • [kerning] Prune nop deltas by @cmyr in #728
  • [fontbe] move marks/kern modules into ::features by @cmyr in #730
  • [marks] Prune nop deltas from marks by @cmyr in #732
  • [fontc] update skrifa test to new outline API by @dfrg in #734
  • Split kerning by script by @cmyr in #731
  • set lookupflag and mark filtering set for kerning lookups by @cmyr in #733
  • [chore] Bump fontations crates by @cmyr in #735
  • Guard against empty parent path by @cmyr in #737
  • [ttx_diff] Fix logic bug in normalizer by @cmyr in #739
  • Remove missed dbg statement by @cmyr in #740
  • [ttx_diff] Make generated fonts easier to find by @cmyr in #738
  • [kern] Use LookupFlag constants by @cmyr in #736
  • Update to write-fonts 0.25.0, handling the new cmap conflict by @rictic in #742
  • [kerning] Remove second record from PairPosEntry by @cmyr in #741
  • [cleanup] Delete some dead code by @cmyr in #743
  • [kerning] Pre-validate kerning groups & pairs by @cmyr in #744
  • [clippy] Push the rock back up the hill by @cmyr in #747
  • Add a graph of dependencies to the README by @rictic in #746
  • [fontbe] Fixup errors for variable metrics by @cmyr in #745
  • [kerning] Delay decomposing kern rules by @cmyr in #749
  • [fontir] Rename KernParticipant -> KernSide by @cmyr in #751
  • Minimize test case for fontra multi-codepoint by @rsheeter in #754
  • remove the GlyphName defined in fea-rs, and use the one in fontdrasil by @qxliu76 in #758
  • [fontbe] Minor marks cleanup by @cmyr in #759
  • promote string_to_filename to fontdrasil and use it instead of safe_filename by @qxliu76 in #761
  • Handle multiple codepoints in .fontra files, as well as axes with a values array instead of min and max by @rictic in #748
  • Move anchor name parsing into fontir by @cmyr in #762
  • set head.macStyle from OS2 selection_flags by @qxliu76 in #763
  • [ttx_diff] Buffer writing from layout normalizer by @cmyr in #750
  • [marks] Move marks logic into a context struct by @cmyr in #764
  • [g2f] Use smolstr when parsing glyphs.app data by @cmyr in #765
  • [glyphs-reader] Remove pub from raw types by @cmyr in #770
  • [fontc] Simplify timing color code by @cmyr in #772
  • The continued adventures of GlyphData by @cmyr in #773
  • [glyphs] Store codepoints in glyph struct by @cmyr in #775
  • Add test files to reproduce issue #407 by @anthrotype in #776
  • [fontdrasil] Add agl module to fontdrasil by @cmyr in #778
  • [glyphs] track category info in glyphs by @cmyr in #777
  • [glyphs] Parse 'anchor' field of glyph components by @cmyr in #783
  • Add work id aliases for "all of variant" types by @cmyr in #785
  • Anchor propagation by @cmyr in #782
  • clippy day by @cmyr in #788
  • [marks] Store GDEF categories in StaticMetadata by @cmyr in #786
  • [fea] Move PendingLookup into fea-rs by @cmyr in #791
  • More marks progress by @cmyr in #789
  • [ttx_diff] Add basic support for mark2lig rules by @cmyr in #792
  • Mark2mark filtering sets/lookupflags by @cmyr in #793
  • [ttx_diff] Split layout-normalizer into bin & lib by @cmyr in #752
  • Add release workflow to build and publish source and binary artifacts to Github and PyPI by @anthrotype in #795
  • [fontbe] Impl FeatureProvider for kern/mark IR types by @cmyr in #796
  • Mark testing harness by @cmyr in #797
  • [marks] Add tests for using GDEF block from user FEA by @cmyr in #799
  • [marks] Fix bad boolean logic in find_mark_glyphs by @cmyr in #798
  • [glyphs] Add test for anchor propagation on digraph by @cmyr in #790
  • [ttx_diff] Better normalization of Mark2Lig by @cmyr in #803
  • [marks] Parse empty ligature anchors like '_3' by @cmyr in #802
  • [ttx_diff] Try getting glyph names from post table by @cmyr in #808
  • add (failing) test case to repro #407 by @anthrotype in #817
  • [fontbe] Fix incorrect feature deltas w/ sparse glyph sources by @anthrotype in #779
  • [ufo2fontir] fix non-deterministic glyph order when not explicitly provided by @anthrotype in #816
  • Update manifests and lib docs by @cmyr in #818
  • Rename plist_derive -> ascii_plist_derive by @cmyr in #819
  • Rename layout-normalizer -> otl-normalizer by @cmyr in #820
  • [chore] Bump version on fea-rs by @cmyr in #822
  • [chore] Ensure manifests contain all required keys by @cmyr in #823
  • [chore] Set repository field in otl-normalizer manifest by @cmyr in #824
  • [fontbe] Get off patched version of icu_properties by @cmyr in #825

New Contributors

Full Changelog: https://github.com/googlefonts/fontc/commits/fontc-v0.0.1