Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add (Letter Character Face Ratio) [PADG](?) axis #191

Open
2 tasks done
aaronbell opened this issue Feb 25, 2025 · 6 comments
Open
2 tasks done

Add (Letter Character Face Ratio) [PADG](?) axis #191

aaronbell opened this issue Feb 25, 2025 · 6 comments
Labels
--new-axis New variable axis definition

Comments

@aaronbell
Copy link

aaronbell commented Feb 25, 2025

Requirements

By ticking the cases (or putting x between the square brackets in text mode), you confirm the following:

  • 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.
  • 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/chiron-fonts/chiron-hei-hk

Short description of what the axis does

Enables a font to vary the letter/character face ratio (字面率) for a CJK font to provide more spacing between characters.

Image

Image
The glyph on the left has a ratio of 92%, the one on the right has a ratio of 95%.

Why is the axis needed

When the point size becomes smaller (or larger), there is a perceived change in the space between ideographs. To address situations where (a) tracking cannot be changed, or (b) where changing tracking is not tenable (especially in mixed script scenarios), CJK foundries change the letterspace ratio in order to reduce the text density and perception of airiness.

This axis is discernibly different than SPAC as it does not cause reflow / affect horizontal advance of the line of text. It has some similarity with opsz conceptually as it is related to improving rendering at smaller sizes, but I believe the intention is sufficient different to warrant its own axis, especially as it is independent of other optical corrections one might implement.

My suggestion is that PADG should be a % reduction from 100%. So -10 would represent a 10% reduction in the character face ratio.

Note The PADG naming convention is one that @tamcy (of Chiron Hei) came up with (referencing "Padding"), and is open to changing. Another option that could work is VBDY, referencing the Japanese term "Virtual Body").

Axis metadata fields

#(PADG) based on (https://github.com/chiron-fonts/chiron-hei-hk)
tag: "PADG"
display_name: "Letter Character Face Ratio"
min_value: -100.0
default_value: 0.0 
max_value: 100.0
precision: 1
fallback {
  name: "Default"
  value: 0.00
}
fallback_only: false
description: "Adjust the letter character face ratio of the ideographic characters."
@aaronbell aaronbell added the --new-axis New variable axis definition label Feb 25, 2025
@aaronbell
Copy link
Author

(I should note that the implementation presently in Chiron Hei does not explicitly follow the above master position implementation proposed but I wanted to post this proposal as a mechanism to drive consensus about how to implement it before requesting @tamcy to change anything)

@davelab6
Copy link
Member

I wonder if this should be integrated into the Parametric Axes system, as its about Transparency

@dberlow
Copy link

dberlow commented Feb 28, 2025

Parametrically, this is a combination of XTRA, where the internal white spaces, e.g. horizontal counters, apertures and stems are being extended or reduced,,, at the same time XTSP, a spacing change is going on to maintain a given XTAB width, as it is monospaced?

I think you'd need knowledge of each of those things separately in order to blend variations with different inter glyph spacing, among a range of monospaced width options.

@davelab6
Copy link
Member

XTSP

I think the advanceWidth doesn't change, though?

@davelab6
Copy link
Member

davelab6 commented Mar 6, 2025

I suggest CTRA as in 'Central Transparency', but then defining the transparent space to measure isn't obvious to me. @aaronbell mentioned the BASE table common example is and the ink bounding box of this glyph can be measured (per discussion in google/fonts#8911) in per-mille units; since some CJK fonts are not square bodied, this should be the vertical bounding box. Whereas Aaron's propoal was per-cent, this would be per-mille, such that if the measured value is 835, the total would be 1,000 and thus it could be easily converted as 83.5%

Image

@tamcy
Copy link

tamcy commented Mar 8, 2025

Hello, this is the creator of Chiron Hei HK.

I would like to add that the concept of the character face ratio originates from the era of movable type, where the virtual or outer bounding box represents the actual size of the movable type.

The purpose of this proposed PADG(?) axis is to serve as an offset for the default character face ratio, i.e. shrinking, or less probably enlarging, the green area without affecting the "container" (the white area). For example, a font may have a default character face ratio of 92.3%. However, this value would not be exposed in the axis and isn’t really important. The default value is determined by the font designer and acts as the baseline for further adjustments. In this case, the 92.3% becomes the 100% starting point.

In this regard, the axis is comparable to the existing widh axis. Below is a modified version of the widh axis definition (found here) to illustrate how the new axis is intended to function:

Description: Used to vary character face of ideographic characters from larger to smaller without affecting the horizontal or vertical advance of the line of text.

Scale interpretation: Values can be interpreted as a percentage of whatever the font designer considers “normal character face ratio” for that font design.

Recommended or required “Regular (i.e. the default ratio)” value: 100 is required.

Valid numeric range: Values must be strictly greater than zero.

That is actually identical to what @aaronbell propsoed, with a different scale or frames of reference. I am using the values straightly from wdth just to illustrate how similar they are conceptually.

In the current implementation of Chiron Hei HK, PADG=0 represents the default ratio, while PADG=10 equates to a 5% reduction in size.

Using the above definition, PADG(?)=100 would be the default, and the current PADG=10 would translate to PADG(?)=95.

Whether PADG(?)=90 can result in a 5% shrink can be discussed. I believe this should be acceptable as long as it does not cause too much surprise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
--new-axis New variable axis definition
Projects
None yet
Development

No branches or pull requests

4 participants