Broken Font on AWS Lambda

This article was translated from English: Does it need improvement?
Translated
View the article in English

在 Linux 上生成 PDF 文件可能會導致字符顯示錯誤,如下圖所示。 有時字符在 Windows 環境中顯示正常,但在 Linux 上則不然。

字符顯示錯誤

原因

原因是操作系統缺少該字體。

解決方案

如果你已經知道字體名稱,太好了——可以跳過步驟1。

  1. 要找到字體名稱,可以在 Windows 上生成 HTML 並使用 Adobe 檢查字符。
  2. 確定字體名稱後,可以從網上下載字體文件,例如從Google 字體
  3. 要通過 Dockerfile 添加和安裝字體,將字體放置在項目中並設置“拷貝到輸出目錄”“始終拷貝”。接下來,使用以下代碼在 Dockerfile 中添加和安裝它:
# Copy the Cambria Math font into the container
# Ensure the font file (cambria.ttc) exists in your project directory
COPY cambria.ttc /usr/share/fonts/

# Install fontconfig to update the font cache
# This will install fontconfig and refresh the font cache to recognize the newly added fonts
RUN dnf install -y fontconfig && \
    fc-cache -fv

說明

  • COPY cambria.ttc /usr/share/fonts/:這行代碼將 Cambria Math 字體從你的項目目錄複製到容器的字體目錄中。 確保字體文件(cambria.ttc)存在於項目目錄中。

  • RUN dnf install -y fontconfig && \:此命令安裝fontconfig包,這對於管理和配置 Linux 中的字體訪問是必要的。 -y標誌自動確認包的安裝。

  • fc-cache -fv:此命令更新字體緩存,確保容器內的應用程序可以使用新複製的字體。 標誌-f(強制)和-v(詳細)分別用於強制重新生成緩存和提供詳細輸出。
Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 16,154,058 | 版本: 2025.11 剛剛發布