Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design Concept: Typography #2

Open
arcticicestudio opened this issue Nov 11, 2018 · 0 comments
Open

Design Concept: Typography #2

arcticicestudio opened this issue Nov 11, 2018 · 0 comments

Comments

@arcticicestudio
Copy link
Contributor

arcticicestudio commented Nov 11, 2018

This issue documents Nord typography design concept and serves as a plan for the initial launch.
It defines the process steps to decide about all typography aspects like the font face, base sizes, usage within components/themes and the modular scale(s).

All implementation details and requirements are documented and tracked in the corresponding issues:

🚧 This is a living document which means it is work in progress, not completed yet and will be extended!

Font Face

To achieve a uniform design across Nord and its brand the main font face and font stack will be friendly and warm for visual elements while being simple and allow users to stay focused on the actual content, e.g. documentations or blog posts.
All fonts that will be used are open source like Nord itself.

Stylistic & Visualization

The main stylistic and visualization sans-serif type will be Rubik. With its slightly rounded corners it conveys a smooth appearance which matches the overall design of Nord visual elements. Nunito was also a possible choice, but Rubik provides a bit more strength due to its thicker glyphs which improves the mode of expression and the better recognizability.

Clear & Factual

For documentations, technical and factual content a more straight and clear font will be used. This led to the brilliant open source font family Inter UI, a typeface specially designed for user interfaces with focus on high legibility of small-to-medium sized text on computer screens.

The family features a tall x-height to aid in readability of mixed-case and lower-case text. Several OpenType features are provided as well, like contextual alternates that adjusts punctuation depending on the shape of surrounding glyphs, slashed zero for when you need to disambiguate "0" from "o", tabular numbers, etc.

The font is well designed and thought out to provide a consistent and clear typographic feel.

Other types in the shortlist that were considered as font families:

  • Nunito Sans ‒ a well balanced typeface superfamily arose from Nunito.
  • Roboto ‒ a well-designed and widely used font by Google used by Android which provides a kind of mechanical skeleton with largely geometric forms while also being friendly with open curves.

Monospace & Code

The main mono spaced type will be Source Code Pro. It is also a well-designed and popular font proven to be easy-on-the-eyes with slightly rounded glyphs while keeping a good feeling of a consistent and uniform character baseline with a balanced spacing.

Font Sizes

In order to provide easy legibility, without the need to zoom or increase the font size manually, the browser's default root font size of 16px will be kept, but the main font size will be scaled to 18px using the modular scale factor like documented in the section below. All other values will be calculated based on this size using the rem and em units. There are some exceptions where the px unit will be used, e.g. small and static sizes.

Modular Scale

The modular scale that Nord Docs will use is “major second”. It stands for a ratio of 1.125. There will only be one base of 1em which depends on the used root HTML font size of 16px.

Resources

Thanks to Google Design for their great and well-written Typography Library. Good starting points are the articles “Choosing Web Fonts: A Beginner’s Guide” and “Space Mono's Retro-Future Voice”.
Not to forget the awesome Google Fonts library to crawl through for inspirations.

Another fantastic information and inspiration origin is Material Design. It provides an extensive knowledge base for almost all details for UI and web design. Their Material Studies also makes use of the Rubik font within the Shrine and Owl studies.

The Inter UI font family website provides a great interactive collection of samples to see how the font works in production and also a lab to test various font settings and features.

arcticicestudio added a commit that referenced this issue Nov 20, 2018
It renders the passed `children` within a `React.Fragment`.

The `Root` core container is the first and one of the important main
data provider React components of this project. It represents the base
element and entry point that wraps the all custom application components
and serves as a data provider later on. Some of the tasks in the future
will be to

- provide context props and functions for the global theme through
  styled-components (1) `ThemeProvider` (3) component
- inject global styles through styled-components
  `createglobalstyle` (3) function including typography (GH-2) related
  data like application-wide used fonts
- possibly data stores for state management libraries like MobX (4)

References:
  (1) https://styled-components.com
  (2) https://www.styled-components.com/docs/api#createglobalstyle
  (3) https://www.styled-components.com/docs/api#themeprovider
  (4) https://mobx.js.org

GH-36
@arcticicestudio arcticicestudio mentioned this issue Dec 2, 2018
2 tasks
arcticicestudio added a commit that referenced this issue Dec 2, 2018
In order to use the fonts is must be added to Nord Docs theme. This
commit implements the `typography` module that defines all used font
families and the basic typography properties and values like the font
size and units based on the used modular scale documented in GH-2.

Associated epic: GH-2
Dependency of GH-53
GH-54
arcticicestudio added a commit that referenced this issue Dec 2, 2018
This commit implements global and normalization CSS styles using
"styled-components" `css` API. They extend "modern-normalize" and
define, next to the browser normalization, styles for the available
global themes.

In order to use fonts in "Nord Docs" style & themes (implemented in
GH-54) the basic properties and values have been added and integrated
into these base styles.

To inject global styles, styled-components v4 `createglobalstyle` (1)
API has been used to create a `<GlobalStyle>` component that injects
theme styles and "styled-modern-normalize" (2) globally.

References:
  (1) https://www.styled-components.com/docs/api#createglobalstyle
  (2): https://github.com/arcticicestudio/styled-modern-normalize

Associated epics: GH-51, GH-2
GH-53
svengreb pushed a commit that referenced this issue Dec 12, 2018
The drop down of the navigation link slide menu will start right below
the header and take up the available height and width to cover the full
screen. The added package's purpose provides methods to remove all
scroll listeners from the underlying content (body) as soon as the
animation starts.
This prevents users from scrolling the content below the menu when the
menu itself overflows the Y-axis and shows a scroll bar.

Associated epics: GH-63, GH-2
GH-64
arcticicestudio added a commit that referenced this issue Dec 13, 2018
This commit implements the `ms` shorthand function for polished's (1)
`modularScale` helper with pre-configured base and ratio values.

References:
  (1) https://polished.js.org

Associated epic: #2
GH-64
arcticicestudio added a commit that referenced this issue Dec 17, 2018
This commit implements the core atom(s) `H1`-`H6` which represent the
content sectioning (1) HTML element `<h1>`-`<h6>` (2).

It uses custom styles instead of browser defaults and allows to disable
the bottom margin via the `noMargin` prop. The font styles like size,
modular scale and family adhere to the "Typography" design concept (3).

References:
  (1) https://developer.mozilla.org/en-US/docs/Web/HTML/Element#Content_sectioning
  (2) https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements
  (3) #2

Associated epics: GH-69, GH-2
GH-81
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant