Using external fonts (EUDC.TTE) on Windows containers

I’m looking into using Docker Engine to run Windows containers.
My requirements are as follows:
1) I run a program that print documents on a Windows container.
2) The print documents file must use external characters (EUDC.TTE).

My problem is that I can’t print using external characters (EUCD.TTE) on a Windows container.

Has anyone successfully used external characters (EUDC.TTE) on a Windows container?
Or if you have any related knowledge please let me know.

Here’s what I’ve tried:

  • Windows containers are run using Docker Engine.

  • The Docker version is “version 28.4.0, build d8eb465”.

  • They run on Windows Server 2025 with “Hyper-V isolation”.

  • The OS base image is “mcr.microsoft.com/windows/server:ltsc2025”.

  • It has been confirmed that program 1 can print documents using external characters (EUDC.TTE) correctly in a standard Windows environment.

  • It has also been confirmed that program 1 can print documents excluding external characters (EUDC.TTE) in a Windows container.

  • I wrote the following operations in the DockerFile:

    1. Install the language pack

    2. Change the system locale to Japanese

    3. Change the user language list to Japanese

      RUN dism /online /add-package /packagepath:C:\Fonts\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab
      RUN powershell -Command Set-WinSystemLocale ja-JP
      RUN powershell -Command Set-WinUserLanguageList ja-JP -Force
      
    4. Copy the EUDC file

      RUN COPY c:\Fonts\Eudc.tte C:\Windows\Fonts\EUDC.TTE
      RUN COPY c:\Fonts\Eudc.euf C:\Windows\Fonts\EUDC.EUF
      
    5. Register the EUDC file in the registry

      RUN reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EUDC" /v "932" /t REG_SZ /d "C:\Windows\Fonts\EUDC.TTE" /f
      
    6. Delete the font cache

      RUN sc stop FontCache || exit 0 && del /F /Q C:\Windows\System32\FNTCACHE.DAT && sc start FontCache || exit 0
      
  • After building the above DockerFile, the following process was performed when the container was executed, and then program 1 was executed.

    1. Set the locale and user language list to Japanese

      powershell -Command Set-WinSystemLocale ja-JP
      powershell -Command Set-WinUserLanguageList ja-JP -Force
      

      Note: Even though it’s written in the DockerFile,

      powershell -Command Set-WinSystemLocale ja-JP
      

      The command didn’t take effect and the locale was set to “en-us (the default for Windows containers),” so
      it was re-executed when the container started.

    2. Clear the font cache
      As written in the DockerFile,
      we also clear the font cache again here.

      REM --- Stop the FontCache service ---
      sc stop FontCache
      
      REM --- Clear the font cache ---
      del /F /Q C:\Windows\System32\FNTCACHE.DAT
      
      REM --- Start the FontCache service ---
      sc start FontCache
      
    3. Finally, print a document containing external characters using a printing program.

I found this comment:

https://stackoverflow.com/questions/58168226/setting-the-language-and-region-settings-in-a-windows-docker-container#comment107064904_60519634

RobG [Over a year ago]

If you run with Hyperv Isolation then the language is fixed as en-US with ANSI System Locale set to UTF-8 (65001). There is no known way to change this behaviour in hyperv

Another comment below that shares an issue in the Moby repository (The base of Docker CE)

brixenDK [Over a year ago]

Adding to what @RobG says: They are aware of the issue but it is a significant change to support it github.com/moby/moby/issues/40535#issuecomment-930650879

At least if I understood your problem, this could be related to that

Thank you for your information.
I read the URL you provided.
I think the information about Hyper-V isolation fixing the system locale to 65001 is relevant to the issue I’m having.
The information in the URL is over a year old, but I will try to find the latest information.
If anyone has up-to-date information on this, I would be very grateful if you could provide it.

The quickest way would be if you commented in the issue on GitHub. If there was a known solution already, I assume it would be menitoned on GitHub, since I found it easily, so probably others would have found it too.

At least you would trigger a notification for some other commenters and one of them could have some advice. Or a developer.