diff --git a/gf-guide/authors.md b/gf-guide/authors.md index 9070ee6..b07dbc2 100644 --- a/gf-guide/authors.md +++ b/gf-guide/authors.md @@ -23,6 +23,11 @@ The AUTHORS.txt file is mandatory for font’s reposit +
+ Background reading:
+ must→ Upstream repository structure +
+ ## Table of contents {:.no_toc} * TOC goes here @@ -67,3 +72,10 @@ You can find a template in [GFPT](https://github.com/googlefonts/googlefonts-pro Bob Tester Maggie Techno ``` + +
+ Further reading:
+ templ License file +
+ must→ README file +
\ No newline at end of file diff --git a/gf-guide/build.md b/gf-guide/build.md index 56ce3c8..a285ece 100644 --- a/gf-guide/build.md +++ b/gf-guide/build.md @@ -7,20 +7,12 @@
-🦕 This chapter aims to guide designers in the building of their font binaries using open-source tools. Everything related to font file settings is detailed in these three chapters: - - -For practicality, the above information won’t be repeated in this chapter. If you read “you should follow the recommendation” or “respect the requirements” etc, please refer to the three chapters above. You will also understand this chapter better if you have read those first. +🦕 This chapter aims to guide designers in the building of their font binaries using open-source tools as per our production requirements. Everything related to font file settings is detailed in the Pre-production part of the guide, and for practicality, that information will not be repeated here. +

+ If you read “you should follow the recommendation” or “respect the requirements” etc, please refer to the chapters labeled as start and must→ under the Pre-production contents. You will have a better understanding of the following guidelines if you have read them first. +

+We recommend you install all the tools in a virtual environment, to avoid conflict between packages. Further information is detailed in the Tools and Dependencies section.

-We recommend you install all the tools in a virtual environment, to avoid conflict between packages. Further information is detailed in this chapter: - - For the rest of this chapter, it would be better if you have basic knowledge of:
  • Font tables and font formats
  • @@ -29,6 +21,16 @@ For the rest of this chapter, it would be better if you have basic knowledge of:
+
+ Background reading:
+ start Tools and Dependencies +
+ must→ Pre-production: Getting your fonts ready for GF - chapter. +
+ must→ Production requirements + +
+ ## Table of contents {:.no_toc} * TOC goes here @@ -306,3 +308,12 @@ Unfortunately, the Builder yet can’t do everything. You will have to use a ext - To hint OTF: use **[AFDKO](https://github.com/adobe-type-tools/afdko)**. - To subset the font: use **[Fonttools’ subsetter](https://fonttools.readthedocs.io/en/latest/subset/index.html)**. - If you are using any other font format than `.glyphs` and `.ufo`: the build script should contain a step that converts the sources to UFO. Use **[Fontlab to UFO](https://pypi.org/project/vfb2ufo3/)** or **[FontForge to UFO](https://github.com/fontforge/sfd2ufo)** for example. + +
+ Further reading:
+ must→ Static fonts specifics +
+ must→ Vertical metrics +
+ learn Local testing +
\ No newline at end of file diff --git a/gf-guide/culture.md b/gf-guide/culture.md index 89e558d..af830ee 100644 --- a/gf-guide/culture.md +++ b/gf-guide/culture.md @@ -78,9 +78,9 @@ These are some links where you could find more detailed information about this C \ No newline at end of file diff --git a/gf-guide/description.md b/gf-guide/description.md index 1c6fe4e..a1736dd 100644 --- a/gf-guide/description.md +++ b/gf-guide/description.md @@ -13,6 +13,11 @@ This file will be created by the team member who will be onboarding the font. Th +
+ Background reading:
+ must→ README file +
+ ## Table of contents {:.no_toc} * TOC goes here diff --git a/gf-guide/diacritics.md b/gf-guide/diacritics.md index 1324666..6dc7f37 100644 --- a/gf-guide/diacritics.md +++ b/gf-guide/diacritics.md @@ -15,6 +15,11 @@ This guide will give users an overview introduction to diacritics both from a de +
+ Background reading:
+ must→ Overall font files requirements/Glyphsets +
+ ## Table of contents {:.no_toc} * TOC goes here @@ -170,7 +175,7 @@ As stated in the OpenType Specification: > The `GPOS` table provides precise control over glyph placement for sophisticated text layout and rendering in each script and language system that a font supports. -GPOS table will use the all the X and Y position values of the glyphs for placement operations conditioned by the script and language the font is supporting plus advanced typographic composition tasks as kerning or superscripts. +GPOS table will use all the glyphs' X and Y position values for placement operations conditioned by the script and language the font supports, plus advanced typographic composition tasks such as kerning or superscripts. From the eight type of positioning actions that the table support, at least two are essential for the functioning of diacritic marks: @@ -199,7 +204,7 @@ You could read the entire [GPOS](https://docs.microsoft.com/en-us/typography/ope
  • Diacritics
  • On diacritics
  • The insects project
  • -
  • Polytonic diacritics
  • +
  • Polytonic Greek: a guide for type designers
  • Polish diacritics how to
  • Vietnamese Typography
  • Context of Diacritics
  • @@ -207,7 +212,7 @@ You could read the entire [GPOS](https://docs.microsoft.com/en-us/typography/ope
    - Production related + Production
    + +
    + Further reading:
    + learn Outline Quality +
    diff --git a/gf-guide/googlefonts.md b/gf-guide/googlefonts.md index 4a7f363..3a0a491 100644 --- a/gf-guide/googlefonts.md +++ b/gf-guide/googlefonts.md @@ -9,12 +9,17 @@ 🦉 google/fonts is the GitHub repository that is used as a staging area to upload font families to Google Fonts.

    -The first step to contributing your font to Google Fonts is to submit your contribution as a Pull Request to google/fonts. +Once your project is ready, and you are sure it meets all the font and production requirements; as well as you have located your files in a GitHub repository that follows the required structure, then the definitive step to contributing your font to Google Fonts is to submit it as a Pull Request to google/fonts repository.

    This section will help users understand which are the directories, files, and python modules included in the Google/Fonts repository and how they are related. +
    + Background reading:
    + must→ Upstream repository structure +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -109,3 +114,12 @@ As with the axis registry, [the Lang directory](https://github.com/googlefonts/l - `to_sandbox.txt` is a list of font directories or designer directories to be pushed to sandbox. - `to_production.txt` is a list of fonts directories or designer directories to be pushed to production. Once the elements (fonts, bio, etc) have been checked and validated in sandbox, they can be sent to the API so users can have access to them. We can only push to production something that was first pushed to sandbox. + +
    + Further reading:
    + team  Description file +
    + team  Designer profile +
    + team  METADATA file +
    \ No newline at end of file diff --git a/gf-guide/hosting.md b/gf-guide/hosting.md index 0aa1019..295ce72 100644 --- a/gf-guide/hosting.md +++ b/gf-guide/hosting.md @@ -17,6 +17,11 @@ Is one of the various web providers of Git services (Bitbucket, GitLab, to name +
    + Background reading:
    + start Libre Fonts Culture +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -216,3 +221,8 @@ git config core.ignorecase false - [Git for type designers by Dave Crossland](https://github.com/davelab6/git-for-type-designers) - [A short and friendly introduction book to git](https://abookapart.com/products/git-for-humans) - [Best practices for managing issues](https://blog.zenhub.com/best-practices-for-github-issues/) + +
    + Further reading:
    + must→ Upstream repository structure +
    \ No newline at end of file diff --git a/gf-guide/license-file.md b/gf-guide/license-file.md index 7cd6f2a..5077d40 100644 --- a/gf-guide/license-file.md +++ b/gf-guide/license-file.md @@ -13,6 +13,11 @@ This page will give users some important requirements about the + Background reading:
    + must→ Upstream repository structure + + ## Table of contents {:.no_toc} * TOC goes here @@ -143,3 +148,11 @@ 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. ``` + + +
    + Further reading:
    + - templ Authors and Contributors +
    + - must→ README file +
    \ No newline at end of file diff --git a/gf-guide/maintaining.md b/gf-guide/maintaining.md index 8cdc6a0..4564ebd 100644 --- a/gf-guide/maintaining.md +++ b/gf-guide/maintaining.md @@ -13,6 +13,15 @@ This guide will help designers to adopt good habits while maintaining their work +
    + Background reading:
    + learn Hosting projects on Github +
    + must→ Upstream repository structure +
    + must→ Upgrading fonts specifics +
    + ## Table of contents {:.no_toc} * TOC goes here diff --git a/gf-guide/making-pr.md b/gf-guide/making-pr.md index 6b9a0e0..9cf0444 100644 --- a/gf-guide/making-pr.md +++ b/gf-guide/making-pr.md @@ -9,13 +9,15 @@ 🐸 In order to submit a new family or an upgrade of an existing family on fonts.google.com, we must add or update the files held in the google/fonts repository. This guide will help users submit Pull Requests (PR) which can then be reviewed and merged by a team member.

    -Before submitting your pull request, make sure you have read the following documentations: + + The PR process requires a good understanding of GitHub and command line tools. If this isn’t you, we suggest simply opening an issue using the Add Font or the Update Font template in the issue tracker, and waiting for a team member to ship the font for you.

    @@ -23,6 +25,17 @@ As a general rule, GF requires users to open an issue before submitting anyth + + ## Table of contents {:.no_toc} * TOC goes here @@ -114,3 +127,12 @@ Now that you have the general scheme in mind, let’s dive into more details. Yo ### Make a PR with the Packager Good news! Google Fonts also has a tool that packages the font and makes the pull request to google/fonts repo for users with *contributor access* (team members). It uses the SSH protocol, which is why you would need to set up Git with an SSH key if you are a team member. For more info about `gftools packager` and its usage, read [this documentation](package.md). + +
    + Further reading:
    + nerd  google/fonts repository explained +
    + team  Package the fonts +
    + team  Onboarder workflow guide +
    \ No newline at end of file diff --git a/gf-guide/marketing.md b/gf-guide/marketing.md index 0005e83..83a6d14 100644 --- a/gf-guide/marketing.md +++ b/gf-guide/marketing.md @@ -13,6 +13,11 @@ In order to tweet about a new release, Google Fonts requires 2-3 expressive imag +
    + Background reading:
    + must→ Upstream repository structure +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -35,3 +40,8 @@ In order to tweet about a new release, Google Fonts requires 2-3 expressive imag - Link to a mini website if available. The person onboarding the project will collect images from the documentation directory, include them in a drive folder, write a little tweet according to a simple template, and then it will be reviewed and published when the font is released on the live server. + +
    + Further reading:
    + templ Designer profile +
    \ No newline at end of file diff --git a/gf-guide/metadata.md b/gf-guide/metadata.md index b96e567..ff51178 100644 --- a/gf-guide/metadata.md +++ b/gf-guide/metadata.md @@ -11,6 +11,11 @@ +
    + Background reading:
    + nerd  google/fonts repository explained +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -144,7 +149,7 @@ Example: `date_added: "2021-09-30"` ### designer -Full name of the type designers or foundries who designed the fonts. Each value typically matches a string in the `designer` key of `info.pb` files in the library repo [/catalog/designers](https://github.com/google/fonts/tree/main/catalog/designers) tree. +Full name of the type designers or foundries who designed the fonts. Each value typically matches a string in the `designer` key of `info.pb` files in the library repo [/catalog/designers](https://github.com/google/fonts/tree/main/catalog/designers) tree. The order in which the names are listed here will determine the order of appareance in the About section in the font specimen page. (See below.) Examples: @@ -152,7 +157,7 @@ Examples: - `designer: "TypeTogether"` — Sometimes a formal organization designs a family and no individual there can be attributed as the principle designer - `designer: "Huerta Tipográfica"` — Non-ascii characters are supported as UTF-8 - `designer: "Multiple Designers"` — This was used 2011 to 2016, when several people are involved in the design of a project, but are not working in a formal organization, or listing all their names would be too long to work well in the catalog UI as it was from 2011 to 2016. Many of these values persist, but should be updated as follows -- `designer: "Principal Designer, Contributor, Contributor"` — In 2016 the catalog UI added a feature to show several named contributors on each font family specimen page, where the value of this key is a comma separated list, and the first item in the list is shown the the credit "Principal Design" (Examples: [Rubik](https://fonts.google.com/specimen/Rubik), [Pacifico](https://fonts.google.com/specimen/Pacifico)) +- `designer: "Principal Designer, Contributor, Contributor"` — In 2016 the catalog UI added a feature to show several named contributors on each font family specimen page, where the value of this key is a comma separated list, and the first item in the list is shown the the credit "Principal Design" (Examples: [Rubik](https://fonts.google.com/specimen/Rubik), [Castoro](https://fonts.google.com/specimen/Castoro), [Pacifico](https://fonts.google.com/specimen/Pacifico)) ### license @@ -345,3 +350,12 @@ repository_url: "https://github.com/username/projectname" archive_url: "https://github.com/username/projectname/releases/download/v2.200/projectname-2.200.zip" } ``` + +
    + Further reading:
    + templ Designer profile +
    + templ License file +
    + templ Authors and Contributors +
    \ No newline at end of file diff --git a/gf-guide/metrics.md b/gf-guide/metrics.md index 354ca46..1765e5d 100644 --- a/gf-guide/metrics.md +++ b/gf-guide/metrics.md @@ -15,6 +15,13 @@ Please note that CJK fonts (Chinese-Japanese-Korean scripts) are treated as spec +
    + Background reading:
    + must→ Adding & upgrading fonts to Google Fonts +
    + must→ Overall font files requirements +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -258,3 +265,8 @@ Our decision to follow the Adobe schema was based on Dr. Ken Lunde’s comments - Mekkablue’s [Vertical Metrics Manager](https://github.com/mekkablue/Glyphs-Scripts/blob/master/Font%20Info/Vertical%20Metrics%20Manager.py) - [Impallari/testing](https://github.com/impallari/Font-Testing-Page): Font tester which has no css line-height property set ([live site](http://cyreal.org/Font-Testing-Page)) - [GF Regression](https://github.com/googlefonts/gfregression): Check local fonts against currently hosted versions on [fonts.google.com](http://fonts.google.com/) + + \ No newline at end of file diff --git a/gf-guide/onboarder-workflow.md b/gf-guide/onboarder-workflow.md index de5bc67..28d6040 100644 --- a/gf-guide/onboarder-workflow.md +++ b/gf-guide/onboarder-workflow.md @@ -27,6 +27,13 @@ This guide will help team members to understand the validation process of a font +
    + Background reading:
    + nerd  google/fonts repository explained +
    + nerd  Making a PR to Google Fonts +
    + ## Table of contents {:.no_toc} * TOC goes here diff --git a/gf-guide/onboarding.md b/gf-guide/onboarding.md index 538d09d..80ac457 100644 --- a/gf-guide/onboarding.md +++ b/gf-guide/onboarding.md @@ -22,6 +22,11 @@ From time to time, Google Fonts provides financial and design assistance for pro +
    + Background reading:
    + start Libre Fonts Culture +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -32,11 +37,11 @@ From time to time, Google Fonts provides financial and design assistance for pro If you would like to include a new font family into the GF collection, we'll be happy to include it if it meets the following criteria: - **The typeface design must be original, or a legitimate revival of a design in the public domain, and of good quality.** - +
    The Google Design team curates the overall Google Fonts collection and decides if fonts are of good quality. GF may reject families if they fail to meet their criteria. You can get general reviews of your project from the wider international type community during development by posting review requests in the [googlefonts-discuss](https://groups.google.com/forum/#!forum/googlefonts-discuss) group, and the [typedrawers](http://typedrawers.com/categories/critiques%E2%80%94type-design) review forum. - **The project must be wholly licensed under the** **[SIL Open Font License v1.1](http://scripts.sil.org/OFL).** - +
    There must also be no proprietary/restricted-license versions of the project available elsewhere (such as additional weights/styles). Refer to the dedicated chapter to know more about the [license file requirements](license-file.md). - **The Open Font License should not have any Reserved Font Names ([why](https://github.com/simoncozens/silson/issues/1)).** @@ -45,26 +50,26 @@ If you would like to include a new font family into the GF collection, we'll be - **The font family name should not include any copyright holder's full names.** - First names are accepted, though. No registered trademarks, no initials or abbreviations, no references to languages or writing systems, and no cultural reference that may be offensive in any way. Use only ASCII alphanumeric characters in the family name and begin with an alphabet character, no dashes nor diacritics. Aim for a simple and unique name, ideally short and easy to remember. Long names can be harder for people to remember and type correctly and problematic for software with name length limitations. + - First names are accepted, though. No registered trademarks, no initials or abbreviations, no references to languages or writing systems, and no cultural reference that may be offensive in any way. Use only ASCII alphanumeric characters in the family name and begin with an alphabet character, no dashes nor diacritics. Aim for a simple and unique name, ideally short and easy to remember. Long names can be harder for people to remember and type correctly and problematic for software with name length limitations. - CamelCase names are not allowed except in some cases discussed and approved by a Google Fonts team member. + - CamelCase names are not allowed except in some cases discussed and approved by a Google Fonts team member. - If you are making a libre version of your prior proprietary font or designing something in an established genre, add "Libre" or a local equivalent to that well-known name e.g. *Vesper Libre* or *Libre Baskerville.* + - If you are making a libre version of your prior proprietary font or designing something in an established genre, add "Libre" or a local equivalent to that well-known name e.g. *Vesper Libre* or *Libre Baskerville.* - A limited but easy way to test for uniqueness is [namecheck.fontdata.com](https://namecheck.fontdata.com/) along with a general web search for *name* + font. + - A limited but easy way to test for uniqueness is [namecheck.fontdata.com](https://namecheck.fontdata.com/) along with a general web search for *name* + font. - Refer to the dedicated chapter to know more about [Authors and Contributors](authors.md). + - Refer to the dedicated chapter to know more about [Authors and Contributors](authors.md). - **The project must be developed on GitHub or similar platform.** - +
    A VCS open to public participation and actively maintained. Please read our [Github guide](hosting.md). - **The source files are available** in your preferred font editor format. - +
    The file formats most used are `UFO`, `.glyphs`, `fontforge` or `fontlab 7`. `Fontlab V` files must be converted to another format because the software runs only on older OS versions. - **The build should follow the [Scalable Font Production principle](production.md).** - +
    Fonts are built using [Fontmake](https://github.com/googlefonts/fontmake), which can generate binaries from `UFO`. Fontmake can also convert `.glyphs` files to UFO, but if your are using any other font format, your build process should contain a step that converts the sources to UFO. Read the chapter about [building fonts](build.md) to know more about the build process. - **All binary font files must be available in TTF format.** @@ -84,34 +89,36 @@ Remember that, following the informations given in the [production requirements] To make sure users are correctly served the upgraded font: - **The family name and style names should be the same.** + - **The version number should be incremented from the previous version** following the [specified criteria](requirements.md) for it. + - **We must avoid visual regression between the new version and the previous version**: - No previously encoded glyphs should be removed. - +
    - No previously served styles/instances should be removed. - **The visual thickness and width of the glyphs must be the same.** - - Visual weight and width of a font influence the overall “grey” of a paragraph and change the line length. Users get very angry when the weight/width of a style has changed. +
    + Visual weight and width of a font influence the overall “grey” of a paragraph and change the line length. Users get very angry when the weight/width of a style has changed. - **The line length must be** ***kind of*** **the same.** - +
    The font spacing can be improved whenever needed, but upgrades must not create an obvious change in line length or significant reflow of text for end users. - **The interline space must be the same.** - +
    The vertical metrics must be the same so that the line spacing has the same visual appearance to end-users. - **The rendering should be of the same quality.** - +
    This means that the hinting should match as closely as possible. Manual hinting programs from previous versions should be re-applied to the new binaries. More information about that matter is given in the [Static font requirements](statics.md), and in the [Variable font requirements](variable.md). - **Contributions from forks are not accepted.** - +
    We need to make sure that the original author of the font has agreed with the upgrade, therefore: - The modification must be merged with updated contributors and authors in the upstream project's repository. - +
    - The modification must be made to the existing sources. All of these requirements are to be navigated with the [statistics](https://fonts.google.com/fonts/stats?key=WebFonts2010) of use in mind; exceptions to compatibility requirements can be made for fonts that are not heavily served. @@ -120,10 +127,25 @@ If an upgrade is too much of a change, we can consider onboarding it as *a new f Since all the fonts available are licensed with permission to redistribute subject to the license terms, if you want to have more control over the version of the font you use you can self-host the font using a variety of third-party projects. -## Designer Profile + + + +
    + Further reading:
    + - must→ Overal font requirements +
    + - must→ Static fonts specifics +
    + - must→ Variable fonts specifics +
    + - must→ Vertical metrics +
    + - must→ Production requirements +
    +
    \ No newline at end of file diff --git a/gf-guide/outlines.md b/gf-guide/outlines.md index ecbd8f1..bdf1d52 100644 --- a/gf-guide/outlines.md +++ b/gf-guide/outlines.md @@ -15,6 +15,11 @@ This guide will give users a short introduction to font’s outline from a techn +
    + Background reading:
    + must→ Overall font files requirements/Glyphsets +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -32,7 +37,7 @@ A `path` is made of multiple connected segments. That is why the on-curve points A `smooth connection` is an instruction given to a node, to make inter-dependent (ie. aligned) the two off-curve points. The two connected segments then look like one curve, and the line created by the two handles become the `tangent` of this curve. That is why a node with a smooth connection is also called a `curve-point`. If the off-curve points are not aligned, and are not instructed to stay aligned, or if there is no off-curves point at all, then the connection of the two segment can create a corner. Hence the `corner-point`. -Contours have a `direction` which is given by the `order` or the `index` of the points. For example, for a segment defined by a *p**o**i**n**t*0(*x*0,*y*0) and a *p**o**i**n**t*1(*x*1,*y*1); if *y*1 \< *y*0 and/or if *x*1 \< *x*0 then the direction of the path is clockwise. The contours direction is fairly important since it gives instructions to the `rasteriser` to render shapes as full/black (the `outer-form`) or empty/white (the `counter-form`). The rule is that the counter-form goes in the opposite direction of the outer-form. +Contours have a `direction` which is given by the `order` or the `index` of the points. For example, for a segment defined by a *point* 0 (*x*0,*y*0) and a *point* 1 (*x*1,*y*1); if *y*1 < *y*0 and/or *x*1 < *x*0 then the direction of the path is clockwise. The contours direction is fairly important since it gives instructions to the `rasteriser` to render shapes as full/black (the `outer-form`) or empty/white (the `counter-form`). The rule is that the counter-form goes in the opposite direction of the outer-form. `Hinting` is an added layer of instruction given to outlines for rasterisers to render a font properly on screens at small sizes; when coordinates of points (usually referred in a plan of 1000 units) have to be scaled down to a grid of few pixels. The `hints` will help the rasteriser to guess where in this grid the points need to be placed to preserve the legibility of the glyph and the consistency of the font design (horizontal alignments and average stems thickness). @@ -120,3 +125,11 @@ Unless absolutely necessary, avoid over-complicated outline drawing. One example - [Apple’s article about digitizing letterforms](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM01/Chap1.html#points) - [About diacritics](https://glyphsapp.com/learn/diacritics), Glyphs tutorial - [How to draw with FontForge](http://designwithfontforge.com/en-US/Using_the_Fontforge_Drawing_Tools.html), FontForge tutorial + + +
    + Further reading:
    + learn Diacritics +
    + learn Local testing +
    \ No newline at end of file diff --git a/gf-guide/package.md b/gf-guide/package.md index 49490ec..5990b98 100644 --- a/gf-guide/package.md +++ b/gf-guide/package.md @@ -13,6 +13,13 @@ Note that Packager will create a branch on google/fonts directly. H +
    + Background reading:
    + nerd  google/fonts repository explained +
    + nerd  Making a PR to Google Fonts +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -171,4 +178,7 @@ If all is in good place, team members would only have to run: gftools packager "Family Name" path/to/google/fonts -p ``` - +
    + Further reading:
    + team  Onboarder workflow guide +
    \ No newline at end of file diff --git a/gf-guide/production.md b/gf-guide/production.md index 26c394f..1d1bc00 100644 --- a/gf-guide/production.md +++ b/gf-guide/production.md @@ -13,6 +13,13 @@ This section will help users to understand the implications of publishing fonts +
    + Background reading:
    + start Libre Font Culture +
    + start Knowledge, tools and dependencies required +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -35,14 +42,30 @@ Google Fonts is doing its best to ensure that publishing or updating fonts are u Fonts to be onboarded to Google Fonts are expected to abide by the following requisites: - **The design source files (plus scripts) are available** in your preferred font editor format. - +
    The file formats most used are `UFO`, `.glyphs`, `fontforge` or `fontlab 7`. `Fontlab V` files must be converted to another format because the software runs only on older OS versions. -- **Fonts should be built** [**using open-source tools**](build.md)**.** This ensures that they can be built under the same conditions on any platform. -- **Fonts should be built in one step.** All GF font production tools can be run from the command line. This allows to use them to generate font families by running a single command. +- **Fonts should be built using open-source tools**.** This ensures that they can be built under the same conditions on any platform. + +- **Fonts should be built in one step.** All GF font production tools can be run from the command line. This allows to use them to generate font families by running a single command. +
    If the build process necessitates more than one step / one command, then every step needed to build the fonts should be included in a single build script. See [the chapter about building fonts](build.md) for more information. + - **Font builds must be repeatable.** Given all of GF tools are written in Python and distributed using [pypi/pip](https://pypi.org/), this allows to use specific versions of each package, ensuring the same conditions for each build with the same quality of results. + - **Projects are kept in a version control system.** Since GF only releases Open Source fonts, each released family is expected to be [hosted in GitHub](./hosting) and have its own [upstream repository](./upstream). + - **CI ([Continuous Integration](https://martinfowler.com/articles/continuousIntegration.html)) should be used for build and testing purposes,** **[applied to fonts](https://simoncozens.github.io/tdd-for-otl/).** GF main repository [github.com/google/fonts](https://github.com/google/fonts) uses CI. When new fonts are pushed, the CI will run a test suite (`gftools qa`, which is a wrapper around [Fontbakery](https://github.com/googlefonts/fontbakery) and various other proofing scripts), and the results will be reviewed. + - **Issues and reported Fails should be fixed before publishing or upgrading.** -- **Reviewers of the PRs should have knowledge about typography and font software.** + +- **Reviewers of the [Pull Request](making-pr.md) should have knowledge about typography and font software.** + +
    + Further reading:
    + - learn Hosting projects on Github +
    + - must→ Upstream repository structure +
    + - learn Build the fonts +
    \ No newline at end of file diff --git a/gf-guide/profile.md b/gf-guide/profile.md index 6f3979a..9429429 100644 --- a/gf-guide/profile.md +++ b/gf-guide/profile.md @@ -15,6 +15,11 @@ You can request the addition or modification of your name, bio, and image using +
    + Background reading:
    + templ Authors and Contributors +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -23,7 +28,7 @@ You can request the addition or modification of your name, bio, and image using ## How to write the biography - **Fill up the** **[AUTHORS.txt](authors.md)** **file carefully.** - +
    All the names present in [AUTHORS.txt](authors.md) will be credited in the font’s specimen page on Google Fonts. The names should be written with all necessary signs and marks to be considered correct. - **There is one bio per designer and per foundry mentioned.** - **The text should be around 100 words** (so it should be more than 200 characters and less than 1000 characters). @@ -69,7 +74,7 @@ As a developer or a team member, you may want to know the process for registerin - **There is a directory per (moral/physical) person added.** - **There are all the necessary elements.** - +
    Each designer directories should have these 3 elements: ``` code @@ -79,20 +84,16 @@ As a developer or a team member, you may want to know the process for registerin └── image.png ``` - **The directory is named correctly.** - +
    The directory should use the designer or the company’s name using ASCII characters only and no hyphen. E.g `José María Ribagorda` → `josemariaribagorda` - `info.pb` **has proper name and file path.** - +
    The info.pb is a file made to link a designer’s name to an image, and to a font. -
    - - The name should be spelled exactly the same as in a related [METADATA.pb](metadata.md) of a font (with all the necessary characters event accented letters). If not, the platform won’t be able to display the right profile on the right specimen page. - - - The image file path should be the same as the one within the same directory. Example: @@ -105,15 +106,13 @@ As a developer or a team member, you may want to know the process for registerin } ``` -
    - **The image is formatted ready to use.** - Should be a `PNG` or `JPEG` image between 100px and 300px. It will be cropped as a circle, so the image must be submitted as a square (1:1). - - - The filename should be the same as the directory name (ASCII characters only). -- `bio.html` **contains all necessary informations.** +- `bio.html` **contains all necessary informations.** +
    The bio.html file is an HTML snippet (similar to the description file) that contains a short bio of the designer. - Should contain a link to a webpage and/or social media profile: social media links are referenced as “Twitter”, “Instagram” etc, not as a name tag. Other web pages are displayed truncated from the protocol prefix. @@ -138,8 +137,9 @@ As a developer or a team member, you may want to know the process for registerin ### Process for adding a designer 1. Before adding the profile, make sure you have [cloned the google/fonts repo](making-pr.md) into your machine and [installed gftools in a virtual environment](tools.md). + 2. To simplify adding a new profile, we use `gftools add-designer` script that is part of `gftools`. It takes the different pieces of information and create a new directory in your local clone - +
    Team members have access to a spreadsheet linked to [this form](https://docs.google.com/forms/d/e/1FAIpQLSeMwHN8J213ZaxHrr5lHCrX56HY_NjGrWB8o604g98YxuMrdA/viewform). They can download the spreadsheet to add it as an argument; it will take the description and the link and format it correctly in `bio.html`. This is a common usage: @@ -158,3 +158,9 @@ As a developer or a team member, you may want to know the process for registerin - In your PR you should mention a font (one is sufficient) the profile is linked to. - Don’t forget to add the labels Designer profile and Ready for review, and add the PR to Traffic Jam (cf [The onboarder workflow guide](onboarder-workflow.md)). A team member will review the PR and merge it. Once done, it should appear on the platform in 2-4 weeks. + + +
    + Further reading:
    + nerd  google/fonts repository explained +
    \ No newline at end of file diff --git a/gf-guide/readmefile.md b/gf-guide/readmefile.md index 9f755dd..e67f608 100644 --- a/gf-guide/readmefile.md +++ b/gf-guide/readmefile.md @@ -18,6 +18,11 @@ This page will help designers to write a good README file. +
    + Background reading:
    + must→ Upstream repository structure +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -28,43 +33,46 @@ This page will help designers to write a good README file. The informations you provide in your font project’s `README.md` is key for GF and for users. It is therefore mandatory to apply the following instructions. Whilst only you can judge what makes sense or not for your font project description in term of detail and length, we can only recommend you to be generous with them: - **The name of your font as the title** + - **A concise description that resumes the key points:** - One or two key descriptor(s) (e.g. variable, minimal, grotesque, etc). - - - Why it was created and what it’s designed to do. - - - Notable characteristics and features. - - - Anything extra you want people to know. - - - Scripts (e.g. Latin, Cyrillic, etc). Example: > *Roboto Serif is a variable typeface family designed to create a comfortable and frictionless reading experience. Minimal and highly functional, it is useful anywhere (even for app interfaces) due to the extensive set of weights and widths across a broad range of optical sizes. While it was carefully crafted to work well in digital media, across the full scope of sizes and resolutions we have today, it is just as comfortable to read and work in print media.* -- **At least one image displaying the font (name, glyphset, notable features).** - Typefaces are a visual product, images are therefore mandatory for the `README.md`. GF also may use them for the `#about` section of your font family specimen page on Google Fonts. +- **At least one image displaying the font (its name, the glyphset, or notable features).** +
    + Typefaces are visual products, images are therefore mandatory for the `README.md`. You could use of the `image.py` tool (provided in the [Google Fonts Project Template repo](https://github.com/googlefonts/googlefonts-project-template/tree/main/documentation)) that you could customize at will and generate at least a black and white image showcasing your font. E.g. [Luxurious Script](https://github.com/googlefonts/luxurious#luxurious-script). + + However, bear in mind that GF also could use the images you include in the README section of your repository for the `#about` section of your font family specimen page on Google Fonts + - **Further research and process definition.** + - **Further development on special features and language support.** + - **A Build section with detailed instructions on how to build the fonts.** + - **A Changelog** - +
    List all the changes of the relevant upgrades indicating dates of release and font version numbers. -- **Acknowledgements and credits** +- **Acknowledgements and credits** +
    List of all the authors and contributors to the project, the role they played, and additional information such as profession, email, website. -- **A mention to the licence** +- **A mention to the licence** +
    + It could be the same string required for the nameID 13, that you provide as "License description" from the Font Info pane in your source file: > *This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is in this repo* *OFL.txt* *and is also available with a FAQ at:* *.* ## Concrete examples @@ -92,3 +100,8 @@ You may get inspire by these examples to build up your `README.md`. Please note - [About Readmes](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes) + +
    + Further reading:
    + team  Description file +
    \ No newline at end of file diff --git a/gf-guide/requirements.md b/gf-guide/requirements.md index 1c453c7..d06b150 100644 --- a/gf-guide/requirements.md +++ b/gf-guide/requirements.md @@ -7,12 +7,21 @@
    -🦥 The following are the guidelines that apply to all fonts, regardless of their format or whether you want to add or upgrade a font. +🦥 The following guidelines apply to all fonts, regardless of their format (static or variable fonts) or if you want to add a new font or update one already included in the catalog.

    -Then, depending on the format you are working on, we have different specifications for static and variable fonts. Please read the guidelines for static fonts and the guidelines for variable fonts. -

    -It is also recommended to read the guidelines to add new fonts or upgrade them in Google Fonts before continuing. +For specific information on any of those cases, please read the pages with the requirements on them. before continuing. + +
    +
    + Background reading:
    + start Libre Font Culture +
    + must→ Adding & upgrading fonts to Google Fonts +
    + must→ Static fonts specifics +
    + must→ Variable fonts specifics
    ## Table of contents @@ -20,6 +29,43 @@ It is also recommended to read the guidelines to add new * TOC goes here {:toc} + +## Font versioning + +**Every new version onboarded to GF should have an increased version number compared to the precedent.** This is explained in the [Main contribution cases](onboarding.md) chapter under the Font Upgrades section. + +Versioning is based on [semver](https://semver.org/), apart from we use `MAJOR.SIGNIFICANTMINORPATCH`, instead of `MAJOR.MINOR.PATCH`. + +**Examples:** + +If a breaking change is made e.g. converting a static font family to a variable font family, the **MAJOR** must be incremented by 1, and the others reset, e.g.: + +Current `1.230`, new `2.000` + +If a new character set is inserted, **SIGNIFICANT** should be incremented, e.g.: + +Current `1.230`, new `1.330` + +If a few new glyphs are added, **MINOR** should be incremented, e.g.: + +Current `1.230`, new `1.240` + +If a name table record is updated such as the copyright string, **PATCH** should be incremented, e.g.: + +Current `1.230`, new `1.231` + +## Font Embedding (fsType) + +[fsType](https://docs.microsoft.com/en-us/typography/opentype/spec/os2#fstype) is one of the parameters of the `OS/2` table in which the embeding permissions of a font are declared. For Libre Fonts it should be set to bit `0` (Installable embedding). + +This is how it should look like in the OS/2 table: `` + +If you are using the Glyphs font editor, create a new custom parameter called “fsType” in the “Font” tab of the Font Info pane. Change the Embedding drop-down to “Installable” and leave the “Subsetting Forbidden” checkbox unchecked. + +## Font Vertical Metrics + +Please read the [following pages about vertical metrics](metrics.md) for setting vertical metrics. + ## Font copyright and license These font info parameters are not optional and should follow the same scheme within the entire GF library. @@ -33,7 +79,9 @@ These font info parameters are not optional and should follow the same scheme wi E.g. Copyright 2011 The Montserrat Project Authors () If you are using the Glyphs font editor, add a “Copyright” entry under the “Font” tab of the Font Info panel. -- **The first line of the** **[OFL.txt](license-file.md)** **file should be identical to the font copyright string** **detailed above**. + +- **The first line of the [OFL.txt](license-file.md) file should be identical to the font copyright string detailed above**. + - **The license string must be the same for all GF font projects:** ``` code @@ -41,6 +89,7 @@ These font info parameters are not optional and should follow the same scheme wi ``` If you are using the Glyphs font editor, add this string to a “License” entry in the “Font” tab of the Font Info panel. + - **The license URL must be the same for all GF fonts projects:** ``` code @@ -54,11 +103,11 @@ These font info parameters are not optional and should follow the same scheme wi Typically libre fonts are not subject to any trademarks. **If you do not trademark your project name:** - +
    - Do not declare trademarks in font info metadata. **If you do trademark your project name:** - +
    - Declare trademarks in font info metadata. - License your trademarks for redistribution in a `TRADEMARKS.md` file. @@ -83,42 +132,6 @@ Typically libre fonts are not subject to any trademarks. > > *Job Title, Organization* -## Font versioning - -Every new version onboarded to GF should have an increased version number compared to the precedent. This is explained in the [Main contribution cases](onboarding.md) chapter under the Font Upgrades section. - -Versioning is based on [semver](https://semver.org/), apart from we use `MAJOR.SIGNIFICANTMINORPATCH`, instead of `MAJOR.MINOR.PATCH`. - -**Examples:** - -If a breaking change is made e.g. converting a static font family to a variable font family, the MAJOR must be incremented by 1, and the others reset, e.g.: - -Current `1.230`, new `2.000` - -If a new character set is inserted, SIGNIFICANT should be incremented, e.g.: - -Current `1.230`, new `1.330` - -If a few new glyphs are added, MINOR should be incremented, e.g.: - -Current `1.230`, new `1.240` - -If a name table record is updated such as the copyright string, PATCH should be incremented, e.g.: - -Current `1.230`, new `1.231` - -## Font Embedding (fsType) - -[fsType](https://docs.microsoft.com/en-us/typography/opentype/spec/os2#fstype) parameter should be set to `0` (Installable embedding). - -This is how it should look like in the OS/2 table: `` - -If you are using the Glyphs font editor, create a new custom parameter called “fsType” in the “Font” tab of the Font Info pane. Change the Embedding drop-down to “Installable” and leave the “Subsetting Forbidden” checkbox unchecked. - -## Font Vertical Metrics - -Please read the [following pages about vertical metrics](metrics.md) for setting vertical metrics. - ## Monospace fonts We require the post table `isFixedPitch` to be set and the OS/2 `panose` table to have `OS/2.panose.bProportion` (bit 4) set correctly. If either of these is set incorrectly, users may get fallback glyphs that are not monospaced if they type a character that doesn't exist in the font. @@ -149,6 +162,32 @@ Currently, the most used ones are: Find all the glyphsets definition and filter lists in the [Glyphsets repository](https://github.com/googlefonts/glyphsets/tree/main/GF_glyphsets). Be aware that these glyphsets are still a work in progress and any advise or recommendation can be submitted using the [Glyphsets’ issue tracker](https://github.com/googlefonts/glyphsets/issues). -## Stylistic Sets +## Open Type features support + +The Google Fonts API currently does not support the inclusion of OpenType features such as Stylistic Sets (`salt`) or Small Caps (`smcp`, `c2sc`). Fonts that absolutely need them will need to be published as a separate family with the following schema: + +The vertical metrics should be the same in each sibling family, and the Use of Typo Metrics should be enabled. Please refer to the Vertical Metrics section for further details. + +- **Small Caps** + - If the subfamily covers the Small Caps component of the project, then the SC suffix must be appended to the family name + + `FamilyNameSC-Style.ttf` E.g. `CormorantSC-Regular.ttf` + + - The variant glyphs from the Small Caps should substitute the base glyph from the original family in the new family. + +- **Stylistic Sets** + - If the subfamily covers a Stylistic Set variant instead of original base glyphs, then the SS feature name is appended to the family name + + `FamilyNameSC-StyleName.ttf` E.g. `CormorantSC-Infant.ttf` + + - The variant glyphs from the stylistic sets should substitute the base glyph from the original family in the new family, for the user to receive the intended Stylistic Set behavior. + - The stylistic sets could be available in the downloadable version of the main font, but they are subsetted from the version served by the API. Thus, for a user experience matter, it is required to name each of the stylistic sets to match the name of the sibling family published. If you are using Glyphs font editor, please check the instructions on adding the names under the [Stylistic Sets Tutorial](https://glyphsapp.com/learn/stylistic-sets). + -The Google Fonts API currently does not support the inclusion of OpenType *Stylistic Set* features. Fonts that absolutely need them need to be published as a separate family with the stylistic feature added to the family name. +
    \ No newline at end of file diff --git a/gf-guide/statics.md b/gf-guide/statics.md index 47517ac..f535dd7 100644 --- a/gf-guide/statics.md +++ b/gf-guide/statics.md @@ -5,23 +5,27 @@ # Static fonts specifics {:.no_toc} -
    +
    -🐓 “Static” fonts is a way of saying traditional, *non-variable* fonts. +🐓 “Static” fonts is a way of saying traditional, non-variable fonts.

    Before going further, make sure you read carefully the overall fonts requirements. And please refer to the requirements about Variable Fonts if you are developping a VF.

    Note that GF only onboards OTF-TTF files: .ttf — so TrueType fonts only! The upstream repo can of course contain OTF-CFF .otf fonts, as well as webfonts .woff2. GF redirects users to the upstream repo to find these files if they are not satisfied with the one served by the API.

    -Even if the statics are available in the upstream repository, GF may not onboard them: +If the font project consists only of static fonts (and does not include any VF whatsoever), then the statics available upstream will be the main font binaries and will be onboarded. In other cases, statics available in the upstream repository may not get onboarded by GF when:
    • If a VF exists and the statics are autohinted, then only the variable font is onboarded. The API will generate statics fonts by instanciating the VF: they will be served to browsers which doesn’t support the variable font technology, and they will be available in a downloadable zip file (download family button in any specimen pages). Please read about the instantiated static fonts
    • If a VF exists and the statics are manually hinted, then both formats are onboarded.
    • -
    • If there is no VF, then the statics available upstream will be onboarded.
    +
    + Background reading:
    + must→ Overal font requirements +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -158,6 +162,7 @@ Fontmake does not support manual hinting from Glyphs. You can use use [VTT](htt - [OpenType Spec about the name table](https://docs.microsoft.com/en-us/typography/opentype/spec/name) - [Glyphs.app naming tutorial](https://glyphsapp.com/learn/naming) +- [Glyphs PostScript hinting tutorial](https://glyphsapp.com/learn/hinting-postscript-autohinting) **You can view the name tables using these tools:** @@ -168,4 +173,15 @@ Fontmake does not support manual hinting from Glyphs. You can use use [VTT](htt **Some font testing web pages allow you to view a selection of tables:** - [FontDrop](https://fontdrop.info/#/) → in the “data” tab -- [fontgauntlet](https://fontgauntlet.com/) → if you click on the small search icon next to the font name \ No newline at end of file +- [fontgauntlet](https://fontgauntlet.com/) → if you click on the small search icon next to the font name + +
    + Further reading:
    + must→ Variable fonts specifics +
    + must→ Vertical metrics +
    + learn Build the fontss +
    + learn Local testing +
    \ No newline at end of file diff --git a/gf-guide/style.css b/gf-guide/style.css index e860741..3cc5e5a 100644 --- a/gf-guide/style.css +++ b/gf-guide/style.css @@ -10,12 +10,14 @@ color:#5D5D5D; padding:1.2em 1.6em; font-size:0.9em; - margin: 20px 0px + line-height: 1.8; + margin: 3em 0em; } .context-reading { color:#5D5D5D; padding:1.2em 1.6em; font-size:0.9em; + line-height: 1.8; margin: 2em 0em; } mark { diff --git a/gf-guide/testing.md b/gf-guide/testing.md index 6ece776..a6e60e0 100644 --- a/gf-guide/testing.md +++ b/gf-guide/testing.md @@ -12,12 +12,19 @@ Bear in mind:
    • You can use virtual machines to test your fonts into different environments (practical for testing on older machine and therefore ensure backward compatibility).
    • -
    • Installing consecutively different versions of a font family will lead to cache issues. So don’t forget to remove any remaining version of the font, restart the app, open the font menu and quit the app before installing any other version of the font. You may even need to clean the caches and then restart your computer. Another trick would be to append some kind of version number suffix to the family name until final version.
    • +
    • Installing consecutively different versions of a font family will lead to cache issues. So don’t forget to remove any remaining version of the font, restart the app, open the font menu and quit the app before installing any other version of the font. You may even need to clean the caches and then restart your computer. Another trick would be to append some kind of version number suffix to the family name until final version.
    • If you plan on having both .otf and .ttf fonts on the same machine, we recommend you use a different name (specifically name ID 1, 4 and 6) to avoid any potential conflict.
    +
    + Background reading:
    + must→ Static fonts specifics +
    + must→ Variable fonts specifics +
    + ## Table of contents {:.no_toc} * TOC goes here @@ -27,51 +34,51 @@ Bear in mind: ### Installation -- [ ] No conflict during installation (in user fonts folder: `user/Library/Fonts`). -- [ ] Fonts appear in Font Book. -- [ ] Fonts looks good in Font Book. -- [ ] Family names and style manes are displayed correctly. +- No conflict during installation (in user fonts folder: `user/Library/Fonts`). +- Fonts appear in Font Book. +- Fonts looks good in Font Book. +- Family names and style manes are displayed correctly. ### Usage in external office apps *MS Word, Powerpoint, LibreOffice Writer, LibreOffice Impress…* -- [ ] Fonts are grouped in menu by family name and all instances appear in weight order. +- Fonts are grouped in menu by family name and all instances appear in weight order. - If VF, at least 1 instance appears in dropdown menu (font origin), but since late 2021 version of MS Office (Mac OS 11.\*) all of them should appear. -- [ ] Style linking works properly (bold and italic button or regular, italic button for all other cuts) +- Style linking works properly (bold and italic button or regular, italic button for all other cuts). - In MS Word, when style linking is absent or not working properly, you will see a fake bold or fake italic, watch carefully for that -- [ ] Fonts are displayed correctly -- [ ] Kerning works (just display a few kerning pairs to see if it works) - - In MS Word, kerning is applied to the text *as an option*, it is not a parameter that you activate for all your documents. Find it in the advanced parameters of Fonts settings: you have to check the box and specify a minimum text size to apply kerning (5pt for Mac, and 8pt for Windows) -- [ ] Glyphs having special interpolation (rvrn or special layers) are displaying as expected -- [ ] Letters with components work -- [ ] Combining characters (ligatures, conjuncts) work +- Fonts are displayed correctly. +- Kerning works (just display a few kerning pairs to see if it works). + - In MS Word, kerning is applied to the text *as an option*, it is not a parameter that you activate for all your documents. Find it in the advanced parameters of Fonts settings: you have to check the box and specify a minimum text size to apply kerning (5pt for Mac, and 8pt for Windows). +- Glyphs having special interpolation (rvrn or special layers) are displaying as expected. +- Letters with components work. +- Combining characters (ligatures, conjuncts) work. ### Usage in external layout apps InDesign, Illustrator, Photoshop (Sketch, Figma, Affinity, CorelDRAW…) -- [ ] All styles appear in weight order in dropdown menu -- [ ] Instances are accessible through dropdown menu -- [ ] Instances are displayed correctly -- [ ] Sliders work properly (try from an upright instance and then with an italic instance) -- [ ] No unexpected behavior during variation -- [ ] Spacing and kerning work properly when using the sliders -- [ ] All OpenType Features work properly (activation from menu or style) -- [ ] Stylistic sets have names +- All styles appear in weight order in dropdown menu. +- Instances are accessible through dropdown menu. +- Instances are displayed correctly. +- Sliders work properly (try from an upright instance and then with an italic instance). +- No unexpected behavior during variation. +- Spacing and kerning work properly when using the sliders. +- All OpenType Features work properly (activation from menu or style). +- Stylistic sets have names. **Variable Fonts** -- [ ] Composites and glyphs using brace/bracket layers have the same kerning and spacing as base-glyph -- [ ] Style linking is working in Adobe Mac apps (shift+cmd+b / shift+cmd+i) +- Composites and glyphs using brace/bracket layers have the same kerning and spacing as base-glyph. +- Style linking is working in Adobe Mac apps (shift+cmd+b / shift+cmd+i). ### Usage in native apps *TextEdit / Pages…* -- [ ] Font appear in font dropdown menu, all styles appear in style dropdown menu; default style is first on the list and then in weight order. -- [ ] Style linking works properly (cmd+b, cmd+i) -- [ ] Fonts are displayed correctly +- Font appear in font dropdown menu, all styles appear in style dropdown menu; default style is first on the list and then in weight order. +- Style linking works properly (cmd+b, cmd+i). +- Fonts are displayed correctly. Remember to remove fonts from the user fonts folder at the end of testing. @@ -79,29 +86,29 @@ Remember to remove fonts from the user fonts folder at the end of testing. ### Installation -- [ ] No conflict during installation -- [ ] Fonts appear in `C:/Windows/Fonts` folder +- No conflict during installation. +- Fonts appear in `C:/Windows/Fonts` folder. Double-click on each style and check if: -- [ ] Outline type is correct (PS for .otf, TT for .ttf) -- [ ] Font is displayed correctly (small size in waterfall) +- Outline type is correct (PS for .otf, TT for .ttf). +- Font is displayed correctly (small size in waterfall). - This is actually a good way to quickly check out your hinting. ### Usage in Office apps *MS Word, Powerpoint, LibreOffice Writer, LibreOffice Impress…* -- [ ] Upright fonts appear in alphabetical order in dropdown menu (except for Bold and Italic instances that are activated only the B and I buttons) +- Upright fonts appear in alphabetical order in dropdown menu (except for Bold and Italic instances that are activated only the B and I buttons). - If VF, at least 1 instance appears in dropdown menu (font origin), but since 2022 version of MS Office (Windows 11) all of them should appear. -- [ ] Style linking works properly (bold and italic button or regular, italic button for all other cuts) +- Style linking works properly (bold and italic button or regular, italic button for all other cuts). - In MS Word, when style linking is absent or not working properly, you will see a fake bold or fake italic, watch carefully for that -- [ ] Fonts are displayed correctly -- [ ] Kerning works (just display few kerning pairs to see if it works) - - In MS Word, kerning is applied to the text *as an option*, it is not a parameter that you activate for all your documents. Find it in the advanced parameters of Fonts settings: you have to check the box and specify a minimum text size to apply kerning (5pt for Mac, and 8pt for Windows) -- [ ] Glyphs having special interpolation (rvrn or special layers) are displaying as expected -- [ ] Letters with components work -- [ ] Combining characters (ligatures, conjuncts) work +- Fonts are displayed correctly. +- Kerning works (just display few kerning pairs to see if it works). + - In MS Word, kerning is applied to the text *as an option*, it is not a parameter that you activate for all your documents. Find it in the advanced parameters of Fonts settings: you have to check the box and specify a minimum text size to apply kerning (5pt for Mac, and 8pt for Windows). +- Glyphs having special interpolation (rvrn or special layers) are displaying as expected. +- Letters with components work. +- Combining characters (ligatures, conjuncts) work. ## Web Browsers @@ -109,26 +116,26 @@ Double-click on each style and check if: ### All web formats -- [ ] Fonts are display correctly -- [ ] Fonts have kerning -- [ ] Linespacing looks okay (not too lose, not too tight) -- [ ] No clipping +- Fonts are display correctly. +- Fonts have kerning. +- Linespacing looks okay (not too lose, not too tight). +- No clipping. ### Variable Fonts -- [ ] [Samsa](https://lorp.github.io/samsa/src/samsa-gui.html) displays all instances with propers names in the STAT sidebar section. Regular and other default names are Elided (in parenthesis), and there is style linking between Regular and Bold (400 → 700), and between Roman and Italic (0 → 1) -- [ ] AVAR table display the expected result (linear or not) -- [ ] FVAR table has the instances you want with proper name and proper coordinates (only weight instances with coordinates every 100 for GF) -- [ ] Variation works properly (also glyphs with special layers) -- [ ] Kerning too +- [Samsa](https://lorp.github.io/samsa/src/samsa-gui.html) displays all instances with propers names in the STAT sidebar section. Regular and other default names are Elided (in parenthesis), and there is style linking between Regular and Bold (400 → 700), and between Roman and Italic (0 → 1). +- AVAR table display the expected result (linear or not). +- FVAR table has the instances you want with proper name and proper coordinates (only weight instances with coordinates every 100 for GF). +- Variation works properly (also glyphs with special layers). +- Kerning too. ## Compatibility If your fonts of different formats have the same naming, you will have to test formats one by one, restarting the computer between each to avoid cache issues and conflicts. If they have a different naming system, eg. `NameCFF.otf`, `NameTT.ttf`, `NameVF.ttf`, test their compatibility when installed on the same machine. -- [ ] No conflicts during installation -- [ ] All fonts are displayed in the fonts folder with their respective naming -- [ ] They can all be used in the same document, in whatever software, with no trouble +- No conflicts during installation. +- All fonts are displayed in the fonts folder with their respective naming. +- They can all be used in the same document, in whatever software, with no trouble. ## TrueType Hinting @@ -141,18 +148,18 @@ How to prepare hinted rendering to review: What to check: -- [ ] All glyphs are well aligned: if you see your /r higher than other letter, it is probably because top point is out of the blue zone. So checks where your guidelines normally are (baseline, x-height, caps-height, ascenders, descenders) -- [ ] Superior and inferiors figures are well aligned too with each other. -- [ ] No overshoot until 48ppm -- [ ] Glyphs are aligned also between styles (bold is not higher than Regular at the same ppm size) -- [ ] All glyphs of the same set look consistent (there is no glyph better or worse than the other) -- [ ] Letters are readable -- [ ] Weight is equally distributed (horizontally and vertically) in symmetrical letters (`o`, `e`, `g`, `c`) -- [ ] Spacing is not messed up -- [ ] Accents don't clash with letters -- [ ] Counter-shapes are not collapsed (`e`, `g`, `ring`) -- [ ] Upright and italic of the same weight have a consistent weight -- [ ] Dots on `i` and `j` are aligned +- All glyphs are well aligned: if you see your /r higher than other letter, it is probably because top point is out of the blue zone. So checks where your guidelines normally are (baseline, x-height, caps-height, ascenders, descenders). +- Superior and inferiors figures are well aligned too with each other. +- No overshoot until 48ppm. +- Glyphs are aligned also between styles (bold is not higher than Regular at the same ppm size). +- All glyphs of the same set look consistent (there is no glyph better or worse than the other). +- Letters are readable. +- Weight is equally distributed (horizontally and vertically) in symmetrical letters (`o`, `e`, `g`, `c`). +- Spacing is not messed up. +- Accents don't clash with letters. +- Counter-shapes are not collapsed (`e`, `g`, `ring`). +- Upright and italic of the same weight have a consistent weight. +- Dots on `i` and `j` are aligned. ------------------------------------------------------------------------ @@ -185,3 +192,10 @@ What to check: + +
    + Further reading:
    + learn Diacritics +
    + learn Outlines quality +
    \ No newline at end of file diff --git a/gf-guide/tools.md b/gf-guide/tools.md index 20839ab..ca739dc 100644 --- a/gf-guide/tools.md +++ b/gf-guide/tools.md @@ -237,7 +237,7 @@ export BSTACK_ACCESS_KEY="key" \ No newline at end of file diff --git a/gf-guide/upstream.md b/gf-guide/upstream.md index 6e66e3d..26568e5 100644 --- a/gf-guide/upstream.md +++ b/gf-guide/upstream.md @@ -139,7 +139,7 @@ The files and directories listed above are mandatory. However, we don't mind if
    Further reading:
    - - must→ README file + must→ README file
    - - learn Maintaining your font repo + learn Maintaining your font repo
    \ No newline at end of file diff --git a/gf-guide/variable.md b/gf-guide/variable.md index 05f51dc..80a33b4 100644 --- a/gf-guide/variable.md +++ b/gf-guide/variable.md @@ -7,14 +7,21 @@
    -🦥 The variable font technology has existed for a long time, but the format is actually quite recent (2016). It took time for OS and Apps to support this format, and some still didn’t make the step. In general, GF doesn’t quite recommend the use of variable fonts in documents made to be printed. +🦥 The variable font technology has existed for a long time, but the format is actually quite recent (2016). It took time for OS and Apps to support this format, and some still did not make the step. In general, GF does not quite recommend the use of variable fonts in documents made to be printed. +

    +This guide will give users all the detailed information related to Variable fonts GF requirements. If you are developing a Static font project, please refere to the specifics on statics section. -Before proceeding, make sure: + +
    + +
    + Background reading:
    + must→ Overal font requirements
    ## Table of contents @@ -148,7 +155,7 @@ Name components like "Display", "Text", "Micro" etc are not allowed. GF only supports the `ital` axis as a boolean (`0`/`1`) value to link two separate VFs (Roman/Italic) in the STAT table. And slant axis if the font is not meant to have italic instances. -**→** ***GF doesn’t support the ital axis within one VF as a variation axis.*** +**→ GF doesn’t support the ital axis within one VF as a variation axis.*** So if you have one VF with `slant` or `ital` axis, it won’t have italics served by GF API. If you want italic instances served by the GF API, then you will have to deliver **two variable font files**. @@ -432,22 +439,14 @@ A `STAT` table is defined by these fields: → GF doesn’t recommend format 2 which allows ranges. - - - Axis Index that refers to a name ID in the `name table` - - - Value that refers to the **user value**. - - - Linked value for style linking: → `700` for link to Bold on the wght axis, `1` for link to Italic on the ital axis. - - - Flags → if elided/default (`2`) or not (`0`). @@ -519,4 +518,15 @@ The manual hinting of variable font is a complicated process and the auto-hintin **Some font testing web pages allow you to view a selection of tables:** - [FontDrop](https://fontdrop.info/#/) → in the “data” tab -- [fontgauntlet](https://fontgauntlet.com/) → if you click on the small search icon next to the font name \ No newline at end of file +- [fontgauntlet](https://fontgauntlet.com/) → if you click on the small search icon next to the font name + +
    + Further reading:
    + must→ Static fonts specifics +
    + must→ Vertical metrics +
    + learn Build the fonts +
    + learn Local testing +
    \ No newline at end of file