The telerik configuration has to be provided by app.config / web.config. (http://docs.telerik.com/reporting/configuring-telerik-reporting)
In a huge solution this makes it necessarry to define the same settings multiple times. (app.config for UnitTests, web.config for WebFrontend, app.config for Workers.) I prefer to implement configuration just once programaticaly.
Please provide a public interface for configuration so that we can inject configuration from commandline / azure / configfiles / ...
For private fonts the feature is implemented but all methods are marked private. so I have to call this things by reflection:
//<?xml version="1.0" encoding="utf-8"?>
//<configuration>
// <configSections>
// <section name="Telerik.Reporting" type="Telerik.Reporting.Configuration.ReportingConfigurationSection, Telerik.Reporting, Version=11.0.17.406, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" />
// </configSections>
// <Telerik.Reporting>
// <privateFonts>
// <add fontFamily="Poppins Medium" path="c:\poppins\Poppins-Medium.ttf" />
// <add fontFamily="Poppins Light" path="c:\poppins\Poppins-Light.ttf" />
// <add fontFamily="Poppins SemiBold" path="c:\poppins\Poppins-SemiBold.ttf" />
// </privateFonts>
// </Telerik.Reporting>
//</configuration>
var fontContainerType = typeof(Telerik.Reporting.DataSource).Assembly.GetType("Telerik.Reporting.Processing.Common.FontContainer");
var fontContainer = fontContainerType.GetField("Instance", BindingFlags.Public | BindingFlags.Static).GetValue(null);
var methodAdd = fontContainer.GetType().GetMethod("AddFont", BindingFlags.NonPublic | BindingFlags.Instance);
methodAdd.Invoke(fontContainer, new object[] {"c:\\poppins\\Poppins-Medium.ttf", "Poppins Medium", "regular"});
methodAdd.Invoke(fontContainer, new object[] {"c:\\poppins\\Poppins-Light.ttf", "Poppins Light", "regular"});
methodAdd.Invoke(fontContainer, new object[] {"c:\\poppins\\Poppins-SemiBold.ttf", "Poppins SemiBold", "regular"});