profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/simoncozens/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.

fonttools/fonttools 2846

A library to manipulate font files from Python.

harfbuzz/harfbuzz 2111

HarfBuzz text shaping engine

sile-typesetter/sile 1087

Simon’s Improved Layout Engine

adobe-type-tools/afdko 685

Adobe Font Development Kit for OpenType

linebender/kurbo 326

A Rust library for manipulating curves

googlefonts/glyphsLib 115

A bridge from Glyphs source files (.glyphs) to UFOs

harfbuzz/harfbuzzjs 70

Providing HarfBuzz shaping library for client/server side JavaScript projects

simoncozens/atokern 66

Neural network based font kerning

huertatipografica/HTLetterspacer 58

HT Letterspacer is a tool for spacing fonts

NaN-xyz/Glyph-Filters 58

Generative Fonts and Tools for Display Typography

issue commentbe-fonts/boring-expansion-spec

[Layout] Glyph Filtering

Currently in GDEF we have a glyph class definition which takes a ClassDef structure but only assigns meaning to four values (base, lig, mark, component) which are special-cased the lookup flags. Allowing glyph classes >4 in the glyph class definition table would give you the ability to subdivide bases etc. into multiple classes for free.

behdad

comment created time in 2 days

issue openedgoogle/fonts

fonts.google.com/noto truncates specimen text at character boundaries

It should instead truncate the text at cluster boundaries, otherwise you get visible viramas: Screenshot 2021-09-17 at 17 00 50

created time in 2 days

push eventsimoncozens/fonttools-rs

Simon Cozens

commit sha 3f4b6eb88d2d0741c973130fbc232aaa50e16caa

Simple interface to GSUB5/GPOS7 Format 1 subtables

view details

push time in 2 days

push eventsimoncozens/fonttools-rs

Simon Cozens

commit sha a6dbd44346eff9e2691b1948e1b4b89157d89cfa

Improvements to the graph dumper

view details

Simon Cozens

commit sha a249e2b6918ef6e1b3a70ed997cee7af5d22cd53

Rustfmt tidied my imports

view details

Simon Cozens

commit sha 14ef22fd83b94581355253b683e55209ea775adb

I really didn’t understand Option<>s.

view details

Simon Cozens

commit sha f51e7e4d57ccdac3e5f1ec75e459260710173681

Tidy up

view details

Simon Cozens

commit sha 953cdd71546927b1265238160e0432d09c80c551

Deserialize MATH table into friendly format

view details

Simon Cozens

commit sha 9ccf717531f6313fc913d0f07eb667fe853b670f

Plug in the MATH table

view details

Simon Cozens

commit sha f1f57ed72efa13f669340042f3f7bde78b5f429a

WIP MATH table dumper

view details

push time in 2 days

push eventsile-typesetter/sile

Caleb Maclennan

commit sha ffafbe617743ad43a781edce08836d0d88f5da2b

fix(languages): Correct Armenian support to use ISO 639 code ‘hy’

view details

Simon Cozens

commit sha 10955ceaad2a52ca82e336d8f11978851f4d8448

Merge pull request #1232 from alerque/iso-foo

view details

push time in 2 days

PR merged sile-typesetter/sile

Correct Armenian support to use ISO 639 code ‘hy’ bug

Hey @simoncozens I'm not sure what bottle of good stuff you opened on August 16th, 2018 when you added 3c0dfe35 but if you have any more of it around feel free to invite me ;-)

+3 -2

0 comment

2 changed files

alerque

pr closed time in 2 days

PullRequestReviewEvent

issue openedMicrosoftDocs/typography-issues

Can MathVariants.horizGlyphCoverageOffset be NULL?

Both Linux Libertine O and LinLibertine_R contain NULL values for MathVariants.horizGlyphCoverageOffset. This makes sense, because MathVariants.horizGlyphCount is zero. But the spec doesn't explicitly say that these coverage offsets may be NULL - and it does say explicitly that other coverage offsets may be NULL. I think this is probably a spec omission, but it may be a non-conforming font.

(Found because the OpenType parser in SILE just tripped over these fonts.)

cc @khaledhosny, @alerque.


Document Details

Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

created time in 2 days

push eventsile-typesetter/sile

Simon Cozens

commit sha 3f368a0d46a61c4c1de34e681305980930cbdbf6

fix(math): Cope with MathVariant coverage tables being NULL Fixes #1222

view details

push time in 2 days

issue commentsile-typesetter/sile

Unsupported coverage table format 100

The problem is that in Linux Libertine the MathVariants.horizGlyphCoverageOffset is NULL. The spec doesn't say that it can be NULL. But clearly when MathVariants.horizGlyphCount is 0, the coverage table is going to be empty. I've fixed this in #1230, and I'll raise a question with OpenType whether the font is conformant.

Omikhleia

comment created time in 2 days

create barnchsile-typesetter/sile

branch : fix-1222

created branch time in 2 days

issue commentsile-typesetter/sile

URL and line breaks

I like this a lot! I don't think it's just a French language issue, so please do it for everything. :-)

Omikhleia

comment created time in 2 days

PullRequestReviewEvent

issue commentgooglefonts/Unified-Font-Repository

MacOS 11 `make update-ufr` error

Can you post the log file it mentions?

eliheuer

comment created time in 2 days

pull request commentsile-typesetter/sile

Fix(languages): Correct punctuation rules for French

I’ve been thinking about this. The original purpose of conventional commit messages for us was to help generate release notes. I’m eager not to turn a maintainer aid into a contributor burden. For the purpose of generating release notes (which deal with changes less granular than individual commits, and more often at the PR level of granularity), we don’t actually need to enforce them on every single commit. And now that master is protected, we get to rewrite the commit message into a PR-level summary when we squash and merge. So why don’t we just require conventional commits, only by maintainers, at squash time?

Omikhleia

comment created time in 2 days

issue commentsile-typesetter/sile

Unsupported coverage table format 100

Probably a bug in the MATH table reader. I’ll take a look.

Omikhleia

comment created time in 3 days

push eventsimoncozens/fonttools-rs

Simon Cozens

commit sha 676baf3c7df4d964637f91516d2180072003321f

Common tables for GSUB5/GSUB6/GPOS7/GPOS8

view details

Simon Cozens

commit sha 713d7e4180b7f7acf4c933f0c69bd81994b5b792

Build again on nightly

view details

Simon Cozens

commit sha de04fdd6b41c5075b08f8390d274b182c3ce83eb

Warning gardening

view details

push time in 3 days

push eventsimoncozens/fonttools-rs

Simon Cozens

commit sha 173ead538b1cc0e86e4d232ab457a7d77c7fca90

Ser/de GPOS4 mark to base

view details

push time in 3 days

issue commentsile-typesetter/sile

Unsupported coverage table format 100

Please turn on debugging for the opentype parser (sile --debug=opentype-parser) and post the full log.

Omikhleia

comment created time in 3 days

issue commentsile-typesetter/sile

Unsupported coverage table format 100

Either the font is broken or (more likely) SILE is having a hard time parsing it.

Omikhleia

comment created time in 3 days

push eventsimoncozens/kurbo

Simon Cozens

commit sha f52accd5afd8df483d3e363cb4457773ba56c547

Make clippy less sad

view details

push time in 3 days

PR opened linebender/kurbo

Curve curve intersection, take two

This borrow's lyon's curve-curve intersection algorithm. Some notes:

  • I've tried to separate out the sections of the algorithm which are cubic-specific into a separate trait, leaving the generic parts in curve_intersections.
  • In theory, this means that the trait can also be implemented on a QuadBez, and we would get cubic/quad and quad/quad intersections for free. In practice, I don't understand the algorithm well enough to implement the convex hull thingy on quads.
  • It also means that the new ParamCurveBezierClipping trait is a bit of a grab-bag of whatever methods were needed to get the algorithm working. Some of these methods (particularly solve_t_for_x and solve_t_for_x) may want to go into other traits - but which traits?

Again, for discussion.

+763 -3

0 comment

5 changed files

pr created time in 3 days

push eventsimoncozens/kurbo

Simon Cozens

commit sha 138c89e0cbe819b4f19c1ed8f1d5a946d3762af9

Two utility functions

view details

Simon Cozens

commit sha 43dacf3dd401a6a36f9a4ce79beaed4dcefd2d78

fit_inside function

view details

Simon Cozens

commit sha da57e599c6c11a0cd8618bb8bfae5ed867db76d0

Split a cubic into n cubics

view details

Simon Cozens

commit sha f043ea262d25b65d63d5c4b6ecab235b1a991d2f

Approximate a cubic with a single quadratic

view details

Simon Cozens

commit sha 01ed3f0c1379d7424cf7babeaa0735bd62d4de80

Approximate a cubic with a spline

view details

Simon Cozens

commit sha 38c29a568391d39273d000949343cf072887604a

Approximate a series of cubics with a series of quadratic splines

view details

Simon Cozens

commit sha da1fea124ea37672d0d38ab21679a15d4b30dba0

Test all the above

view details

Simon Cozens

commit sha 8de196bf415e800aae808f4f9037a7bb82faf33d

Rewrite as while loop

view details

Simon Cozens

commit sha 8b5041f4269586f718868dc4bcc2111e7d8fd348

Use find_map to simplify

view details

Simon Cozens

commit sha f12b52f48c60b6486cac9e077dd382e7342ca2a6

Rename intersects to crossing_point, use .cross

view details

Simon Cozens

commit sha 86fa5e291b8c1c96018b143594f6c39681586a3b

Drop unused .rotate method

view details

Simon Cozens

commit sha 66ac59216def7f248afa1ccbb4010012ea2a2677

Inline generic case, return an iterator

view details

Simon Cozens

commit sha d02a5f327c9f3b0e477cefbc1c01065d31f91679

QuadSpline new type

view details

Simon Cozens

commit sha 64cc09a31ae8bc22054e9d9d36555490dab63599

Apply doc fix suggestions from code review Co-authored-by: Colin Rofls <colin@cmyr.net>

view details

Simon Cozens

commit sha 67ca7800d05874fd9621c136c63f4c114ce3cb8c

Depublicize fit_inside

view details

Simon Cozens

commit sha 50b04181e8e0db8189decaa696501cba31747eca

Colin’s non allocating iterator

view details

Simon Cozens

commit sha 1e357f73c934c3eb2ae1175430b45e4f8fabae61

Less fancy cubics_to_quadratic_splines

view details

Simon Cozens

commit sha fcda9e6478c631d4b2117ca1fbf112685e4939f1

Update src/quadspline.rs Co-authored-by: Colin Rofls <colin@cmyr.net>

view details

Simon Cozens

commit sha f4b7ff42e14fc1abd1e43745e19dd9e958a1338d

Merge pull request #193 from simoncozens/cu2qu-curves Cubic to quadratic spline conversion

view details

push time in 3 days

push eventsimoncozens/kurbo

push time in 3 days

push eventsimoncozens/kurbo

Simon Cozens

commit sha 6e0ec0f5fd57b00c56202ec8d0d42981d55e555f

Borrow Lyon’s implementation of curve-curve intersection

view details

push time in 3 days

create barnchsimoncozens/kurbo

branch : curve-curve-intersection-2

created branch time in 3 days

PR closed linebender/kurbo

Curve curve intersection

As discussed in #194. Doesn't quite work.

+171 -0

0 comment

1 changed file

simoncozens

pr closed time in 3 days

issue closedlinebender/kurbo

Is something... really wrong with solve_cubic?

I called solve_cubic with a = -20.0 b = 30.0 c = 0.0 d = -5.0. I expected [1.36603, -0.36603, 0.5]. I got [-2.732050807568877, 0.7320508075688771, 2.0000000000000004].

Taking the x=2.0 case gives us -20*2**3 + 30*2**2 + 0*2**2 - 5 = -45 - which is pretty far from zero. Is something broken or is it my expectations?

closed time in 3 days

simoncozens

issue commentlinebender/kurbo

Is something... really wrong with solve_cubic?

I'm calling it backwards. Never mind.

simoncozens

comment created time in 3 days