Fehlende Fonts in den Windows Server Core Docker-Images nachinstallieren

,

Visual Studio bietet inzwischen eine sehr einfache Unterstützung für Docker an. In wenigen Schritten lässt sich damit Ihre Anwendung in einem Docker-Container bereitstellen.

Zumeist werden hier Windows Server Core Docker-Images als Basis im Dockerfile verwendet. Diese haben den Vorteil sehr schlank zu sein, sind jedoch im Funktionsumfang eingeschränkt. Unter anderem fehlen Fonts, welche im “normalen” Windows vorhanden sind. Im Windows Server Core 2019 Image ist bspw. nur der Font Lucon vorhanden.

Wenn Sie nun eine Anwendung mit List & Label in einem Docker-Container bereitstellen wollen, fehlen für die Generierung der Reports die nötigen Fonts. Um diese im Container zur Verfügung zu stellen, gehen Sie bitte folgedermaßen vor:

  • Fügen Sie Ihrem Visual Studio Projekt einen Ordner mit den benötigten Fonts hinzu.
  • Kopieren Sie diese dann in das Verzeichnis “c:\Windows\Fonts” innerhalb des Docker-Containers.
  • Beim Start Ihrer Anwendung können Sie mit Hilfe der Windows API AddFontResource die Fonts für die aktuelle Session installieren.

Code-Beispiel für C#:

[DllImport("gdi32.dll")]
static extern int AddFontResource(string lpFilename);
AddFontResource(@"c:\Windows\Fonts\<Fontname>.ttf");