Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt

Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt

Problemhintergrund:

Wenn Sie Docker zum Bereitstellen des Projekts verwenden, wird beim Aufrufen der Drucksteuerung im Projekt standardmäßig die Systemschriftart verwendet. Die Bereitstellung unter Windows ist problemlos. Beim Ausführen in einem Docker-Container meldet das System jedoch einen Fehler und kann die entsprechende Schriftart nicht finden, da in Docker keine verwandten Schriftarten wie Songti vorhanden sind.

Lösung:

Tatsächlich kann es, genau wie es das Problem löst, dass Linux selbst keine Song-Schriftart hat, auch verwendet werden, um das Containerproblem zu lösen. Ich habe festgestellt, dass viele Probleme mit Docker-Containern tatsächlich gelöst werden können, indem man der Linux-Lösung folgt. Grundsätzlich müssen Sie nur die Songti-TTF- und TTC-Dateien herunterladen, sie dann in das Container-Schriftartenverzeichnis einfügen und den Container neu starten.

Lösung:

1. Überprüfen Sie die vom Container unterstützten Schriftarten.

fc-list :lang=zh

Wenn Sie die folgende Situation sehen, bedeutet dies, dass die Schriftartenverwaltung nicht installiert ist und Schriftarten installiert werden müssen

2. Installieren Sie die Schriftartenbibliothek.

yum -y installiere Fontconfig

Nach Abschluss der Installation können Sie die Ordner „fontconfig“ und „fonts“ im Verzeichnis „/usr/share“ sehen, wie in der Abbildung dargestellt:

3. Kopieren Sie die heruntergeladenen Schriftart-TTC- und TTF-Dateien in die Datei /usr/share/fonts des Containers.

cp simsun.ttc Container:/usr/share/fonts
cp simsun.ttf Container:/usr/share/fonts

4. Starten Sie anschließend den Container neu und Sie können die installierten chinesischen Schriftarten sehen.

5. Sie können diesen Schritt auch in das Dockerfile schreiben und beim Erstellen des Images automatisch implementieren.

Ergänzung: Docker | Chinesische Schriftarten installieren und UTF-8-Kodierung im Docker-Container ändern (Problem mit verstümmelten chinesischen Schriftzeichen lösen)

1. Projekthintergrund

Das Entwicklungsteam berichtete, dass während des Projektbetriebs beim Konvertieren in PDF mit Pagoffice und Word verstümmelte Zeichen auftraten. Dieses Problem wurde behoben und dieser Eintrag wurde zur Überprüfung erstellt.

2. Problemanalyse

Bei der Konvertierung in PDF mit Pagoffice und Word treten zwei Probleme mit verstümmelten Zeichen auf. Die entsprechende Beziehung ist:

pagoffice ---- UTF-8-Kodierung wird nicht verwendet, und in einigen Docker-Containern wird standardmäßig POSIX verwendet.

word2pdf ---- Chinesische Schriftarten sind in Linux nicht installiert und fehlen. Einige chinesische Schriftarten sind standardmäßig in Linux- und Docker-Containern installiert, oder es gibt keine chinesischen Schriftarten.

Zusammenfassend lässt sich sagen, dass Sie zur vollständigen Lösung des Container-Verstümmelungsproblems folgende Schritte durchführen müssen: 1. Verwenden Sie UTF-8 zur Unterstützung von Chinesisch. 2. Installieren Sie chinesische Schriftarten.

3. Lösung

3.1. Verwenden Sie UTF-8-Kodierung, um Chinesisch zu unterstützen

3.1.1 Verwenden der C.UTF-8-Kodierung

Die Verwendung der C.UTF-8-Kodierung kann Chinesisch unterstützen. Das Docker-Image auf der offiziellen Website unterstützt und verwendet standardmäßig die C.UTF-8-Kodierung.

Gebietsschema -a
#Alle Sprachumgebungen des Containers anzeigen
Gebietsschema
#Zeigen Sie die vom Container verwendete Sprachumgebung an

Wenn das von Ihnen verwendete Bild nicht in C.UTF-8 codiert ist, können Sie es in dieses Codierungsformat ändern, indem Sie beim Ausführen des Containers die folgenden Parameter hinzufügen:

-e export LANG="C.UTF-8"

3.1.2 Andere Lösungen

Sie können beim Starten von Docker auch Parameter hinzufügen.

-e export LANG="zh_CN.UTF-8"

Ich habe jedoch das Image von der offiziellen Docker-Website verwendet. Nach Verwendung der Parameter war es zwar auf die Verwendung von "zh_CN.UTF-8" eingestellt, wurde jedoch nicht installiert. Es wird ein Fehler auftreten:

Gebietsschema
# Den eingestellten Zeichensatz anzeigen
Gebietsschema: LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_MESSAGES kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_ALL kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
LANG=zh_CN.UTF-8

LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL= 
Gebietsschema -a
# Installierte Zeichensätze anzeigen
Gebietsschema: LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_MESSAGES kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_COLLATE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
C
POSIX
de_DE.utf8

3.2. Chinesische Schriftarten installieren und Chinesisch anzeigen

3.2.1 Vorhandene Schriftarten anzeigen

Alle aktuellen Schriftarten in Linux anzeigen

FC-Liste

Alle aktuellen chinesischen Schriftarten in Linux anzeigen

fc-list :lang=zh

3.2.2 Andere Schriftarten abrufen

In Windows-Systemen befinden sich Schriftarten unter C:\Windows\Fonts. Laden Sie es nach dem Kopieren auf den Linux-Server /opt/software/chinese hoch (ich möchte die Schriftart im Docker-Container installieren. Wenn Sie die Schriftart auf dem Linux-Host installieren möchten, legen Sie sie direkt in den Ordner /usr/share/fonts/ des Servers).

3.2.2 Schriftarten in Containern installieren

Docker ps -a
#Container anzeigen
docker cp /opt/software/chinese tomcat:/usr/share/fonts/
#tomcat ist der Containername
docker exec -it tomcat /bin/bash
#Betreten Sie den Container

chmod 644 -R chinesisch/
Berechtigungsordner
fc-list :lang=zh
#Chinesische Schriftarten anzeigen 

fc-cache -fv
# Aktualisieren Sie den Cache

3.3. Überprüfung

pagoffice ---- Nach dem Ändern des Docker-Containers müssen Sie den Container neu starten

word2pdf ---- Aktualisieren Sie den Schriftarten-Cache, kein Neustart des Containers erforderlich

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Verwenden Sie Nicht-Root-Benutzer, um Skriptvorgänge in Docker-Containern auszuführen
  • Lösung für den Docker-Container, der keine Schreibberechtigung für das Host-Verzeichnis hat
  • Lösen Sie das Problem beim Einrichten des chinesischen Sprachpakets für den Docker-Container
  • Anleitung zur Vermeidung von Docker Win Ping-Fehlern bei Containern
  • So konfigurieren Sie ein Jupyter-Notebook im Docker-Container
  • Docker implementiert Container-Portbindung am lokalen Port
  • Lösen Sie das Problem, dass der Container nach dem Docker-Lauf „Beendet (0)“ anzeigt.
  • Docker verwendet Root, um in den Container zu gelangen

<<:  CSS zum Erzielen von leuchtendem Text und ein paar JS-Spezialeffekten

>>:  WEB Standard-Webseitenstruktur

Artikel empfehlen

Detaillierte Erläuterung der elastischen CSS3-Erweiterungsbox

verwenden Flexible Boxen spielen beim Front-End-L...

27 Linux-Befehle zum Bearbeiten von Dokumenten, die es wert sind, gesammelt zu werden

Linux-Befehl „col“ Der Linux-Befehl col wird zum ...

Lösungen zur Verarbeitung und Reparatur historischer Linux-Images

Der ECS-Cloud-Server, der mit dem historischen Li...

Apropos „Weniger und mehr“ im Webdesign (Bild)

„Weniger ist mehr“ ist ein Schlagwort vieler Desi...

Mysql Workbench - Abfragemethode für MySQL-Datenbanken

Mysql Workbench ist ein Open-Source-Datenbankclie...

Beispiele für die Verwendung von „Provide“ und „Inject“ in Vue2.0/3.0

Inhaltsverzeichnis 1. Was ist der Nutzen von Prov...

Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker

Was ist Redis Cluster? Redis Cluster ist eine von...

So verarbeiten Sie sehr große Formularbeispiele mit Vue+ElementUI

Aufgrund von Geschäftsanpassungen im Unternehmen ...

Beispielcode der Uniapp Vue- und NVUE-Karussellkomponenten

Der Vue-Teil ist wie folgt: <Vorlage> <K...

Der Prozess des Erstellens und Konfigurierens der Git-Umgebung in Docker

Konfigurieren Sie die Git-Umgebung in Docker Bei ...