Skip to content

Commit 2effef5

Browse files
authored
Merge pull request #6652 from baurt/mapbox-glyphs
Fix Non-Mapbox Scatter with text markers
2 parents e1d8b95 + bf674e1 commit 2effef5

14 files changed

+104
-13
lines changed

draftlogs/6652_fix.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- fix text markers on non-mapbox styled maps [[#6652](https://github.com/plotly/plotly.js/pull/6652)], with thanks to @baurt for the contribution!

src/plots/mapbox/constants.js

+14-7
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ var stylesNonMapbox = {
4747
source: 'plotly-osm-tiles',
4848
minzoom: 0,
4949
maxzoom: 22
50-
}]
50+
}],
51+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
5152
},
5253
'white-bg': {
5354
id: 'white-bg',
@@ -59,7 +60,8 @@ var stylesNonMapbox = {
5960
paint: {'background-color': '#FFFFFF'},
6061
minzoom: 0,
6162
maxzoom: 22
62-
}]
63+
}],
64+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
6365
},
6466
'carto-positron': {
6567
id: 'carto-positron',
@@ -78,7 +80,8 @@ var stylesNonMapbox = {
7880
source: 'plotly-carto-positron',
7981
minzoom: 0,
8082
maxzoom: 22
81-
}]
83+
}],
84+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
8285
},
8386
'carto-darkmatter': {
8487
id: 'carto-darkmatter',
@@ -97,7 +100,8 @@ var stylesNonMapbox = {
97100
source: 'plotly-carto-darkmatter',
98101
minzoom: 0,
99102
maxzoom: 22
100-
}]
103+
}],
104+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
101105
},
102106
'stamen-terrain': {
103107
id: 'stamen-terrain',
@@ -116,7 +120,8 @@ var stylesNonMapbox = {
116120
source: 'plotly-stamen-terrain',
117121
minzoom: 0,
118122
maxzoom: 22
119-
}]
123+
}],
124+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
120125
},
121126
'stamen-toner': {
122127
id: 'stamen-toner',
@@ -135,7 +140,8 @@ var stylesNonMapbox = {
135140
source: 'plotly-stamen-toner',
136141
minzoom: 0,
137142
maxzoom: 22
138-
}]
143+
}],
144+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
139145
},
140146
'stamen-watercolor': {
141147
id: 'stamen-watercolor',
@@ -154,7 +160,8 @@ var stylesNonMapbox = {
154160
source: 'plotly-stamen-watercolor',
155161
minzoom: 0,
156162
maxzoom: 22
157-
}]
163+
}],
164+
glyphs: 'https://fonts.openmaptiles.org/{fontstack}/{range}.pbf'
158165
}
159166
};
160167

src/traces/scatter/text_defaults.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) {
1010
opts = opts || {};
1111

1212
coerce('textposition');
13-
Lib.coerceFont(coerce, 'textfont', layout.font);
13+
Lib.coerceFont(coerce, 'textfont', opts.font || layout.font);
1414

1515
if(!opts.noSelect) {
1616
coerce('selected.textfont.color');

src/traces/scattermapbox/convert.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,8 @@ module.exports = function convert(gd, calcTrace) {
154154
Lib.extendFlat(symbol.layout, {
155155
'text-size': trace.textfont.size,
156156
'text-anchor': textOpts.anchor,
157-
'text-offset': textOpts.offset
158-
159-
// TODO font family
160-
// 'text-font': symbol.textfont.family.split(', '),
157+
'text-offset': textOpts.offset,
158+
'text-font': trace.textfont.family.split(', '),
161159
});
162160

163161
Lib.extendFlat(symbol.paint, {

src/traces/scattermapbox/defaults.js

+46-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,44 @@ var handleTextDefaults = require('../scatter/text_defaults');
99
var handleFillColorDefaults = require('../scatter/fillcolor_defaults');
1010
var attributes = require('./attributes');
1111

12+
// Must use one of the following fonts as the family, else default to 'Open Sans Regular'
13+
// See https://github.com/openmaptiles/fonts/blob/gh-pages/fontstacks.json
14+
var supportedFonts = [
15+
'Metropolis Black Italic',
16+
'Metropolis Black',
17+
'Metropolis Bold Italic',
18+
'Metropolis Bold',
19+
'Metropolis Extra Bold Italic',
20+
'Metropolis Extra Bold',
21+
'Metropolis Extra Light Italic',
22+
'Metropolis Extra Light',
23+
'Metropolis Light Italic',
24+
'Metropolis Light',
25+
'Metropolis Medium Italic',
26+
'Metropolis Medium',
27+
'Metropolis Regular Italic',
28+
'Metropolis Regular',
29+
'Metropolis Semi Bold Italic',
30+
'Metropolis Semi Bold',
31+
'Metropolis Thin Italic',
32+
'Metropolis Thin',
33+
'Open Sans Bold Italic',
34+
'Open Sans Bold',
35+
'Open Sans Extra Bold Italic',
36+
'Open Sans Extra Bold',
37+
'Open Sans Italic',
38+
'Open Sans Light Italic',
39+
'Open Sans Light',
40+
'Open Sans Regular',
41+
'Open Sans Semibold Italic',
42+
'Open Sans Semibold',
43+
'Klokantech Noto Sans Bold',
44+
'Klokantech Noto Sans CJK Bold',
45+
'Klokantech Noto Sans CJK Regular',
46+
'Klokantech Noto Sans Italic',
47+
'Klokantech Noto Sans Regular'
48+
];
49+
1250
module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
1351
function coerce(attr, dflt) {
1452
return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);
@@ -66,7 +104,14 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
66104
coerce('cluster.enabled', clusterEnabledDflt);
67105

68106
if(subTypes.hasText(traceOut)) {
69-
handleTextDefaults(traceIn, traceOut, layout, coerce, {noSelect: true});
107+
handleTextDefaults(traceIn, traceOut, layout, coerce,
108+
{noSelect: true,
109+
font: {
110+
family: supportedFonts.indexOf(layout.font.family) !== -1 ? layout.font.family : 'Open Sans Regular',
111+
size: layout.font.size,
112+
color: layout.font.color
113+
}
114+
});
70115
}
71116

72117
coerce('fill');
65.1 KB
Loading

test/image/baselines/pattern_bars.png

-47 Bytes
Loading
-32 Bytes
Loading
Loading
Loading
-8 Bytes
Loading
Loading
Loading
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"data": [
3+
{
4+
"type": "scattermapbox",
5+
"name": "carto-positron",
6+
"lon": [ 10, 5 ],
7+
"lat": [ 20, 10 ],
8+
"text":["pt1","pt2"],
9+
"mode":"text"
10+
11+
},
12+
{
13+
"type": "scattermapbox",
14+
"name": "carto-darkmatter",
15+
"lon": [ 10, 5 ],
16+
"lat": [ 20, 10 ],
17+
"subplot": "mapbox2",
18+
"mode":"text",
19+
"text":["pt1","pt2"],
20+
"textfont":{"family":"Metropolis Extra Bold Italic","color":"#fff"}
21+
}
22+
],
23+
"layout": {
24+
"grid": {"rows": 1, "columns": 2},
25+
26+
"legend": {
27+
"x": 0,
28+
"y": 1, "yanchor": "bottom"
29+
},
30+
31+
"mapbox": {
32+
"domain": {"row": 0, "column": 0},
33+
"style": "carto-positron"
34+
},
35+
"mapbox2": {
36+
"domain": {"row": 0, "column": 1},
37+
"style": "carto-darkmatter"
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)