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