7018 Commits

Author SHA1 Message Date
Khaled Hosny
4246c69e9a Release 4.39.4 2023-05-10 18:28:21 +03:00
Khaled Hosny
88885ba9fc feaLib: handle singleton class as a single glyph in multiple subst
This how GlyphsApp handles it and how it is handled in single
substitution.
2023-05-09 17:33:36 +03:00
خالد حسني (Khaled Hosny)
b6209e0510
Merge pull request #3103 from fonttools/multiple-subst-classes
feaLib: support multiple substitution with classes
2023-05-09 16:15:33 +03:00
Khaled Hosny
f642a2aac4 feaLib: support multiple substitution with classes
This is a GlyphsApp extension, (partially) documented [here][1], but it is a
useful one as it allows concise glyph insertion using decomposition
without having to maintain the list of glyphs in two places. E.g.

```fea
@upper = [A-Z];

lookup insert {
  sub @upper by @upper connector;
} insert;

feature ccmp {
  sub @upper' lookup insert x;
} ccmp;
```

As apposed to:

```fea
@upper = [A-Z];

lookup insert {
  sub A by A connector;
  sub B by B connector;
  sub C by C connector;
  sub D by D connector;
  sub E by E connector;
  sub F by F connector;
  sub G by G connector;
  sub H by H connector;
  sub I by I connector;
  sub J by J connector;
  sub K by K connector;
  sub L by L connector;
  sub M by M connector;
  sub N by N connector;
  sub O by O connector;
  sub P by P connector;
  sub R by R connector;
  sub S by S connector;
  sub T by T connector;
  sub U by U connector;
  sub V by V connector;
  sub W by W connector;
  sub X by X connector;
  sub Y by Y connector;
  sub Z by Z connector;
} insert;

feature ccmp {
  sub @upper' lookup insert x;
} ccmp;
```

1. http://handbook.glyphsapp.com/en/layout/multiple-substitution-with-classes/
2023-05-09 14:06:12 +03:00
Behdad Esfahbod
6a13bdc2e6 [featureVars] Remove unused argument 2023-05-02 10:57:43 -06:00
Behdad Esfahbod
5b96fff9ce [featureVars] Process lookups for features other than rvrn last
Fixes https://github.com/fonttools/fonttools/issues/3097
2023-05-02 10:57:43 -06:00
Tim Maffett
61ca53ab10 fix ttx split tables option to work on source files which have been url encoded and contain the '%' character 2023-04-28 17:07:44 -07:00
Jens Kutilek
85c80be6b6
Fix missing composite instructions in ttx (#3092)
* Fix calculation of haveInstructions
* Add test
2023-04-25 16:21:24 +02:00
Cosimo Lupo
cb5aa96702
add missing __main__.py file to ttLib package, plus some tests
Fixes https://github.com/fonttools/fonttools/issues/17
2023-04-24 11:22:53 +01:00
Behdad Esfahbod
623f3f14be [iup] Micro-optimize 2023-04-22 15:07:03 -06:00
Behdad Esfahbod
afd4695d26 [iup] Fix cython tests 2023-04-22 14:49:25 -06:00
Behdad Esfahbod
e92c79e0e8 [iup] Micro-optimize cython 2023-04-22 14:34:41 -06:00
Behdad Esfahbod
b5899772c7 [interpolatable] Use math.sqrt() 2023-04-22 14:10:11 -06:00
Behdad Esfahbod
7fd3f7632e [bezierTools] Remove division hack 2023-04-22 12:50:25 -06:00
Behdad Esfahbod
dc60198f78 [bezierTools] Micro-optimize cython 2023-04-22 12:49:22 -06:00
Behdad Esfahbod
14ec21af40 [qu2cu] Micro-optimize cython 2023-04-22 12:43:33 -06:00
Behdad Esfahbod
a91c3381b5 [qu2cu] Remove division hack 2023-04-22 12:40:00 -06:00
Behdad Esfahbod
990afce0db [cu2qu] One more annotation 2023-04-22 12:37:12 -06:00
Behdad Esfahbod
027f644d12 [cu2qu] Micro-optimize cython code
By defining some core functions as cfunc, so they inline.

Almost 10% speedup.
2023-04-22 12:29:08 -06:00
Behdad Esfahbod
0cb46862e0 [cu2qu] Remove another division hack 2023-04-22 12:17:57 -06:00
Behdad Esfahbod
3470b7494a [cu2qu] Remove old hack
Python3 optimizes const division, and Cython doesn't need it anyway.
2023-04-22 12:13:27 -06:00
خالد حسني (Khaled Hosny)
3a4b9d770e
Merge pull request #3084 from fonttools/update-apple-url
Update link to Apple documentation
2023-04-21 00:24:22 +02:00
Behdad Esfahbod
57c7792477
[merge] Handle differing default/nominalWidthX in CFF (#3070)
* [merge] Handle None GDEF.table.MarkGlyphSetsDef

* [merge] Handle differing CFF nominal/defaultWidthX

Fixes https://github.com/fonttools/fonttools/issues/3069

* Update Lib/fontTools/merge/tables.py

Co-authored-by: Cosimo Lupo <clupo@google.com>

---------

Co-authored-by: Cosimo Lupo <clupo@google.com>
2023-04-19 12:14:41 -06:00
Just van Rossum
56b543826c re-wrap 2023-04-18 14:38:50 +02:00
Just van Rossum
82441262e7 Update link to Apple doco 2023-04-18 14:37:34 +02:00
Colin M. Ford
edc3584d5b
Using set comprehension
Suggestion by anthrotype

Co-authored-by: Cosimo Lupo <cosimo@anthrotype.com>
2023-04-06 10:34:48 -04:00
Colin M. Ford
9656e3faf1 formatting with black to get lint to pass 2023-04-05 22:33:38 -04:00
Colin M. Ford
491bd74f4b Missed a m0idx 2023-04-05 18:22:21 -04:00
Colin M. Ford
9c1380be96 Oops, UFOLib's getGlyphSet does not have an items function 2023-04-05 18:21:17 -04:00
Colin M. Ford
4a991d1d89 Comment corrections 2023-04-05 17:12:43 -04:00
Colin M. Ford
208c36800b Oops, any could potentially block a list like [None, [], []], which is not what we want 2023-04-05 17:11:30 -04:00
Colin M. Ford
7a86dd325e Rewriting varLib.interpolatable to allow for sparse masters + tests 2023-04-05 16:35:03 -04:00
Cosimo Lupo
3b9a73ff83
Bump version: 4.39.3 → 4.39.4.dev0 2023-03-28 16:30:30 +01:00
Cosimo Lupo
abd7b5b15d
Release 4.39.3 2023-03-28 16:30:29 +01:00
Cosimo Lupo
3615b565ca sbixGlyph: don't use imageData for empty glyphs with graphicType=None
Fixes https://github.com/fonttools/fonttools/issues/3059
2023-03-27 15:23:13 +01:00
Cosimo Lupo
e73a098dec
Merge pull request #3053 from fonttools/fix-spool-temp-seekable
fix SpooledTemporaryFile has no seekable method
2023-03-22 10:47:08 +00:00
Behdad Esfahbod
14a767719b [bezierTools] Add link to algorithm
https://github.com/fonttools/fonttools/issues/3055
2023-03-21 13:30:30 -06:00
Cosimo Lupo
4543910367
[ttFont] fail when input is not seekable and lazy=True
the SFNTReader expects the input file to be seekable, and it already rewinds the file with file.seek(0) to get to the sfnt table directory. Thus, if TTFont is loaded with an unseekable file object and lazy=True, we raise a TTLibError requiring one to either pass a seekable input file, or to not set lazy=True (in which case the input is loaded in a seekable BytesIO)

Fixes https://github.com/fonttools/fonttools/issues/3052
2023-03-21 18:15:01 +00:00
Cosimo Lupo
43e2108f93
Bump version: 4.39.2 → 4.39.3.dev0 2023-03-16 19:08:18 +00:00
Cosimo Lupo
d64a26f7ef
Release 4.39.2 2023-03-16 19:08:17 +00:00
Cosimo Lupo
cf4a24182e
[varLib] don't skip buildVFStatTable from DSv5 with 'STAT' info
Fixes https://github.com/fonttools/fonttools/issues/3045
2023-03-16 18:29:22 +00:00
Cosimo Lupo
1216596825
Bump version: 4.39.1 → 4.39.2.dev0 2023-03-16 13:01:32 +00:00
Cosimo Lupo
199e2c2c6a
Release 4.39.1 2023-03-16 13:01:31 +00:00
Cosimo Lupo
5abdd83318
Merge pull request #3043 from fonttools/fealib-more-avar
Apply `avar` also to variable locations
2023-03-16 12:35:51 +00:00
Cosimo Lupo
69b1752d80
variableScalar: make model_cache parameter optional 2023-03-16 12:03:33 +00:00
Cosimo Lupo
5d0432a813
Merge pull request #3029 from daltonmaag/wrap-glif-xml-errors
[glifLib] Wrap XML library exceptions with glifLib types when parsing glifs
2023-03-16 11:46:45 +00:00
Nikolaus Waxweiler
ac0361fe31 Move VariableScalar cache into Builder 2023-03-16 11:27:06 +00:00
Behdad Esfahbod
05872d6878
Merge pull request #2679 from fonttools/avar2
Avar2
2023-03-15 11:56:30 -06:00
Nikolaus Waxweiler
cf43ff5d22 Apply avar to variable locations 2023-03-15 16:19:39 +00:00
Nikolaus Waxweiler
a993247e47 Remove unused variable 2023-03-15 16:19:12 +00:00