Forum Discussion
Custom visual development - issue rendering font "DIN"
Hi All.
We have an issue with rendering DIN font in our custom visual.
Issue: DIN font rendered by our custom visual do not match the same font
(with same color, size...) by built-in card visual.
Code:
private eleDinTest: d3.Selection<SVGElement>;
...
this.eleDinTest
.text("Test DIN")
.style("font-size", 20 + "pt") // or .style("font-size", 20 + "px")
.style("font-family", "DIN")
.style("font-weight", "Normal")
.style("fill", "#000000");
Any additional style and/or attribute settings required?
Any help is much appreciated.
Thanks in advance.
Hi,
1. The latest API supports standard definition of Font list
However it will add all the possible fonts for Power BI (including these that don't work in sandbox).
However, font list may be defined manually as any enumeration in capabilities.json
Unfortunately, I am unfamiliar with all non-working in sandbox fonts, only DIN, but there may be couple of others.
Honestly, I don't recommend to define them manually because I have discussed this question with persons who is in charge of this question and there is a chance that these fonts may be supported in sandbox in the future.
Also, visuals may work in different modes so, it is better to leave this fonts as is.
2. Font size is defined in 'pt' (if it described correctly in capabilities.json)
However, inside visual it may be transformed into 'px' by the code (if developer decided, but original size storing in 'pt' anyway)
Kind Regards,
Evgenii Elkin,
Software Engineer
Microsoft Power BI Custom Visuals
[email protected]
9 Replies
- dm-pSuper User
Hi inserv,
From inspecting the card visual with the default properties set (DIN is the font in the dropdown), the following style attributes are set:
{ text-anchor: middle; fill: rgb(51, 51, 51); font-family: wf_standard-font, helvetica, arial, sans-serif; font-size: 36px; font-weight: normal; }I'd suggest trying swapping out your appropriate .style function as follows:
.style("font-family", "wf_standard-font, helvetica, arial, sans-serif")I've had trouble getting some fonts to render as per other visuals - Segoe (Bold) is one such example, but this one seems to work.
Here's a quickly-produced custom visual with your code (swapped out with the suggested change for font-family), compared to a card visual:
Hopefully this should be all you need.
Good luck!
Daniel
- inservRegular Visitor
Hi Daniel,
Thanks you so much for your time and help.With the suggested font family setting, font is closer to matching with built-in card visual.
Still there is a difference in size.
Below shows comparison of fonts.Left side shows custom visual font with font family set as "wf_standard-font, helvetica, arial, sans-serif"
and size set as 26px. Right side show custom visual font size set as 26pt and fill color as #000000 for both.With built-in card following settings are used.
Card Title set as "Sales YTD":
Font family: DIN
Font Color: Black (#000000)
Background color: No fill
Text Size: 26 ptAs the solution is working on your end, we are verifying our custom visual code, to see any other settings causing this issue.
Incase you have any other suggession, please let us know.
Thank you. Appreciate your help and time.
- dm-pSuper User
Hi inserv,
Here's the code I used - I just took yours and added the styling in from inspecting the element in the browser as per my screenshot above, although I modified the font based on the value in the properties pane:
this.eleDinTest .text("Test DIN") .style("font-size", "27pt") // or .style("font-size", 20 + "px") .style("font-family", "wf_standard-font, helvetica, arial, sans-serif") .style("font-weight", "normal") .style("fill", "rgb(51, 51, 51)");Two additional things that might help:
- Note that normal for font-weight is a lower-case 'n'. Your example uses upper-case, which CSS will ignore.
- If you're using 'pt' vs. 'px' when comparing, your CSS unit of measurement will have a difference. If you're using a visual property as reference, the core ones all use 'pt' now, so I'd suggest replacing your code to match that.
I'm hoping that should be it. If not, feel free to post your updated code and I'll take another look for you.
Cheers,
Daniel