diff --git a/modules/svg/labels.js b/modules/svg/labels.js index 88adf4906..84b8026a7 100644 --- a/modules/svg/labels.js +++ b/modules/svg/labels.js @@ -1,6 +1,7 @@ import * as d3 from 'd3'; import _ from 'lodash'; import rbush from 'rbush'; + import { geoExtent, geoEuclideanDistance, @@ -8,9 +9,15 @@ import { geoPolygonIntersectsPolygon, geoPathLength } from '../geo/index'; + import { osmEntity } from '../osm/index'; import { utilDetect } from '../util/detect'; -import { utilDisplayName, utilEntitySelector } from '../util/index'; + +import { + utilDisplayName, + utilDisplayNameForPath, + utilEntitySelector +} from '../util/index'; export function svgLabels(projection, context) { @@ -134,7 +141,7 @@ export function svgLabels(projection, context) { .data(entities, osmEntity.key) .attr('startOffset', '50%') .attr('xlink:href', function(d) { return '#labelpath-' + d.id; }) - .text(utilDisplayName); + .text(utilDisplayNameForPath); } @@ -313,9 +320,11 @@ export function svgLabels(projection, context) { entity = labelable[k][i]; geometry = entity.geometry(graph); - var name = utilDisplayName(entity), + var getName = (geometry === 'line') ? utilDisplayNameForPath : utilDisplayName, + name = getName(entity), width = name && textWidth(name, fontSize), p; + if (geometry === 'point') { p = getPointLabel(entity, width, fontSize, geometry); } else if (geometry === 'vertex' && !lowZoom) { diff --git a/modules/util/index.js b/modules/util/index.js index e84dc86db..66847ad5f 100644 --- a/modules/util/index.js +++ b/modules/util/index.js @@ -3,6 +3,7 @@ export { utilEntitySelector } from './util'; export { utilEntityOrMemberSelector } from './util'; export { utilGetAllNodes } from './util'; export { utilDisplayName } from './util'; +export { utilDisplayNameForPath } from './util'; export { utilDisplayType } from './util'; export { utilStringQs } from './util'; export { utilQsString } from './util'; diff --git a/modules/util/svg_paths_arabic_fix.js b/modules/util/svg_paths_arabic_fix.js index 7f78a08d7..f55878402 100644 --- a/modules/util/svg_paths_arabic_fix.js +++ b/modules/util/svg_paths_arabic_fix.js @@ -1,3 +1,6 @@ +// see https://github.com/openstreetmap/iD/pull/3707 +// https://gist.github.com/mapmeld/556b09ddec07a2044c76e1ef45f01c60 + var chars = { // madda above alef 1570: { initial: 'آ‎', isolated: 'ﺁ', medial: 'ﺁ', final: 'ﺂ' }, diff --git a/modules/util/util.js b/modules/util/util.js index cd48a924d..229d0d14b 100644 --- a/modules/util/util.js +++ b/modules/util/util.js @@ -69,9 +69,16 @@ export function utilDisplayName(entity) { } } + return name; +} + + +export function utilDisplayNameForPath(entity) { + var name = utilDisplayName(entity); var isFirefox = utilDetect().browser.toLowerCase().indexOf('firefox') > -1; var arabicRegex = /[\u0600-\u06FF]/g; - if (!isFirefox && name && (entity.tags.highway || entity.tags.railway) && arabicRegex.test(name)) { + + if (!isFirefox && name && arabicRegex.test(name)) { name = fixArabicScriptTextForSvg(name); }