silnrsi / font-harmattan Goto Github PK
View Code? Open in Web Editor NEWArabic script font for West African languages
License: Other
Arabic script font for West African languages
License: Other
Hello :)
This a Fontbakery report for Harmattan + a report to compare the font already on Google and the update.
You can look into this, try to resolve some fail, although if you have questions about how to resolve them or which one to ignore according to this project (example with the vertical metrics, but it is about to be figured out here). Any case, we can organise a quick call to clear things out.
Fontbakery version: 0.7.27
๐ฅ FAIL Unable to detect what's the latest version of FontBakery available. Maybe we're offline? Please check Internet access and try again.
--- Rationale --- Google Fonts expects that fonts in its collection support at least the minimal set of characters defined in the `GF-latin-core` glyph-set.
--- Rationale --- An OFL.txt file's first line should be the font copyright e.g: "Copyright 2019 The Montserrat Project Authors (https://github.com/julietaula/montserrat)"
--- Rationale --- A known licensing description must be provided in the NameID 14 (LICENSE DESCRIPTION) entries of the name table. The source of truth for this check (to determine which license is in use) is a file placed side-by-side to your font project including the licensing terms. Depending on the chosen license, one of the following string snippets is expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name table: - "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL" - "Licensed under the Apache License, Version 2.0" - "Licensed under the Ubuntu Font Licence 1.0." Currently accepted licenses are Apache or Open Font License. For a small set of legacy families the Ubuntu Font License may be acceptable as well. When in doubt, please choose OFL for new font projects.
Copyright renewed 2011-2012, George W. Nuss (https://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (https://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (https://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL".
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE." Must be changed to "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL" [code: wrong]
--- Rationale --- Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem had no grid fitting but did have antialiasing. From 9-16 ppem, just grid fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled on. The use of accelerated graphics cards and higher resolution screens make this approach obsolete. Microsoft's DirectWrite pushed this even further with much improved rendering built into the OS and apps. In this scenario it makes sense to simply toggle all 4 flags ON for all font sizes.
๐ฅ FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
But instead we have got:
"Copyright (c) 2007-2008, The C&MA Guinea Fulbe Team;
Copyright renewed 2011-2012, George W. Nuss (http://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (http://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (http://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL"." [code: bad-notice-format]
--- Rationale --- This setup is meant to ensure consistent rendering quality for fonts across all devices (with different rendering/hinting capabilities). Below is the snippet of instructions we expect to see in the fonts: B8 01 FF PUSHW 0x01FF 85 SCANCTRL (unconditinally turn on dropout control mode) B0 04 PUSHB 0x04 8D SCANTYPE (enable smart dropout control) "Smart dropout control" means activating rules 1, 2 and 5: Rule 1: If a pixel's center falls within the glyph outline, that pixel is turned on. Rule 2: If a contour falls exactly on a pixel's center, that pixel is turned on. Rule 5: If a scan line between two adjacent pixel centers (either vertical or horizontal) is intersected by both an on-Transition contour and an off-Transition contour and neither of the pixels was already turned on by rules 1 and 2, turn on the pixel which is closer to the midpoint between the on-Transition contour and off-Transition contour. This is "Smart" dropout control. For more detailed info (such as other rules not enabled in this snippet), please refer to the TrueType Instruction Set documentation.
gftools fix-nonhinting
script. [code: lacks-smart-dropout]--- Rationale --- All ligatures in a font must have corresponding caret (text cursor) positions defined in the GDEF table, otherwhise, users may experience issues with caret rendering.
--- Rationale --- There are some entries on the name table that may include more than one line of text. The Google Fonts team, though, prefers to keep the name table entries short and simple without line breaks. For instance, some designers like to include the full text of a font license in the "copyright notice" entry, but for the GFonts collection this entry should only mention year, author and other basic info in a manner enforced by com.google.fonts/check/font_copyright
--- Rationale --- Some designers adopt the "Reserved Font Name" clause of the OFL license. This means that the original author reserves the rights to the family name and other people can only distribute modified versions using a different family name. Google Fonts published updates to the fonts in the collection in order to fix issues and/or implement further improvements to the fonts. It is important to keep the family name so that users of the webfonts can benefit from the updates. Since it would forbid such usage scenario, all families in the GFonts collection are required to not adopt the RFN clause. This check ensures "Reserved Font Name" is not mentioned in the name table.
Copyright renewed 2011-2012, George W. Nuss (http://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (http://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (http://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL".") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
Copyright renewed 2011-2012, George W. Nuss (http://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (http://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (http://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL".
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
--- Rationale --- If the family already exists on Google Fonts, we need to ensure that the checked family's vertical metrics are similar. This check will test the following schema which was outlined in Fontbakery issue #1162 [1]: - The family should visually have the same vertical metrics as the Regular style hosted on Google Fonts. - If the family on Google Fonts has differing hhea and typo metrics, the family being checked should use the typo metrics for both the hhea and typo entries. - If the family on Google Fonts has use typo metrics not enabled and the family being checked has it enabled, the hhea and typo metrics should use the family on Google Fonts winAscent and winDescent values. - If the upms differ, the values must be scaled so the visual appearance is the same. [1] https://github.com/googlefonts/fontbakery/issues/1162
--- Rationale --- A font's winAscent and winDescent values should be greater than the head table's yMax, abs(yMin) values. If they are less than these values, clipping can occur on Windows platforms (https://github.com/RedHatBrand/Overpass/issues/33). If the font includes tall/deep writing systems such as Arabic or Devanagari, the winAscent and winDescent can be greater than the yMax and abs(yMin) to accommodate vowel marks. When the win Metrics are significantly greater than the upm, the linespacing can appear too loose. To counteract this, enabling the OS/2 fsSelection bit 7 (Use_Typo_Metrics), will force Windows to use the OS/2 typo values instead. This means the font developer can control the linespacing with the typo values, whilst avoiding clipping by setting the win values to values greater than the yMax and abs(yMin).
--- Rationale --- Microsoft Office 2013 and below products expect fonts to have a digital signature declared in a DSIG table in order to implement OpenType features. The EOL date for Microsoft Office 2013 products is 4/11/2023. This issue does not impact Microsoft Office 2016 and above products. This checks verifies that this signature is available in the font. A fake signature is enough to address this issue. If needed, a dummy table can be added to the font with the `gftools fix-dsig` script available at https://github.com/googlefonts/gftools Reference: https://github.com/googlefonts/fontbakery/issues/1845
gftools fix-dsig
script. [code: lacks-signature]--- Rationale --- A known license URL must be provided in the NameID 14 (LICENSE INFO URL) entry of the name table. The source of truth for this check is the licensing text found on the NameID 13 entry (LICENSE DESCRIPTION). The string snippets used for detecting licensing terms are: - "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL" - "Licensed under the Apache License, Version 2.0" - "Licensed under the Ubuntu Font Licence 1.0." Currently accepted licenses are Apache or Open Font License. For a small set of legacy families the Ubuntu Font License may be acceptable as well. When in doubt, please choose OFL for new font projects.
--- Rationale --- Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be constructured in a handful of ways. This means a glyph's contour count will only differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3 contours, depending on whether its double story or single story. However, a quotedbl should have 2 contours, unless the font belongs to a display family. This check currently does not cover variable fonts because there's plenty of alternative ways of constructing glyphs with multiple outlines for each feature in a VarFont. The expected contour count data for this check is currently optimized for the typical construction of glyphs in static fonts.
The following glyphs do not have the recommended number of contours:
Glyph name: numbersign Contours detected: 4 Expected: 2
Glyph name: dollar Contours detected: 2 Expected: 1 or 3
Glyph name: plus Contours detected: 2 Expected: 1
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: M Contours detected: 3 Expected: 1
Glyph name: N Contours detected: 3 Expected: 1
Glyph name: R Contours detected: 3 Expected: 1 or 2
Glyph name: W Contours detected: 4 Expected: 1 or 2
Glyph name: X Contours detected: 3 Expected: 1
Glyph name: Y Contours detected: 3 Expected: 1
Glyph name: e Contours detected: 1 Expected: 2
Glyph name: g Contours detected: 4 Expected: 2 or 3
Glyph name: k Contours detected: 3 Expected: 1 or 2
Glyph name: t Contours detected: 2 Expected: 1
Glyph name: x Contours detected: 3 Expected: 1
Glyph name: yen Contours detected: 5 Expected: 1 or 2
Glyph name: plusminus Contours detected: 3 Expected: 1 or 2
Glyph name: Eth Contours detected: 3 Expected: 2
Glyph name: Ntilde Contours detected: 4 Expected: 2
Glyph name: Yacute Contours detected: 4 Expected: 2
Glyph name: egrave Contours detected: 2 Expected: 3
Glyph name: eacute Contours detected: 2 Expected: 3
Glyph name: ecircumflex Contours detected: 2 Expected: 3
Glyph name: edieresis Contours detected: 3 Expected: 4
Glyph name: eth Contours detected: 3 Expected: 2
Glyph name: notequal Contours detected: 3 Expected: 1
Glyph name: Omega Contours detected: 3 Expected: 1
Glyph name: Ydieresis Contours detected: 5 Expected: 3
Glyph name: florin Contours detected: 2 Expected: 1
Glyph name: Euro Contours detected: 3 Expected: 1 or 2
Glyph name: uniFFFC Contours detected: 0 Expected: 22
Glyph name: plusminus Contours detected: 3 Expected: 1 or 2
Glyph name: g Contours detected: 4 Expected: 2 or 3
Glyph name: eth Contours detected: 3 Expected: 2
Glyph name: fl Contours detected: 1 Expected: 2
Glyph name: Eth Contours detected: 3 Expected: 2
Glyph name: egrave Contours detected: 2 Expected: 3
Glyph name: x Contours detected: 3 Expected: 1
Glyph name: notequal Contours detected: 3 Expected: 1
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: yen Contours detected: 5 Expected: 1 or 2
Glyph name: plus Contours detected: 2 Expected: 1
Glyph name: N Contours detected: 3 Expected: 1
Glyph name: X Contours detected: 3 Expected: 1
Glyph name: dollar Contours detected: 2 Expected: 1 or 3
Glyph name: R Contours detected: 3 Expected: 1 or 2
Glyph name: eacute Contours detected: 2 Expected: 3
Glyph name: uniFFFC Contours detected: 0 Expected: 22
Glyph name: Ntilde Contours detected: 4 Expected: 2
Glyph name: numbersign Contours detected: 4 Expected: 2
Glyph name: W Contours detected: 4 Expected: 1 or 2
Glyph name: Ydieresis Contours detected: 5 Expected: 3
Glyph name: k Contours detected: 3 Expected: 1 or 2
Glyph name: Y Contours detected: 3 Expected: 1
Glyph name: ecircumflex Contours detected: 2 Expected: 3
Glyph name: t Contours detected: 2 Expected: 1
Glyph name: Euro Contours detected: 3 Expected: 1 or 2
Glyph name: M Contours detected: 3 Expected: 1
Glyph name: edieresis Contours detected: 3 Expected: 4
Glyph name: e Contours detected: 1 Expected: 2
Glyph name: Yacute Contours detected: 4 Expected: 2 [code: contour-count]
โ WARN ots-sanitize passed this file, however warnings were printed:
WARNING: Feat: FeatureDefn: Nonzero (flags & 0x3f00) repaired
WARNING: Feat: FeatureDefn: Nonzero (flags & 0x3f00) repaired
WARNING: Silf: SILSub: Nonzero attCollisions (reserved before v5)
โ WARN GPOS table lacks kerning information. [code: lacks-kern-info]
โ WARN The following glyphs have coordinates which are out of bounds:
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. [code: points-out-of-bounds]
--- Rationale --- Google Fonts expects that fonts in its collection support at least the minimal set of characters defined in the `GF-latin-core` glyph-set.
--- Rationale --- An OFL.txt file's first line should be the font copyright e.g: "Copyright 2019 The Montserrat Project Authors (https://github.com/julietaula/montserrat)"
--- Rationale --- A known licensing description must be provided in the NameID 14 (LICENSE DESCRIPTION) entries of the name table. The source of truth for this check (to determine which license is in use) is a file placed side-by-side to your font project including the licensing terms. Depending on the chosen license, one of the following string snippets is expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name table: - "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL" - "Licensed under the Apache License, Version 2.0" - "Licensed under the Ubuntu Font Licence 1.0." Currently accepted licenses are Apache or Open Font License. For a small set of legacy families the Ubuntu Font License may be acceptable as well. When in doubt, please choose OFL for new font projects.
Copyright renewed 2011-2012, George W. Nuss (https://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (https://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (https://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL".
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE." Must be changed to "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL" [code: wrong]
--- Rationale --- Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem had no grid fitting but did have antialiasing. From 9-16 ppem, just grid fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled on. The use of accelerated graphics cards and higher resolution screens make this approach obsolete. Microsoft's DirectWrite pushed this even further with much improved rendering built into the OS and apps. In this scenario it makes sense to simply toggle all 4 flags ON for all font sizes.
๐ฅ FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
But instead we have got:
"Copyright (c) 2007-2008, The C&MA Guinea Fulbe Team;
Copyright renewed 2011-2012, George W. Nuss (http://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (http://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (http://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL"." [code: bad-notice-format]
--- Rationale --- This setup is meant to ensure consistent rendering quality for fonts across all devices (with different rendering/hinting capabilities). Below is the snippet of instructions we expect to see in the fonts: B8 01 FF PUSHW 0x01FF 85 SCANCTRL (unconditinally turn on dropout control mode) B0 04 PUSHB 0x04 8D SCANTYPE (enable smart dropout control) "Smart dropout control" means activating rules 1, 2 and 5: Rule 1: If a pixel's center falls within the glyph outline, that pixel is turned on. Rule 2: If a contour falls exactly on a pixel's center, that pixel is turned on. Rule 5: If a scan line between two adjacent pixel centers (either vertical or horizontal) is intersected by both an on-Transition contour and an off-Transition contour and neither of the pixels was already turned on by rules 1 and 2, turn on the pixel which is closer to the midpoint between the on-Transition contour and off-Transition contour. This is "Smart" dropout control. For more detailed info (such as other rules not enabled in this snippet), please refer to the TrueType Instruction Set documentation.
gftools fix-nonhinting
script. [code: lacks-smart-dropout]--- Rationale --- All ligatures in a font must have corresponding caret (text cursor) positions defined in the GDEF table, otherwhise, users may experience issues with caret rendering.
--- Rationale --- There are some entries on the name table that may include more than one line of text. The Google Fonts team, though, prefers to keep the name table entries short and simple without line breaks. For instance, some designers like to include the full text of a font license in the "copyright notice" entry, but for the GFonts collection this entry should only mention year, author and other basic info in a manner enforced by com.google.fonts/check/font_copyright
--- Rationale --- Some designers adopt the "Reserved Font Name" clause of the OFL license. This means that the original author reserves the rights to the family name and other people can only distribute modified versions using a different family name. Google Fonts published updates to the fonts in the collection in order to fix issues and/or implement further improvements to the fonts. It is important to keep the family name so that users of the webfonts can benefit from the updates. Since it would forbid such usage scenario, all families in the GFonts collection are required to not adopt the RFN clause. This check ensures "Reserved Font Name" is not mentioned in the name table.
Copyright renewed 2011-2012, George W. Nuss (http://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (http://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (http://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL".") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
Copyright renewed 2011-2012, George W. Nuss (http://www.fulbefouta.com),
with the Reserved Font Name "Fouta".
Copyright (c) 2004-2020, SIL International (http://www.sil.org),
with Reserved Font Names 'Andika' and 'SIL'.
Copyright (c) 2014-2020, SIL International (http://www.sil.org/).
with Reserved Font Names "Harmattan" and "SIL".
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
--- Rationale --- If the family already exists on Google Fonts, we need to ensure that the checked family's vertical metrics are similar. This check will test the following schema which was outlined in Fontbakery issue #1162 [1]: - The family should visually have the same vertical metrics as the Regular style hosted on Google Fonts. - If the family on Google Fonts has differing hhea and typo metrics, the family being checked should use the typo metrics for both the hhea and typo entries. - If the family on Google Fonts has use typo metrics not enabled and the family being checked has it enabled, the hhea and typo metrics should use the family on Google Fonts winAscent and winDescent values. - If the upms differ, the values must be scaled so the visual appearance is the same. [1] https://github.com/googlefonts/fontbakery/issues/1162
--- Rationale --- A font's winAscent and winDescent values should be greater than the head table's yMax, abs(yMin) values. If they are less than these values, clipping can occur on Windows platforms (https://github.com/RedHatBrand/Overpass/issues/33). If the font includes tall/deep writing systems such as Arabic or Devanagari, the winAscent and winDescent can be greater than the yMax and abs(yMin) to accommodate vowel marks. When the win Metrics are significantly greater than the upm, the linespacing can appear too loose. To counteract this, enabling the OS/2 fsSelection bit 7 (Use_Typo_Metrics), will force Windows to use the OS/2 typo values instead. This means the font developer can control the linespacing with the typo values, whilst avoiding clipping by setting the win values to values greater than the yMax and abs(yMin).
--- Rationale --- Microsoft Office 2013 and below products expect fonts to have a digital signature declared in a DSIG table in order to implement OpenType features. The EOL date for Microsoft Office 2013 products is 4/11/2023. This issue does not impact Microsoft Office 2016 and above products. This checks verifies that this signature is available in the font. A fake signature is enough to address this issue. If needed, a dummy table can be added to the font with the `gftools fix-dsig` script available at https://github.com/googlefonts/gftools Reference: https://github.com/googlefonts/fontbakery/issues/1845
gftools fix-dsig
script. [code: lacks-signature]--- Rationale --- A known license URL must be provided in the NameID 14 (LICENSE INFO URL) entry of the name table. The source of truth for this check is the licensing text found on the NameID 13 entry (LICENSE DESCRIPTION). The string snippets used for detecting licensing terms are: - "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL" - "Licensed under the Apache License, Version 2.0" - "Licensed under the Ubuntu Font Licence 1.0." Currently accepted licenses are Apache or Open Font License. For a small set of legacy families the Ubuntu Font License may be acceptable as well. When in doubt, please choose OFL for new font projects.
โ WARN Following glyphs differ greatly from Google Fonts version: [f, uni06AE.init, uni06D0, uni077F.init, uni06D5, uni06D2, uni0760.fina, uni064A, uni08A7.sindhi, uni0765.fina, eth, uni063B.fina, uni0643.medi, uni06CF, dagger, uni2015, uni0604.4, uni0668, uni076A.init, florin, uni08A6.medi, uni06DA, uni0763.medi, uni077F, uni063B.medi, uni2068, uni06E5, uni0643, uni0683.fina, uni08A7, uni076A, yen, uni0648, uni06AC.medi, uni0764, uni08AF.fina.half, uni063C.medi, uni0604.2, uni08BC.fina, uni06AA, Ntilde, uni0603.4, uni0629, uni076A.fina, uni0685.fina, uni075D, uni06CF.fina, uni068D.fina, uni077F.medi, uni0601, uni0651064F, uni06AF, uni0639.fina, uni2066, uni0602.2, uni0601.3, uni0662, uni063C.init, t, Euro, uni08A2, uni08BB.fina, uni0766, uni0646.fina, uni06A5.fina, uni2011, uni0762.init, uni06AA.init, uni06FB.fina.half, uni0766.sindhi, uni075B, uni068E.fina, uni0765.medi, uni069F.medi, uni063A.fina, uni0685, uni062E.fina, uni2069, uni2010, uni063C.fina, uni06BA.fina, uni06CC, uni0636.fina.half, uni06AD.medi, y, uni06CE, uni0635.fina.half, uni06A0.init, uni068A.fina, uni06A0, macron, uni0684.fina, g, uni2027, uni06E3, uni0769.fina, uni075D.fina, uni063D, uni06A3.fina, uni062C, uni0645, uni066C, uni0686.fina, uni08EC, uni08AE.fina, uni0765.init, daggerdbl, uni069D.half, uni06C6, uni08AF.fina, uni0642, uni069D.fina.half, uni06CB, uni0665, uni068B, uni0689.fina, uni075A.fina, cent, uni0645.medi, AE, uni0635.fina, uni06BD.fina, uni06AD, uni0761.fina, uni0637.medi, uni06FC.init, uni063F, N, uni0762.medi, uni08FF, uni06A4.fina, uni0757, uni069D.fina, uni069E.fina.half, uni06C6.fina, uni0647.medi, uni06D6, uni0641.fina, numbersign, uni062F.fina, uni06E8, uni06A7, uni2067, zero, uni0682, uni075F, uni075B.fina, uni0683, uni06C9, uni076A.medi, uni06DD.alt.2, uni075E, uni0630.fina, uni063E, uni064A.noDots, uni0647.init, uni0767.fina, uni06DD.alt, uni0626.fina, uni06A1.fina, uni08A3.fina, uni08EF, uni06BF.fina, _gafBar, uni06C8, uni06A9.init, sterling, uni202B, uni06FB.half, uni0764.init, uni062D.fina, uni0600, uni06EE.fina, uni06C8.fina, uni0636.fina, uni06A8.fina, uni0604.3, uni0638.medi, uni0758, uni0635.half, uni206D, uni0766.medi, uni0647, uni06FB.fina, uni0600.2, uni068F.fina, uni06D1, uni08A8, uni06A7.fina, uni08A7.init, uniFDF2, uni0652.leftOpen, uni06AA.medi, uni0601.2, uni06FC, uni075F.fina, uni06E6, uni08A6.init, dollar, uni0604, uni0667, uni08A6, uni06D2.fina, uni06E2, uni0603, uni0764.fina, uni08F1, uni08A9, uni202D, uni0639, uni06DC, uni202E, uni06A2.fina, uni0766.fina, uni061C, uni08A3.medi, W, uni0762, uni0626, uni202A, uni063A.init, uni06C0, uni0624.fina, uni06AC.init, uni066F.fina, k, uni06DF, uni075D.init, uni0762.fina, uni06AC, uni0758.fina, uni06A9.medi, uni063C, ydieresis, uni069E.fina, section, uni065D, M, uni06AD.init, uni08F4, uni0649, uni06E0, _gafBarShort, oslash, uni06FC.fina, hyphen, uni0764.medi, uni08AF.half, uni069E.half, uni0684, uni0639.init, uni200D, uni068C.fina, uni06A8, uni06B8.fina, _ring, uni08A7.fina, uni075F.init, uni0644.fina, uni062D, ampersand, uni06CA.fina, uni08A4.fina, uni075E.init, uni06A9.fina, uni06ED, uni06A9, x, uni08A6.fina, uni0645.init, uni06B6.fina, uni0765.sindhi, uni200E, uni08F3, uni0663, uni08BC, uni0624, uni0603.2, K, uni06CB.fina, uni0682.fina, uni202C, uni0645.fina, uni0636.half, uni0643.init, plus, uni0763, uni06A0.fina, uni066F, uni063B.init, uni0642.fina, uni0652, yacute, uni0757.fina, uni08BD.fina, uni06B9.fina, uni06AE.medi, uni075E.fina, uni064F, uni062C.fina, uni063A, uni0602, uni06B7.fina, uni08A2.fina, uni06CA, uni06AF.fina, uni0664, uni06E7, uni08A7.medi, uni06AF.init, uni0603.3, uni069F.fina, uni0763.fina, uni08A5.fina, uni06DD.alt.3, uni0621, uni063B, uni062E, uni08A5, uni0763.init, uni200C, uni0766.init, uni06BF, uni0600.3, uni06B5.fina, uni0686, uni06C9.fina, Oslash, uni206C, uni0645.sindhi, uni0765, uni06AE, eight, uni0648.fina, uni200F, uni06AF.medi]
--- Rationale --- Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be constructured in a handful of ways. This means a glyph's contour count will only differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3 contours, depending on whether its double story or single story. However, a quotedbl should have 2 contours, unless the font belongs to a display family. This check currently does not cover variable fonts because there's plenty of alternative ways of constructing glyphs with multiple outlines for each feature in a VarFont. The expected contour count data for this check is currently optimized for the typical construction of glyphs in static fonts.
The following glyphs do not have the recommended number of contours:
Glyph name: numbersign Contours detected: 4 Expected: 2
Glyph name: dollar Contours detected: 2 Expected: 1 or 3
Glyph name: plus Contours detected: 2 Expected: 1
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: M Contours detected: 3 Expected: 1
Glyph name: N Contours detected: 3 Expected: 1
Glyph name: R Contours detected: 3 Expected: 1 or 2
Glyph name: W Contours detected: 4 Expected: 1 or 2
Glyph name: e Contours detected: 1 Expected: 2
Glyph name: f Contours detected: 2 Expected: 1
Glyph name: g Contours detected: 4 Expected: 2 or 3
Glyph name: k Contours detected: 3 Expected: 1 or 2
Glyph name: t Contours detected: 2 Expected: 1
Glyph name: x Contours detected: 3 Expected: 1
Glyph name: y Contours detected: 2 Expected: 1
Glyph name: yen Contours detected: 5 Expected: 1 or 2
Glyph name: Ntilde Contours detected: 4 Expected: 2
Glyph name: egrave Contours detected: 2 Expected: 3
Glyph name: eacute Contours detected: 2 Expected: 3
Glyph name: ecircumflex Contours detected: 2 Expected: 3
Glyph name: edieresis Contours detected: 3 Expected: 4
Glyph name: eth Contours detected: 3 Expected: 2
Glyph name: yacute Contours detected: 3 Expected: 2
Glyph name: ydieresis Contours detected: 4 Expected: 3
Glyph name: notequal Contours detected: 3 Expected: 1
Glyph name: Omega Contours detected: 3 Expected: 1
Glyph name: florin Contours detected: 2 Expected: 1
Glyph name: Euro Contours detected: 3 Expected: 1 or 2
Glyph name: uniFFFC Contours detected: 0 Expected: 22
Glyph name: f Contours detected: 2 Expected: 1
Glyph name: y Contours detected: 2 Expected: 1
Glyph name: g Contours detected: 4 Expected: 2 or 3
Glyph name: eth Contours detected: 3 Expected: 2
Glyph name: fl Contours detected: 1 Expected: 2
Glyph name: egrave Contours detected: 2 Expected: 3
Glyph name: x Contours detected: 3 Expected: 1
Glyph name: notequal Contours detected: 3 Expected: 1
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: yen Contours detected: 5 Expected: 1 or 2
Glyph name: plus Contours detected: 2 Expected: 1
Glyph name: N Contours detected: 3 Expected: 1
Glyph name: dollar Contours detected: 2 Expected: 1 or 3
Glyph name: R Contours detected: 3 Expected: 1 or 2
Glyph name: eacute Contours detected: 2 Expected: 3
Glyph name: uniFFFC Contours detected: 0 Expected: 22
Glyph name: yacute Contours detected: 3 Expected: 2
Glyph name: Ntilde Contours detected: 4 Expected: 2
Glyph name: numbersign Contours detected: 4 Expected: 2
Glyph name: W Contours detected: 4 Expected: 1 or 2
Glyph name: k Contours detected: 3 Expected: 1 or 2
Glyph name: ecircumflex Contours detected: 2 Expected: 3
Glyph name: t Contours detected: 2 Expected: 1
Glyph name: Euro Contours detected: 3 Expected: 1 or 2
Glyph name: ydieresis Contours detected: 4 Expected: 3
Glyph name: M Contours detected: 3 Expected: 1
Glyph name: edieresis Contours detected: 3 Expected: 4
Glyph name: e Contours detected: 1 Expected: 2 [code: contour-count]
โ WARN Entry [FULL_FONT_NAME(4):WINDOWS(3)] on the "name" table: Got "Harmattan" which lacks "Regular", but it is probably OK in this case. [code: lacks-regular]
โ WARN ots-sanitize passed this file, however warnings were printed:
WARNING: Feat: FeatureDefn: Nonzero (flags & 0x3f00) repaired
WARNING: Feat: FeatureDefn: Nonzero (flags & 0x3f00) repaired
WARNING: Silf: SILSub: Nonzero attCollisions (reserved before v5)
โ WARN GPOS table lacks kerning information. [code: lacks-kern-info]
โ WARN The following glyphs have coordinates which are out of bounds:
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. [code: points-out-of-bounds]
๐ ERROR | ๐ฅ FAIL | โ WARN | ๐ค SKIP | โน INFO | ๐ PASS | ๐ DEBUG |
---|---|---|---|---|---|---|
0 | 25 | 12 | 153 | 12 | 134 | 0 |
0% | 7% | 4% | 46% | 4% | 40% | 0% |
Note: The following loglevels were omitted in this report:
Harmattan reuses Andika glyphs, which is nice, but it also resizes them.
The end result is writing documents that mix Harmattan and Andika (because Andika has progressed since its import in Harmattan) is challenging.
Please keep the sizing of the common latin glyphs in all sil fonts coordinated.
The FTML spec states that the element is a required element of a file and is missing from a number of .ftml files in tests/
Here are a few collisions to think about:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.