Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
ce350fe
Duplicate masters, add MONO axis
joanaranito Mar 19, 2026
063a2b6
Remove isFixedPitch flag
joanaranito Mar 19, 2026
991a96a
Respace a-z (WIP)
joanaranito Mar 19, 2026
05fd563
Respace A-Z (wip)
joanaranito Mar 19, 2026
b17a9fd
Remove metrics keys
joanaranito Mar 19, 2026
b3f7ca6
Make spacing fixes
joanaranito Mar 19, 2026
b93dc82
Re-spaces and kerns the numerals
kalapi Mar 20, 2026
6b2ea52
Re-spaces numerals; Fixes proportions for /f, /i, /j, /l, and /t.
kalapi Mar 20, 2026
2e97496
Create narrow alternate glyphs for f,i,j,l, revert design changes in …
joanaranito Mar 20, 2026
056d298
Respace @
joanaranito Mar 20, 2026
ee13bd7
Create alternate narrow j, revert changes to design of default j
joanaranito Mar 20, 2026
1f8bde6
Add kerning classes; kern a, b, c vs all ASCII
joanaranito Mar 20, 2026
c48bca3
Kern all lowercase vs ASCII
joanaranito Mar 20, 2026
f533141
Start kerning the uppercase vs ASCII
joanaranito Mar 20, 2026
a95adc3
Kern ASCII
joanaranito Mar 23, 2026
9273464
Add alternates for awkward kerning pairs, revert design changes in /o…
joanaranito Mar 23, 2026
754c490
Add white arrows
joanaranito Mar 23, 2026
8a830a8
Small fixes to features and ASCII set
joanaranito Mar 23, 2026
565b52a
Assign kerning classes to extended character set (WIP)
joanaranito Mar 24, 2026
15999da
Assign kerning classes to remaining Full Set glyphs
joanaranito Mar 24, 2026
195357c
Fix kerning of period and comma with numerals, make m, w, M and W a t…
joanaranito Mar 26, 2026
082d0f8
Add narrower versions of f, i, l, j, t; space them and rekern them
joanaranito Mar 26, 2026
cd0412c
Spacing and kerning adjustments
joanaranito Mar 26, 2026
d5b677f
Change digraphs to full width glyphs, mark full set glyphs that are a…
joanaranito Mar 26, 2026
3d6aba5
Adjust widths and spacing of fullset characters
joanaranito Mar 27, 2026
033de59
Kern full set
joanaranito Mar 27, 2026
8df1253
Kern full set Light Italic
joanaranito Mar 28, 2026
838b964
Kern full set
joanaranito Mar 28, 2026
71c021f
[Extra-Bold] Re-spaces numerals
kalapi Mar 29, 2026
db9cb54
Fixes /A & /W
kalapi Mar 29, 2026
b10fdb6
Fixes /W & /M
kalapi Mar 29, 2026
338c4ae
Fix position of j dot
joanaranito Mar 30, 2026
f426114
Kerning fixes; remove unnecessary stylistic sets
joanaranito Mar 30, 2026
51b14d2
Close tabs
joanaranito Mar 30, 2026
c71f39b
Fixes metrics for /exclam & /numbersign
kalapi Mar 30, 2026
73cf1c4
Fixes metrics for /dollar
kalapi Mar 30, 2026
cf49728
Fixes metrics and proportions for /percent
kalapi Mar 30, 2026
f7140d4
Fixes metrics for /ampersand
kalapi Mar 30, 2026
6c3f2e1
Fix color lables
joanaranito Mar 30, 2026
62c3c14
Fix width of ae, oe, AE, OE, @, f, i, j l, t (WIP)
joanaranito Mar 30, 2026
1fe7c41
Fix width of f, i, j, l, t in Extra-Bold, Regular and Bold
joanaranito Mar 30, 2026
f40e9ad
Fix outline of g
joanaranito Mar 30, 2026
a3858d1
Update full set glyphs based on l, i, j and f
joanaranito Mar 30, 2026
ef66c3a
Fix longs width
joanaranito Mar 30, 2026
08d5f63
Black master spacing: hamburgefontsiv
joanaranito Mar 30, 2026
b8dddae
Black master spacing: HO
joanaranito Mar 30, 2026
0b2319f
Spaces lowercase a-z
kalapi Mar 30, 2026
d7c7a98
[WIP] Re-spaces uppercase characters
kalapi Mar 31, 2026
45bb9f9
Re-spaces all uppercase characters
kalapi Mar 31, 2026
099a0db
Small adjustments to A-Z a-z spacing, space Full Set (Black)
joanaranito Mar 31, 2026
36eb42c
Fix spacing of lowecase full set, fix digraphs
joanaranito Mar 31, 2026
e3ff0b8
Spacing fixes, kern o and n to full set
joanaranito Mar 31, 2026
c3b6d87
[ExtraBold] Kerns lowercase 'a'
kalapi Mar 31, 2026
33cf37c
[ExtraBold] Kerns lowercase 'b'
kalapi Apr 1, 2026
2f9232b
Remove unnecessary kerning pairs, kern c and d
joanaranito Apr 1, 2026
a0c491c
Kern e
joanaranito Apr 1, 2026
9473e8f
kern f
joanaranito Apr 1, 2026
1c48d97
Spacing and kerning fixes; Kern g
joanaranito Apr 1, 2026
49f65b3
kern i; spacing fixes
joanaranito Apr 1, 2026
0852c96
Revert accidental spacing change
joanaranito Apr 1, 2026
09c207a
Spacing adjustments, kern j and k
joanaranito Apr 1, 2026
06f0cfb
Spacing adjustments; kern l, p, q, r, s, t
joanaranito Apr 1, 2026
b3dc13b
Kern u, v, w, x, y, z
joanaranito Apr 1, 2026
5916eae
Kern A
joanaranito Apr 1, 2026
3cebc08
Kern B, C, D, E, F
joanaranito Apr 1, 2026
cd9f935
Kern G, I, J, K
joanaranito Apr 1, 2026
3ec4458
[ExtraBold] Adds kerning for /L; Fixes kerning class for Ohorn.alt
kalapi Apr 1, 2026
78625bb
[ExtraBold] Adds kerning for /O
kalapi Apr 2, 2026
98bbccd
[ExtraBold] Adds kerning for /P
kalapi Apr 2, 2026
3a696ac
[ExtraBold] Adds kerning for /Q
kalapi Apr 2, 2026
8b01b87
[ExtraBold] Adds kerning for /R
kalapi Apr 2, 2026
57697c7
[ExtraBold] Adds kerning for /S
kalapi Apr 2, 2026
638a6e0
[ExtraBold] Adds kerning for /T
kalapi Apr 2, 2026
2950e3e
[ExtraBold] Adds kerning for /U
kalapi Apr 2, 2026
d62b82e
[ExtraBold] Adds kerning for /V
kalapi Apr 2, 2026
99e5de3
[ExtraBold] Adds kerning for /W
kalapi Apr 2, 2026
2609310
[ExtraBold] Adds kerning for /X
kalapi Apr 2, 2026
a568a84
[ExtraBold] Adds kerning for /Y
kalapi Apr 2, 2026
d817909
[ExtraBold] Adds kerning for /Z
kalapi Apr 2, 2026
d3d77ad
Spacing adjustments, kern period, comma, hyphen, underscore, quoterig…
joanaranito Apr 2, 2026
2e067db
Kern eight, nine, quoteright, quoteleft, colon, question, AE, Bhook
joanaranito Apr 2, 2026
cf7de69
Kern full set glyphs, spacing and kerning class adjustments
joanaranito Apr 2, 2026
a4a18f7
[ExtraBold] Adds kerning for /ordfeminine
kalapi Apr 2, 2026
1aa105d
[ExtraBold] Adds kerning for /ordmasculine
kalapi Apr 2, 2026
898f1e4
Temporary fixes to incompatible digraphs
kalapi Apr 2, 2026
b38e0cb
Minor fixes to /comma
kalapi Apr 3, 2026
f39cdd1
Interpolates spacing in intermediate masters; Interpolates kerning in…
kalapi Apr 3, 2026
9d0e2a4
Spacing and kerning fixes
joanaranito Apr 3, 2026
d67d537
Fixes spacing for /a/d/e/h/i/m/n/o/s
kalapi Apr 4, 2026
45292ce
Re-spaces all lowercase characters
kalapi Apr 4, 2026
1e12935
Removes lowercase ASCII set kerning
kalapi Apr 4, 2026
fca9ed5
Removes all kerning data
kalapi Apr 4, 2026
8b7f9ab
Fixes /hyphen/endash/emdash
kalapi Apr 4, 2026
f671ab7
Fixes spacing for /A/B/C/D/E/H and /O
kalapi Apr 4, 2026
2bb1759
Fixes spacing for /F/G/I/J/K/L/M/N/P/Q/R/S/T/U/V/W/X/Y and /Z
kalapi Apr 5, 2026
a0f42c4
Fixes spacing for /space/exclam/numbersign and /dollar
kalapi Apr 6, 2026
ac9bccc
Fixes spacing for /percent/ampersand/quotesingle/parenleft/parenright…
kalapi Apr 6, 2026
c8d05e5
Fixes spacing for /bracketleft/bracketright/braceleft/braceright/quot…
kalapi Apr 6, 2026
6049334
Fixes spacing for /ellipsis
kalapi Apr 6, 2026
8a25120
Adds kerning for some /A contexts
kalapi Apr 6, 2026
3073746
Kern B
joanaranito Apr 6, 2026
24ce391
Open spacing a touch for A and I in Light, fix spacing of underscore,…
joanaranito Apr 6, 2026
590d4d4
Space backslash, kern F
joanaranito Apr 6, 2026
9547f8a
Open LSB of t, kern G
joanaranito Apr 6, 2026
fbb5df2
Adjust spacing of t and backslash, kern H and I
joanaranito Apr 6, 2026
93af870
Kern J
joanaranito Apr 6, 2026
0ea8bf8
Kern K
joanaranito Apr 6, 2026
be7ae4c
Kern L, O, P, Q
joanaranito Apr 6, 2026
bd2f0e7
Adjust spacing of U, kern R, S, T, U
joanaranito Apr 6, 2026
2354a33
Kern V, W, X, Y, Z
joanaranito Apr 6, 2026
35cd0a8
Kern a, b, c, d, e, f, g, h, i, o
joanaranito Apr 6, 2026
12cca52
kern j, k, l, n, p, q, r
joanaranito Apr 6, 2026
532e76e
Spacing adjustments to s and t, kern s, t, u, v
joanaranito Apr 6, 2026
65df073
Adjust spacing of t and y, kern w, x, y, z
joanaranito Apr 6, 2026
40a8892
Change kerning of f to allow clashing to improve spacing with l and q
joanaranito Apr 6, 2026
2d097ce
Kerning adjustments
joanaranito Apr 6, 2026
2cd8009
Update color labels
joanaranito Apr 6, 2026
406473a
Fixes spacing for /bar/brokenbar/asciitilde/quotedbl/copyright/regist…
kalapi Apr 7, 2026
03e5cc7
Fixes spacing for /asciicircum/AE/Bhook/Dcroat/Dhook/DZcaron/Dzcaron
kalapi Apr 7, 2026
7b37636
Fixes spacing for /Eng/Hbar/IJ and /Khook
kalapi Apr 7, 2026
3c0e34d
Fixes spacing for /Lcaron/Lslash/Ldot/LJ/Lj and /Nj
kalapi Apr 7, 2026
50dbf63
Fixes spacing for /Germandbls and /Schwa
kalapi Apr 7, 2026
7e4cbbf
Prepare upright sources for proportional spacing / MONO axis
joanaranito Apr 7, 2026
992298b
Upright: remove isFixedPitch
joanaranito Apr 7, 2026
23b6b60
Space uppercase and lowercase (WIP)
joanaranito Apr 7, 2026
4915c50
Space ExtraBold: A-Z a-z; Space Light: ASCII symbols, numbers, and pu…
joanaranito Apr 7, 2026
8588249
Black: Space ASCII symbols, numbers, and punctuation
joanaranito Apr 7, 2026
d28505b
Interpolate metrics for Regular and Bold masters
joanaranito Apr 7, 2026
f989ad8
Adjust width and space M, W, m, w, @, i, j, l, t, f in light and extr…
joanaranito Apr 7, 2026
69483f6
Fixes spacing for /Thorn
kalapi Apr 7, 2026
1aeba18
Fixes spacing for /Uhorn
kalapi Apr 7, 2026
c5cce2f
Fixes spacing for /Yhook
kalapi Apr 7, 2026
4dcfbb3
Fixes spacing for /ae
kalapi Apr 7, 2026
a9c0a39
Fixes spacing for /bhook
kalapi Apr 7, 2026
8e95753
Fixes spacing on /dcaron/dcroat/dhook/dzcaron/eth/eng/hbar/idotless/i…
kalapi Apr 8, 2026
3ea2dd0
Interpolate adjusted glyphs for Regular and Bold
joanaranito Apr 7, 2026
0287475
Assign kerning classes, add color labels to full set
joanaranito Apr 7, 2026
00a9496
Fixes spacing for /exclamdown/questiondown/ordfeminine/ordmasculine/o…
kalapi Apr 8, 2026
b538fb7
Re-spacing complete
kalapi Apr 8, 2026
9090f32
Fixes glyph label colour
kalapi Apr 8, 2026
64acac9
Adjust kerning classes, kern A B C D E F G to full set
joanaranito Apr 8, 2026
7149388
Kern F G H I J K L M N O P Q R to full set
joanaranito Apr 8, 2026
2d656fd
Kern S T to full set
joanaranito Apr 8, 2026
d6600c7
Kern U V W X Y Z , spacing fixes
joanaranito Apr 8, 2026
b867c75
Kern a b c d e f g h i j k l m n o, minor spacing adjustments
joanaranito Apr 8, 2026
ae659df
Kerns /p; Some fixes to glyphs
kalapi Apr 9, 2026
335efe5
Kerns all combinations with /q
kalapi Apr 9, 2026
0bb0c89
[WIP] Kerning /r
kalapi Apr 9, 2026
decd1c6
Fixes kerning /r
kalapi Apr 9, 2026
4d1283a
Fixes kerning for /s
kalapi Apr 9, 2026
294f8f4
Kern numbers
joanaranito Apr 9, 2026
973d3f7
Kern t, u, v, w to full set; small spacing adjustments
joanaranito Apr 9, 2026
4ffb3a5
Kern x, y, z to full set
joanaranito Apr 9, 2026
e5c5061
Kern AE Bhook Dcroat Dhook Eng Eng.loclNSM Hbar Khook to punctuation …
joanaranito Apr 9, 2026
5580f7d
Kern Lcaron Lslash to extended latin and punctuation
joanaranito Apr 9, 2026
45e4d14
Fixes kerning for /Ldot
kalapi Apr 9, 2026
f67a974
Fixes kerning for /Oslash
kalapi Apr 9, 2026
6726eb0
Fixes kerning in /Ohorn and /Germandbls
kalapi Apr 9, 2026
0c8c02a
Fixes kerning in /Schwa
kalapi Apr 10, 2026
3fae949
Fixes kerning for /Thorn
kalapi Apr 10, 2026
91b7ff0
Fixes kerning for /Uhorn
kalapi Apr 10, 2026
b2800be
Fixes kerning for /Yhook
kalapi Apr 10, 2026
238600b
Fixes kerning for /ae
kalapi Apr 10, 2026
0113aa0
Fixes kerning for /dcaron
kalapi Apr 10, 2026
4af1322
Fixes kerning for /dcroat
kalapi Apr 10, 2026
de3da1e
Fixes kerning for /dhook
kalapi Apr 10, 2026
4d9bdcf
Fixes kerning for /eth
kalapi Apr 10, 2026
c67fb14
Fixes kerning for /eng
kalapi Apr 10, 2026
3c98e58
Fixes kerning for /hbar
kalapi Apr 10, 2026
f745ae2
Fixes kerning in /ij
kalapi Apr 10, 2026
46d6414
Fixes kerning for /lcaron
kalapi Apr 10, 2026
755c8ec
Fixes kerning for /igrave
kalapi Apr 10, 2026
ced174d
Fixes kerning for /oslash
kalapi Apr 10, 2026
619cc1d
Fixes kerning for ohorn
kalapi Apr 10, 2026
f47420d
Fixes kerning for /uhorn
kalapi Apr 10, 2026
8e47118
Activates /NJ
kalapi Apr 10, 2026
143eec9
Interpolates kerning to Regular and Bold masters
kalapi Apr 10, 2026
8abeaf7
Sets some glyphs to not export
kalapi Apr 10, 2026
0f08835
Reverses fixes in the upright
kalapi Apr 10, 2026
5399d86
Adds outlined arrows to glyphOrder; Cleans up glyph labels (WIP); Add…
kalapi Apr 10, 2026
2fa594f
[Italic] Bumps version to 7.000; Updates date/time stamp and year in …
kalapi Apr 10, 2026
e54e4ea
Adding stub MONO and removing HVAR table
aaronbell Apr 10, 2026
05e9ad9
updating version string
aaronbell Apr 10, 2026
37fee64
Adds alternate layers for /dzcaron; Updates master names for the mono…
kalapi Apr 10, 2026
12abcc2
Switching master locations following the Sono model
aaronbell Apr 11, 2026
68c7d46
Some kern and glyph fixes
aaronbell Apr 11, 2026
cc14f3b
chore: upgrade to Python 3.12 and resolve Makefile conflicts
MariannaPaszkowska Apr 12, 2026
b469078
update
MariannaPaszkowska Apr 12, 2026
1d5dede
Update fontinfo.plist
MariannaPaszkowska Apr 12, 2026
1921874
customise fontname check
MariannaPaszkowska Apr 12, 2026
953ab19
Update CHANGELOG.md
MariannaPaszkowska Apr 12, 2026
23c25ba
update `l` and `gcommaaccent`
MariannaPaszkowska Apr 12, 2026
1b71adf
Update fontinfo.plist
MariannaPaszkowska Apr 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog


## Version 7.000 (2026-04-12)

### Changed

- added proportional glyphs to the Italic font and packaged them in the MONOSPACED axis.

## Version 6.001 (2025-07-21)

### Changed
Expand Down
36 changes: 36 additions & 0 deletions qa/check-gscode-checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,42 @@ def com_google_fonts_check_googlesans_opentype_os2_y_strikeout_size(ttFonts):
)


@check(
id="googlesans/font_names",
rationale="""
Ensures font names match Google Sans Code v1.002 exactly for backward compatibility.
This prevents the MONO axis from forcing 'Monospace' into the name strings,
which would break existing user documents and CSS.
""",
)
def com_google_fonts_check_googlesans_font_names(ttFont):
"""Font names match Google Sans Code exactly (Legacy Naming)."""

is_italic = bool(ttFont["head"].macStyle & 0x02) or ttFont["post"].italicAngle != 0
style = "Italic" if is_italic else "Regular"

expected = {
1: "Google Sans Code", # Family Name
2: style, # Subfamily Name
4: f"Google Sans Code {style}", # Full Name
6: f"GoogleSansCode-{style}", # PostScript Name
25: f"GoogleSansCode{style if is_italic else ''}" # VF PS Prefix
}


errors = []
for record in ttFont["name"].names:
if record.nameID in expected:
actual = record.toUnicode()
if actual != expected[record.nameID]:
errors.append(f"ID {record.nameID}: '{actual}' (expected '{expected[record.nameID]}')")

if errors:
unique_errors = sorted(list(set(errors)))
yield FAIL, f"Legacy naming mismatch: {'; '.join(unique_errors)}"
else:
yield PASS, f"Font names match legacy 'Google Sans Code {style}' strings."

# ================================================
#
# End check definitions
Expand Down
2 changes: 2 additions & 0 deletions qa/check-gscode.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,7 @@
# we intentionally include a RFN in this project
"googlefonts/font_copyright",
"googlefonts/license/OFL_copyright",
"googlefonts/font_names"
#we won't rename the font as Monospaced, and that's why we added a customised version of this check
],
}
34 changes: 34 additions & 0 deletions scripts/prune_hvar.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2025 Google Sans Flex authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Remove the HVAR table from the TTF, and make no other changes.

This is used for the Android build, where it results in a smaller file, and
better performance."""

from argparse import ArgumentParser
from fontTools.ttLib import TTFont
from pathlib import Path


if __name__ == "__main__":
parser = ArgumentParser()
parser.description = __doc__
parser.add_argument("ttf", type=Path)
args = parser.parse_args()

ttf = TTFont(args.ttf, recalcBBoxes=False)
del ttf["HVAR"]
ttf.save(args.ttf)
# That's it!
Loading
Loading