Skip to content

Commit

Permalink
rename ascent->ascender, descent->descender
Browse files Browse the repository at this point in the history
The ascender/descender forms are more common in typography. Also UFO and the Oxford English Dictionary agree with me.
  • Loading branch information
anthrotype committed Mar 11, 2021
1 parent 8e2b310 commit 40fff1b
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 24 deletions.
6 changes: 3 additions & 3 deletions src/nanoemoji/color_glyph.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def _get_gradient_transform(
glyph_width: int,
) -> Affine2D:
transform = map_viewbox_to_font_space(
view_box, config.ascent, config.descent, glyph_width, config.transform
view_box, config.ascender, config.descender, glyph_width, config.transform
)

gradient_units = grad_el.attrib.get("gradientUnits", "objectBoundingBox")
Expand Down Expand Up @@ -151,7 +151,7 @@ def _parse_radial_gradient(
r1 = gradient.r

transform = map_viewbox_to_font_space(
view_box, config.ascent, config.descent, glyph_width, config.transform
view_box, config.ascender, config.descender, glyph_width, config.transform
)

gradient_units = grad_el.attrib.get("gradientUnits", "objectBoundingBox")
Expand Down Expand Up @@ -332,7 +332,7 @@ def _painted_layers(
def _color_glyph_advance_width(view_box: Rect, config: FontConfig) -> int:
# Scale advance width proportionally to viewbox aspect ratio.
# Use the default advance width if it's larger than the proportional one.
font_height = config.ascent - config.descent # descent <= 0
font_height = config.ascender - config.descender # descender <= 0
return max(config.width, round(font_height * view_box.w / view_box.h))


Expand Down
32 changes: 19 additions & 13 deletions src/nanoemoji/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
flags.DEFINE_string("config", None, "Config file.")
flags.DEFINE_integer("upem", None, "Units per em.")
flags.DEFINE_integer("width", None, "Width.")
flags.DEFINE_integer("ascent", None, "Ascender")
flags.DEFINE_integer("descent", None, "Descender.")
flags.DEFINE_integer("ascender", None, "Ascender")
flags.DEFINE_integer("descender", None, "Descender.")
flags.DEFINE_string("transform", None, "User transform, in font coordinates.")
flags.DEFINE_integer("version_major", None, "Major version.")
flags.DEFINE_integer("version_minor", None, "Minor version.")
Expand Down Expand Up @@ -113,8 +113,8 @@ class FontConfig(NamedTuple):
color_format: str = "glyf_colr_1"
upem: int = 1024
width: int = 1275 # default based on Noto Emoji
ascent: int = 950 # default based on Noto Emoji
descent: int = -250 # default based on Noto Emoji
ascender: int = 950 # default based on Noto Emoji
descender: int = -250 # default based on Noto Emoji
transform: Affine2D = Affine2D.identity()
version_major: int = 1
version_minor: int = 0
Expand All @@ -138,13 +138,19 @@ def has_picosvgs(self):
return not self.color_format.startswith("untouchedsvg")

def validate(self):
for attr_name in ("upem", "width", "ascent", "version_major", "version_minor"):
for attr_name in (
"upem",
"width",
"ascender",
"version_major",
"version_minor",
):
value = getattr(self, attr_name)
if value < 0:
raise ValueError(f"'{attr_name}' must be zero or positive")

if self.descent > 0:
raise ValueError("'descent' must be zero or negative")
if self.descender > 0:
raise ValueError("'descender' must be zero or negative")

return self

Expand All @@ -156,8 +162,8 @@ def write(dest: Path, config: FontConfig):
"color_format": config.color_format,
"upem": config.upem,
"width": config.width,
"ascent": config.ascent,
"descent": config.descent,
"ascender": config.ascender,
"descender": config.descender,
"transform": config.transform.tostring(),
"version_major": config.version_major,
"version_minor": config.version_minor,
Expand Down Expand Up @@ -235,8 +241,8 @@ def load(config_file: Path = None, additional_srcs: Tuple[Path] = None) -> FontC
color_format = _pop_flag(config, "color_format")
upem = int(_pop_flag(config, "upem"))
width = int(_pop_flag(config, "width"))
ascent = int(_pop_flag(config, "ascent"))
descent = int(_pop_flag(config, "descent"))
ascender = int(_pop_flag(config, "ascender"))
descender = int(_pop_flag(config, "descender"))
transform = _pop_flag(config, "transform")
if not isinstance(transform, Affine2D):
assert isinstance(transform, str)
Expand Down Expand Up @@ -312,8 +318,8 @@ def load(config_file: Path = None, additional_srcs: Tuple[Path] = None) -> FontC
color_format=color_format,
upem=upem,
width=width,
ascent=ascent,
descent=descent,
ascender=ascender,
descender=descender,
transform=transform,
version_major=version_major,
version_minor=version_minor,
Expand Down
4 changes: 2 additions & 2 deletions src/nanoemoji/write_font.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ def _ufo(config: FontConfig) -> ufoLib2.Font:
ufo.info.familyName = config.family
# set various font metadata; see the full list of fontinfo attributes at
# https://unifiedfontobject.org/versions/ufo3/fontinfo.plist/#generic-dimension-information
ufo.info.ascender = config.ascent
ufo.info.descender = config.descent
ufo.info.ascender = config.ascender
ufo.info.descender = config.descender
ufo.info.unitsPerEm = config.upem
# version
ufo.info.versionMajor = config.version_major
Expand Down
8 changes: 4 additions & 4 deletions tests/color_glyph_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
def _ufo(config):
ufo = ufoLib2.Font()
ufo.info.unitsPerEm = config.upem
ufo.info.ascender = config.ascent
ufo.info.descender = config.descent
ufo.info.ascender = config.ascender
ufo.info.descender = config.descender
return ufo


Expand Down Expand Up @@ -111,7 +111,7 @@ def test_transform_and_width(
"/>"
)
config = FontConfig(
upem=upem, width=width, ascent=ascender, descent=descender
upem=upem, width=width, ascender=ascender, descender=descender
).validate()
ufo = _ufo(config)
color_glyph = ColorGlyph.create(
Expand Down Expand Up @@ -348,7 +348,7 @@ def _round_gradient_coordinates(paint, prec=6):
],
)
def test_paint_from_shape(svg_in, expected_paints):
config = FontConfig(upem=1000, ascent=1000, descent=0, width=1000)
config = FontConfig(upem=1000, ascender=1000, descender=0, width=1000)
color_glyph = ColorGlyph.create(
config, _ufo(config), "duck", 1, [0x0042], _nsvg(svg_in)
)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ def color_font_config(config_overrides, svgs, tmp_dir=None):
._replace(
family="UnitTest",
upem=100,
ascent=100,
descent=0,
ascender=100,
descender=0,
width=100,
keep_glyph_names=True,
fea_file=fea_file,
Expand Down

0 comments on commit 40fff1b

Please sign in to comment.