
Lato font family

================

Version 1.104; Western+Polish opensource

Created by: tyPoland Lukasz Dziedzic
Creation year: 2011

Copyright (c) 2010-2011 by tyPoland Lukasz Dziedzic with Reserved Font Name "Lato". Licensed under the SIL Open Font License, Version 1.1.

Lato is a trademark of tyPoland Lukasz Dziedzic.

Source URL: http://www.latofonts.com/
License URL: http://scripts.sil.org/OFL

================

Lato is a sanserif typeface family designed in the Summer 2010 by Warsaw-based designer Łukasz Dziedzic (“Lato” means “Summer” in Polish). In December 2010 the Lato family was published under the open-source Open Font License by his foundry tyPoland, with support from Google.

In the last ten or so years, during which Łukasz has been designing type, most of his projects were rooted in a particular design task that he needed to solve. With Lato, it was no different. Originally, the family was conceived as a set of corporate fonts for a large client — who in the end decided to go in different stylistic direction, so the family became available for a public release.

When working on Lato, Łukasz tried to carefully balance some potentially conflicting priorities. He wanted to create a typeface that would seem quite “transparent” when used in body text but would display some original traits when used in larger sizes. He used classical proportions (particularly visible in the uppercase) to give the letterforms familiar harmony and elegance. At the same time, he created a sleek sanserif look, which makes evident the fact that Lato was designed in 2010 — even though it does not follow any current trend.

The semi-rounded details of the letters give Lato a feeling of warmth, while the strong structure provides stability and seriousness. “Male and female, serious but friendly. With the feeling of the Summer,” says Łukasz.

Lato consists of five weights (plus corresponding italics), including a beautiful hairline style.

================

REVISION LOG:

# Version 2.015 (2016-12-01)
Version 2.015 release for Google Fonts. These fonts have been hot fixed from the original sources. The hot fix source repository is here https://github.com/googlefonts/LatoGFVersion

# Version 1.104 (2011-11-08)
Merged the distribution again
Autohinted with updated ttfautohint 0.4 (which no longer causes Adobe and iOS problems) 
except the Hai and Lig weights which are hinted in FLS 5.1.

# Version 1.102 (2011-10-28)
Added OpenType Layout features
Ssplit between desktop and web versions
Desktop version: all weights autohinted with FontLab Studio
Web version autohinted with ttfautohint 0.4 except the Hai and Lig weights

# Version 1.101 (2011-09-30)
Fixed OS/2 table Unicode and codepage entries

# Version 1.100 (2011-09-12)
Added Polish diacritics to the character set
Weights Hai and Lig autohinted with FontLab Studio
Other weights autohinted with ttfautohint 0.3

# Version 1.011 (2010-12-29)
Added the soft hyphen glyph

# Version 1.010 (2010-12-13)
Initial version released under SIL Open Font License
Western character set

================
