Giter Club home page Giter Club logo

robotoslab's Introduction

Roboto Slab Font Project

by Christian Robertson

Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.

This is the Roboto Slab family, which can be used alongside the normal Roboto family and the Roboto Condensed family.

This project is a fork from the old Google font repository.

Completed tasks:

  • Port original binaries to UFO sources with cubic outlines
  • use fontmake to build.

Building

Fonts are built automatically by GitHub Actions - take a look in the "Actions" tab for the latest build.

If you particularly want to build fonts manually on your own computer, you will need to install the yq utility. On OS X with Homebrew, type brew install yq; on Linux, try snap install yq; if all else fails, try the instructions on the linked page.

Then:

  • make build will produce font files.
  • make test will run FontBakery's quality assurance tests.
  • make proof will generate HTML proof files.

Repository Layout

This font repository structure is inspired by Unified Font Repository v0.3, modified for the Google Fonts workflow.

robotoslab's People

Contributors

aaronbell avatar davelab6 avatar emmamarichal avatar erinmclaughlin avatar graphicore avatar m4rc1e avatar mjlagattuta avatar rosawagner avatar theodore-s-beers avatar

Stargazers

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

Watchers

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

robotoslab's Issues

sources/RobotoSlab.designspace missing

I am new to this font building business, so maybe I miss something very obvious. I am following
the instructions of README.md

# Debian 10 Buster
# as root
aptitude install virtualenv fontmake
# as user
git clone https://github.com/googlefonts/robotoslab.git
cd robotoslab
# the line in the README is just "virtualenv venv" which do NOT
#  work since it uses python2. You might update this?
virtualenv --python=/usr/bin/python3 venv  
. ./venv/bin/activate
pip install -r requirements.txt
...
Successfully installed Flask-1.1.1 ...
cd fonts
fontmake -m ../sources/RobotoSlab.designspace
...
FileNotFoundError: [Errno 2] No such file or directory: 
  '../sources/RobotoSlab.designspace'

And indeed the file is missing. Where I do get this file? FYI: build.sh also fails, I did not
install fontbakery as it was not declared mandatory in the README.md

Metrics and Kerning Inconsistencies

I have been encountering numerous metrics related issues with Roboto Slab.

First are a few inconsistencies on sidebearings like with the /H 81, 81 .versus the /I 120, 120
Neither glyph's sidebearings correspond to the original ttf which is fine since there were unpublished edits which I am assuming modified spacing a bit, but this is a large 30 unit between sidebearings that should be very similar if not identical.

Proposed Solution: Modify metrics on glyphs (via metrics keys) with extreme deviations from the metrics of identical shapes


Mark alignment is problematic across the board in the source ufos (the unpublished update). On top of this, automatic alignment of components on composite glyphs produce the wrong width and sidebearings, which in turn causes collisions, this is due to using noncombining marks as components rather than combining marks

Proposed Solution: The ideal solution in terms of structuring a good maintainable source file would be to set up glyphs with anchors and combining marks. this would mean making all noncombining marks use a component of the corresponding combining mark and then use the combining marks in the composite glyphs to enable automatic alignment. This would be fine without anchors, but I would argue that a proper anchor setup is more manageable than manually aligning and checking all components in all composites


Overall these inconsistencies mean that very little will match up on GF regressions

@davelab6 I did not want to mess with metrics and kerning so that updates will not deviate drastically from what is currently being served, but they seem necessary. What are your thoughts on how to move forward?

Variant Font has a glitch on the letter "b" minuscule on its foot/joint

I don't know if it is a Windows 10 specific rasterizer glitch or if it is the font which has the glitch (I don't have access to other systems), but when using the variant font Roboto Slab Thin instead of static font Roboto Slab Thin there is a glitch on the minuscule letter "b": The foot/joint is very different from the static version, as if the ink had escaped the ink trap (if the font were physical and not digital).

Please see the attached pictures and look at the letter "b":

Roboto Slab Thin (static font):
static

Roboto Slab Thin (variant font):
variant

Missing character variants in ss03

When using ss03 there are multiple characters not having the correct character variants:

  • aacute
  • abreve
  • uni1EAF
  • uni1EB7
  • uni1EB1
  • uni1EB3
  • uni1EB5
  • acircumflex
  • uni1EA5
  • uni1EAD
  • uni1EA7
  • uni1EA9
  • uni1EAB
  • adieresis
  • uni1EA1
  • agrave
  • uni1EA3
  • amacron
  • aogonek
  • aring
  • aringacute
  • uni1E01
  • atilde
  • aeacute
  • cacute
  • ccaron
  • ccedilla
  • ccircumflex
  • cdotaccent

Italics?

Back in 2013 I found a hidden treasure: an italic Roboto Slab!

Back in the Holo days of Android, before Material Design was unveiled, I remembered seeing a certain Roboto Slab Light Italic being used in Google Play Newsstand for pull quotes… So I tore apart an APK file and extracted it. I wonder if it can be used as a basis for new italic styles to be extrapolated from?

RobotoSlab-LightItalic.zip

Pass fontbakery

Fontbakery report

[23] Family checks
πŸ”₯ FAIL: Check font has a license.
  • com.google.fonts/check/028
  • πŸ”₯ FAIL No license file was found. Please add an OFL.txt or a LICENSE.txt file. If you are running fontbakery on a Google Fonts upstream repo, which is fine, just make sure there is a temporary license file in the same folder. [code: none]
🍞 PASS: Checking all files are in the same directory.
🍞 PASS: Fonts have equal unicode encodings?
🍞 PASS: Make sure all font files have the same version value.
🍞 PASS: Fonts have consistent PANOSE proportion?
🍞 PASS: Fonts have consistent PANOSE family type?
🍞 PASS: Fonts have consistent underline thickness?
πŸ’€ SKIP: Does DESCRIPTION file contain broken links?
πŸ’€ SKIP: Is this a proper HTML snippet?
πŸ’€ SKIP: DESCRIPTION.en_us.html must have more than 200 bytes.
πŸ’€ SKIP: DESCRIPTION.en_us.html must have less than 1000 bytes.
πŸ’€ SKIP: Font designer field in METADATA.pb must not be 'unknown'.
πŸ’€ SKIP: METADATA.pb: Ensure designer simple short name.
πŸ’€ SKIP: METADATA.pb: Fontfamily is listed on Google Fonts API?
πŸ’€ SKIP: METADATA.pb: check if fonts field only has unique "full_name" values.
πŸ’€ SKIP: METADATA.pb: check if fonts field only contains unique style:weight pairs.
πŸ’€ SKIP: METADATA.pb license is "APACHE2", "UFL" or "OFL"?
πŸ’€ SKIP: METADATA.pb should contain at least "menu" and "latin" subsets.
πŸ’€ SKIP: METADATA.pb subsets should be alphabetically ordered.
πŸ’€ SKIP: METADATA.pb: Copyright notice is the same in all fonts?
πŸ’€ SKIP: Check that METADATA.pb family values are all the same.
πŸ’€ SKIP: METADATA.pb: According Google Fonts standards, families should have a Regular style.
πŸ’€ SKIP: METADATA.pb: Regular should be 400.

[110] RobotoSlabBeta-VF.ttf
πŸ’” ERROR: Checking with Microsoft Font Validator.
  • com.google.fonts/check/037
  • πŸ’” ERROR Failed with FileNotFoundError: [Errno 2] No such file or directory: 'RobotoSlabBeta-VF.ttf.report.xml'
  • ℹ️ INFO Microsoft Font Validator returned an error code. Output follows :

Unknown command line option: '-file'

πŸ”₯ FAIL: Glyph names are all valid?
  • com.google.fonts/check/058
  • πŸ”₯ FAIL The following glyph names do not comply with naming conventions: ['brevecomb-cy', 'hook-cy', 'descender-cy', 'tail-cy'] A glyph name may be up to 31 characters in length, must be entirely comprised of characters from the following set: A-Z a-z 0-9 .(period) (underscore). and must not start with a digit or period. There are a few exceptions such as the special character ".notdef". The glyph names "twocents", "a1", and "" are all valid, while "2cents" and ".twocents" are not.
⚠️ WARN: Show hinting filesize impact.
⚠️ WARN: Is font em size (ideally) equal to 1000?
⚠️ WARN: Check if each glyph has the recommended amount of contours.
  • com.google.fonts/check/153
  • ⚠️ WARN This check inspects the glyph outlines and detects the total number of counters in each of them. The expected values are infered from the typical ammounts of counters observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

Glyph name: K Counters detected: 3 Expected: 1 or 2
Glyph name: R Counters detected: 3 Expected: 1 or 2
Glyph name: k Counters detected: 3 Expected: 1 or 2
Glyph name: Eth Counters detected: 3 Expected: 2
Glyph name: aogonek Counters detected: 3 Expected: 2
Glyph name: Dcroat Counters detected: 3 Expected: 2
Glyph name: dcroat Counters detected: 3 Expected: 2
Glyph name: eogonek Counters detected: 3 Expected: 2
Glyph name: hbar Counters detected: 2 Expected: 1
Glyph name: uni0136 Counters detected: 4 Expected: 2 or 3
Glyph name: uni0137 Counters detected: 4 Expected: 2 or 3
Glyph name: kgreenlandic Counters detected: 3 Expected: 1 or 2
Glyph name: Lslash Counters detected: 2 Expected: 1
Glyph name: lslash Counters detected: 2 Expected: 1
Glyph name: Racute Counters detected: 4 Expected: 3
Glyph name: uni0156 Counters detected: 4 Expected: 3
Glyph name: Rcaron Counters detected: 4 Expected: 3
Glyph name: Tbar Counters detected: 2 Expected: 1
Glyph name: tbar Counters detected: 2 Expected: 1
Glyph name: Uogonek Counters detected: 2 Expected: 1
Glyph name: uogonek Counters detected: 2 Expected: 1
Glyph name: ohorn Counters detected: 3 Expected: 2
Glyph name: Uhorn Counters detected: 2 Expected: 1
Glyph name: uhorn Counters detected: 2 Expected: 1
Glyph name: Kappa Counters detected: 3 Expected: 1
Glyph name: kappa Counters detected: 3 Expected: 1
Glyph name: uni045B Counters detected: 2 Expected: 1
Glyph name: uni0462 Counters detected: 3 Expected: 2
Glyph name: uni046C Counters detected: 3 Expected: 2
Glyph name: uni046D Counters detected: 3 Expected: 2
Glyph name: uni047A Counters detected: 4 Expected: 2
Glyph name: uni047B Counters detected: 4 Expected: 2
Glyph name: uni048C Counters detected: 3 Expected: 2
Glyph name: uni048E Counters detected: 3 Expected: 1 or 2
Glyph name: uni048F Counters detected: 3 Expected: 2
Glyph name: uni0492 Counters detected: 2 Expected: 1
Glyph name: uni0493 Counters detected: 2 Expected: 1
Glyph name: uni049C Counters detected: 2 Expected: 1
Glyph name: uni049D Counters detected: 2 Expected: 1
Glyph name: uni049E Counters detected: 2 Expected: 1
Glyph name: uni04B0 Counters detected: 2 Expected: 1
Glyph name: uni04B1 Counters detected: 2 Expected: 1
Glyph name: uni04B8 Counters detected: 2 Expected: 1
Glyph name: uni04B9 Counters detected: 2 Expected: 1
Glyph name: uni04FE Counters detected: 2 Expected: 1
Glyph name: uni04FF Counters detected: 2 Expected: 1
Glyph name: uni0506 Counters detected: 2 Expected: 1
Glyph name: uni0507 Counters detected: 2 Expected: 1
Glyph name: uni1E9E Counters detected: 2 Expected: 1
Glyph name: uni1EDB Counters detected: 4 Expected: 3
Glyph name: uni1EDD Counters detected: 4 Expected: 3
Glyph name: uni1EDF Counters detected: 4 Expected: 3
Glyph name: uni1EE1 Counters detected: 4 Expected: 3
Glyph name: uni1EE3 Counters detected: 4 Expected: 3
Glyph name: uni1EE8 Counters detected: 3 Expected: 2
Glyph name: uni1EE9 Counters detected: 3 Expected: 2
Glyph name: uni1EEA Counters detected: 3 Expected: 2
Glyph name: uni1EEB Counters detected: 3 Expected: 2
Glyph name: uni1EEC Counters detected: 3 Expected: 2
Glyph name: uni1EED Counters detected: 3 Expected: 2
Glyph name: uni1EEE Counters detected: 3 Expected: 2
Glyph name: uni1EEF Counters detected: 3 Expected: 2
Glyph name: uni1EF0 Counters detected: 3 Expected: 2
Glyph name: uni1EF1 Counters detected: 3 Expected: 2

⚠️ WARN: Check if OS/2 xAvgCharWidth is correct.
  • com.google.fonts/check/034
  • ⚠️ WARN OS/2 xAvgCharWidth is 1230 but should be 1232 which corresponds to the weighted average of the widths of the latin lowercase glyphs in the font. These are similar values, which may be a symptom of the slightly different calculation of the xAvgCharWidth value in font editors. There's further discussion on this at fonttools/fontbakery#1622
⚠️ WARN: Is there kerning info for non-ligated sequences?
  • com.google.fonts/check/065
  • ⚠️ WARN GPOS table lacks kerning info for the following non-ligated sequences: ['uni030A_acutecomb', 'uni0302_acutecomb', 'uni0302_gravecomb', 'uni0302_hookabovecomb', 'uni0302_tildecomb', 'uni0306_acutecomb', 'uni0306_gravecomb', 'uni0306_hookabovecomb', 'uni0306_tildecomb', 'l_periodcentered', 'L_periodcentered', 'one_slash', 'three_slash', 'five_slash', 'seven_slash', 'N_o', 'f_i', 'f_l'] [code: lacks-kern-info]
⚠️ WARN: Is there a caret position declared for every ligature?
  • com.google.fonts/check/064
  • ⚠️ WARN It seems that this font lacks caret positioning values for some of its ligature glyphs on the GDEF table. There's a total of 11 ligatures, but only 4 sets of caret positioning values. [code: incomplete-caret-pos-data]
⚠️ WARN: Check for points out of bounds.
  • com.google.fonts/check/075
  • ⚠️ WARN The following glyphs have coordinates which are out of bounds:
    [('emdash', 1501.4, 803.0), ('emdash', 1501.4, 648.0), ('uni2015', 1501.4, 803.0), ('uni2015', 1501.4, 648.0), ('quotereversed', 334.0027, 1067.0)]
    This happens a lot when points are not extremes, which is usually bad. However, fixing this alert by adding points on extremes may do more harm than good, especially with italics, calligraphic-script, handwriting, rounded and other fonts. So it is common to ignore this message
πŸ’€ SKIP: Checking OS/2 usWeightClass.
πŸ’€ SKIP: Check copyright namerecords match license file.
πŸ’€ SKIP: Checks METADATA.pb font.name field matches family name declared on the name table.
πŸ’€ SKIP: Checks METADATA.pb font.post_script_name matches postscript name declared on the name table.
πŸ’€ SKIP: METADATA.pb font.full_name value matches fullname declared on the name table?
πŸ’€ SKIP: METADATA.pb font.name value should be same as the family name declared on the name table.
πŸ’€ SKIP: METADATA.pb font.full_name and font.post_script_name fields have equivalent values ?
πŸ’€ SKIP: METADATA.pb font.filename and font.post_script_name fields have equivalent values?
πŸ’€ SKIP: METADATA.pb font.name field contains font name in right format?
πŸ’€ SKIP: METADATA.pb font.full_name field contains font name in right format?
πŸ’€ SKIP: METADATA.pb font.filename field contains font name in right format?
πŸ’€ SKIP: METADATA.pb font.post_script_name field contains font name in right format?
πŸ’€ SKIP: Copyright notice on METADATA.pb matches canonical pattern?
πŸ’€ SKIP: Copyright notice on METADATA.pb should not contain 'Reserved Font Name'.
πŸ’€ SKIP: METADATA.pb: Copyright notice shouldn't exceed 500 chars.
πŸ’€ SKIP: METADATA.pb: Filename is set canonically?
πŸ’€ SKIP: METADATA.pb font.style "italic" matches font internals?
πŸ’€ SKIP: METADATA.pb font.style "normal" matches font internals?
πŸ’€ SKIP: METADATA.pb font.name and font.full_name fields match the values declared on the name table?
πŸ’€ SKIP: METADATA.pb: Check if fontname is not camel cased.
πŸ’€ SKIP: METADATA.pb: Check font name is the same as family name.
πŸ’€ SKIP: METADATA.pb: Check that font weight has a canonical value.
πŸ’€ SKIP: Checking OS/2 usWeightClass matches weight specified at METADATA.pb.
πŸ’€ SKIP: METADATA.pb weight matches postScriptName.
πŸ’€ SKIP: METADATA.pb: Font styles are named canonically?
πŸ’€ SKIP: Version number has increased since previous release on Google Fonts?
πŸ’€ SKIP: Glyphs are similiar to Google Fonts version?
πŸ’€ SKIP: TTFAutohint x-height increase value is same as in previous release on Google Fonts?
πŸ’€ SKIP: Checking OS/2 fsSelection value.
πŸ’€ SKIP: Checking post.italicAngle value.
πŸ’€ SKIP: Checking head.macStyle value.
πŸ’€ SKIP: Check font has same encoded glyphs as version hosted on fonts.google.com
πŸ’€ SKIP: Copyright field for this font on METADATA.pb matches all copyright notice entries on the name table ?
πŸ’€ SKIP: Font has all mandatory 'name' table entries ?
πŸ’€ SKIP: Check name table: FONT_FAMILY_NAME entries.
πŸ’€ SKIP: Check name table: FONT_SUBFAMILY_NAME entries.
πŸ’€ SKIP: Check name table: FULL_FONT_NAME entries.
πŸ’€ SKIP: Check name table: POSTSCRIPT_NAME entries.
πŸ’€ SKIP: Check name table: TYPOGRAPHIC_FAMILY_NAME entries.
πŸ’€ SKIP: Check name table: TYPOGRAPHIC_SUBFAMILY_NAME entries.
πŸ’€ SKIP: FontForge validation outputs error messages?
πŸ’€ SKIP: FontForge checks.
πŸ’€ SKIP: Monospace font has hhea.advanceWidthMax equal to each glyph's advanceWidth?
πŸ’€ SKIP: The variable font 'wdth' (Width) axis coordinate must be 100 on the 'Regular' instance.
πŸ’€ SKIP: The variable font 'slnt' (Slant) axis coordinate must be zero on the 'Regular' instance.
πŸ’€ SKIP: The variable font 'ital' (Italic) axis coordinate must be zero on the 'Regular' instance.
πŸ’€ SKIP: The variable font 'opsz' (Optical Size) axis coordinate should be between 9 and 13 on the 'Regular' instance.
ℹ️ INFO: Font has old ttfautohint applied?
  • com.google.fonts/check/056
  • ℹ️ INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 2.000']
ℹ️ INFO: EPAR table present in font?
ℹ️ INFO: Check for font-v versioning
  • com.google.fonts/check/166
  • ℹ️ INFO Version string is: "Version 2.000"
    The version string must ideally include a git commit hash and either a 'dev' or a 'release' suffix such as in the example below:
    "Version 1.3; git-0d08353-release"
ℹ️ INFO: Font contains all required tables?
  • com.google.fonts/check/052
  • ℹ️ INFO This font contains the following optional tables [GPOS, gasp, GSUB, loca, DSIG, prep]
  • 🍞 PASS Font contains all required tables.
🍞 PASS: Checking file is named canonically.
🍞 PASS: Fonts have equal numbers of glyphs?
🍞 PASS: Fonts have equal glyph names?
🍞 PASS: Checking OS/2 fsType.
🍞 PASS: Checking OS/2 achVendID.
🍞 PASS: Substitute copyright, registered and trademark symbols in name table entries.
  • com.google.fonts/check/019
  • 🍞 PASS No need to substitute copyright, registered and trademark symbols in name table entries of this font.
🍞 PASS: "License URL matches License text on name table?
🍞 PASS: Description strings in the name table must not exceed 200 characters.
🍞 PASS: Version format is correct in 'name' table?
🍞 PASS: Is 'gasp' table set to optimize rendering?
🍞 PASS: Make sure family name does not begin with a digit.
🍞 PASS: Font has all expected currency sign characters?
🍞 PASS: Are there non-ASCII characters in ASCII-only NAME table entries?
🍞 PASS: Length of copyright notice must not exceed 500 characters.
🍞 PASS: Familyname must be unique according to namecheck.fontdata.com
🍞 PASS: Check a static ttf can be generated from a variable font.
🍞 PASS: Checking OS/2 usWinAscent & usWinDescent.
🍞 PASS: Checking OS/2 Metrics match hhea Metrics.
🍞 PASS: Font enables smart dropout control in "prep" table instructions?
🍞 PASS: Checking with ftxvalidator.
🍞 PASS: Checking with ots-sanitize.
🍞 PASS: Font contains .notdef as first glyph?
  • com.google.fonts/check/046
  • 🍞 PASS Font contains the .notdef glyph as the first glyph, it does not have a Unicode value assigned and contains a drawing.
🍞 PASS: Font contains glyphs for whitespace characters?
🍞 PASS: Font has **proper** whitespace glyph names?
🍞 PASS: Whitespace glyphs have ink?
🍞 PASS: Are there unwanted tables?
🍞 PASS: Font contains unique glyph names?
🍞 PASS: Checking with fontTools.ttx
🍞 PASS: Check glyphs have unique unicode codepoints.
🍞 PASS: Check all glyphs have codepoints assigned.
🍞 PASS: Checking unitsPerEm value is reasonable.
🍞 PASS: Checking font version fields (head and name table).
🍞 PASS: Font has correct post table version (2 for TTF, 3 for OTF)?
🍞 PASS: Description strings in the name table must not contain copyright info.
🍞 PASS: Checking correctness of monospaced metadata.
🍞 PASS: Name table entries should not contain line-breaks.
🍞 PASS: Does full font name begin with the font family name?
🍞 PASS: Font follows the family naming recommendations?
🍞 PASS: Name table strings must not contain the string 'Reserved Font Name'.
🍞 PASS: Combined length of family and style must not exceed 20 characters.
🍞 PASS: Checking Vertical Metric Linegaps.
🍞 PASS: MaxAdvanceWidth is consistent with values in the Hmtx and Hhea tables?
🍞 PASS: Does the font have a DSIG table?
🍞 PASS: Whitespace and non-breaking space have the same width?
🍞 PASS: Does GPOS table have kerning information?
🍞 PASS: Is there a "kern" table declared in the font?
🍞 PASS: Is there any unused data at the end of the glyf table?
🍞 PASS: The variable font 'wght' (Weight) axis coordinate must be 400 on the 'Regular' instance.
🍞 PASS: The variable font 'wght' (Weight) axis coordinate must be 700 on the 'Bold' instance.
🍞 PASS: Does the number of glyphs in the loca table match the maxp table?

Summary

πŸ’” ERROR πŸ”₯ FAIL ⚠️ WARN πŸ’€ SKIP ℹ️ INFO 🍞 PASS
1 2 7 63 4 56
1% 2% 5% 47% 3% 42%

VF mastering

Roboto Slab currently exists as 4 separate ufo sources: Thin, Light, Regular, and Bold. Their relationship is not strictly linear, as generating the same fonts from the two extremes, Thin and Bold, results in discrepancies on Regular and Light. When adding Regular in as a master the design has discrepancies that are much more subtle on the Light, and Nonexistent on the Regular.

These discrepancies are minimized when adding the Regular in as an intermediate third master but are still present. While I think that it would be nice to have the VF match 100% to the static fonts, I believe it will make for a more manageable source file (and smaller VF) to use Thin, Regular, and Bold for the mastering. However, if the differences are determined to be too large, then Light can be added in as a 4th master at the expense of file size.

Here is a comparison of the ttf generated from the original Light UFO as compared to the ttf generated as an instance between the Thin and Regular masters:
screen shot 2018-07-16 at 11 38 59 am
View on GF Regressions

Parity with Roboto’s weights

Since Roboto and Roboto Slab are under one superfamily, I think it would make sense for them to be available in the same weights(Added weights noted below). Medium falls between masters and would be an instance. To get Roboto Slab Black an additinal master is needed. In this case extrapolation actually works quite well and yields a result that needs minimal correction to be used as a master.

Added weights would mean 6 matching weights to Roboto:
screen shot 2018-07-16 at 12 02 15 pm

Sample of the extrapolated Black with minor corrections on a few glyphs:
screen shot 2018-07-16 at 12 00 10 pm

File size impacts:
1 static ttf β‰ˆ 170kB
3-master VF β‰ˆ 220/230kB
4-master VF β‰ˆ 275kB
(vf file sizes without VTT hinting)

License of Roboto Slab

The README file says that Roboto Slab is licensed under OFL, while everywhere else (LICENSE file, Google Fonts Website, etc.) says it's Apache. Is this just a mistake, or is it going to change its license (just like Noto)?

Roboto Slab not loading all of a sudden.

Anyone else having issues with Roboto fonts? Specifically Roboto Slab.
I have it installed on a couple sites and all of a sudden it isn't loading and falling back to the alternative font. I've tried on a couple sites and static tests with the same result.

Edits to match Roboto’s 2014 update

Some of the major revisions to Roboto (from 2014) have not yet made their way into Roboto Slab. The most obvious ones being the structure of the /R, /K, and /k, but also include rounder forms and less extreme flat portions in round glyphs. This is most noticeable in the smallcaps of Roboto Slab which do not match the capitals.

These modifications, while significantly changing the appearance of Roboto Slab, would make it more harmonious with Roboto and are additionally more consistent with the existing internal grammar of Roboto Slab, which is of the same skeletal structure as Roboto.

Roboto Slab edits and originals as compared to Roboto's new and old constructions:
screen shot 2018-07-16 at 10 23 58 am
screen shot 2018-07-16 at 10 26 11 am

Support IPA characters

Please add support for IPA Phonetic characters:
p,btdtΜ¬ΚƒΚ’kΙ‘fvΞΈΓ°szmnΕ‹hlrwjiːΙͺʊueΙ›Ι™ΙœΙ”Γ¦ΚŒΙ‘Ι’oaˈˌ̩lΜ©nΜ©r̩ᡊ(Γ΄)Β·.-|
Thank you!

I can not print with Roboto Slab

When my Microsoft Word document uses the Roboto Slab font, I can not print it.
Printer: HP Deskjet 1515
Windows 10, Office 365 ProPlus (1904)

v2: Regular quick diff

Here's some diffs against the fonts currently hosted on GF.

Some quick observations

  • Has the upm changed from 1000 to 2048?
  • Mark positions are new (this is a good thing)
  • Glyphs don't appear to be missing. I guess they're being reported because smcp glyphs have been renamed to .sc?

RobotoSlab-Regular.ttf vs RobotoSlab-Regular.ttf

attribs 21 modified

table attrib value_a value_b
OS/2 ySubscriptYOffset 287.0 153.0
OS/2 ySuperscriptXSize 1434.0 1331.0
OS/2 usWinDescent 555.0 618.0
head modified 2013/05/20 05:22:09 2018/08/03 09:29:10
OS/2 ulUnicodeRange2 1342185563 2147500127
OS/2 ulUnicodeRange3 32.0 34.0
head xMax 2562.0 2523.0
OS/2 ulUnicodeRange1 3758097151 1279
OS/2 ySubscriptYSize 1331.0 1228.0
OS/2 ulCodePageRange2 1325465600.0 0.0
head xMin -890.0 -1432.0
head yMin -616.0 -555.0
OS/2 usMaxContex 2 3
OS/2 yStrikeoutPosition 512.0 649.0
OS/2 usMaxContext 2 3
OS/2 ySubscriptXSize 1434.0 1331.0
OS/2 ySuperscriptYOffset 977.0 716.0
OS/2 panose 0-0-0-0-0-0-0-0-0-0 0-0-5-0-0-0-0-0-0-0
head fontRevision 1.0 2.0
OS/2 yStrikeoutSize 102 100
OS/2 ySuperscriptYSize 1331.0 1228.0

mkmks 26 new

base_glyph mark_glyph base_x base_y mark_x mark_y
acutecomb tildecomb -335 1082 -386 1456
acutecomb acutecomb -335 1082 -335 1456
acutecomb gravecomb -335 1082 -161 1456
acutecomb hookabovecomb -335 1082 -238 1561
acutecomb uni030F -335 1082 -320 1560
dotbelowcomb dotbelowcomb -143 0 -143 -398
gravecomb tildecomb -161 1082 -386 1456
gravecomb gravecomb -161 1082 -161 1456
gravecomb acutecomb -161 1082 -335 1456
gravecomb hookabovecomb -161 1082 -238 1561
gravecomb uni030F -161 1082 -320 1560
hookabovecomb hookabovecomb -238 1082 -238 1561
hookabovecomb uni030F -238 1082 -320 1560
hookabovecomb acutecomb -238 1082 -335 1456
hookabovecomb gravecomb -238 1082 -161 1456
hookabovecomb tildecomb -238 1082 -386 1456
tildecomb tildecomb -386 1082 -386 1456
tildecomb hookabovecomb -386 1082 -238 1561
tildecomb uni030F -386 1082 -320 1560
tildecomb acutecomb -386 1082 -335 1456
tildecomb gravecomb -386 1082 -161 1456
uni030F uni030F -320 1082 -320 1560
uni030F hookabovecomb -320 1082 -238 1561
uni030F tildecomb -320 1082 -386 1456
uni030F acutecomb -320 1082 -335 1456
uni030F gravecomb -320 1082 -161 1456

kerns 14077 new

left right value
A uni0450 -30
A uni0408 -20
A uni1EC3 -30
A uni1EBD -30
A uni1EC5 -30
A uni1EDB -30
A uni1EDF -30
A uni0501 -30
A uni0502 -30
A uni0503 -30
A uni050D -30
A uni0481 -30
A uni04A9 -30
A uni04AB -30
A uni04D7 -30
A uni04DB -30
A uni04E9 -30
A uni0451 -30
A uni0454 -30
A uni047D -30
A uni04D9 -30
A alphatonos -30
A sigma -30
A uni03C2 -30
A uni0435 -30
A uni0441 -30
A cacute -30
A ccircumflex -30
A ccaron -30
A dcaron -30
A emacron -30
A ebreve -30
A edotaccent -30
A ecaron -30
A gcircumflex -30
A gbreve -30
A uni0444 -30
A Jcircumflex -20
A ccedilla -30
A eacute -30
A egrave -30
A edieresis -30
A ecircumflex -30
A J -20
A uni0479 -30
A e -30
A d -30
A g -30
A q -30
A alpha -30

kerns 10973 modified

left right diff
Wgrave uni1EA2 -167.0
Wgrave uni1EA0 -167.0
Wgrave uni1EA6 -167.0
Wgrave uni1EA4 -167.0
Wgrave uni1EAA -167.0
Wgrave uni1EA8 -167.0
Wgrave uni1EAE -167.0
Wgrave uni1EAC -167.0
Wgrave uni1EB2 -167.0
Wgrave uni1EB0 -167.0
Wgrave uni1EB6 -167.0
Wgrave uni1EB4 -167.0
Wgrave uni1E00 -167.0
Wdieresis uni1EB6 -167.0
Wgrave Alphatonos -167.0
Wgrave Alpha -167.0
Wgrave Delta -167.0
Wgrave Lambda -167.0
Wgrave Aringacute -167.0
Wgrave Abreve -167.0
Wgrave Amacron -167.0
Wgrave Aogonek -167.0
Wgrave Acircumflex -167.0
Wgrave Atilde -167.0
Wgrave Agrave -167.0
Wgrave Adieresis -167.0
Wgrave A -167.0
Wgrave uni04D0 -167.0
Wgrave uni0410 -167.0
Wgrave uni0466 -167.0
Wcircumflex Agrave -167.0
W uni0466 -167.0
W uni0410 -167.0
W uni04D2 -167.0
W uni04D0 -167.0
W A -167.0
W Aring -167.0
W Adieresis -167.0
W Atilde -167.0
W Aacute -167.0
W Agrave -167.0
W Aogonek -167.0
W Abreve -167.0
W Amacron -167.0
W Aringacute -167.0
W Alphatonos -167.0
W Alpha -167.0
W Lambda -167.0
W uni1EA6 -167.0
W uni1EA4 -167.0

kerns 119 missing

left right value
N Amacron -85
N Abreve -85
N Aogonek -85
N Aringacute -85
N uni0410 -85
N Alphatonos -85
N Lambda -85
N A -85
N Alpha -85
N Delta -85
N uni0466 -85
N uni1EB4 -85
N uni1E00 -85
N Agrave -85
N Aacute -85
N Atilde -85
N Adieresis -85
N Aring -85
N uni04D0 -85
N uni04D2 -85
N uni1EA8 -85
N uni1EAA -85
N uni1EAC -85
N uni1EAE -85
N uni1EA0 -85
N uni1EA2 -85
N uni1EA4 -85
N uni1EA6 -85
N uni1EB0 -85
N uni1EB2 -85
N uni1EB6 -85
N Acircumflex -85
T Tcaron 16
T uni0162 16
T uni04B4 16
T uni04AC 16
T uni04A0 16
T T 16
T uni0422 16
T uni021A 16
T uni0402 16
T uni040B 16
Tau T 16
Tau Tcaron 16
Tau uni0422 16
Tau uni04AC 16
Tau uni0162 16
Tau uni04A0 16
Tau uni04B4 16
Tau uni040B 16

metrics 418 modified

glyph diff_adv diff_lsb diff_rsb
uni0484 1042.0 0 0
uni0483 1007.0 0 0
uni030F 924.0 0 0
tildecomb 922.0 0 0
hook 573.0 0 0
commaaccent 520.0 0 0
gravecomb 511.0 0 0
acutecomb 505.0 0 0
uni0485 496.0 0 0
uni0486 491.0 0 0
dotbelow 387.0 0 0
dieresis 282.0 0 0
dieresistonos 244.0 0 0
dotaccent 241.0 0 0
macron 227.0 0 0
Wdieresis 219.0 0 0
W 219.0 0 0
Wacute 219.0 0 0
Wgrave 219.0 0 0
Wcircumflex 219.0 0 0
ldot 212.0 0 0
ring 194.0 0 0
tilde 175.0 0 0
dcaron 161.0 0 0
Upsilontonos 155.0 0 0
lcaron 142.0 0 0
Ohorn 135.0 0 0
uni1EDA 135.0 0 0
circumflex 135.0 0 0
uni1EDE 135.0 0 0
uni1EDC 135.0 0 0
uni1EE2 135.0 0 0
uni1EE0 135.0 0 0
Iotatonos 134.0 0 0
breve 134.0 0 0
wdieresis 130.0 0 0
wacute 130.0 0 0
w 130.0 0 0
wcircumflex 130.0 0 0
wgrave 130.0 0 0
ohorn 125.0 0 0
uni1EDF 125.0 0 0
uni04FE 125.0 0 0
uni1EE3 125.0 0 0
uni0425 125.0 0 0
X 125.0 0 0
uni1EDD 125.0 0 0
uni1EDB 125.0 0 0
uni04FC 125.0 0 0
uni1EE1 125.0 0 0

names 5 modified

id string_a string_b
(0, 1, 0, 0) Font data copyright Google 2013 Copyright 2018 Google Inc. All Rights Reserved.
(0, 3, 1, 1033) Font data copyright Google 2013 Copyright 2018 Google Inc. All Rights Reserved.
(3, 3, 1, 1033) Google:Roboto Slab:2013 Google:Roboto Slab:2018
(5, 1, 0, 0) Version 1.100263; 2013; ttfautohint (v0.94.20-1c74) -l 8 -r 12 -G 200 -x 14 -w "" -W Version 2.000
(5, 3, 1, 1033) Version 1.100263; 2013; ttfautohint (v0.94.20-1c74) -l 8 -r 12 -G 200 -x 14 -w "" -W Version 2.000

names 7 missing

id string
(3, 1, 0, 0) Google:Roboto Slab:2013
(16, 1, 0, 0) Roboto Slab
(16, 3, 1, 1033) Roboto Slab
(17, 1, 0, 0) Regular
(17, 3, 1, 1033) Regular
(18, 1, 0, 0) Roboto Slab Regular
(18, 3, 1, 1033) Roboto Slab Regular

marks 3450 new

base_glyph mark_glyph base_x base_y mark_x mark_y
A acutecomb 770 1376 -335 1082
A gravecomb 770 1376 -161 1082
A tildecomb 770 1376 -386 1082
A hookabovecomb 770 1376 -238 1082
A uni030F 770 1376 -320 1082
A dotbelowcomb 767 0 -143 0
AE gravecomb 1158 1376 -161 1082
AE acutecomb 1158 1376 -335 1082
AE tildecomb 1158 1376 -386 1082
AE hookabovecomb 1158 1376 -238 1082
AE uni030F 1158 1376 -320 1082
AE dotbelowcomb 1088 0 -143 0
AEacute dotbelowcomb 1088 0 -143 0
AEacute tildecomb 1158 1750 -386 1082
AEacute gravecomb 1158 1750 -161 1082
AEacute acutecomb 1158 1750 -335 1082
AEacute uni030F 1158 1750 -320 1082
AEacute hookabovecomb 1158 1750 -238 1082
Aacute acutecomb 770 1750 -335 1082
Aacute gravecomb 770 1750 -161 1082
Aacute tildecomb 770 1750 -386 1082
Aacute hookabovecomb 770 1750 -238 1082
Aacute uni030F 770 1750 -320 1082
Aacute dotbelowcomb 767 0 -143 0
Abreve gravecomb 770 1750 -161 1082
Abreve acutecomb 770 1750 -335 1082
Abreve tildecomb 770 1750 -386 1082
Abreve uni030F 770 1750 -320 1082
Abreve hookabovecomb 770 1750 -238 1082
Abreve dotbelowcomb 767 0 -143 0
Acircumflex gravecomb 770 1750 -161 1082
Acircumflex acutecomb 770 1750 -335 1082
Acircumflex tildecomb 770 1750 -386 1082
Acircumflex uni030F 770 1750 -320 1082
Acircumflex hookabovecomb 770 1750 -238 1082
Acircumflex dotbelowcomb 767 0 -143 0
Adieresis uni030F 770 1750 -320 1082
Adieresis hookabovecomb 770 1750 -238 1082
Adieresis tildecomb 770 1750 -386 1082
Adieresis gravecomb 770 1750 -161 1082
Adieresis acutecomb 770 1750 -335 1082
Adieresis dotbelowcomb 767 0 -143 0
Agrave tildecomb 770 1750 -386 1082
Agrave gravecomb 770 1750 -161 1082
Agrave acutecomb 770 1750 -335 1082
Agrave hookabovecomb 770 1750 -238 1082
Agrave uni030F 770 1750 -320 1082
Agrave dotbelowcomb 767 0 -143 0
Alpha dotbelowcomb 767 0 -143 0
Alpha acutecomb 770 1376 -335 1082

glyphs 246 new

glyph
D.ss05
Dcroat.ss05
K.ss05
OE.ss05
R.ss05
a.sc
aacute.sc
abreve.sc
acircumflex.sc
adieresis.sc
ae.sc
ae.ss03
aeacute.sc
agrave.sc
alpha.ss02
amacron.sc
aogonek.sc
aring.sc
aringacute.sc
atilde.sc
b.sc
c.sc
c.sc.ss05
cacute.sc
ccaron.sc
ccedilla.sc
ccircumflex.sc
cdotaccent.sc
d.sc
d.sc.ss05
dcaron.sc
dcroat.sc
e.sc
eacute.sc
ebreve.sc
ecaron.sc
ecircumflex.sc
edieresis.sc
edotaccent.sc
egrave.sc
eight.sc
emacron.sc
eng.sc
eogonek.sc
eth.sc
f.sc
five.sc
four.sc
g.sc
g.sc.ss05

glyphs 168 modified

glyph diff
uniFFFC 662473.958333
uni2105 384219.833333
uni047F 224439.0
uni047E 223790.916667
uni1EB3 176989.333333
uni1EA9 175176.333333
uni1EB2 167071.833333
uni1EA8 165258.833333
uni1EC3 164471.541667
uni1ED5 164460.041667
uni1ED4 163677.958333
uni1EC2 144601.833333
uni1EB5 51689.7916667
uni1E01 44844.7916667
uni1EB4 41772.2916667
uni1EAF 41026.0
uni1EAB 40704.4583333
aringacute 38431.5
wacute 35051.0
uni1E00 34927.2916667
wdieresis 34068.0
w 33914.0
wcircumflex 33914.0
wgrave 33385.0
uni1EAE 31108.5
uni1EAA 30786.9583333
uni1EC5 29999.6666667
uni1ED7 29988.1666667
uni1ED6 29206.0833333
gbreve 26419.9583333
Gbreve 25098.4166667
K 21715.5
Kappa 21715.5
nu 19011.0
v 19011.0
uni0121 18344.5416667
g 18284.5416667
gcircumflex 18284.5416667
uni1EB7 18153.9166667
uni04D1 18076.9166667
abreve 18076.9166667
uni0120 17023.0
G 16963.0
Gcircumflex 16963.0
Aringacute 16711.5833333
Cacute 15442.3333333
k 15275.5
uni010A 14365.3333333
Ccircumflex 14305.3333333
C 14305.3333333

glyphs 114 missing

glyph
A.smcp
Aacute.smcp
Abreve.smcp
Acircumflex.smcp
Adieresis.smcp
Agrave.smcp
Amacron.smcp
Aogonek.smcp
Aring.smcp
Aringacute.smcp
Atilde.smcp
B.smcp
C.smcp
Cacute.smcp
Ccaron.smcp
Ccedilla.smcp
Ccircumflex.smcp
D.smcp
Dcaron.smcp
Dcroat.smcp
E.smcp
Eacute.smcp
Ebreve.smcp
Ecaron.smcp
Ecircumflex.smcp
Edieresis.smcp
Edotaccent.smcp
Egrave.smcp
Emacron.smcp
Eogonek.smcp
Eth.smcp
F.smcp
G.smcp
Gbreve.smcp
Gcircumflex.smcp
Gcommaaccent.smcp
H.smcp
Hcircumflex.smcp
I.smcp
Iacute.smcp
Ibreve.smcp
Icircumflex.smcp
Idieresis.smcp
Idotaccent.smcp
Igrave.smcp
Imacron.smcp
Iogonek.smcp
Itilde.smcp
J.smcp
Jcircumflex.smcp

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

desktop_windows_7_ie_9 0_

outline bug

I noticed that some glyph (RKkg) are made by multiple shapes, therefore when outlined they renders erroneous. Could you fix that?

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.