{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":29605985,"defaultBranch":"main","name":"ufo2ft","ownerLogin":"googlefonts","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-01-21T19:00:19.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6466306?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726743968.0","currentOid":""},"activityList":{"items":[{"before":"9436cd4360d7a007a534793e3f1579fe1b344ec2","after":null,"ref":"refs/heads/contextual-ligature-anchors","pushedAt":"2024-09-19T09:24:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"}},{"before":"6ad2eceb03c116c58fdc66d812fac7f477063115","after":"590c8de21187a9205b1c57641098d5a322123938","ref":"refs/heads/main","pushedAt":"2024-09-19T09:24:30.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"Merge pull request #871 from googlefonts/contextual-ligature-anchors\n\nmarkFeatureWriter: Support contextual ligature anchors","shortMessageHtmlLink":"Merge pull request #871 from googlefonts/contextual-ligature-anchors"}},{"before":"930642aa811cf6cf5a8f75de7774b878b77c02fd","after":"9436cd4360d7a007a534793e3f1579fe1b344ec2","ref":"refs/heads/contextual-ligature-anchors","pushedAt":"2024-09-19T09:21:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Catch and skip contextual anchors with no context\n\nInstead of raising KeyError trying to access non existing context.","shortMessageHtmlLink":"markFeatureWriter: Catch and skip contextual anchors with no context"}},{"before":"e6ec270a31bd6e332b0839b78ec7a8c42c82cd78","after":null,"ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-19T09:19:31.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"}},{"before":"eaea1cffc1478b911b9e03d5a527e0b32148f4c6","after":"6ad2eceb03c116c58fdc66d812fac7f477063115","ref":"refs/heads/main","pushedAt":"2024-09-19T09:19:26.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"Merge pull request #869 from googlefonts/contextual-mark-feature-writer\n\nmarkFeatureWriter: Support contextual anchors","shortMessageHtmlLink":"Merge pull request #869 from googlefonts/contextual-mark-feature-writer"}},{"before":"27af8eaf22e9f90cbb5827b4f3efa4e59b32639f","after":null,"ref":"refs/heads/old-kern-register-lookups-dflt","pushedAt":"2024-09-06T14:38:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"}},{"before":"fb86b1da1b112221bbb01c30ec7bcb846b94baf2","after":null,"ref":"refs/heads/rewrite-rewrite-kern-writer","pushedAt":"2024-09-06T14:22:36.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"}},{"before":"12b68f0c69dce68c99f4d553f86b3ff130060384","after":"eaea1cffc1478b911b9e03d5a527e0b32148f4c6","ref":"refs/heads/main","pushedAt":"2024-09-06T14:22:31.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"},"commit":{"message":"Merge pull request #870 from googlefonts/rewrite-rewrite-kern-writer\n\nRewrite old kern writer to pull in some changes made in the newer one","shortMessageHtmlLink":"Merge pull request #870 from googlefonts/rewrite-rewrite-kern-writer"}},{"before":"eb5b8f15d44ff0be346f41e2c95f1e62fd95e3ea","after":"930642aa811cf6cf5a8f75de7774b878b77c02fd","ref":"refs/heads/contextual-ligature-anchors","pushedAt":"2024-09-05T18:26:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Catch and skip contextual anchors with no context\n\nInstead of raising KeyError trying to access non existing context.","shortMessageHtmlLink":"markFeatureWriter: Catch and skip contextual anchors with no context"}},{"before":null,"after":"eb5b8f15d44ff0be346f41e2c95f1e62fd95e3ea","ref":"refs/heads/contextual-ligature-anchors","pushedAt":"2024-09-05T17:39:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Support contextual ligature anchors\n\nThe current code was assuming all contextual anchors are mark-to-base\nand was producing wrong output for ligature anchors. With this change,\ncontextual ligature anchors are properly supported.","shortMessageHtmlLink":"markFeatureWriter: Support contextual ligature anchors"}},{"before":"241cb6dd9bfeea615affec781be649e48e619047","after":"e6ec270a31bd6e332b0839b78ec7a8c42c82cd78","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-05T16:42:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Ignore contextual anchors in non-contextual lookups\n\nOtherwise we end up with positioning statements that have duplicated\nmark classes like this:\n\npos base a\n mark @MC_top\n mark @MC_top;\n\n(one is the regular anchor, and the other is the contextual one). Which\nmakes no sense (feaLib shouldn’t probably allow the same mark class to\nbe used multiple times in the same statement).","shortMessageHtmlLink":"markFeatureWriter: Ignore contextual anchors in non-contextual lookups"}},{"before":"4b0ebe173828061f162db2f8d0f703af5b24a64a","after":"fb86b1da1b112221bbb01c30ec7bcb846b94baf2","ref":"refs/heads/rewrite-rewrite-kern-writer","pushedAt":"2024-09-05T08:44:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"},"commit":{"message":"Change kern writer\n\nSee #858.","shortMessageHtmlLink":"Change kern writer"}},{"before":"234680b3126c2632aa45390958c531d96781d2b6","after":null,"ref":"refs/heads/rewrite-kern-writer","pushedAt":"2024-09-05T08:42:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"}},{"before":null,"after":"4b0ebe173828061f162db2f8d0f703af5b24a64a","ref":"refs/heads/rewrite-rewrite-kern-writer","pushedAt":"2024-09-05T08:39:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"},"commit":{"message":"Change kern writer\n\nSee #858.","shortMessageHtmlLink":"Change kern writer"}},{"before":"40048170575e93c5ba3bbe5de135855910f71c16","after":"241cb6dd9bfeea615affec781be649e48e619047","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T19:28:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Ignore contextual anchors in non-contextual lookups\n\nOtherwise we end up with positioning statements that have duplicated\nmark classes like this:\n\npos base a\n mark @MC_top\n mark @MC_top;\n\n(one is the regular anchor, and the other is the contextual one). Which\nmakes no sense (feaLib shouldn’t probably allow the same mark class to\nbe used multiple times in the same statement).","shortMessageHtmlLink":"markFeatureWriter: Ignore contextual anchors in non-contextual lookups"}},{"before":"dcae755971ac2b100a3b50525b2f6ab9417945be","after":null,"ref":"refs/heads/ignore-contextual-anchors","pushedAt":"2024-09-04T19:26:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"}},{"before":"e5c47648d643c1116afe7ec7df4229fef6082388","after":"40048170575e93c5ba3bbe5de135855910f71c16","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T19:25:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Ignore contextual anchors in non-contextual lookups\n\nOtherwise we end up with positioning statements that have duplicated\nmark classes like this:\n\npos base a\n mark @MC_top\n mark @MC_top;\n\n(one is the regular anchor, and the other is the contextual one). Which\nmakes no sense (feaLib shouldn’t probably allow the same mark class to\nbe used multiple times in the same statement).","shortMessageHtmlLink":"markFeatureWriter: Ignore contextual anchors in non-contextual lookups"}},{"before":"472eb7407f6ce0e7b78d57159a8bc0e61588303c","after":"e5c47648d643c1116afe7ec7df4229fef6082388","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T17:40:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Make contextual lookups only if mark feature is requested\n\nWe were trying to access non-existent features[\"mark\"] when mark\nfeature was disabled.","shortMessageHtmlLink":"markFeatureWriter: Make contextual lookups only if mark feature is re…"}},{"before":"58f28cf1d51cbbce32e3f7b8c2bce09edd5e7cda","after":"472eb7407f6ce0e7b78d57159a8bc0e61588303c","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T17:39:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Make contextual lookups only if mark feature is requested\n\nWe were trying to access non-existent features[\"mark\"] when mark\nfeature was disabled.","shortMessageHtmlLink":"markFeatureWriter: Make contextual lookups only if mark feature is re…"}},{"before":"a6e57b33c60dd403434ca46129b12d0466ea4728","after":"58f28cf1d51cbbce32e3f7b8c2bce09edd5e7cda","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T17:05:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Port contextual anchor tests from glyphsLib","shortMessageHtmlLink":"markFeatureWriter: Port contextual anchor tests from glyphsLib"}},{"before":"6466a3440e4e84d82417021b68f846e9b061cb7f","after":"a6e57b33c60dd403434ca46129b12d0466ea4728","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T16:53:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Fix test failures\n\nCheck `key` is not empty before accessing first character.","shortMessageHtmlLink":"markFeatureWriter: Fix test failures"}},{"before":null,"after":"6466a3440e4e84d82417021b68f846e9b061cb7f","ref":"refs/heads/contextual-mark-feature-writer","pushedAt":"2024-09-04T16:11:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Fix test failures\n\nCheck `key` is not empty before accessing first character.","shortMessageHtmlLink":"markFeatureWriter: Fix test failures"}},{"before":null,"after":"dcae755971ac2b100a3b50525b2f6ab9417945be","ref":"refs/heads/ignore-contextual-anchors","pushedAt":"2024-09-03T22:44:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"markFeatureWriter: Ignore contextual anchors\n\nWe don’t support contextual anchors in markFeatureWriter, but glyphsLib\nsubclasses it and adds support for them. However, since we are unaware\nof contextual anchors, we end up with positioning statements with\nduplicated mark positions like this:\n\n pos base beh-ar.init\n mark @MC_top\n mark @MC_top;\n\n(one is the regular anchor, and the other is the contextual one). Which\nmakes no sense (feaLib shouldn’t probably allow the same mark class to\nbe used multiple times in the same statement).\n\nThis PR adds isContextual to NamedAnchor and ignores any such anchors\nwhen writing pose statements. It is already set by glyphsLib’s\nMarkFeatureWriter, but otherwise should not affect ufo2ft’s as it always\nsets it to False.","shortMessageHtmlLink":"markFeatureWriter: Ignore contextual anchors"}},{"before":"f80b117dec5f89c579b366be10336f201914d146","after":"234680b3126c2632aa45390958c531d96781d2b6","ref":"refs/heads/rewrite-kern-writer","pushedAt":"2024-09-03T14:04:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"},"commit":{"message":"Add docstring","shortMessageHtmlLink":"Add docstring"}},{"before":"84bc8b70f3c1d23c8cf4177d238bb6d3205512ad","after":"f80b117dec5f89c579b366be10336f201914d146","ref":"refs/heads/rewrite-kern-writer","pushedAt":"2024-09-03T13:29:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"madig","name":"Nikolaus Waxweiler","path":"/madig","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/380829?s=80&v=4"},"commit":{"message":"Port over https://github.com/googlefonts/ufo2ft/pull/866","shortMessageHtmlLink":"Port over #866"}},{"before":"8ec3ef32a39ffbc00071bc8e18cebf493bd2af59","after":"12b68f0c69dce68c99f4d553f86b3ff130060384","ref":"refs/heads/main","pushedAt":"2024-09-02T13:14:53.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"anthrotype","name":"Cosimo Lupo","path":"/anthrotype","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6939968?s=80&v=4"},"commit":{"message":"Merge pull request #867 from justvanrossum/issue865\n\nTake discrete axes into account when checking for feature compatibility","shortMessageHtmlLink":"Merge pull request #867 from justvanrossum/issue865"}},{"before":"22a699e8be448a6397ef1ad441bff13a64b1fcff","after":null,"ref":"refs/heads/prune-zero-class-variable-kerns","pushedAt":"2024-08-29T10:48:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"anthrotype","name":"Cosimo Lupo","path":"/anthrotype","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6939968?s=80&v=4"}},{"before":"27f7e9b29fc38e05a4b7ce21bff5afa8fd6c2fba","after":"8ec3ef32a39ffbc00071bc8e18cebf493bd2af59","ref":"refs/heads/main","pushedAt":"2024-08-29T10:48:35.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"anthrotype","name":"Cosimo Lupo","path":"/anthrotype","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6939968?s=80&v=4"},"commit":{"message":"Merge pull request #866 from googlefonts/prune-zero-class-variable-kerns\n\n[kernFeatureWriter] ignore zero-valued class kern pairs when building variable kern","shortMessageHtmlLink":"Merge pull request #866 from googlefonts/prune-zero-class-variable-kerns"}},{"before":"9dd2f928491954786c893b776e14aa3e5fb00e46","after":null,"ref":"refs/heads/feature-writer-order","pushedAt":"2024-08-29T09:52:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"}},{"before":"bb79cae53f1c160c7174ebef0d463c7a28a7552a","after":"27f7e9b29fc38e05a4b7ce21bff5afa8fd6c2fba","ref":"refs/heads/main","pushedAt":"2024-08-29T09:51:57.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"khaledhosny","name":"خالد حسني (Khaled Hosny)","path":"/khaledhosny","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/93914?s=80&v=4"},"commit":{"message":"Merge pull request #864 from googlefonts/feature-writer-order\n\nFix the order of feature writers","shortMessageHtmlLink":"Merge pull request #864 from googlefonts/feature-writer-order"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQwOToyNDozNy4wMDAwMDBazwAAAAS6pY1p","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQwOToyNDozNy4wMDAwMDBazwAAAAS6pY1p","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yOVQwOTo1MTo1Ny4wMDAwMDBazwAAAASncGba"}},"title":"Activity · googlefonts/ufo2ft"}