[openstreetmap-carto] 01/06: Imported Upstream version 2.44.0

Bas Couwenberg sebastic at debian.org
Mon Sep 26 18:48:28 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository openstreetmap-carto.

commit 79faf48b651c0719874d7ebb4e04dd597ae24c6c
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Sep 26 20:35:15 2016 +0200

    Imported Upstream version 2.44.0
---
 .travis.yml                       |   2 +-
 CHANGELOG.md                      |  19 ++-
 CODE_OF_CONDUCT.md                |  82 +++++++++++
 INSTALL.md                        |  31 +---
 addressing.mss                    |  43 +++---
 amenity-points.mss                |  37 ++++-
 citywalls.mss                     |  13 --
 get-shapefiles.sh                 |  15 ++
 landcover.mss                     |  30 +++-
 placenames.mss                    | 183 +++++++++++++++++-------
 project.mml                       | 135 +++++++++---------
 project.yaml                      | 194 +++++++++++++------------
 roads.mss                         | 111 ++++++++-------
 style.mss                         | 288 +++++++++++++++++++++++++++++++++++---
 symbols/art-14.svg                |  38 +++++
 symbols/deli-14.svg               |  39 ++++++
 symbols/place/place-4-z7.svg      |  30 ++++
 symbols/place/place-4.svg         |  30 ++++
 symbols/place/place-6-z7.svg      |  30 ++++
 symbols/place/place-6.svg         |  30 ++++
 symbols/place/place-capital-6.svg |  34 +++++
 symbols/place/place-capital-8.svg |  38 +++++
 symbols/tea-14.svg                |  67 +++++++++
 symbols/tobacco-14.svg            |  23 +++
 water.mss                         |  19 ++-
 25 files changed, 1216 insertions(+), 345 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 04bea38..62ec3ee 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,5 +14,5 @@ install:
   - touch data/world_boundaries/builtup_area.shp data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/land-polygons-split-3857/land_polygons.shp
 script:
   - jsonlint project.mml
-  - ./node_modules/carto/bin/carto project.mml | xmllint - | wc -l
+  - set -o pipefail && ./node_modules/carto/bin/carto project.mml | xmllint - | wc -l
   - ./scripts/travis_check_project_files
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8e87cac..ee02b80 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,19 @@
-## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.43.0...master)
+## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.44.0...master)
+
+## [v2.44.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.44.0...v2.43.0) - 2016-09-26
+### Major Changes
+- Rendering of restricted access roads and paths significantly changed
+- Changed to use Noto fonts for all languages
+
+### Dependency Changes
+- The fonts required have changed
+
+### Changes
+- A code of conduct adopted, based on the Go code of conduct
+- Adjustments to city wall rendering
+- Revised low zoom place rendering
+- Fixed oneway arrows on unnamed roads
+- Render both house name and number if address has both
 
 ## [v2.43.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.42.0...v2.43.0) - 2016-09-05
 ### Changes
@@ -188,4 +203,4 @@ Shapefiles are now used for Antartic ice sheets
 
 - Render educational area borders later
 
-- New POI icons
\ No newline at end of file
+- New POI icons
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..879b953
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,82 @@
+# OpenStreetMap Carto Community Code of Conduct
+
+## Why have a Code of Conduct?
+
+Online communities include people from many different backgrounds. The OpenStreetMap Carto contributors are committed to providing a friendly, safe and welcoming environment for all, regardless of age, disability, gender, nationality, race, religion, sexuality, or similar personal characteristic.
+
+The first goal of the Code of Conduct is to specify a baseline standard of behavior so that people with different social values and communication styles can talk about OpenStreetMap Carto effectively, productively, and respectfully.
+
+The second goal is to provide a mechanism for resolving conflicts in the community when they arise.
+
+The third goal of the Code of Conduct is to make our community welcoming to people from different backgrounds. Diversity is critical to the project; for OpenStreetMap Carto to be successful, it needs contributors and users from all backgrounds.
+
+With that said, a healthy community must allow for disagreement and debate. The Code of Conduct is not a mechanism for people to silence others with whom they disagree.
+
+## Where does the Code of Conduct apply?
+
+If you participate in or contribute to the OpenStreetMap Carto ecosystem in any way, you are encouraged to follow the Code of Conduct while doing so.
+
+Explicit enforcement of the Code of Conduct applies to the OpenStreetMap Carto GitHub project and code reviews.
+
+## Values
+
+These are the values to which people in the OpenStreetMap Carto should aspire.
+
+- Be friendly and welcoming
+- Be patient
+  - Remember that people have varying communication styles and that not everyone is using their native language. (Meaning and tone can be lost in translation.)
+- Be thoughtful
+  - Productive communication requires effort. Think about how your words will be interpreted.
+  - Remember that sometimes it is best to refrain entirely from commenting.
+- Be respectful
+  - In particular, respect differences of opinion.
+- Be charitable
+  - Interpret the arguments of others in good faith, do not seek to disagree.
+  - When we do disagree, try to understand why.
+- Avoid destructive behavior:
+  - Derailing: stay on topic; if you want to talk about something else, start a new conversation.
+  - Unconstructive criticism: don't merely decry the current state of affairs; offer—or at least solicit—suggestions as to how things may be improved.
+  - Snarking (pithy, unproductive, sniping comments)
+  - Discussing potentially offensive or sensitive issues unless directly technically relevant; this all too often leads to unnecessary conflict.
+  - Microaggressions: brief and commonplace verbal, behavioral and environmental indignities that communicate hostile, derogatory or negative slights and insults to a person or group.
+
+People are complicated. You should expect to be misunderstood and to misunderstand others; when this inevitably occurs, resist the urge to be defensive or assign blame. Try not to take offense where no offense was intended. Give people the benefit of the doubt. Even if the intent was to provoke, do not rise to it. It is the responsibility of *all parties* to de-escalate conflict when it arises.
+
+## Unwelcome behavior
+
+These actions are explicitly forbidden in OpenStreetMap Carto spaces:
+
+- Insulting, demeaning, hateful, or threatening remarks.
+- Discrimination based on age, disability, gender, nationality, race, religion, sexuality, or similar personal characteristic.
+- Bullying or systematic harassment.
+- Unwelcome sexual advances.
+- Incitement to any of these.
+
+## Moderation
+
+The OpenStreetMap Carto spaces are not free speech venues; they are for discussion about OpenStreetMap Carto.
+
+When using the OpenStreetMap Carto spaces you should act in the spirit of the values. If you conduct yourself in a way that is explicitly forbidden by the CoC, you will be warned and asked to stop. If you do not stop, you will be removed from our community spaces temporarily. Repeated, willful breaches of the CoC will result in a permanent ban.
+
+## Reporting issues
+
+The OpenStreetMap Carto maintainers are responsible for handling conduct-related issues. Their goal is to de-escalate conflicts and try to resolve issues to the satisfaction of all parties.
+
+If you encounter a conduct-related issue, you should report it to the maintainers by sending them [all an email](mailto:openstreetmap-carto at gravitystorm.co.uk,penorman at mac.com,info at matthijsmelissen.nl,matkoniecz at gmail.com).
+
+**Note that the goal of the Code of Conduct and the maintainers is to resolve conflicts in the most harmonious way possible.** We hope that in most cases issues may be resolved through polite discussion and mutual agreement. Bans and other forceful measures are to be employed only as a last resort.
+
+Changes to the Code of Conduct should be proposed as pull requests.
+
+## Summary
+
+- Treat everyone with respect and kindness.
+- Be thoughtful in how you communicate.
+- Don’t be destructive or inflammatory.
+- If you encounter an issue, please mail the maintainers.
+
+## Acknowledgements
+
+This document is based on the [Go Code of Conduct](https://golang.org/conduct), which in turn has parts derived from the Code of Conduct documents of the Django, FreeBSD, and Rust projects.
+
+This documented is licensed under the Creative Commons Attribution 3.0 License.
diff --git a/INSTALL.md b/INSTALL.md
index 75f39c0..79a70a9 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/addressing.mss b/addressing.mss
index a6e1dc1..7a525c4 100644
--- a/addressing.mss
+++ b/addressing.mss
@@ -1,35 +1,31 @@
+/* Features related to (postal) adresses: */
+
 @address-color: #666;
 
 #interpolation {
   [zoom >= 17] {
-    line-color: #888;
+    line-color: @address-color;
     line-width: 1;
     line-dasharray: 2,4;
   }
 }
 
-#housenumbers {
+#addresses {
   [zoom >= 17] {
-    text-name: "[addr:housenumber]";
-    text-placement: interior;
-    text-min-distance: 1;
-    text-wrap-width: 0;
-    text-face-name: @book-fonts;
-    text-fill: @address-color;
-    text-size: 10;
-    [zoom >= 20] {
-        text-size: 11;
+    text-name: "[addr_housename]";
+    ["addr_housenumber" != null] {
+      text-name: [addr_housenumber];
+      ["addr_housename" != null] {
+        text-name: [addr_housenumber] + "\n" + [addr_housename];
+      }
     }
-  }
-}
-
-#housenames {
-  [zoom >= 17] {
-    text-name: "[addr:housename]";
     text-placement: interior;
+    text-min-distance: 1;
     text-wrap-width: 20;
     text-face-name: @book-fonts;
     text-fill: @address-color;
+    text-halo-radius: @standard-halo-radius;
+    text-halo-fill: @standard-halo-fill;
     text-size: 10;
     [zoom >= 20] {
         text-size: 11;
@@ -37,16 +33,19 @@
   }
 }
 
+/* Building names (rendered differently from addresses because they are
+no official postal addresses) */
+
 #building-text {
   [zoom >= 14][way_pixels > 3000],
   [zoom >= 17] {
     text-name: "[name]";
-    text-size: 11;
-    text-fill: #444;
+    text-placement: interior;
+    text-wrap-width: 20;
     text-face-name: @book-fonts;
+    text-fill: #444;
     text-halo-radius: @standard-halo-radius;
-    text-wrap-width: 20;
-    text-halo-fill: rgba(255,255,255,0.5);
-    text-placement: interior;
+    text-halo-fill: @standard-halo-fill;
+    text-size: 11;
   }
 }
diff --git a/amenity-points.mss b/amenity-points.mss
index ed25b6a..5ae3cef 100644
--- a/amenity-points.mss
+++ b/amenity-points.mss
@@ -569,6 +569,13 @@
     marker-fill: @shop-icon;
   }
 
+  [feature = 'shop_art'][zoom >= 17] {
+    marker-file: url('symbols/art-14.svg');
+    marker-fill: @shop-icon;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
   [feature = 'shop_bag'][zoom >= 17] {
     marker-file: url('symbols/bag-14.svg');
     marker-fill: @shop-icon;
@@ -665,6 +672,15 @@
     }
   }
 
+  [feature = 'shop_deli'] {
+    [zoom >= 17] {
+      marker-file: url('symbols/deli-14.svg');
+      marker-placement: interior;
+      marker-clip: false;
+      marker-fill: @shop-icon;
+    }
+  }
+
   [feature = 'shop_department_store'][zoom >= 16] {
     marker-file: url('symbols/department_store.p.16.svg');
     marker-placement: interior;
@@ -914,6 +930,20 @@
     marker-fill: @shop-icon;
   }
 
+  [feature = 'shop_tobacco'][zoom >= 17] {
+    marker-file: url('symbols/tobacco-14.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
+  }
+
+  [feature = 'shop_tea'][zoom >= 17] {
+    marker-file: url('symbols/tea-14.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
+  }
+
   [feature = 'shop_variety_store'][zoom >= 17] {
     marker-file: url('symbols/variety_store-14.svg');
     marker-placement: interior;
@@ -1881,6 +1911,7 @@
     }
   }
 
+  [feature = 'shop_art'],
   [feature = 'shop_bag'],
   [feature = 'shop_bakery'],
   [feature = 'shop_beauty'],
@@ -1892,6 +1923,7 @@
   [feature = 'shop_convenience'],
   [feature = 'shop_confectionery'],
   [feature = 'shop_copyshop'],
+  [feature = 'shop_deli'],
   [feature = 'shop_doityourself'],
   [feature = 'shop_dry_cleaning'],
   [feature = 'shop_hardware'],
@@ -1935,10 +1967,13 @@
   [feature = 'shop_seafood'],
   [feature = 'shop_sports'],
   [feature = 'shop_stationery'],
+  [feature = 'shop_tobacco'],
+  [feature = 'shop_tea'],
   [feature = 'shop_variety_store'],
   [feature = 'shop_wine'],
   [feature = 'shop_other']{
-    [zoom >= 17] {
+    [way_pixels > 3000][zoom >= 17],
+    [zoom >= 18] {
       text-name: "[name]";
       text-size: @standard-text-size;
       text-dy: 12;
diff --git a/citywalls.mss b/citywalls.mss
deleted file mode 100644
index 54202ff..0000000
--- a/citywalls.mss
+++ /dev/null
@@ -1,13 +0,0 @@
-#citywalls {
-  [zoom >= 14] {
-    line-color: grey;
-    line-width: 4;
-    line-opacity: 0.8;
-    [zoom >= 15] {
-      line-width: 6;
-    }
-    [zoom >= 16] {
-      line-width: 9;
-    }
-  }
-}
diff --git a/get-shapefiles.sh b/get-shapefiles.sh
index da232de..b6fe4cb 100755
--- a/get-shapefiles.sh
+++ b/get-shapefiles.sh
@@ -3,6 +3,21 @@ set -e -u
 
 UNZIP_OPTS=-qqun
 
+# check essential applications
+exists()
+{
+  command -v "$1" >/dev/null 2>&1
+}
+
+for application in curl tar unzip; do
+  if exists $application; then
+    echo $application 'detected...'
+  else
+    echo 'ERROR:' $application 'not detected, you need to install it first!'
+    exit 1
+  fi
+done
+
 # create and populate data dir
 mkdir -p data/
 mkdir -p data/world_boundaries
diff --git a/landcover.mss b/landcover.mss
index 4083763..bd83fea 100644
--- a/landcover.mss
+++ b/landcover.mss
@@ -33,7 +33,7 @@
 @bare_ground: #eee5dc;
 @campsite: #def6c0; // also caravan_site, picnic_site
 @cemetery: #aacbaf; // also grave_yard
- at construction: #c7c7b4;
+ at construction: #c7c7b4; // also brownfield
 @danger_area: pink;
 @garages: #dfddce;
 @heath: #d6d99f;
@@ -373,7 +373,6 @@
   }
 
   [feature = 'landuse_brownfield'],
-  [feature = 'landuse_landfill'],
   [feature = 'landuse_construction'] {
     [zoom >= 10] {
       polygon-fill: @construction;
@@ -382,6 +381,14 @@
     }
   }
 
+  [feature = 'landuse_landfill'] {
+    [zoom >= 10] {
+      polygon-fill: #b6b592;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
+    }
+  }
+
   [feature = 'natural_bare_rock'][zoom >= 9] {
     polygon-fill: @bare_ground;
     [way_pixels >= 4]  { polygon-gamma: 0.75; }
@@ -655,7 +662,7 @@
   [zoom >= 16] {
     line-color: #444;
     line-width: 0.4;
-    [barrier = 'hedge'] {
+    [feature = 'barrier_hedge'] {
       polygon-fill: #aed1a0;
     }
   }
@@ -666,14 +673,27 @@
     line-width: 0.4;
     line-color: #444;
   }
-  [barrier = 'embankment'][zoom >= 14] {
+  [feature = 'barrier_embankment'][zoom >= 14] {
     line-width: 0.4;
     line-color: #444;
   }
-  [barrier = 'hedge'][zoom >= 16] {
+  [feature = 'barrier_hedge'][zoom >= 16] {
     line-width: 3;
     line-color: #aed1a0;
   }
+  [feature = 'historic_citywalls'],
+  [feature = 'barrier_city_wall'] {
+    [zoom >= 15] {
+      line-width: 1.5;
+      line-color: lighten(#444, 30%);
+    }
+
+    [zoom >= 17] {
+      line-width: 3;
+      barrier/line-width: 0.4;
+      barrier/line-color: #444;
+    }
+  }
 }
 
 #tourism-boundary {
diff --git a/placenames.mss b/placenames.mss
index e5e33db..d381759 100644
--- a/placenames.mss
+++ b/placenames.mss
@@ -4,7 +4,7 @@
 @state-labels: desaturate(darken(@admin-boundaries, 5%), 20%);
 
 .country {
-  [admin_level = '2'][zoom >= 3][way_pixels > 1000][way_pixels < 360000] {
+  [zoom >= 3][way_pixels > 1000][way_pixels < 360000] {
     text-name: "[name]";
     text-size: 10;
     [zoom >= 4] {
@@ -31,56 +31,121 @@
 }
 
 .state {
-  [admin_level = '4'] {
-    [zoom >= 4][zoom < 5][way_pixels > 750],
-    [zoom >= 5][way_pixels > 3000][way_pixels < 196000] {
-      text-name: "[ref]";
-      text-size: 9;
-      text-fill: @state-labels;
-      text-face-name: @oblique-fonts;
-      text-halo-fill: @standard-halo-fill;
-      text-halo-radius: @standard-halo-radius * 1.5;
-      text-wrap-width: 0;
-      text-placement: interior;
-      [zoom >= 5] {
-        text-name: "[name]";
-        text-wrap-width: 30;
-      }
-      [zoom >= 7] {
-        text-size: 11;
-        text-wrap-width: 50;
-      }
+  [zoom >= 4][zoom < 5][way_pixels > 750],
+  [zoom >= 5][way_pixels > 3000][way_pixels < 196000] {
+    text-name: "[ref]";
+    text-size: 9;
+    text-fill: @state-labels;
+    text-face-name: @oblique-fonts;
+    text-halo-fill: @standard-halo-fill;
+    text-halo-radius: @standard-halo-radius * 1.5;
+    text-wrap-width: 0;
+    text-placement: interior;
+    [zoom >= 5] {
+      text-name: "[name]";
+      text-wrap-width: 30;
+    }
+    [zoom >= 7] {
+      text-size: 11;
+      text-wrap-width: 50;
+    }
+  }
+}
+
+#capital-names {
+  [zoom >= 4][zoom < 8][population > 600000],
+  [zoom >= 5][zoom < 8] {
+    shield-file: url('symbols/place/place-capital-6.svg');
+    shield-text-dx: 6;
+    shield-text-dy: 6;
+    shield-name: '[name]';
+    shield-face-name: @book-fonts;
+    shield-fill: @placenames;
+    shield-size: 11;
+    shield-wrap-width: 30;
+    shield-halo-fill: @standard-halo-fill;
+    shield-halo-radius: @standard-halo-radius * 1.5;
+    shield-placement-type: simple;
+    shield-placements: 'S,N,E,W';
+    [dir = 1] {
+      shield-placements: 'N,S,E,W';
+    }
+    shield-unlock-image: true;
+
+    [zoom >= 5] {
+      shield-wrap-width: 45;
+    }
+    [zoom >= 6] {
+      shield-size: 12;
+      shield-wrap-width: 60;
+    }
+    [zoom >= 7] {
+      shield-file: url('symbols/place/place-capital-8.svg');
+      shield-text-dx: 7;
+      shield-text-dy: 7;
+    }
+  }
+  [zoom >= 8] {
+    text-name: '[name]';
+    text-face-name: @book-fonts;
+    text-fill: @placenames;
+    text-size: 13;
+    text-wrap-width: 60;
+    text-halo-fill: @standard-halo-fill;
+    text-halo-radius: @standard-halo-radius * 1.5;
+
+    [zoom >= 11] {
+      text-size: 15;
+      text-wrap-width: 75;
     }
   }
 }
 
 #placenames-medium::high-importance {
   [category = 1][zoom < 14] {
-    [zoom >= 4][score >= 3000000],
-    [zoom >= 5][score >= 400000] {
-      text-name: "[name]";
-      text-size: 11;
-      text-fill: @placenames;
-      text-face-name: @book-fonts;
-      text-halo-radius: @standard-halo-radius * 1.5;
-      text-halo-fill: @standard-halo-fill;
-      text-wrap-width: 30;
+    [zoom >= 4][zoom < 5][score >= 3000000],
+    [zoom >= 5][zoom < 8][score >= 400000] {
+      shield-file: url('symbols/place/place-4.svg');
+      shield-text-dx: 4;
+      shield-text-dy: 4;
+      shield-name: '[name]';
+      shield-face-name: @book-fonts;
+      shield-fill: @placenames;
+      shield-size: 11;
+      shield-wrap-width: 30;
+      shield-halo-fill: @standard-halo-fill;
+      shield-halo-radius: @standard-halo-radius * 1.5;
+      shield-placement-type: simple;
+      shield-placements: 'S,N,E,W';
+      [dir = 1] {
+        shield-placements: 'N,S,E,W';
+      }
+      shield-unlock-image: true;
+
       [zoom >= 5] {
-        text-size: 11;
-        text-wrap-width: 45;
+        shield-wrap-width: 45;
       }
       [zoom >= 6] {
-        text-size: 12;
-        text-wrap-width: 60;
-      }
-      [zoom >= 8] {
-        text-size: 13;
-        text-wrap-width: 60;
+        shield-size: 12;
+        shield-wrap-width: 60;
+
+        shield-file: url('symbols/place/place-6.svg');
+        shield-text-dx: 5;
+        shield-text-dy: 5;
       }
-      [zoom >= 9] {
-        text-size: 14;
-        text-wrap-width: 65;
+      [zoom >= 7] {
+        shield-file: url('symbols/place/place-6-z7.svg');
       }
+    }
+    [zoom >= 8][score >= 400000] {
+      text-name: '[name]';
+      text-face-name: @book-fonts;
+      text-fill: @placenames;
+      text-size: 13;
+      text-wrap-width: 60;
+      text-halo-fill: @standard-halo-fill;
+      text-halo-radius: @standard-halo-radius * 1.5;
+
       [zoom >= 11] {
         text-size: 15;
         text-wrap-width: 75;
@@ -91,15 +156,36 @@
 
 #placenames-medium::medium-importance {
   [category = 1][score < 400000][zoom < 15] {
-    [zoom >= 6][score >= 70000],
-    [zoom >= 7] {
+    [zoom >= 6][zoom < 8][score >= 70000],
+    [zoom >= 7][zoom < 8] {
+      shield-file: url('symbols/place/place-4.svg');
+      shield-text-dx: 4;
+      shield-text-dy: 4;
+      shield-name: "[name]";
+      shield-size: 10;
+      shield-fill: @placenames;
+      shield-face-name: @book-fonts;
+      shield-halo-fill: @standard-halo-fill;
+      shield-halo-radius: @standard-halo-radius * 1.5;
+      shield-wrap-width: 30;
+      shield-placement-type: simple;
+      shield-placements: 'S,N,E,W';
+      [dir = 1] {
+        shield-placements: 'N,S,E,W';
+      }
+      shield-unlock-image: true;
+      [zoom >= 7] {
+        shield-file: url('symbols/place/place-4-z7.svg');
+      }
+    }
+    [zoom >= 8] {
       text-name: "[name]";
       text-size: 10;
       text-fill: @placenames;
       text-face-name: @book-fonts;
-      text-halo-radius: @standard-halo-radius * 1.5;
       text-halo-fill: @standard-halo-fill;
-      text-wrap-width: 30;
+      text-halo-radius: @standard-halo-radius * 1.5;
+      text-wrap-width: 60;
       [zoom >= 9] {
         text-size: 12;
         text-wrap-width: 60;
@@ -123,8 +209,8 @@
       text-size: 10;
       text-fill: @placenames;
       text-face-name: @book-fonts;
-      text-halo-radius: @standard-halo-radius * 1.5;
       text-halo-fill: @standard-halo-fill;
+      text-halo-radius: @standard-halo-radius * 1.5;
       text-wrap-width: 45;
       [zoom >= 11] {
         text-size: 11;
@@ -148,8 +234,8 @@
     text-size: 11;
     text-fill: @placenames;
     text-face-name: @book-fonts;
-    text-halo-radius: @standard-halo-radius * 1.5;
     text-halo-fill: @standard-halo-fill;
+    text-halo-radius: @standard-halo-radius * 1.5;
     text-wrap-width: 55;
     [zoom >= 14] {
       text-size: 14;
@@ -171,8 +257,8 @@
       text-size: 10;
       text-fill: @placenames;
       text-face-name: @book-fonts;
-      text-halo-radius: @standard-halo-radius * 1.5;
       text-halo-fill: @standard-halo-fill;
+      text-halo-radius: @standard-halo-radius * 1.5;
       text-wrap-width: 50;
       [zoom >= 14] {
         text-fill: @placenames-light;
@@ -199,8 +285,8 @@
       text-size: 10;
       text-fill: @placenames;
       text-face-name: @book-fonts;
-      text-halo-radius: @standard-halo-radius * 1.5;
       text-halo-fill: @standard-halo-fill;
+      text-halo-radius: @standard-halo-radius * 1.5;
       text-wrap-width: 45;
     }
     [zoom >= 16] {
@@ -211,3 +297,4 @@
     }
   }
 }
+
diff --git a/project.mml b/project.mml
index d9492e6..fffc907 100644
--- a/project.mml
+++ b/project.mml
@@ -607,32 +607,6 @@
       "advanced": {}
     },
     {
-      "name": "citywalls",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "citywalls",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE historic = 'citywalls')\nAS citywalls",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
       "name": "landuse-overlay",
       "srs-name": "900913",
       "geometry": "polygon",
@@ -667,7 +641,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, barrier\n  FROM planet_osm_line\n  WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',\n          'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall')\n    AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi'))\n) AS line_barriers",
+        "table": "(SELECT\n    way, COALESCE(historic, barrier) AS feature\n  FROM (SELECT way,\n    ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',\n          'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier,\n    ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic\n    FROM planet_osm_line\n    WHERE barrier IN ('chain', 'city_wall', 'embankmen [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -719,7 +693,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, barrier\n  FROM planet_osm_polygon\n  WHERE barrier IS NOT NULL\n) AS area_barriers",
+        "table": "(SELECT\n    way, barrier AS feature\n  FROM (SELECT way,\n    ('barrier_' || barrier) AS barrier\n    FROM planet_osm_polygon\n    WHERE barrier IS NOT NULL\n  ) AS features\n) AS area_barriers",
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1260,15 +1234,15 @@
       "advanced": {}
     },
     {
-      "name": "placenames-large",
+      "name": "country-names",
       "srs-name": "900913",
       "geometry": "point",
-      "class": "country state",
-      "id": "placenames-large",
+      "class": "country",
+      "id": "country-names",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name,\n    ref,\n    admin_level\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('2', '4')\n    AND name IS NOT NULL\n    AND way_area > 750*!pixel_width!::real*!pixel_height!::real -- only labels for larger areas are displayed\n  ORDER BY admin_level ASC, way_area DESC\n) AS placenames_large",
+        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level = '2'\n    AND name IS NOT NULL\n    AND way_area > 100*!pixel_width!::real*!pixel_height!::real\n  ORDER BY way_area DESC\n) AS country_names",
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1282,6 +1256,58 @@
       ],
       "properties": {
         "minzoom": 2
+      }
+    },
+    {
+      "name": "capital-names",
+      "srs-name": "900913",
+      "geometry": "point",
+      "class": "",
+      "id": "capital-names",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    name,\n    CASE\n      WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0\n    END as population,\n    round(random()) AS dir\n  FROM planet_osm_point\n  WHERE capital = 'yes'\n    AND admin_level = '2'\n  ORDER BY population DESC\n) AS capital_names",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 15,
+        "minzoom": 3
+      },
+      "advanced": {}
+    },
+    {
+      "name": "state-names",
+      "srs-name": "900913",
+      "geometry": "point",
+      "class": "state",
+      "id": "state-names",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name,\n    ref\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level = '4'\n    AND name IS NOT NULL\n    AND way_area > 100*!pixel_width!::real*!pixel_height!::real\n  ORDER BY way_area DESC\n) AS state_names",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 4
       },
       "advanced": {}
     },
@@ -1294,7 +1320,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    score,\n    CASE\n      WHEN (place = 'city' OR (capital = 'yes' AND score >= 100000)) THEN 1\n      ELSE 2\n    END as category\n  FROM \n    (SELECT\n        way,\n        place,\n        name,\n        capital,\n        (\n          (CASE\n            WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER\n            WHEN (place = 'city') THEN 100000\n            WHEN (place = 'town') THEN 1000\n            ELSE 1\n          EN [...]
+        "table": "(SELECT\n    way,\n    name,\n    score,\n    CASE\n      WHEN (place = 'city') THEN 1\n      ELSE 2\n    END as category,\n    round(random()) AS dir\n  FROM \n    (SELECT\n        way,\n        place,\n        name,\n        (\n          (CASE\n            WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER\n            WHEN (place = 'city') THEN 100000\n            WHEN (place = 'town') THEN 1000\n            ELSE 1\n          END)\n          *\n          (CA [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1399,7 +1425,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', \n                                          'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle [...]
+        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', \n                                          'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1425,7 +1451,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', \n                                          'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle [...]
+        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', \n                                          'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1634,7 +1660,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,\n    CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,\n    CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,\n    name,\n    CASE\n      WHEN oneway IN ('yes', '-1') THEN onewa [...]
+        "table": "(SELECT\n    way,\n    CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,\n    CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,\n    CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,\n    name,\n    CASE\n      WHEN oneway IN ('yes', '-1') THEN onewa [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1713,7 +1739,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', \n                                          'theme_park', 'museum', 'zoo', 'information', 'picnic_s [...]
+        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', \n                                          'theme_park', 'museum', 'zoo', 'information', 'picnic_s [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1765,7 +1791,7 @@
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_pixels,\n    feature,\n    access,\n    CONCAT(\n        name,\n        CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\\n' ELSE NULL END,\n        CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\\2212'), U&'\\00A0', 'm') ELSE NULL END\n    ) AS name,\n    CASE\n      WHEN \"natural\" IN ('peak', 'volcano', 'saddle') THEN elevation\n      ELSE NULL\n    END AS score,\n    operator,\n    ref,\n  [...]
+        "table": "(SELECT\n    way,\n    way_pixels,\n    feature,\n    access,\n    CONCAT(\n        name,\n        CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\\n' ELSE NULL END,\n        CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\\2212'), U&'\\00A0', 'm') ELSE NULL END\n    ) AS name,\n    CASE\n      WHEN \"natural\" IN ('peak', 'volcano', 'saddle') THEN elevation\n      ELSE NULL\n    END AS score,\n    operator,\n    ref,\n  [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -1835,41 +1861,15 @@
       "advanced": {}
     },
     {
-      "name": "housenumbers",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "housenumbers",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    \"addr:housenumber\",\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE \"addr:housenumber\" IS NOT NULL\n    AND building IS NOT NULL\nUNION ALL\nSELECT\n    way,\n    \"addr:housenumber\",\n    NULL AS way_pixels\n  FROM planet_osm_point\n  WHERE \"addr:housenumber\" IS NOT NULL\n  ORDER BY way_pixels DESC NULLS LAST\n) AS housenumbers",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 17
-      },
-      "advanced": {}
-    },
-    {
-      "name": "housenames",
+      "name": "addresses",
       "srs-name": "900913",
       "geometry": "point",
       "class": "",
-      "id": "housenames",
+      "id": "addresses",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
         "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    \"addr:housename\",\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE \"addr:housename\" IS NOT NULL\n    AND building IS NOT NULL\nUNION ALL\nSELECT\n    way,\n    \"addr:housename\",\n    NULL AS way_pixels\n  FROM planet_osm_point WHERE \"addr:housename\" IS NOT NULL\nORDER BY way_pixels DESC NULLS LAST\n) AS housenames",
+        "table": "(SELECT\n    way,\n    \"addr:housenumber\" AS addr_housenumber,\n    \"addr:housename\" AS addr_housename,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE ((\"addr:housenumber\" IS NOT NULL) OR (\"addr:housename\" IS NOT NULL))\n    AND building IS NOT NULL\nUNION ALL\nSELECT\n    way,\n    \"addr:housenumber\" AS addr_housenumber,\n    \"addr:housename\" AS addr_housename,\n    NULL AS way_pixels\n  FR [...]
         "geometry_field": "way",
         "type": "postgis",
         "key_field": "",
@@ -2097,7 +2097,6 @@
     "road-colors-generated.mss",
     "roads.mss",
     "power.mss",
-    "citywalls.mss",
     "placenames.mss",
     "buildings.mss",
     "stations.mss",
diff --git a/project.yaml b/project.yaml
index d8fe8ea..29aa170 100644
--- a/project.yaml
+++ b/project.yaml
@@ -44,7 +44,6 @@ Stylesheet:
   - "road-colors-generated.mss"
   - "roads.mss"
   - "power.mss"
-  - "citywalls.mss"
   - "placenames.mss"
   - "buildings.mss"
   - "stations.mss"
@@ -635,22 +634,6 @@ Layer:
       group-by: "layernotnull"
       minzoom: 9
     advanced: {}
-  - id: "citywalls"
-    name: "citywalls"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE historic = 'citywalls')
-        AS citywalls
-    advanced: {}
-    properties:
-      minzoom: 14
   - id: "landuse-overlay"
     name: "landuse-overlay"
     class: ""
@@ -679,11 +662,17 @@ Layer:
       <<: *osm2pgsql
       table: |-
         (SELECT
-            way, barrier
-          FROM planet_osm_line
-          WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
+            way, COALESCE(historic, barrier) AS feature
+          FROM (SELECT way,
+            ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
+                  'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier,
+            ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic
+            FROM planet_osm_line
+            WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
                   'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall')
-            AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi'))
+              OR historic = 'city_wall'
+              AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi'))
+          ) AS features
         ) AS line_barriers
     properties:
       minzoom: 14
@@ -713,9 +702,12 @@ Layer:
       <<: *osm2pgsql
       table: |-
         (SELECT
-            way, barrier
-          FROM planet_osm_polygon
-          WHERE barrier IS NOT NULL
+            way, barrier AS feature
+          FROM (SELECT way,
+            ('barrier_' || barrier) AS barrier
+            FROM planet_osm_polygon
+            WHERE barrier IS NOT NULL
+          ) AS features
         ) AS area_barriers
     properties:
       minzoom: 16
@@ -1506,9 +1498,9 @@ Layer:
     properties:
       minzoom: 16
     advanced: {}
-  - id: "placenames-large"
-    name: "placenames-large"
-    class: "country state"
+  - id: "country-names"
+    name: "country-names"
+    class: "country"
     geometry: "point"
     <<: *extents
     Datasource:
@@ -1517,18 +1509,62 @@ Layer:
         (SELECT
             way,
             way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            name,
-            ref,
-            admin_level
+            name
           FROM planet_osm_polygon
           WHERE boundary = 'administrative'
-            AND admin_level IN ('2', '4')
+            AND admin_level = '2'
             AND name IS NOT NULL
-            AND way_area > 750*!pixel_width!::real*!pixel_height!::real -- only labels for larger areas are displayed
-          ORDER BY admin_level ASC, way_area DESC
-        ) AS placenames_large
+            AND way_area > 100*!pixel_width!::real*!pixel_height!::real
+          ORDER BY way_area DESC
+        ) AS country_names
     properties:
       minzoom: 2
+  - id: "capital-names"
+    name: "capital-names"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            CASE
+              WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0
+            END as population,
+            round(random()) AS dir
+          FROM planet_osm_point
+          WHERE capital = 'yes'
+            AND admin_level = '2'
+          ORDER BY population DESC
+        ) AS capital_names
+    properties:
+      minzoom: 3
+      maxzoom: 15
+    advanced: {}
+  - id: "state-names"
+    name: "state-names"
+    class: "state"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            name,
+            ref
+          FROM planet_osm_polygon
+          WHERE boundary = 'administrative'
+            AND admin_level = '4'
+            AND name IS NOT NULL
+            AND way_area > 100*!pixel_width!::real*!pixel_height!::real
+          ORDER BY way_area DESC
+        ) AS state_names
+    properties:
+      minzoom: 4
     advanced: {}
   - id: "placenames-medium"
     name: "placenames-medium"
@@ -1543,15 +1579,15 @@ Layer:
             name,
             score,
             CASE
-              WHEN (place = 'city' OR (capital = 'yes' AND score >= 100000)) THEN 1
+              WHEN (place = 'city') THEN 1
               ELSE 2
-            END as category
+            END as category,
+            round(random()) AS dir
           FROM 
             (SELECT
                 way,
                 place,
                 name,
-                capital,
                 (
                   (CASE
                     WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER
@@ -1561,14 +1597,14 @@ Layer:
                   END)
                   *
                   (CASE
-                    WHEN (capital = 'yes') THEN 3
-                    WHEN (capital = '4') THEN 2
+                    WHEN (capital = '4' OR (capital = 'yes' AND admin_level = '4')) THEN 2
                     ELSE 1
                   END)
                 ) AS score
               FROM planet_osm_point
               WHERE place IN ('city', 'town')
                 AND name IS NOT NULL
+                AND capital IS NULL OR capital != 'yes' OR (capital = 'yes' AND admin_level != '2')
             ) as p
           ORDER BY score DESC, length(name) DESC, name
         ) AS placenames_medium
@@ -1680,11 +1716,11 @@ Layer:
                                             'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 
                                             'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 
                                             'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 
-                                            'copyshop', 'sports') THEN shop 
-                              WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 'baby_goods', 'bathroom_furnishing', 
+                                            'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                              WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 
                                             'bed', 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 
                                             'carpet', 'charity', 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', 
-                                            'deli', 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 
+                                            'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 
                                             'fabric', 'fishing', 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 
                                             'gallery', 'games', 'gas', 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 
                                             'herbalist', 'hobby', 'household', 'houseware', 'hunting', 'interior_decoration', 'kitchen', 
@@ -1692,7 +1728,7 @@ Layer:
                                             'motorcycle_repair', 'music', 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 
                                             'phone', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 
                                             'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir',  
-                                            'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'trade', 'tyres', 'vacuum_cleaner', 'video', 
+                                            'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 
                                             'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END,
               'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END,
               'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,
@@ -1761,10 +1797,10 @@ Layer:
                                             'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 
                                             'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 
                                             'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 
-                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports') THEN shop 
-                              WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 'baby_goods', 'bathroom_furnishing', 'bed',  
+                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                              WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed',  
                                             'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', 
-                                            'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', 'deli',   
+                                            'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy',   
                                             'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', 
                                             'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas',  
                                             'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household',  
@@ -1772,7 +1808,7 @@ Layer:
                                             'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', 'office_supplies',  
                                             'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', 'printing', 'radiotechnics', 
                                             'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', 
-                                            'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'trade', 'tyres', 
+                                            'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', 
                                             'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END,
               'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',
                                                   'dog_park') THEN leisure ELSE NULL END,
@@ -2010,7 +2046,9 @@ Layer:
           FROM planet_osm_line
           WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 
                             'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction')
-            AND name IS NOT NULL
+            AND (name IS NOT NULL
+              OR oneway IN ('yes', '-1')
+              OR junction IN ('roundabout'))
         ) AS roads_text_name
     properties:
       minzoom: 13
@@ -2099,10 +2137,10 @@ Layer:
                                             'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 
                                             'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 
                                             'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 
-                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports') THEN shop 
-                              WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 'baby_goods', 'bathroom_furnishing', 'bed', 
+                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                              WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', 
                                             'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', 
-                                            'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', 'deli', 
+                                            'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', 
                                             'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', 
                                             'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', 
                                             'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', 
@@ -2110,8 +2148,8 @@ Layer:
                                             'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', 
                                             'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', 
                                             'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', 
-                                            'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 'tea', 
-                                            'ticket', 'tiles', 'tobacco', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', 
+                                            'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo',
+                                            'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', 
                                             'yes') THEN 'other' ELSE NULL END,
               'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 
                                                   'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 
@@ -2241,11 +2279,11 @@ Layer:
                                                 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 'musical_instrument', 
                                                 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 
                                                 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 
-                                                'variety_store', 'wine', 'outdoor', 'copyshop', 'sports') THEN shop 
-                                  WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 
+                                                'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                                  WHEN shop IN ('accessories', 'antiques', 'appliance',
                                                 'baby_goods', 'bathroom_furnishing', 'bed', 'boat', 'bookmaker', 'boutique', 'builder', 
                                                 'building_materials', 'camera', 'car_service', 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', 
-                                                'communication', 'craft', 'curtain', 'dairy', 'deli', 'discount',  
+                                                'communication', 'craft', 'curtain', 'dairy', 'discount',  
                                                 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', 'flooring', 
                                                 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', 
                                                 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', 
@@ -2254,7 +2292,7 @@ Layer:
                                                 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', 
                                                 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', 
                                                 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 
-                                                'tea', 'ticket', 'tiles', 'tobacco', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 
+                                                'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 
                                                 'wholesale', 'yes') THEN 'other' ELSE NULL END,
                   'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track',  
                                                       'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina',  
@@ -2360,8 +2398,8 @@ Layer:
     properties:
       minzoom: 17
     advanced: {}
-  - id: "housenumbers"
-    name: "housenumbers"
+  - id: "addresses"
+    name: "addresses"
     class: ""
     geometry: "point"
     <<: *extents
@@ -2370,46 +2408,22 @@ Layer:
       table: |-
         (SELECT
             way,
-            "addr:housenumber",
+            "addr:housenumber" AS addr_housenumber,
+            "addr:housename" AS addr_housename,
             way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
           FROM planet_osm_polygon
-          WHERE "addr:housenumber" IS NOT NULL
+          WHERE (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL))
             AND building IS NOT NULL
         UNION ALL
         SELECT
             way,
-            "addr:housenumber",
+            "addr:housenumber" AS addr_housenumber,
+            "addr:housename" AS addr_housename,
             NULL AS way_pixels
           FROM planet_osm_point
-          WHERE "addr:housenumber" IS NOT NULL
+          WHERE ("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL)
           ORDER BY way_pixels DESC NULLS LAST
-        ) AS housenumbers
-    properties:
-      minzoom: 17
-    advanced: {}
-  - id: "housenames"
-    name: "housenames"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            "addr:housename",
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE "addr:housename" IS NOT NULL
-            AND building IS NOT NULL
-        UNION ALL
-        SELECT
-            way,
-            "addr:housename",
-            NULL AS way_pixels
-          FROM planet_osm_point WHERE "addr:housename" IS NOT NULL
-        ORDER BY way_pixels DESC NULLS LAST
-        ) AS housenames
+        ) AS addresses
     properties:
       minzoom: 17
     advanced: {}
diff --git a/roads.mss b/roads.mss
index 28b8db2..da793ec 100644
--- a/roads.mss
+++ b/roads.mss
@@ -8,14 +8,21 @@
 @raceway-fill: pink;
 @road-fill: #ddd;
 @footway-fill: salmon;
+ at footway-fill-noaccess: #bbbbbb;
 @steps-fill: @footway-fill;
+ at steps-fill-noaccess: #bbbbbb;
 @cycleway-fill: blue;
+ at cycleway-fill-noaccess: #9999ff;
 @bridleway-fill: green;
+ at bridleway-fill-noaccess: #aaddaa;
 @track-fill: #996600;
+ at track-fill-noaccess: #e2c5bb;
 @aeroway-fill: #bbc;
 @runway-fill: @aeroway-fill;
 @taxiway-fill: @aeroway-fill;
 @helipad-fill: @aeroway-fill;
+ at access-marking: #eaeaea;
+ at access-marking-living-street: #cccccc;
 
 @default-casing: white;
 @tertiary-casing: #8f8f8f;
@@ -1536,6 +1543,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           background/line-opacity: 0.4;
         }
         line/line-color: @steps-fill;
+        [access = 'no'] { line/line-color: @steps-fill-noaccess; }
         line/line-dasharray: 2,1;
         line/line-width: @steps-width-z13;
         [zoom >= 15] { line/line-width:  @steps-width-z15; }
@@ -1554,6 +1562,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           background/line-opacity: 0.4;
         }
         line/line-color: @bridleway-fill;
+        [access = 'no'] { line/line-color: @bridleway-fill-noaccess; }
         line/line-dasharray: 4,2;
         line/line-width: @bridleway-width-z13;
         [zoom >= 15] { line/line-width: @bridleway-width-z15; }
@@ -1585,6 +1594,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           }
         }
         line/line-color: @footway-fill;
+        [access = 'no'] { line/line-color: @footway-fill-noaccess; }
         line/line-dasharray: 1,3;
         line/line-join: round;
         line/line-cap: round;
@@ -1608,6 +1618,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = null] {
           line/line-color: @footway-fill;
+          [access = 'no'] { line/line-color: @footway-fill-noaccess; }
           line/line-dasharray: 1,3,2,4;
           line/line-join: round;
           line/line-cap: round;
@@ -1625,6 +1636,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = 'unpaved'] {
           line/line-color: @footway-fill;
+          [access = 'no'] { line/line-color: @footway-fill-noaccess; }
           line/line-dasharray: 1,4;
           line/line-join: round;
           line/line-cap: round;
@@ -1663,6 +1675,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           }
         }
         line/line-color: @cycleway-fill;
+        [access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
         line/line-dasharray: 1,3;
         line/line-join: round;
         line/line-cap: round;
@@ -1686,6 +1699,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = null] {
           line/line-color: @cycleway-fill;
+          [access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
           line/line-dasharray: 1,3,2,4;
           line/line-join: round;
           line/line-cap: round;
@@ -1703,6 +1717,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = 'unpaved'] {
           line/line-color: @cycleway-fill;
+          [access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
           line/line-dasharray: 1,4;
           line/line-join: round;
           line/line-cap: round;
@@ -1741,6 +1756,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
 
         /* Set the properties of the brown inside */
         line/line-color: @track-fill;
+        [access = 'no'] { line/line-color: @track-fill-noaccess; }
         line/line-dasharray: 5,4,2,4;
         line/line-cap: round;
         line/line-join: round;
@@ -2458,34 +2474,44 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
     [feature = 'highway_residential'],
     [feature = 'highway_living_street'] {
       [zoom >= 15] {
-        access/line-width: 6;
-        access/line-color: @destination-marking;
-        access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
+        access/line-color: @access-marking;
+        [feature = 'highway_living_street'] {
+          access/line-color: @access-marking-living-street;
+        }
         access/line-join: round;
         access/line-cap: round;
+        access/line-width: 3;
+        access/line-dasharray: 0.1,9;
+        [zoom >= 17] {
+          access/line-width: 6;
+          access/line-dasharray: 0.1,12;
+        }
       }
     }
     [feature = 'highway_road'],
     [feature = 'highway_service'][service = 'INT-normal'] {
       [zoom >= 15] {
-        access/line-width: 3;
-        access/line-color: @destination-marking;
-        access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
+        access/line-color: @access-marking;
         access/line-join: round;
         access/line-cap: round;
-        [zoom >= 16] { access/line-width: 6; }
+        access/line-width: 2;
+        access/line-dasharray: 0.1,4;
+        [zoom >= 17] {
+          access/line-width: 4;
+          access/line-dasharray: 0.1,9;
+        }
       }
     }
     [feature = 'highway_service'][service = 'INT-minor'] {
       [zoom >= 16] {
-        access/line-width: 2.5;
-        access/line-color: @destination-marking;
-        access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
+        access/line-color: @access-marking;
         access/line-join: round;
         access/line-cap: round;
+        access/line-width: 1;
+        access/line-dasharray: 0.1,4;
+        [zoom >= 17] {
+          access/line-width: 2;
+        }
       }
     }
   }
@@ -2499,55 +2525,42 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
     [feature = 'highway_residential'],
     [feature = 'highway_living_street'] {
       [zoom >= 15] {
-        access/line-width: 6;
-        access/line-color: @private-marking;
-        access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
+        access/line-color: @access-marking;
+        [feature = 'highway_living_street'] {
+          access/line-color: @access-marking-living-street;
+        }
         access/line-join: round;
         access/line-cap: round;
-        [feature = 'highway_motorway'],
-        [feature = 'highway_trunk'],
-        [feature = 'highway_primary'] {
-          access/line-color: @private-marking-for-red;
+        access/line-width: 2;
+        access/line-dasharray: 6,6;
+        [zoom >= 17] {
+          access/line-width: 6;
+          access/line-dasharray: 10,12;
         }
       }
     }
     [feature = 'highway_road'],
-    [feature = 'highway_track'],
     [feature = 'highway_service'][service = 'INT-normal'] {
       [zoom >= 15] {
-        access/line-width: 3;
-        access/line-color: @private-marking;
-        access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
+        access/line-color: @access-marking;
         access/line-join: round;
         access/line-cap: round;
-        [zoom >= 16] { access/line-width: 6; }
-      }
-    }
-    [feature = 'highway_footway'],
-    [feature = 'highway_path'],
-    [feature = 'highway_cycleway'],
-    [feature = 'highway_bridleway'],
-    [feature = 'highway_steps'] {
-      [zoom >= 15] {
-        access/line-width: 5;
-        access/line-color: @private-marking;
+        access/line-width: 2;
         access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
-        access/line-join: round;
-        access/line-cap: round;
-      }    
+        [zoom >= 17] {
+          access/line-width: 3;
+          access/line-dasharray: 8,10;
+        }
+      }
     }
-
     [feature = 'highway_service'][service = 'INT-minor'][zoom >= 16] {
-      [zoom >= 15] {
-        access/line-width: 2.5;
-        access/line-color: @private-marking;
-        access/line-dasharray: 6,8;
-        access/line-opacity: 0.5;
-        access/line-join: round;
-        access/line-cap: round;
+      access/line-color: @access-marking;
+      access/line-join: round;
+      access/line-cap: round;
+      access/line-width: 1;
+      access/line-dasharray: 6,8;
+      [zoom >= 17] {
+        access/line-width: 2;
       }
     }
   }
diff --git a/style.mss b/style.mss
index 67e77fc..4c05199 100644
--- a/style.mss
+++ b/style.mss
@@ -2,26 +2,274 @@ Map {
   background-color: @water-color;
 }
 
-/* A regular style. */
- at 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. */
- at 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. */
- at 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. (We have to default to one of JP, KR, SC, TC because
+    this carto style has no knowledge about what language the “names” tag
+    contains. As in Korea Han characters are not so widely used, it seems
+    better to default to either Chinese or Japanese. As Chinese exists in the
+    two variants SC/TC, it won’t be a uniform rendering anyway. So we default
+    to Japanese. However, this choise stays somewhat arbitrary and subjective.
+    See also https://github.com/gravitystorm/openstreetmap-carto/issues/2208)
+
+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.
+*/
+ at 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.
+*/
+ at 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.
+*/
+ at 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;
diff --git a/symbols/art-14.svg b/symbols/art-14.svg
new file mode 100644
index 0000000..310a13a
--- /dev/null
+++ b/symbols/art-14.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   id="svg2"
+   viewBox="0 0 14 14"
+   version="1.0"
+   width="14"
+   height="14">
+  <defs
+     id="defs58" />
+  <metadata
+     id="metadata54">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <path
+     d="M 7,-9.9999999e-8 C 3.134444,-9.9999999e-8 0,3.1344439 0,7 c 0,3.865556 3.134444,7 7,7 0.645556,0 1.1660156,-0.520461 1.1660156,-1.166016 0,-0.303333 -0.1121788,-0.577093 -0.3027344,-0.783203 -0.1827769,-0.206111 -0.2910156,-0.473992 -0.2910156,-0.773437 0,-0.645556 0.5204596,-1.166016 1.1660156,-1.166016 l 1.3730468,0 C 12.257994,10.111328 14,8.369323 14,6.222656 c 0,-3.4377778 -3.134445,-6.2226561 -7,-6.2226561 z M 8.9335938,1.3046874 A 1.3891786,1.3891786 0 0 1 10.322266,2.693 [...]
+     id="path4" />
+</svg>
diff --git a/symbols/deli-14.svg b/symbols/deli-14.svg
new file mode 100644
index 0000000..467b036
--- /dev/null
+++ b/symbols/deli-14.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   height="14"
+   width="14"
+   version="1.0"
+   viewBox="0 0 14 14"
+   id="svg2">
+  <defs
+     id="defs58" />
+  <metadata
+     id="metadata54">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <path
+     d="M 5.9999999,0 8,0 c 2,0 3,0 3,1.0000001 l 0,1 -8.0000003,0 0,-1 C 2.9999997,-4.0395351e-8 3.9999998,0 5.9999999,0 Z M 4,3 c -10e-8,1.9999997 -1.5124998,1.0000396 -1.5,3 l 0.03125,5 C 2.5374999,11.999981 3.0000004,14 5,14 l 4,0 c 2,0 2.5,-2 2.5,-3 l 0,-5 C 11.5,4.0000006 10,4.9999997 10,3 L 4,3 Z m 3,4 c 1.0424134,0 3.126953,0.6074219 3.126953,0.6074219 l 0,1.3925781 0,1.392578 C 10.126953,10.392578 8.0424135,11 7,11 5.9575867,11 3.8730469,10.392578 3.8730469,10.392578 l 0,-1.3925 [...]
+     style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+     id="path4173" />
+</svg>
diff --git a/symbols/place/place-4-z7.svg b/symbols/place/place-4-z7.svg
new file mode 100644
index 0000000..4130e8d
--- /dev/null
+++ b/symbols/place/place-4-z7.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="4"
+   height="4"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     style="fill:#fdfdfc;fill-opacity:1;stroke:#424236;stroke-width:0.49999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2987"
+     d="m 3.7500001,2.000001 a 1.7500001,1.7500007 0 0 1 -3.50000009,0 1.7500001,1.7500007 0 1 1 3.50000009,0 z" />
+</svg>
diff --git a/symbols/place/place-4.svg b/symbols/place/place-4.svg
new file mode 100644
index 0000000..1150401
--- /dev/null
+++ b/symbols/place/place-4.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="4"
+   height="4"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     style="fill:#fdfdfc;fill-opacity:1;stroke:#575749;stroke-width:0.49999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2987"
+     d="m 3.7500001,2.000001 a 1.7500001,1.7500007 0 0 1 -3.50000009,0 1.7500001,1.7500007 0 1 1 3.50000009,0 z" />
+</svg>
diff --git a/symbols/place/place-6-z7.svg b/symbols/place/place-6-z7.svg
new file mode 100644
index 0000000..c4fe4ef
--- /dev/null
+++ b/symbols/place/place-6-z7.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   id="svg2"
+   height="6"
+   width="6"
+   version="1.1">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     d="M 5.6,3 A 2.6,2.6000012 0 0 1 0.39999998,3 2.6,2.6000012 0 1 1 5.6,3 Z"
+     id="path2987"
+     style="fill:#f9f9f7;fill-opacity:1;stroke:#6f6f5b;stroke-width:0.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/symbols/place/place-6.svg b/symbols/place/place-6.svg
new file mode 100644
index 0000000..e0abe6d
--- /dev/null
+++ b/symbols/place/place-6.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="6"
+   height="6"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     style="fill:#f9f9f7;fill-opacity:1;stroke:#7e7e6a;stroke-width:0.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2987"
+     d="M 5.6,3 A 2.6,2.6000012 0 0 1 0.39999998,3 2.6,2.6000012 0 1 1 5.6,3 Z" />
+</svg>
diff --git a/symbols/place/place-capital-6.svg b/symbols/place/place-capital-6.svg
new file mode 100644
index 0000000..645aeb5
--- /dev/null
+++ b/symbols/place/place-capital-6.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="6"
+   height="6"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     style="fill:#fdfdfc;fill-opacity:1;stroke:#575749;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2987"
+     d="m 5.5,3.000081 a 2.5,2.5 0 0 1 -5.00000001,0 2.5,2.5 0 1 1 5.00000001,0 z" />
+  <path
+     d="M 4,3 A 1,1 0 0 1 2,3 1,1 0 1 1 4,3 z"
+     id="path2986"
+     style="fill:#575749;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/place/place-capital-8.svg b/symbols/place/place-capital-8.svg
new file mode 100644
index 0000000..e385e1a
--- /dev/null
+++ b/symbols/place/place-capital-8.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="8"
+   height="8"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="matrix(1.5057013,0,0,1.5010517,-0.0107513,-1571.7666)"
+     id="layer1">
+    <path
+       d="m 4.9210516,1049.7756 a 2.2573419,2.2657569 0 0 1 -4.5146837,0 2.2573419,2.2657569 0 1 1 4.5146837,0 z"
+       id="path2987"
+       style="fill:#fdfdfc;fill-opacity:1;stroke:#525244;stroke-width:0.79820418;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+  <path
+     d="m 5.5,4 a 1.5,1.5 0 0 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+     id="path2986"
+     style="fill:#525244;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/tea-14.svg b/symbols/tea-14.svg
new file mode 100644
index 0000000..d638541
--- /dev/null
+++ b/symbols/tea-14.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   id="svg5114"
+   viewBox="0 0 14 14"
+   version="1.1"
+   width="14"
+   height="14">
+  <defs
+     id="defs14" />
+  <g
+     id="layer1"
+     transform="translate(-85.520606,-485.84148)">
+    <g
+       id="g4172"
+       transform="translate(0.0112773,-2.31883)">
+      <path
+         id="path4153"
+         transform="translate(85.509329,488.16031)"
+         d="M 6.8320312 1.8984375 A 1.2055479 0.94874388 0 0 0 5.6269531 2.8476562 A 1.2055479 0.94874388 0 0 0 6.4667969 3.7519531 C 5.0890082 3.8629576 3.899133 4.5711593 3.2011719 5.6171875 C 3.1871345 5.6109021 3.1742264 5.5975228 3.1601562 5.5917969 C 2.5113592 5.3277569 1.5381441 5.1952256 0.90820312 5.6035156 C 0.29481313 6.0010956 0.037033125 6.7123894 0.001953125 7.5996094 C -0.069296875 9.4025694 1.2820813 9.7638625 2.6289062 9.9453125 C 2.7380092 9.9600108 2.8456065 9.9520394  [...]
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date />
+        <dc:description />
+        <dc:source />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jotam</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/symbols/tobacco-14.svg b/symbols/tobacco-14.svg
new file mode 100644
index 0000000..72454af
--- /dev/null
+++ b/symbols/tobacco-14.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="svg2"
+   x="0px"
+   y="0px"
+   width="14"
+   height="14"
+   viewBox="0 0 14 14"
+   enable-background="new 0 0 580 580"
+   xml:space="preserve"><metadata
+     id="metadata13"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs11" /><path
+     d="m 2,11 1,0 0,3 -1,0 z M 1,10 C 1.6666667,9 3,8 3,7 3,6 0,5 0,3 0,1 2,1 4,0 3.6666667,1.3333333 2,2 2,3 3,4 5,5 5,7 5,9 4,9 1,10 Z m -1,1 1,0 0,3 -1,0 z m 14,3 -10,0 0,-3 10,0 z"
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+     id="path3357-4" /></svg>
\ No newline at end of file
diff --git a/water.mss b/water.mss
index 918ba1d..f4f2d6c 100644
--- a/water.mss
+++ b/water.mss
@@ -2,6 +2,13 @@
 @glacier: #ddecec;
 @glacier-line: #9cf;
 
+ at water-font-size: 10;
+ at water-font-size-big: 12;
+ at water-font-size-bigger: 15;
+ at water-wrap-width-size: 25;
+ at water-wrap-width-size-big: 35;
+ at water-wrap-width-size-bigger: 45;
+
 #water-areas {
   [natural = 'glacier']::natural {
     [zoom >= 6] {
@@ -285,12 +292,20 @@
     [zoom >= 10][way_pixels > 3000],
     [zoom >= 17] {
       text-name: "[name]";
-      text-size: 12;
+      text-size: @water-font-size;
+      text-wrap-width: @water-wrap-width-size;
+      [way_pixels > 12000] {
+        text-size: @water-font-size-big;
+        text-wrap-width: @water-wrap-width-size-big;
+      }
+      [way_pixels > 48000] {
+        text-size: @water-font-size-bigger;
+        text-wrap-width: @water-wrap-width-size-bigger;
+      }
       text-fill: @water-text;
       text-face-name: @oblique-fonts;
       text-halo-radius: @standard-halo-radius;
       text-halo-fill: @standard-halo-fill;
-      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
     }
   }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/openstreetmap-carto.git



More information about the Pkg-grass-devel mailing list