Add Dot Shape [DOTS] axis
Requirements
By ticking the cases (or putting x between the square brackets in text mode), you confirm the following:
- [x] I have inspected the current Axis Registry and there is not a registered custom axis that could be used for the variation purpose on the upcoming font project.
- [X] The metadata fields of the proposed axis meet the Axis Requirements as specified in the Protocol (linked above).
Font project(s) using the axis
https://github.com/aminabedi68/Mikhak
Short description of what the axis does
Transforms and/or switching dot style in precomposed glyphs
Image
Why is the axis needed
In Arabic, and possibly other scripts, dot styles contribute a lot to the appearance of a typeface. Traditional rombic dots (as written with a broad nib pen) give off a feeling of authoritativeness, while round dots or even several dots written cursively as either a line or a bent line or a loop communicate informality and a hand-written origin.
A font may implement several different dot styles that may be chosen at user discretion depending on design intent.
Axis metadata fields
#DSTY based on [Mikhak](https://github.com/aminabedi68/Mikhak)
tag: "DSTY"
display_name: "Dot Style"
min_value: 1
default_value: 1
max_value: 1000
precision: 1
fallback {
name: "Default"
value: 1.00
}
fallback_only: false
description: ""
Note: I'm not sure what fallback_only means and it wasn't described in the Guide, so leaving it at default value.
Note: I'm not sure what
fallback_onlymeans and it wasn't described in the Guide, so leaving it at default value.
Technical answer from Garret in the chat group:
// Whether only the fallback positions should be used, for example, an axis // might have only three relevant positions: the min, the middle, and the max. An example where it would be set true is italic
This field affects the way the type tester surfaces the axis control.
A true value would be used in cases like a boolean axis to display an "on/off" toggle (hence the Italic example above), or pseudo boolean like Cursive, which was registered with three fallbacks positions, and so it uses radio buttons to give access to those positions.
A false value is used for a continuous range axis displaying a slider to reach all the intermediate points.
When inspecting the current implementation of DSTY in Mikhak it would require a true value. However, since we no longer include fallbacks at the axis registry level, this will need further revision.
@vv-monsalve and @evanwadams and I discussed this and propose:
#DOTS based on [Mikhak](https://github.com/aminabedi68/Mikhak)
tag: "DOTS"
display_name: "Dot Shape"
min_value: 0
default_value: 0
max_value: 9
precision: -1
fallback {
name: "Default"
value: 0.0
}
fallback_only: false
description: "Customizes the shapes of dots, in writing systems from Latin (i) to Arabic (ي)."
Note that "DOTS" is fun, and breaking the 'system' of tag characters where SH has been used for other Shape axes, but this 4 character word works so nicely :)
Note also the max_value here is 9 to avoid the risk that it is misunderstood as a percent, when it should be understood as a enum axis; we've seen this issue with Bitcount, where each shape is not mapped to an integer. We can easily increase the value when we have a font with more than 6 (since we start at zero) whole shapes. I used 9 because I can think of 9 so far: Invisible, Circle, Oval, Square, Rombic, Line, Curved Line, Rounded Line, Rounded Curved Line.
We await comments before approving :)