font-family 字型名稱確認
確認字型名稱 (font-family) 並確保它能正確載入,確實是網頁和 Canvas 開發中常見的困擾。以下是如何確認字型名稱以及解決載入問題的方法:
作業系統的字型檢視器 (最可靠的方法,如果字型已安裝): Windows: 找到你下載的字型檔案 (.ttf, .otf 等)。 雙擊 該檔案,會開啟 Windows 字型檢視器。視窗頂部或某個標籤頁會顯示「 字型名稱 (Font name): 」或類似的字樣。這通常就是你需要的名稱。或者,將字型安裝到系統中 (通常是右鍵點擊字型檔 -> 安裝)。然後去「控制台」->「字型」(或 Windows 10/11 的「設定」->「個人化」->「字型」)。找到該字型,點擊它,詳細資訊裡會有確切的名稱。
macOS: 雙擊字型檔案,會用「字體簿 (Font Book)」開啟。 字體簿會顯示字型的完整名稱、家族名稱等。通常你要使用的是「家族 (Family)」名稱。 如果已安裝,直接打開「字體簿」應用程式,找到該字型。
Linux: 通常會有類似的字型管理器 (如 Font Manager)。 雙擊字型檔或在字型管理器中查看其屬性,可以找到 PostScript 名稱或家族名稱。
使用線上字型檢查工具 (如果不想安裝,或用於網頁字型): FontDrop! (fontdrop.info): 直接將字型檔案拖曳到這個網站,它會分析並顯示字型的詳細資訊,包括 Family Name, PostScript Name 等。font-family 通常對應的是 "Family Name"。Wakamai Fondue (wakamaifondue.com): 另一個強大的工具,可以分析字型特性,包括名稱。
字型編輯/管理軟體: 像 FontForge (免費), Glyphs, FontLab 等專業軟體,或 FontBase, NexusFont (Windows) 等字型管理軟體,都能讀取字型的內部名稱。
注意大小寫: 雖然 CSS 的 font-family 屬性值通常不區分大小寫,但字型檔案內部定義的名稱可能有特定的大小寫。最好完全按照你在字型檢視器或工具中看到的名稱來寫,包括空格和大小寫。 空格: 如果字型名稱包含空格 (例如 "Source Han Sans TC"),在使用時務必用引號括起來:font-family: "Source Han Sans TC";。
使用 @font-face (推薦用於網頁): 這是在網頁上使用自訂字型的標準方法。 @font-face { font-family: 'MyCustomFontName'; /* 1. 你自己定義的名稱,將在 CSS 其他地方使用 */ src: url('path/to/your/fontfile.woff2') format('woff2'), /* 推薦格式,壓縮好,支援廣 */ url('path/to/your/fontfile.woff') format('woff'), url('path/to/your/fontfile.ttf') format('truetype'); /* TTF/OTF 作為備用 */ /* 可選:設定字重和樣式,如果你的字型檔包含特定變體 */ /* font-weight: normal; */ /* font-style: normal; */ } /* 然後在你的 CSS 規則中使用你定義的 font-family 名稱 */ body { font-family: 'MyCustomFontName', Arial, sans-serif; /* 'MyCustomFontName' 是你在 @font-face 中定義的 */ } .my-element { font-family: 'MyCustomFontName', 'Fallback Font', sans-serif; }font-family: 'MyCustomFontName'; : 這裡的 'MyCustomFontName' 是你為這個 @font-face 規則指定的名稱。後續你在 CSS 中就使用這個名稱。它不一定需要和字型檔案內部儲存的實際名稱完全一樣,但保持一致性比較好。src: url(...) format(...); : 指定字型檔案的路徑和格式。路徑 (path/to/your/fontfile.xxx): 確保路徑相對於你的 CSS 檔案是正確的。格式 (format): woff2, woff, truetype (for .ttf), opentype (for .otf)。建議優先使用 WOFF2 和 WOFF。
備用字型 (Fallback Fonts): 在 font-family 列表的最後,總是要加上通用的備用字型,如 sans-serif 或 serif。
在 Canvas 中使用: 如果已經透過 @font-face 在 CSS 中成功載入了字型,並且該 CSS 作用於包含 Canvas 的 HTML 頁面,那麼 Canvas 通常可以直接使用這個字型名稱。 const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); // 假設你在 CSS 中已經用 @font-face 定義了 'MyCustomFontName' // 並確保字型已經載入完成 (見下方「字型載入時機」) ctx.font = "20px 'MyCustomFontName'"; // 使用你在 @font-face 中定義的名稱 ctx.fillText("Hello World", 50, 50); // 如果是系統已安裝字型,且瀏覽器能直接存取 (不推薦依賴這個給所有用戶) // ctx.font = "20px 'Source Han Sans TC'"; // 直接使用字型的實際名稱 // ctx.fillText("你好世界", 50, 100);
名稱錯誤: 確認方法: 使用前述第一部分的方法仔細核對。解決: 修改 font-family 或 @font-face 中的名稱。
@font-face 未正確設定或字型檔案路徑錯誤: 確認方法: 打開瀏覽器的開發者工具 (通常按 F12)。控制台 (Console): 檢查是否有關於字型檔案載入失敗的錯誤 (例如 404 Not Found)。網路 (Network) 標籤頁: 篩選字型 (Fonts) 請求,看字型檔案是否成功下載,狀態碼是否為 200。如果 404,就是路徑錯了。
解決: 確保 @font-face 中的 url() 路徑相對於 CSS 檔案是正確的。 嘗試使用絕對路徑 (例如 /fonts/myfont.woff2) 或相對於網站根目錄的路徑進行測試。
字型格式不支援或檔案損壞: 確認方法: 嘗試使用不同的字型格式 (WOFF2, WOFF, TTF)。確保字型檔案本身沒有損壞。解決: 轉換字型格式 (例如使用 Transfonter.org 或 Font Squirrel Webfont Generator),或重新下載字型。
CSS 權重/覆蓋問題: 確認方法: 在瀏覽器開發者工具中,選中你希望應用字型的元素,查看「計算樣式 (Computed)」或「樣式 (Styles)」面板,看 font-family 最終被哪個規則設定了。解決: 提高你的 CSS 規則的權重 (例如使用更特定的選擇器,或在必要時使用 !important - 但應謹慎使用)。
字型載入時機 (對於 Canvas 特別重要): 網頁字型是異步載入的。如果你在字型還沒下載完成時就嘗試在 Canvas 上繪製文字,它可能會使用備用字型。 解決方案: CSS Font Loading API (document.fonts) : 這是現代瀏覽器推薦的方法。async function drawTextWhenFontReady() { try { await document.fonts.load("20px 'MyCustomFontName'"); // 等待特定字型和大小載入 // 或者檢查所有字型是否準備好 // await document.fonts.ready; // 字型已載入,現在繪製 const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.font = "20px 'MyCustomFontName'"; ctx.fillText("字型已載入!", 50, 50); } catch (err) { console.error('字型載入失敗:', err); // 可以使用備用方案繪製 } } drawTextWhenFontReady();簡單延遲 (不推薦,不可靠): setTimeout 等待一段時間,但不保證字型一定載入完成。使用 Web Font Loader 庫 (例如 Google/Typekit 的 WebFontLoader): 雖然有些老舊,但仍可用於更細緻的載入控制和事件回調。
引號問題: 如果字型名稱包含空格或特殊字元,務必用單引號 (') 或雙引號 (") 括起來。 示例:font-family: "My Font Family Name", sans-serif;
伺服器設定 (MIME 類型): 在某些情況下,如果伺服器沒有為字型檔案設定正確的 MIME 類型,瀏覽器可能無法正確處理它們。不過,對於現代瀏覽器和常見的伺服器配置,這通常不是問題。 .ttf: font/ttf 或 application/font-sfnt .otf: font/otf 或 application/font-sfnt .woff: font/woff 或 application/font-woff .woff2: font/woff2 或 application/font-woff2
確認字型名稱: 用作業系統工具或線上工具取得字型家族的確切名稱。定義 @font-face: 在 CSS 中使用 @font-face,提供正確的路徑和格式。給它一個易於記憶的 font-family 別名。套用字型: 在 CSS 規則或 Canvas ctx.font 中使用你在 @font-face 中定義的別名。測試與除錯: 使用瀏覽器開發者工具檢查路徑、網路請求和計算樣式。處理載入時機: 特別是對於 Canvas,確保字型載入完成後再繪製。
留言
張貼留言