GithubHelp home page GithubHelp logo

amstelvar-avar2's People

Contributors

davelab6 avatar dberlow avatar gferreira avatar

Watchers

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

amstelvar-avar2's Issues

implementing fences

TL;DR: we have fences working for the default, but not for blended extrema.

I've been trying to implement fences in avar2 for AmstelvarA2.

some background on what fences are: Designspace fences (Mom, You Sure Can Rehydrate a Pizza)

Fences keep users to “safe” or “approved” zones of the designspace.

Users who choose axis settings that are beyond the fence will be brought back inside the safe zone.

in other words, fences restrict the scope of parametric axes (ex: XOPQ XTRA YOPQ XTSP) depending on the current location in blended axes (ex: wght wdth).

the min/max values for each parametric axis, at each blended extreme for wght and wdth (duovars), were defined by @dberlow as a RTF document here:

https://github.com/googlefonts/amstelvar-avar2/blob/main/Source/Roman/Amstelvar%20avar2%20DSL.1.rtf

the relevant fences data was then extracted into this JSON file:

https://github.com/googlefonts/amstelvar-avar2/blob/main/Source/Roman/fences.json

finally, this data is used to add new mappings to the avar2 designspace file using the fontTools.designspaceLib API.

for example, at wght400 we would like to limit parametric axes to the following min/max values:

"wght400": {
  "XTRA": {
    "min": 300,
    "max": 450
  },
  "XOPQ": {
    "min": 72,
    "max": 110
  },
  "YOPQ": {
    "min": 50,
    "max": 75
  },
  "XTSP": {
    "min": -60,
    "max": 50
  }
}

in designspace XML this becomes the following: (only XTRA shown)

<mapping>
  <input>
    <dimension name="Weight" xvalue="400"/>
    <dimension name="XTRA" xvalue="208"/>
  </input>
  <output>
    <dimension name="XTRA" xvalue="300"/>
  </output>
</mapping>
<mapping>
  <input>
    <dimension name="Weight" xvalue="400"/>
    <dimension name="XTRA" xvalue="508"/>
  </input>
  <output>
    <dimension name="XTRA" xvalue="450"/>
  </output>
</mapping>

in plain language: when the weight value is 400, instead of going all the way down to 208, the user can only go until 300; and instead of going all the way up to 508, the user can only go until 450.

such fence mappings were added for the default and for all blended extrema (wght200 wght800 wdth85 wdth125), for parametric axes XTRA XOPQ YOPQ XTSP only. the resulting designspace and variable font are here:

https://github.com/googlefonts/amstelvar-avar2/blob/main/Source/Roman/AmstelvarA2-Roman_avar2_fences.designspace
http://github.com/googlefonts/amstelvar-avar2/blob/main/fonts/AsciiAlpha/AmstelvarA2-Roman_avar2_fences.ttf

the fences effect seems to be working at the default location (wght400 wdth100): the scope of XOPQ XTRA YOPQ XTSP is limited when these parametric axes are used alone or in combination with each other. fences for the blended extrema, however, are not working as intended; the fenced values seem to be morphing back to the default (?).

a second designspace and variable font were created containing fences for only one blended extreme (wght200):

https://github.com/googlefonts/amstelvar-avar2/blob/main/Source/Roman/AmstelvarA2-Roman_avar2_fences-wght200.designspace
http://github.com/googlefonts/amstelvar-avar2/blob/main/fonts/AsciiAlpha/AmstelvarA2-Roman_avar2_fences-wght200.ttf

also here fences for the blended extreme wght200 are not working as expected, showing the same behavior as in the previous attempt (above).


some questions at this point:

  • does avar2 allow adding fences for blended extrema?
  • is the above designspace syntax for fences correct?

cc @Lorp @behdad — many thanks in advance for any feedback you can give on this.

checking regular

am commiting AmstelvarA2-Roman_wght400 with
minor edits to optical x locations of marks
Minor edits to overlaps too close to edge of contour that hides it, (parapgrah and @)

please check marks on. dieresisbelowcomb.case

The contours of Phi were too divided. I conbined the "O" shape for easier manipilation with fewer points.
Same with Psi, phi, psi, Ef

nu was off baseline and had overlap in inner vertex removed

Schwacyr was an ipractical counter to work with. Have simplified.

yi made a component, even if dieresis is unique
ustraightstroke made a component, even if stroke is unique
El.bgr composed from Lambda
yu.bgr composed from l, stroke and o

I've reached the stacked accents. We do not plan to create gvars for a glyph like this:
image

A single set of unstacked accents designed and aligned for Upper and lowercase will be stored. These will be combined a single component at a time.

Like this

Screen Shot 2023-11-09 at 7 17 04 AM

It took me a couple of days to straighten this all out in Roboto, and I'd not like to have to do it again, but let me know if this is not something you want to do.

Cheers!

Family Name Change

Google's choice for the working name of this vf is "Amstelvar2". Please change all relevant files, family names, scripts and compositions, needed for use and relying on previous names.

I will begin when that's complete.

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.