none
GDI kann auf einen bestimmten Font aus Programmen ohne UI nicht zugreifen RRS feed

  • Frage

  • Hallo,

    wir hatten über viele Jahre einen Windows Dienst (auf Windows 7), der Grafiken mit Text erzeugt und eine bestimmte Schriftart verwendet. Jetzt erfolgte ein Wechsel auf Windows Server 2019 und GDI kann nicht mehr auf die Schriftart zugreifen. Diese wird ohne Exception durch MS Sans Serif ersetzt. Verwendet man eine Anwendung mit UI inkl. oder auch nur eine Consolen-App kann die Schriftart verwendet werden. Bei Windows Diensten und auch aus dem IIS heraus geht es nicht.

    Weitere Untersuchungen auf 2 Windows 10 Clients mit Build 20H2 und identischen Framework-Versionen ergaben, dass auf einer Maschine der Zugriff auf die Schriftart aus einem Windows Dienst heraus geht auf der anderen Maschine geht es ebenfalls nicht. Auf einem Windows Server 2012 funktioniert es ebenfalls.

    Es wurden auch verschiedene -NET-Versionen getestet. Davon scheint es nicht abhängig zu sein.

    public void GenerateBitmap()
    {
        string drawString = "Sample Text 1234567890";
    
        using  (Bitmap bmp = new Bitmap(5000, 200, PixelFormat.Format32bppArgb))
        {
            bmp.SetResolution(300, 300);
            using (Graphics grfx = Graphics.FromImage(bmp))
            {
                using (Brush brush = new SolidBrush(Color.Black))
                {
                    Font f = new Font("MyFontName", 22F);
                    grfx.DrawString(drawString, f, brush, new Point(0, 0));
                }
            }
            bmp.Save("test.png", System.Drawing.Imaging.ImageFormat.Png);
            bmp.Dispose();
        }
    }

    In der Auflistung

    System.Drawing.FontFamily.Families

    ist der Font, in den Fällen wo es nicht funktioniert, nicht enhalten. Hat jemand eine Idee. Oder kann/muss man den Font mit FontForge bearbeiten, sodass GDI diesen wieder akzeptiert?


    • Bearbeitet Möri Mittwoch, 9. Juni 2021 07:44
    Mittwoch, 9. Juni 2021 07:39

Antworten

  • Hallo Möri,

    GDI kann nicht mehr auf die Schriftart zugreifen. Diese wird ohne Exception durch MS Sans Serif ersetzt.

    Es mag daran liegen, dass seit Version 1809 Schriftarten im Benutzerordner installiert werden können. In diesem Fall kannst Du das Problem dadurch beheben, dass bei der Installation der Schriftart auf Windows 10 und Windows Server 2019 Für alle Benutzer installieren gewählt wird. Für weitere Informationen verweise ich Dich auf diese Links (GitHub und support.microsoft.com):
    Fonts installed in the user directory are not detected (Windows 1809)
    How to install or remove a font in Windows

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Möri Freitag, 18. Juni 2021 09:20
    Donnerstag, 10. Juni 2021 04:57
    Moderator

Alle Antworten

  • Hallo Möri,

    GDI kann nicht mehr auf die Schriftart zugreifen. Diese wird ohne Exception durch MS Sans Serif ersetzt.

    Es mag daran liegen, dass seit Version 1809 Schriftarten im Benutzerordner installiert werden können. In diesem Fall kannst Du das Problem dadurch beheben, dass bei der Installation der Schriftart auf Windows 10 und Windows Server 2019 Für alle Benutzer installieren gewählt wird. Für weitere Informationen verweise ich Dich auf diese Links (GitHub und support.microsoft.com):
    Fonts installed in the user directory are not detected (Windows 1809)
    How to install or remove a font in Windows

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Möri Freitag, 18. Juni 2021 09:20
    Donnerstag, 10. Juni 2021 04:57
    Moderator
  • Hallo Dietmar,

    großen Dank. Das war genau der richtige Tipp. Diese Änderung war an mir vorbei gegangen. Es wäre natürlich hilfreich, wenn diese lokalen Schriften beim Blick in C:\Windows\Fonts eindeutig gekennzeichnet wären.

    Grüße

    Freitag, 18. Juni 2021 09:37