787 Commits

Author SHA1 Message Date
Behdad Esfahbod
ed6164a44f [varLib.cff] Round deltas using bankers round as well
See https://github.com/fonttools/fonttools/pull/2214#issuecomment-790742479

Good news: this reverted the one CFF test that needed its expectation to
change when I started this patchset. Bad news: it introduced a couple other
diffs to the same glyph of the same test, which is consistent with changing
the rounding from otRound to round3.
2021-03-04 13:10:01 -07:00
Behdad Esfahbod
d56b844142 [varLib] Round outline deltas using banker's round as well
See https://github.com/fonttools/fonttools/pull/2214#issuecomment-790742479
2021-03-04 13:00:04 -07:00
Behdad Esfahbod
07a7dd3eb5 [varLib] Make newly-added round arguments keyword-only
So they are not accidentally set, only intentionally. Keeps positional-args
open for more direct uses.
2021-03-04 09:44:34 -07:00
Behdad Esfahbod
f5ef0b517b [varLib] Round most deltas using bankers' round, not otRound
See https://github.com/fonttools/fonttools/pull/2214#issuecomment-790742479
2021-03-04 09:43:26 -07:00
Behdad Esfahbod
68004b8fec [varLib] Shift most (all?) delta-rounding to VarModel
Reduces error.

The main varfont-builder now asks the model to do rounding, and asks
VariationStore to do no rounding, so we don't spend extra times rounding
multiple times (specially with the heavy otRound).

I *think* I got it all and right...

Fixes https://github.com/fonttools/fonttools/issues/2213
2021-03-04 09:20:43 -07:00
Behdad Esfahbod
fdd8267065 [varLib.models] Add optional rounding to VariationModel() relevant methods
Users to be updated to benefit.

Part of https://github.com/fonttools/fonttools/issues/2213
2021-03-04 09:20:43 -07:00
Behdad Esfahbod
3a9a2bd4b1 [misc.roundTools] Add noRound(), maybeRound(), and roundFunc()
Moving out of CFF code, to be used in VariationModel().

Part of https://github.com/fonttools/fonttools/issues/2213
2021-03-04 09:20:43 -07:00
Behdad Esfahbod
abc1ba07a4 [misc.roundTools] New module; move otRound() here
Code relying on old place (fixedTools.otRound) still works.
2021-03-04 09:20:43 -07:00
Behdad Esfahbod
28fae1d95f [cff] Simplify rounding logic
No semantic change. Just refactoring and simplification in anticipation
of coming changes.
2021-03-03 18:27:06 -07:00
Behdad Esfahbod
ff46e2838f [varLib.plot] Reorder imports to make missing library easier to detect
$ pip install matplotlib
2021-03-03 16:25:35 -07:00
justvanrossum
44b7560fe5 move Vector to its own submodule, and rewrite as a tuple subclass 2021-02-27 19:54:53 +01:00
Marc Foley
52fec53d20
Drop nameID 25 if instantiating a static font 2021-02-26 10:32:38 +00:00
Cosimo Lupo
d1a8e1ee76
fall back to 'Regular' when no subFamilyName
assert we have some 'string' instead of silently continuing
2021-02-26 10:32:38 +00:00
Cosimo Lupo
0c92d33bc0
fix sub-string check in update uniqueID 2021-02-26 10:32:38 +00:00
Cosimo Lupo
fcfcb78cc0
make docstring shorter; fix _isRibbi
return True only if a corresponding english record is found and matches R/I/B/BI, else return False.
We don't really care if there are any other unrelated english records, we care about this specific one, whether it's RIBBI or not

minor
2021-02-26 10:32:21 +00:00
Marc Foley
fcc02826b4
Implement Cosimo feedback from previous pr 2021-02-26 10:31:53 +00:00
Cosimo Lupo
2be13d50ac
make instancer into a package dir and move all names-related funcs to submodule
move instancer tests to Tests/varLib/instancer directory

create instancer/__main__.py to make package executable
2021-02-26 10:31:30 +00:00
Marc Foley
336e7827e7 Implement Cosimo feedback 2021-02-26 10:19:43 +00:00
Marc Foley
daf6427b0b Implement Adobe ps naming for instantiated instances 2021-02-26 10:19:43 +00:00
Marc Foley
de38c9ce96 Tidy up variable name and run through black 2021-02-26 10:19:43 +00:00
Marc Foley
5eac886e5a Only create typographic subfamily name if there are nonRibbi tokens 2021-02-26 10:19:43 +00:00
Marc Foley
29e4ff987c instancer: implement Cosimo feedback 2021-02-26 10:19:43 +00:00
Marc Foley
bef1d08c0b instancer: updateNameTableStyleRecords use strings as input instead of axis values 2021-02-26 10:19:43 +00:00
Marc Foley
11f0ade44c cleanup _updateUniqueIdNameRecord 2021-02-26 10:19:43 +00:00
Marc Foley
0bcbbfdbb5 instancer: reuse existing instantiateSTAT func 2021-02-26 10:19:43 +00:00
Marc Foley
9a72311d19 instancer: refactor updateNameTable 2021-02-26 10:19:43 +00:00
Marc Foley
b328475072 wip instancer: update uniqueID 2021-02-26 10:19:43 +00:00
Marc Foley
ce1d8a9955 instancer: Add axisDefaults to axisLimits 2021-02-26 10:19:43 +00:00
Marc Foley
69c8667982 instancer: sort axisValues so format 4 are dominant for constructing names 2021-02-26 10:19:43 +00:00
Marc Foley
0b639c2979 instancer: use bit mask for axisValue flags 2021-02-26 10:19:43 +00:00
Marc Foley
b4b1ce3579 instancer: include attribute axisValues 2021-02-26 10:19:42 +00:00
Marc Foley
f89c01d2d7 instancer: only updateNames if axisValue with specified coord exists 2021-02-26 10:19:42 +00:00
Marc Foley
2fd934051b Refactor axisValuesFromAxisLimits 2021-02-26 10:19:42 +00:00
Marc Foley
4cd0fb80f6 Fix typos 2021-02-26 10:19:42 +00:00
Marc Foley
b502471a08 wip instancer: support format 4 axisvalues 2021-02-26 10:19:42 +00:00
Marc Foley
b95607513c WIP instancer: update static font nametable 2021-02-26 10:19:42 +00:00
Nikolaus Waxweiler
6023bab627 Raise legible error message when script is missing a dflt langsys 2021-01-19 16:42:40 +00:00
Cosimo Lupo
1f33249d36
varLib.cff: fix unbound local variable
Fixes https://github.com/fonttools/fonttools/issues/1787

Thanks Behdad.
2020-12-14 18:21:04 +00:00
Cosimo Lupo
0957dc7ab3
mutator: fix missing tab in interpolate_cff2_metrics
Originally reported in https://twitter.com/ken_lunde/status/1335987620002709507?s=20
2020-12-07 17:16:21 +00:00
Simon Cozens
72291031ac Tidy up add_problem 2020-11-21 08:00:07 +00:00
Simon Cozens
c6e5a7ab93 Catch open contours more explicitly 2020-11-21 07:59:39 +00:00
Simon Cozens
584555a344 fix tests 2020-11-20 11:18:54 +00:00
Simon Cozens
392149ac1d Tidy up output, add machine readable JSON option
Example text output:

```
Glyph D was not compatible:
    Node 1 incompatible in path 0: curveTo in Coolangatta-Regular, lineTo in Coolangatta-Bold
    Node count differs in path 1: 7 in Coolangatta-Regular, 6 in Coolangatta-Bold
Glyph N was not compatible:
    Node 11 incompatible in path 0: curveTo in Coolangatta-Regular, lineTo in Coolangatta-Bold
Glyph v was not compatible:
    Node 7 incompatible in path 0: lineTo in Coolangatta-Regular, curveTo in Coolangatta-Bold
```

Example JSON output:

```
{
  "D": [
    {
      "type": "node_incompatibility",
      "path": 0,
      "node": 1,
      "master_1": "Coolangatta-Regular",
      "master_2": "Coolangatta-Bold",
      "value_1": "curveTo",
      "value_2": "lineTo"
    },
    {
      "type": "node_count",
      "path": 1,
      "master_1": "Coolangatta-Regular",
      "master_2": "Coolangatta-Bold",
      "value_1": 7,
      "value_2": 6
    }
  ],
  "N": [
    {
      "type": "node_incompatibility",
      "path": 0,
      "node": 9,
      "master_1": "Coolangatta-Regular",
      "master_2": "Coolangatta-Bold",
      "value_1": "curveTo",
      "value_2": "lineTo"
    }
  ],
  "v": [
    {
      "type": "node_incompatibility",
      "path": 0,
      "node": 7,
      "master_1": "Coolangatta-Regular",
      "master_2": "Coolangatta-Bold",
      "value_1": "lineTo",
      "value_2": "curveTo"
    }
  ]
}
```
2020-11-20 11:18:54 +00:00
Simon Cozens
08e2a6cdc1 Reformat with black 2020-11-20 11:18:54 +00:00
Simon Cozens
129e2413a0 Gracefully handle glyphset mismatches 2020-11-20 11:18:53 +00:00
Simon Cozens
fdbe0763df Catch explosion on open paths 2020-11-20 11:18:53 +00:00
Simon Cozens
61814d41f5 Allow UFO files to be used in varLib.interpolatable
The joys of well-defined interfaces.
2020-11-20 11:18:53 +00:00
Just van Rossum
0ae6951b3b
Merge pull request #2082 from justvanrossum/gvar-ignore-empty-glyphs
[varLib] Interpret empty non-default glyphs as 'missing'
2020-11-02 18:19:09 +01:00
justvanrossum
16e058fe97 Test for 0xFFFF, not 0xFFF, fixes #2073 2020-10-09 09:33:47 +02:00
Just van Rossum
b992e28374
[varLib] Add designspace lib key for custom feavar feature tag (#2080)
* Add designspace lib key to specify a custom feature tag for feature variations, as discussed in #2079

* Added comment for the lib key

* if the lib key is present, the 'processing' flag should be ignored completely
2020-10-08 14:21:42 +02:00