diff --git a/build_data.js b/build_data.js
index 759ece65e..986a579c5 100644
--- a/build_data.js
+++ b/build_data.js
@@ -22,7 +22,9 @@ const suggestions = require('name-suggestion-index/name-suggestions.json');
// fontawesome icons
const fontawesome = require('@fortawesome/fontawesome');
const fas = require('@fortawesome/fontawesome-free-solid').default;
-fontawesome.library.add(fas);
+const far = require('@fortawesome/fontawesome-free-regular').default;
+const fab = require('@fortawesome/fontawesome-free-brands').default;
+fontawesome.library.add(fas, far, fab);
module.exports = function buildData() {
@@ -146,7 +148,7 @@ function generateCategories(tstrings, faIcons) {
categories[id] = category;
// fontawesome icon, remember for later
- if (/^fa-/.test(category.icon)) {
+ if (/^fa[srb]-/.test(category.icon)) {
faIcons[category.icon] = {};
}
});
@@ -179,7 +181,7 @@ function generateFields(tstrings, faIcons) {
fields[id] = field;
// fontawesome icon, remember for later
- if (/^fa-/.test(field.icon)) {
+ if (/^fa[srb]-/.test(field.icon)) {
faIcons[field.icon] = {};
}
});
@@ -277,7 +279,7 @@ function generatePresets(tstrings, faIcons) {
presets[id] = preset;
// fontawesome icon, remember for later
- if (/^fa-/.test(preset.icon)) {
+ if (/^fa[srb]-/.test(preset.icon)) {
faIcons[preset.icon] = {};
}
});
@@ -377,9 +379,9 @@ function generateTaginfo(presets, fields) {
} else if (/^temaki-/.test(preset.icon)) {
tag.icon_url = 'https://raw.githubusercontent.com/bhousel/temaki/master/icons/' +
preset.icon.replace(/^temaki-/, '') + '.svg?sanitize=true';
- } else if (/^fa-/.test(preset.icon)) {
+ } else if (/^fa[srb]-/.test(preset.icon)) {
tag.icon_url = 'https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/' +
- preset.icon.replace(/^fa-/, '') + '.svg?sanitize=true';
+ preset.icon + '.svg?sanitize=true';
}
coalesceTags(taginfo, tag);
@@ -536,9 +538,10 @@ function writeEnJson(tstrings) {
function writeFaIcons(faIcons) {
for (var key in faIcons) {
- var name = key.substring(3); // without `fa-`
- var def = fontawesome.findIconDefinition({ iconName: name });
- writeFileProm('svg/fontawesome/' + name + '.svg', fontawesome.icon(def).html);
+ var prefix = key.substring(0, 3); // `fas`, `far`, `fab`
+ var name = key.substring(4);
+ var def = fontawesome.findIconDefinition({ prefix: prefix, iconName: name });
+ writeFileProm('svg/fontawesome/' + key + '.svg', fontawesome.icon(def).html);
}
}
diff --git a/data/presets/README.md b/data/presets/README.md
index 39c107c2e..ab6362837 100644
--- a/data/presets/README.md
+++ b/data/presets/README.md
@@ -217,7 +217,9 @@ You can use any of the following open source map icon sets as preset icons.
* [Maki](http://www.mapbox.com/maki/) - prefix: `maki-`
* [Temaki](http://bhousel.github.io/temaki/docs/) - prefix: `temaki-`
-* [Font Awesome](https://fontawesome.com/icons?d=gallery&s=solid) (free, solid only) - prefix: `fa-`
+* [Font Awesome (free, solid)](https://fontawesome.com/icons?d=gallery&s=solid) - prefix: `fas-`
+* [Font Awesome (free, regular)](https://fontawesome.com/icons?d=gallery&s=regular) - prefix: `far-`
+* [Font Awesome (free, brands)](https://fontawesome.com/icons?d=gallery&s=brands) - prefix: `fab-`
When specifying an icon, use the prefixed version of the name, for example `"icon": "maki-park"`.
diff --git a/data/presets/presets.json b/data/presets/presets.json
index 3c7e6e2ce..697fb5af3 100644
--- a/data/presets/presets.json
+++ b/data/presets/presets.json
@@ -2021,7 +2021,7 @@
"name": "Monastery Grounds"
},
"amenity/motorcycle_parking": {
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"fields": [
"capacity",
"operator",
@@ -6485,7 +6485,7 @@
"matchScore": 0.01
},
"emergency/ambulance_station": {
- "icon": "fa-ambulance",
+ "icon": "fas-ambulance",
"fields": [
"name",
"operator",
@@ -18056,7 +18056,7 @@
"name": "Money Lender"
},
"shop/motorcycle_repair": {
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"fields": [
"name",
"operator",
@@ -18084,7 +18084,7 @@
"name": "Motorcycle Repair Shop"
},
"shop/motorcycle": {
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"fields": [
"name",
"operator",
@@ -83203,7 +83203,7 @@
"shop": "motorcycle"
},
"name": "Harley Davidson",
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"geometry": [
"point",
"area"
@@ -83224,7 +83224,7 @@
"shop": "motorcycle"
},
"name": "Yamaha",
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"geometry": [
"point",
"area"
diff --git a/data/presets/presets/amenity/motorcycle_parking.json b/data/presets/presets/amenity/motorcycle_parking.json
index 2f123b66d..904b31854 100644
--- a/data/presets/presets/amenity/motorcycle_parking.json
+++ b/data/presets/presets/amenity/motorcycle_parking.json
@@ -1,5 +1,5 @@
{
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"fields": [
"capacity",
"operator",
diff --git a/data/presets/presets/emergency/ambulance_station.json b/data/presets/presets/emergency/ambulance_station.json
index 3966564ac..e70167d3a 100644
--- a/data/presets/presets/emergency/ambulance_station.json
+++ b/data/presets/presets/emergency/ambulance_station.json
@@ -1,5 +1,5 @@
{
- "icon": "fa-ambulance",
+ "icon": "fas-ambulance",
"fields": [
"name",
"operator",
diff --git a/data/presets/presets/shop/motorcycle.json b/data/presets/presets/shop/motorcycle.json
index 0bc76c17e..a7da7320c 100644
--- a/data/presets/presets/shop/motorcycle.json
+++ b/data/presets/presets/shop/motorcycle.json
@@ -1,5 +1,5 @@
{
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"fields": [
"name",
"operator",
diff --git a/data/presets/presets/shop/motorcycle_repair.json b/data/presets/presets/shop/motorcycle_repair.json
index ea87b2a59..420d1a65c 100644
--- a/data/presets/presets/shop/motorcycle_repair.json
+++ b/data/presets/presets/shop/motorcycle_repair.json
@@ -1,5 +1,5 @@
{
- "icon": "fa-motorcycle",
+ "icon": "fas-motorcycle",
"fields": [
"name",
"operator",
diff --git a/data/taginfo.json b/data/taginfo.json
index 732043e8d..c175ba0b3 100644
--- a/data/taginfo.json
+++ b/data/taginfo.json
@@ -924,7 +924,7 @@
"node",
"area"
],
- "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/motorcycle.svg?sanitize=true"
+ "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/fas-motorcycle.svg?sanitize=true"
},
{
"key": "amenity",
@@ -2946,7 +2946,7 @@
"node",
"area"
],
- "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/ambulance.svg?sanitize=true"
+ "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/fas-ambulance.svg?sanitize=true"
},
{
"key": "emergency",
@@ -7313,7 +7313,7 @@
"node",
"area"
],
- "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/motorcycle.svg?sanitize=true"
+ "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/fas-motorcycle.svg?sanitize=true"
},
{
"key": "shop",
@@ -7323,7 +7323,7 @@
"node",
"area"
],
- "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/motorcycle.svg?sanitize=true"
+ "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/fas-motorcycle.svg?sanitize=true"
},
{
"key": "shop",
diff --git a/modules/ui/preset_icon.js b/modules/ui/preset_icon.js
index e19867eee..2a9d92e33 100644
--- a/modules/ui/preset_icon.js
+++ b/modules/ui/preset_icon.js
@@ -32,7 +32,7 @@ export function uiPresetIcon() {
var picon = getIcon(p, geom);
var isMaki = /^maki-/.test(picon);
var isTemaki = /^temaki-/.test(picon);
- var isFa = /^fa-/.test(picon);
+ var isFa = /^fa[srb]-/.test(picon);
var isPOI = isMaki || isTemaki || isFa;
var isFramed = (geom === 'area' || geom === 'vertex');
diff --git a/package.json b/package.json
index df76f77d5..80b77d5cd 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
"dist:svg:community": "svg-sprite --symbol --symbol-dest . --shape-id-generator \"community-%s\" --symbol-sprite dist/img/community-sprite.svg node_modules/osm-community-index/dist/img/*.svg",
"dist:svg:maki": "svg-sprite --symbol --symbol-dest . --shape-id-generator \"maki-%s\" --symbol-sprite dist/img/maki-sprite.svg node_modules/@mapbox/maki/icons/*.svg",
"dist:svg:temaki": "svg-sprite --symbol --symbol-dest . --shape-id-generator \"temaki-%s\" --symbol-sprite dist/img/temaki-sprite.svg node_modules/temaki/icons/*.svg",
- "dist:svg:fa": "svg-sprite --symbol --symbol-dest . --shape-id-generator \"fa-%s\" --symbol-sprite dist/img/fa-sprite.svg svg/fontawesome/*.svg",
+ "dist:svg:fa": "svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/fa-sprite.svg svg/fontawesome/*.svg",
"imagery": "node data/update_imagery",
"lint": "eslint *.js js/id test/spec modules",
"start": "node development_server.js develop",
@@ -42,7 +42,9 @@
},
"devDependencies": {
"@fortawesome/fontawesome": "^1.1.5",
- "@fortawesome/fontawesome-free-solid": "^5.0.9",
+ "@fortawesome/fontawesome-free-brands": "^5.0.13",
+ "@fortawesome/fontawesome-free-regular": "^5.0.13",
+ "@fortawesome/fontawesome-free-solid": "^5.0.13",
"@mapbox/maki": "^4.0.0",
"chai": "^4.1.0",
"colors": "^1.1.2",
diff --git a/svg/fontawesome/ambulance.svg b/svg/fontawesome/ambulance.svg
deleted file mode 100644
index ad0bb2d27..000000000
--- a/svg/fontawesome/ambulance.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/svg/fontawesome/fas-ambulance.svg b/svg/fontawesome/fas-ambulance.svg
new file mode 100644
index 000000000..1fa5eb96b
--- /dev/null
+++ b/svg/fontawesome/fas-ambulance.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/svg/fontawesome/fas-motorcycle.svg b/svg/fontawesome/fas-motorcycle.svg
new file mode 100644
index 000000000..9abfc7fc6
--- /dev/null
+++ b/svg/fontawesome/fas-motorcycle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/svg/fontawesome/motorcycle.svg b/svg/fontawesome/motorcycle.svg
deleted file mode 100644
index 531d07e45..000000000
--- a/svg/fontawesome/motorcycle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file