diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e87caca5c..415930e76d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ ## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.43.0...master) +### Major Changes +- Changed to use Noto fonts for all languages + +### Dependency Changes +- The fonts required have changed ## [v2.43.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.42.0...v2.43.0) - 2016-09-05 ### Changes diff --git a/INSTALL.md b/INSTALL.md index 75f39c0740..79a70a9511 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -42,38 +42,21 @@ The repeated www.naturalearthdata.com in the Natural Earth shapefiles is correct Put these shapefiles at `path/to/openstreetmap-carto/data`. ## Fonts -The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu 16.04 or Debian Testing is indicated. +The stylesheet uses Noto Sans, an openly licensed font from Google with support for multiple scripts. The "UI" version is used where available, with its vertical metrics which fit better with Latin text. Other fonts from the Noto family are used for some other languages. -If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular script, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems. +DejaVu Sans is used as an optional fallback font for systems without Noto Sans. If all the Noto fonts are installed, it should never be used. -Mapnik 3 is required for acceptable rendering of most non-Latin scripts, particularly those with complicated diacritics and tone marks. - -### Global -* DejaVu Sans, for most languages (`fonts-dejavu-core`) -* Droid Sans Fallback, as a reasonable fallback (`fonts-droid-fallback`) -* Unifont, as a last resort fallback (`ttf-unifont`) - -### Southeast Asia -* Arundina, for Thai (`fonts-sipa-arundina`) -* Padauk, for Burmese (`fonts-sil-padauk`) -* Khmer OS Metal Chrieng Regular, for Khmer (`fonts-khmeros`) +Unifont is used as a last resort fallback, with it's excellent coverage, common presence on machines, and ugly look. -### South Asia - -* Mukti Narrow, for Bangali (`fonts-beng-extra`) -* Gargi Medium, for Devanagari (`fonts-gargi`) -* TSCu_Paranar, for Tamil (`fonts-taml-tscu`) -* Tibetan Machine Uni, for Tibetian (`fonts-tibetan-machine`) +Mapnik 3 is required for acceptable rendering of most non-Latin scripts, particularly those with complicated diacritics and tone marks. -On Ubuntu 16.04 or Debian Testing you can install all the fonts with +On Ubuntu 16.04 or Debian Testing you can install all required fonts with ``` -sudo apt-get install fonts-dejavu-core fonts-droid-fallback ttf-unifont \ - fonts-sipa-arundina fonts-sil-padauk fonts-khmeros \ - fonts-beng-extra fonts-gargi fonts-taml-tscu fonts-tibetan-machine +sudo apt-get install fonts-noto ttf-unifont ``` -On Ubuntu 14.04, replace `fonts-droid-fallback` with `fonts-droid`. +DejaVu is packaged as `fonts-dejavu-core`. ## Dependencies diff --git a/style.mss b/style.mss index 67e77fc525..f10213e76c 100644 --- a/style.mss +++ b/style.mss @@ -2,26 +2,268 @@ Map { background-color: @water-color; } -/* A regular style. */ -@book-fonts: "DejaVu Sans Book", "Arundina Regular", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", - "Mukti Narrow Regular", "Gargi Regular", "TSCu_Paranar Regular", "Tibetan Machine Uni Regular", - "Droid Sans Fallback Regular", "Unifont Medium", "unifont Medium"; - -/* A bold style is available for almost all scripts. Bold text is heavier than regular text and can be used for emphasis. - Fallback is a regular style. */ -@bold-fonts: "DejaVu Sans Bold", "Arundina Bold", "Arundina Sans Bold", "Padauk Bold", "TSCu_Paranar Bold", - "DejaVu Sans Book", "Arundina Regular", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", - "Mukti Narrow Regular", "gargi Medium", "TSCu_Paranar Regular", "Tibetan Machine Uni Regular", - "Droid Sans Fallback Regular", "Unifont Medium", "unifont Medium"; - -/* An oblique or italic style is available for various (mostly latin-like) scripts. Oblique and italic style are not heavier than - regular style. But they are distinguishable from regular style. Fallback is a regular style. Because many (mostly asian) scripts - do not have an oblique or italic style by nature, be aware that for a considerable number of labels this style will make no - difference to the regular style. */ -@oblique-fonts: "DejaVu Sans Oblique", "Arundina Italic", "Arundina Sans Italic", "TSCu_Paranar Italic", - "DejaVu Sans Book", "Arundina Regular", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", - "Mukti Narrow Regular", "Gargi Regular", "TSCu_Paranar Regular", "Tibetan Machine Uni Regular", - "Droid Sans Fallback Regular", "Unifont Medium", "unifont Medium"; +/* +About fonts: + +Noto is a font family that wants to cover most of Unicode with a harmonic +design across various scripts. We use Noto for most text, with some support +for backward-compatibility and Unifont as fallback. + +By order: + +1. Noto Sans is available for most scripts and it is used as a first choice. +Where available the UI version of the fonts is used. In some cases the UI version +has fewer glyphs, so both are listed. Most of the list is in alphabetical order, +but there are some exceptions + + - Noto Sans UI is before all other fonts + - The CJK fonts are manually ordered. The used CJK font covers all CJK + languages, but defaults to the japanese glyph style if various glyph + styles are available. + +2. Noto provides three variants of Arabic: Noto Kufi Arabic, Noto Naskh Arabic +and Noto Nastaliq Urdu. Noto Kufi Arabic is the one that is most similiar to a +Sans style, so this one is used while both other variants are ignored. Arabic +fonts are placed behind Sans fonts because they might re-define some commonly +used signs like parenthesis or quotation marks, and the arabic design should +not overwrite the standard design. + +3. Noto provides two variants of Emoji: Noto Color Emoji and Noto Emoji. The +colour variant is a SVG flavoured OpenType font that contains coloured emojis. +This is not useful in cartography, so we use the “normal” monochromatic +Noto Emoji. + +4. The list still includes DejaVu for compatibility on systems without Noto. + +5. Unifont. This is a fallback of last resort with excellent coverage. +Unifont Medium covers the whole Unicode BMP without surrogates and without PUA. +Unifont Upper Medium covers some parts of the other Unicode planes. Unifont +Medium Sample would cover the BMP PUA with replacement characters, but cannot +be used because Mapnik does not support SBIT TTF. +*/ + +/* +A regular style. +*/ +@book-fonts: "Noto Sans UI Regular", + "Noto Sans CJK JP Regular", + "Noto Sans Armenian Regular", + "Noto Sans Balinese Regular", + "Noto Sans Bamum Regular", + "Noto Sans Batak Regular", + "Noto Sans Bengali UI Regular", + "Noto Sans Buginese Regular", + "Noto Sans Buhid Regular", + "Noto Sans Canadian Aboriginal Regular", + "Noto Sans Cham Regular", + "Noto Sans Cherokee Regular", + "Noto Sans Coptic Regular", + "Noto Sans Devanagari UI Regular", "Noto Sans Devanagari Regular", + "Noto Sans Ethiopic Regular", + "Noto Sans Georgian Regular", + "Noto Sans Gujarati UI Regular", "Noto Sans Gujarati Regular", + "Noto Sans Gurmukhi UI Regular", + "Noto Sans Hanunoo Regular", + "Noto Sans Hebrew Regular", + "Noto Sans Javanese Regular", + "Noto Sans Kannada UI Regular", + "Noto Sans Kayah Li Regular", + "Noto Sans Khmer UI Regular", + "Noto Sans Lao UI Regular", + "Noto Sans Lepcha Regular", + "Noto Sans Limbu Regular", + "Noto Sans Lisu Regular", + "Noto Sans Malayalam UI Regular", + "Noto Sans Mandaic Regular", + "Noto Sans Mongolian Regular", + "Noto Sans Myanmar UI Regular", + "Noto Sans New Tai Lue Regular", + "Noto Sans NKo Regular", + "Noto Sans Ol Chiki Regular", + "Noto Sans Oriya UI Regular", "Noto Sans Oriya Regular", + "Noto Sans Osmanya Regular", + "Noto Sans Samaritan Regular", + "Noto Sans Saurashtra Regular", + "Noto Sans Shavian Regular", + "Noto Sans Sinhala Regular", + "Noto Sans Sundanese Regular", + "Noto Sans Symbols Regular", + "Noto Sans Syriac Eastern Regular", + "Noto Sans Syriac Estrangela Regular", + "Noto Sans Syriac Western Regular", + "Noto Sans Tagalog Regular", + "Noto Sans Tagbanwa Regular", + "Noto Sans Tai Le Regular", + "Noto Sans Tai Tham Regular", + "Noto Sans Tai Viet Regular", + "Noto Sans Tamil UI Regular", + "Noto Sans Telugu UI Regular", + "Noto Sans Thaana Regular", + "Noto Sans Thai UI Regular", + "Noto Sans Tibetan Regular", + "Noto Sans Tifinagh Regular", + "Noto Sans Vai Regular", + "Noto Sans Yi Regular", + + "Noto Kufi Arabic Regular", + + "Noto Emoji Regular", + + "DejaVu Sans Book", + + "Unifont Medium", "unifont Medium", "Unifont Upper Medium"; + +/* +A bold style is available for almost all scripts. Bold text is heavier than +regular text and can be used for emphasis. Fallback is a regular style. +*/ +@bold-fonts: "Noto Sans UI Bold", + "Noto Sans CJK JP Bold", + "Noto Sans Armenian Bold", + "Noto Sans Bengali UI Bold", + "Noto Sans Cham Bold", + "Noto Sans Devanagari UI Bold", "Noto Sans Devanagari Bold", + "Noto Sans Ethiopic Bold", + "Noto Sans Georgian Bold", + "Noto Sans Gujarati UI Bold", "Noto Sans Gujarati Bold", + "Noto Sans Gurmukhi UI Bold", + "Noto Sans Hebrew Bold", + "Noto Sans Kannada UI Bold", + "Noto Sans Khmer UI Bold", + "Noto Sans Lao UI Bold", + "Noto Sans Malayalam UI Bold", + "Noto Sans Myanmar UI Bold", + "Noto Sans Oriya UI Bold", "Noto Sans Oriya Bold", + "Noto Sans Sinhala Bold", + "Noto Sans Tamil UI Bold", + "Noto Sans Telugu UI Bold", + "Noto Sans Thaana Bold", + "Noto Sans Thai UI Bold", + "Noto Sans Tibetan Bold", + + "Noto Sans CJK JP Regular", + "Noto Sans Balinese Regular", + "Noto Sans Bamum Regular", + "Noto Sans Batak Regular", + "Noto Sans Buginese Regular", + "Noto Sans Buhid Regular", + "Noto Sans Canadian Aboriginal Regular", + "Noto Sans Cherokee Regular", + "Noto Sans Coptic Regular", + "Noto Sans Devanagari UI Regular", "Noto Sans Devanagari Regular", + "Noto Sans Georgian Regular", + "Noto Sans Gujarati UI Regular", "Noto Sans Gujarati Regular", + "Noto Sans Hanunoo Regular", + "Noto Sans Javanese Regular", + "Noto Sans Kayah Li Regular", + "Noto Sans Lepcha Regular", + "Noto Sans Limbu Regular", + "Noto Sans Lisu Regular", + "Noto Sans Mandaic Regular", + "Noto Sans Mongolian Regular", + "Noto Sans New Tai Lue Regular", + "Noto Sans NKo Regular", + "Noto Sans Ol Chiki Regular", + "Noto Sans Osmanya Regular", + "Noto Sans Samaritan Regular", + "Noto Sans Saurashtra Regular", + "Noto Sans Shavian Regular", + "Noto Sans Sundanese Regular", + "Noto Sans Symbols Regular", + "Noto Sans Syriac Eastern Regular", + "Noto Sans Syriac Estrangela Regular", + "Noto Sans Syriac Western Regular", + "Noto Sans Tagalog Regular", + "Noto Sans Tagbanwa Regular", + "Noto Sans Tai Le Regular", + "Noto Sans Tai Tham Regular", + "Noto Sans Tai Viet Regular", + "Noto Sans Tifinagh Regular", + "Noto Sans Vai Regular", + "Noto Sans Yi Regular", + + "Noto Kufi Arabic Bold", + + "Noto Kufi Arabic Regular", + + "Noto Emoji Regular", + + "DejaVu Sans Bold", "DejaVu Sans Book", + + "Unifont Medium", "unifont Medium", "Unifont Upper Medium"; + +/* +Italics are only available for the base font, not the other scripts. +For a considerable number of labels this style will make no difference to the regular style. +*/ +@oblique-fonts: "Noto Sans UI Italic", + "Noto Sans UI Regular", + "Noto Sans CJK JP Regular", + "Noto Sans Armenian Regular", + "Noto Sans Balinese Regular", + "Noto Sans Bamum Regular", + "Noto Sans Batak Regular", + "Noto Sans Bengali UI Regular", + "Noto Sans Buginese Regular", + "Noto Sans Buhid Regular", + "Noto Sans Canadian Aboriginal Regular", + "Noto Sans Cham Regular", + "Noto Sans Cherokee Regular", + "Noto Sans Coptic Regular", + "Noto Sans Devanagari UI Regular", "Noto Sans Devanagari Regular", + "Noto Sans Ethiopic Regular", + "Noto Sans Georgian Regular", + "Noto Sans Gujarati UI Regular", "Noto Sans Gujarati Regular", + "Noto Sans Gurmukhi UI Regular", + "Noto Sans Hanunoo Regular", + "Noto Sans Hebrew Regular", + "Noto Sans Javanese Regular", + "Noto Sans Kannada UI Regular", + "Noto Sans Kayah Li Regular", + "Noto Sans Khmer UI Regular", + "Noto Sans Lao UI Regular", + "Noto Sans Lepcha Regular", + "Noto Sans Limbu Regular", + "Noto Sans Lisu Regular", + "Noto Sans Malayalam UI Regular", + "Noto Sans Mandaic Regular", + "Noto Sans Mongolian Regular", + "Noto Sans Myanmar UI Regular", + "Noto Sans New Tai Lue Regular", + "Noto Sans NKo Regular", + "Noto Sans Ol Chiki Regular", + "Noto Sans Oriya UI Regular", "Noto Sans Oriya Regular", + "Noto Sans Osmanya Regular", + "Noto Sans Samaritan Regular", + "Noto Sans Saurashtra Regular", + "Noto Sans Shavian Regular", + "Noto Sans Sinhala Regular", + "Noto Sans Sundanese Regular", + "Noto Sans Symbols Regular", + "Noto Sans Syriac Eastern Regular", + "Noto Sans Syriac Estrangela Regular", + "Noto Sans Syriac Western Regular", + "Noto Sans Tagalog Regular", + "Noto Sans Tagbanwa Regular", + "Noto Sans Tai Le Regular", + "Noto Sans Tai Tham Regular", + "Noto Sans Tai Viet Regular", + "Noto Sans Tamil UI Regular", + "Noto Sans Telugu UI Regular", + "Noto Sans Thaana Regular", + "Noto Sans Thai UI Regular", + "Noto Sans Tibetan Regular", + "Noto Sans Tifinagh Regular", + "Noto Sans Vai Regular", + "Noto Sans Yi Regular", + + "Noto Kufi Arabic Regular", + + "Noto Emoji Regular", + + "DejaVu Sans Oblique", "DejaVu Sans Book", + + "Unifont Medium", "unifont Medium", "Unifont Upper Medium"; @water-color: #b5d0d0; @land-color: #f2efe9;