GithubHelp home page GithubHelp logo

sophiadesign / foldit Goto Github PK

View Code? Open in Web Editor NEW
18.0 18.0 5.0 33.61 MB

Variable Color Font using COLRv1 capabilities on Google Fonts

License: SIL Open Font License 1.1

Python 75.54% HTML 8.97% Makefile 15.48%

foldit's People

Contributors

dependabot[bot] avatar m4rc1e avatar simoncozens avatar sophiadesign avatar vladwinner avatar vv-monsalve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

foldit's Issues

Reinstitute /fonts folder

@m4rc1e in e2a27e0 you removed the /fonts folder, but it is important for users to obtain alt font formats (especially the OTF with the SVG-in-OT flavor color font) which are not currently available from the GF download ZIP, because the TTF COLRv1 file from there doesn't work at all in Adobe apps, and people email @SophiaDesign frequently to request it.

Could you recap why it was removed, and help Sophia with how to reinstate it in a sustainable way?

Outline Quality Checklist

@SophiaDesign we've built this checklist to ensure the outlines quality and thus prevent any unwanted/unexpected issues on the resulting fonts.

Please, review it and ensure everything is ok for GF-Foldit. E.g. in the current "decomposed" file, some paths are in the wrong direction.

Outline Quality Checklist

Make sure your font is ready for mastering by fulfilling this checklist. Design is not particularly judged here, we are talking from the point of view of the technical quality aspect of a font, i.e: what you see in your font editor is what will everyone see on their own screen or printed matter.

Contours

Segments

  • Mixed outline type : The outlines of one font must be either PostScript (OpenType Fonts font with CFF compression / .otf) or TrueType (OpenType Fonts with TrueType compression / .ttf). Make it sure they are all cubic (PostScript) in the source file.
  • Wrong direction: For PS outlines, the outer-shape goes counter-clockwise, and the inner-shape (or counter-shape) goes clockwise in PS outlines.
  • Almost straight: If a segment is misaligned by one or two units, it may be a mistake from the designer. This small offset can cause a big misinterpretation from the rasterizer at small ppm sizes.
  • Missing inflexion point: It is considered that a curve has a suspicious inflexion when it is a single segment going from convex to concave (and vice versa). We need to divide this segment by adding a node at the point where the curve is changing conditions, therefore the tangent represented by the two handles crosses the curve.
  • Collinear: If two line-segments are connected with the same angle (or almost the same angle), or with a slight offset, it means that the entire line could be made with one segment (two points, not more).
  • Short: Segments of 1 or 2 units are often unwanted and, again, can be wildly rendered on some screens.
  • Open: A contour can only be considered as such if it has a closed path. Otherwise, it won't be rendered at all.
  • Overlaying: It disturbs rendering, interpolation and variation.
  • Overlapping: The crossing of two independent contours is not such a problem in VF (although small overlaps are preferred) and are generally merged during the generation of static binaries. If you want to control the result of the merging, it is better to do it yourself. If not, try to keep them in a small overlapped area. Also try not to overlap more than 2 contours in the same area (contour crossing a contour itself crossing another contour, like an asterisk, creates confusion during generation and rendering). In any case, try to avoid overlapping shapes that cross a plain shape and a closed counter-shape (typically, Oslash should be manually merged for example).
  • Self-crossing: Often known as open-corners, it is very helpful while designing and recommended for nice interpolations. They will be preserved for VF fonts and merged during generation to static binaries. To better control the result, pay attention to its size (not too big, not too small) and not leave portions of it outside the main shape like the stem. It can cause unwanted rendering issues. If you want to control the result of the merging, do it yourself, otherwise do the same advice as above.

On-curve points (nodes)

  • Overlaying: Also called "empty segments” because they don't have a length. They are often useless and sometimes confusing for hinting and rendering — except for some rare cases of variations. They ought to be removed.
  • Missing on extremes: Points at X and Y extremes of the paths are required for hinting reasons since they attach hints to the extremum of the stem. Also, by having them, you could control better the curves and probably reduce the necessity of extra nodes.
  • Fractional coordinates: Coordinates of the nodes need to be integer values. This could be easily solved by running the automatic command "Round coordinates"
  • Broken smooth connection: Ensure the right type of node according to the connection, smooth (between two curve segments) or sharp (between a curve and a line segment; or two line segments)

Off-curve points (handles)

  • Almost straight Ensure the handles are really aligned with the angle of the shape.
  • Inside node If needed they shouldn't be retracted.

Components

  • Transformed components: Transformed components ((scaled, mirrored, stretched, rotated) are not processed correctly while generating variable ttf. This could cause issues like the original component being displayed instead, unwanted fractional coordinates, as well as the wrong direction in outlines.
  • Nested components: Components referring to another component (nested) are not exported correctly to the ttf variable format. They take back the coordinates of the original glyph. E.g. Issue #2961
  • Overlapping components: While generating ttf static binaries, Fontmake doesn't decompose overlapping components, which is good for Variable Fonts but can cause some issues in static TTF.

Kinks

If it is a VF you would like to avoid kinks, so these three situations should be avoided.

  • Aligned nodes in the same straight line A straight line ins a VF has three or more nodes that should keep aligned.
  • Changes in angle The angle of a segment ideally shouldn’t change a lot between the masters.
  • Changes in proportion The proportion and distances of segments drawn by the nodes change considerably

Review the Designspace

What is the intended designspace for the font?

Masters

Inspecting the current source file, it goes from a visually extra-condensed (named Condensed in the file) Thin extreme to an Expanded ExtraBold one, but there are only two masters to govern that wide range.

Screen Shot 2022-04-07 at 9 47 52

You would need at least another master located at the Regular weight, Normal width to better administrate the variations.

Instances

On the other hand, plan ahead and carefully manage which would be all the intermediate instances considering both the currently supported fvar instances as well as that the API will generate all the possible static instances within a range.

It's not entirely clear why there are duplicate instances now. This could be related to the reported export issues.

Screen Shot 2022-04-07 at 9 47 12

A good case of reference would be Archivo

Support needed for variable-COLRv1

@SophiaDesign reported

I am still puzzled with the same problem. Report (in github actions) says there should be exported font files, but there is nothing there still. Instead of a build script I have the makefile from the Google Fonts template.

Could you please point out (provide a link as a comment here) the Report where this has been said?. When inspecting the Actions tab, everything looks like they are working.

On the other hand, it is always helpful to run the exporting process directly from the Glyphs app to validate it is working from there. After trying to do so as a VF, Glyphs reports an issue regarding active instances.

Screen Shot 2022-04-07 at 8 32 42

And when trying to export static TTF there are other issues reported.

Screen Shot 2022-04-07 at 8 39 17

Screen Shot 2022-04-07 at 8 44 24

You would like to fix all the above to have exported fonts from the app and then try to run the make build again from the repo.

Single directory Fail reported

@SophiaDesign reported:

It doesn't accept (marks fail) certain namings (for example for fallback fonts or condensed/extended). Can this be ignored?
There is also a problem with single_directory, which I couldn't find info about on the fontbakery website:

It's not clear to me why this is a problem, or why they are expected to be separate font families.

Fail reported:

🔥 FAIL: Checking all files are in the same directory.
--- Rationale ---
If the set of font files passed in the command line is not all in the same
directory, then we warn the user since the tool will interpret the set of files
as belonging to a single family (and it is unlikely that the user would store
the files from a single family spreaded in several separate directories).
  • 🔥 FAIL Not all fonts passed in the command line are in the same directory. This may lead to bad results as the tool will interpret all font files as belonging to a single font family. The detected directories are: ['fonts/otf', 'fonts/ttf'] [code: single-directory]

Interpolation problems in `Foldit[wght].ttf`

Hello!

This is an automatically-generated report about possible interpolation problems in Foldit[wght].ttf, as found in the Google Fonts catalog.

The particular version of the font that was tested was 1.003/Foldit-fonts.zip.

To download a PDF version of this report with helpful visuals of the problems, click here; Or to view it on the GitHub website, click here.

The report follows:

Glyph notequal was not compatible:
  Masters: '', 'wght=900.0':
    Contour 1 start point differs: 0 in '', 1 in 'wght=900.0'; reversed: False
Glyph notequal.color1 was not compatible:
  Masters: '', 'wght=900.0':
    Contour 0 start point differs: 0 in '', 1 in 'wght=900.0'; reversed: False
Glyph uni1EC9 was not compatible:
  Masters: '', 'wght=900.0':
    Contour 0 start point differs: 0 in '', 5 in 'wght=900.0'; reversed: False
Glyph uni1EC9.color0 was not compatible:
  Masters: '', 'wght=900.0':
    Contour 0 start point differs: 0 in '', 5 in 'wght=900.0'; reversed: False

This report was generated using the fonttools varLib.interpolatable tool. We understand that sometimes the tool generates false-positives. Particularly for more complicated font designs. If you did not find this report useful, please apologize and ignore & close it.

To give feedback about this report, please file an issue or open a discussion at fonttools.

COLRv1 variable format export issue

Context:
It was possible to export a variable font with COLRv1 gradient (gradient was non-variable) using fontmake first on 11th April 2022.

Since 25 May 2022:
Issue exporting gradient for COLRv1 variable font. Only black version appears now. Current versions are fontmake 3.3.0 and gftools 0.9.11 and exports are made locally in terminal on MacOS.

I am getting the following error from using either fontmake and gftools on any of the "decomposed" glyphs files dating back to the 11th April version which previously worked (30th May):

fontmake.errors.FontmakeError: In 'GF-Foldit-decomposed.glyphs' -> 'master_ufo/Foldit.designspace': Generating fonts from Designspace failed: module 'uharfbuzz' has no attribute 'RepackerError'

@khaledhosny is harfbuzz/fontmake working okay for you?

From here on Github Actions should be ignored and exports are to be made locally using gftools. Variable font export showing gradients worked on 26 May 2022 for @vv-monsalve
-- Viviana, could you confirm which version gftools you used and which sourcefile (last modified date and time)?
-- p.s. I am still not getting them exported into a "fonts" folder, even when using gftools. Could it have anything to do with my MacOS (Catalina version 10.15.7)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.