Markdown 圖標完整教程 - 如何在 Markdown 中添加圖標(Font Awesome、Emoji、SVG)

Markdown 圖標是什麼?

Markdown 本身沒有內置的圖標(icon)語法——標準 CommonMark 規範裡找不到一個專門用來插入圖標的標記。但這不意味著在 Markdown 裡沒法用圖標。實際上有幾種常見的方法,只是每種都有各自的適用範圍和限制。

簡單來說,Markdown 圖標就是通過 HTML 標籤、圖片引用、Emoji 或者 Markdown 擴展插件等方式,在文檔中插入的小型視覺元素。它們常用來做導航標記、狀態指示、分類標籤,或者單純讓文檔更好看。

五種添加 Markdown 圖標的方法

根據你的使用場景,主要有這幾種方式:

方法兼容性複雜度適合場景
Emoji 表情幾乎所有平台快速點綴、狀態標記
Unicode 符號幾乎所有平台箭頭、數學符號、特殊字符
Font Awesome(HTML 標籤)需要加載 CSS 的平台自有網站、部落格
SVG 圖片引用支援 img 標籤的平台GitHub README、跨平台文檔
Markdown 擴展插件特定工具鏈Hugo/MkDocs/Jekyll 等靜態站點

下面逐個展開。

用 Emoji 添加圖標

這是最簡單也最通用的方法。幾乎所有 Markdown 渲染器都支援 Emoji,包括 GitHub、GitLab、VS Code 預覽、Typora。

直接在文本中插入 Emoji 字符:

構建狀態:✅ 通過 | ❌ 失敗 | ⏳ 進行中

功能列表:
- 🔍 搜索功能
- 📊 數據分析
- 🔔 通知推送
- 🛡️ 安全防護

GitHub、GitLab 還支援用冒號包裹的 Emoji 短代碼:

:tada: 發佈成功!
:rocket: 版本更新
:warning: 注意事項

說實話,如果你只是想在文檔裡加點視覺元素,Emoji 是首選——不需要額外配置,複製粘貼就能用。

不過 Emoji 也有局限:樣式取決於用戶的操作系統和字體,不同設備上顯示效果可能不一樣。比如 Windows 和 macOS 上同一個 Emoji 看起來差別就挺大的。如果你需要精確控制圖標的大小和顏色,Emoji 就不太合適了。

用 Unicode 符號作為圖標

Unicode 裡藏著大量可以直接當圖標用的符號字符。它們跟 Emoji 一樣不需要額外依賴,而且在所有平台上的渲染基本一致(因為走的是字體渲染)。

一些常用的 Unicode 圖標符號:

**箭頭類:**
→ ← ↑ ↓ ⇒ ⇐ ⇑ ⇓ ➜ ➤ ▶ ◀

**形狀類:**
● ○ ■ □ ▲ △ ◆ ◇ ★ ☆ ✓ ✗

**數學/邏輯:**
≈ ≠ ≤ ≥ ± × ÷ ∞ √ ∑ ∏

**其他常用:**
☎ ✉ ⌛ ⚡ ♻ ⚠ ☘ ✈ ☕

在 Markdown 裡直接粘貼這些字符就行:

### ✅ 已完成功能
- 用戶登錄 → 密碼驗證 ⇒ Token 生成
- 數據導出:CSV √ | JSON √ | XML ✗

### ⚠️ 注意事項
- CPU 使用率 ≥ 80% 時觸發告警
- 請求超時時間 ≈ 30s

我的經驗是,Unicode 符號特別適合用在表格裡做狀態標記或者技術文檔中表示邏輯關係。它比 Emoji 更"正經",不會因為渲染差異太離譜。

用 Font Awesome 圖標

Font Awesome 是最流行的圖標庫之一,提供了數千個矢量圖標。在 Markdown 中使用 Font Awesome 主要有兩種方式。

方式一:HTML 標籤(需要加載 CSS)

如果你的 Markdown 渲染在網頁上(比如自己的部落格或文檔站),可以在頁面模板的 <head> 中加載 Font Awesome CSS:

<link rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">

然後在 Markdown 文件裡直接寫 HTML:

項目功能列表:

- <i class="fa-solid fa-user"></i> 用戶管理
- <i class="fa-solid fa-gear"></i> 系統設置
- <i class="fa-solid fa-chart-line"></i> 數據分析
- <i class="fa-solid fa-shield-halved"></i> 安全中心

按鈕樣式: <i class="fa-solid fa-download"></i> 下載 |
<i class="fa-solid fa-trash"></i> 刪除

Font Awesome 還支援控制圖標大小和樣式:

<i class="fa-solid fa-house"></i> 默認大小
<i class="fa-solid fa-house fa-lg"></i> 大號
<i class="fa-solid fa-house fa-2x"></i> 兩倍大
<i class="fa-solid fa-house fa-3x"></i> 三倍大

<i class="fa-solid fa-spinner fa-spin"></i> 旋轉動畫

這個方法的關鍵前提是頁面上必須加載了 Font Awesome 的 CSS 文件。如果是自己的網站,這很好辦。但如果是 GitHub README,就行不通了——GitHub 出於安全考慮會剝離自定義 CSS 和 JavaScript,<i class="fa-solid fa-user"> 這種寫法在 GitHub 上不會渲染出圖標。

我之前有一次給項目寫 README,興沖沖地用了一堆 Font Awesome 圖標,推上去一看全是空白——就是踩了這個坑。後來才搞清楚 GitHub 的 HTML 白名單策略只允許少量標籤(<img><a><br> 等),<i> 標籤會被保留但不會應用自定義 class 樣式。

方式二:Markdown 擴展插件

如果你用 MkDocs、Hugo、Jekyll 等靜態站點生成器,可以通過插件用短代碼(shortcode)來插入圖標。

MkDocs + fontawesome-markdown:

先安裝擴展:

pip install fontawesome-markdown

mkdocs.yml 中啟用:

markdown_extensions:
  - fontawesome_markdown

然後在 Markdown 中使用:

我 :fa-coffee: 你
導航 :fa-home: 首頁 | :fa-cog: 設置

Hugo 短代碼:

Hugo 有內置的圖標短代碼語法,配合圖標庫使用:

{{</* icon "github" */>}}
{{</* icon "heart" */>}}

不過要注意,fontawesome-markdown 這個 Python 包最後更新在 2018 年,只支援到 Font Awesome v5.2。如果你需要 v6 的圖標,可以考慮其他方案或者自己寫個簡單的擴展。

用 SVG 圖片添加圖標

這個方法在 GitHub README 中特別實用。因為 GitHub 雖然不支援 Font Awesome CSS,但支援 <img> 標籤——我們可以直接引用 Font Awesome 的 SVG 文件。

引用遠程 SVG

Font Awesome 的 SVG 文件託管在 GitHub 倉庫中,可以直接用 URL 引用:

<img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/solid/crown.svg" width="20" height="20"> 付費功能
<img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/solid/rocket.svg" width="20" height="20"> 快速開始
<img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/solid/star.svg" width="20" height="20"> 推薦功能

通過調整 widthheight 屬性控制大小。顏色呢?SVG 文件默認是黑色的。如果需要改顏色,可以用 CSS 的 filter 屬性(前提是你的平台支援),或者下載 SVG 文件後修改裡面的 fill 顏色值。

用 shields.io 徽章

shields.io 提供了一種更靈活的「圖標+文字」方案,在開源項目 README 中特別常見:

![GitHub stars](https://img.shields.io/github/stars/user/repo?style=social)
![Build Status](https://img.shields.io/github/actions/workflow/status/user/repo/ci.yml)
![License](https://img.shields.io/badge/license-MIT-blue.svg)

這嚴格來說是「徽章」不是「圖標」,但在實際使用中經常起到圖標的作用——快速傳達項目狀態信息。shields.io 支援自定義顏色、文字、logo,靈活度很高。

各平台 Markdown 圖標兼容性對比

不同平台對圖標的支援差異很大。我整理了一個對比表,幫你快速判斷用哪種方法。

平台EmojiUnicode 符號Font Awesome (HTML)SVG 圖片引用擴展插件
GitHub❌ CSS 被剝離
GitLab✅ 支援 HTML部分
VS Code 預覽取決於插件
Typora部分主題
MkDocs
Hugo✅ 短代碼
Jekyll

關鍵結論:Emoji 和 Unicode 符號是唯一在所有平台都通用的方案。 如果你的文檔需要跨平台使用,優先選這兩種。Font Awesome HTML 標籤方法只在你能控制頁面 CSS 的環境中才好用。

暗色主題下的圖標問題

這是一個容易被忽略的細節。如果你用 SVG 圖片引用方式(比如 GitHub README),默認的 SVG 是黑色的。在亮色主題下沒問題,但如果用戶開了暗色主題(GitHub Dark),黑色圖標在深色背景上基本看不見。

解決思路:

  1. 使用帶透明背景的彩色 SVG — 修改 SVG 文件中的 fill 值為特定顏色
  2. 用 shields.io 替代 — shields.io 的徽章自帶主題適配
  3. Emoji 替代 — Emoji 在暗色/亮色主題下都能正常顯示
<!-- 暗色主題可能看不清 -->
<img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/solid/star.svg" width="16">

<!-- 更好的方案:用 Emoji 或 shields.io -->
⭐ Star us on GitHub
![Stars](https://img.shields.io/github/stars/user/repo?style=social)

不同場景的圖標方案推薦

根據你實際的寫作場景,我的建議是這樣的:

寫 GitHub README:用 Emoji 做簡單標記,用 shields.io 做狀態徽章,盡量避免 Font Awesome HTML 標籤(因為不渲染)。如果一定要用 Font Awesome 風格的圖標,走 SVG 圖片引用的路線。

寫技術部落格 / 文檔站:如果站點模板已經加載了 Font Awesome,直接用 <i> 標籤是最方便的。對於 Hugo/MkDocs 等有插件生態的方案,用短代碼更優雅。

跨平台發佈:如果同一份 Markdown 要在多個平台使用,Emoji 和 Unicode 符號是最安全的選擇。Font Awesome 和 SVG 方法可能需要在某些平台上調整。

內部文檔 / Wiki:GitLab Wiki、Confluence 這些平台一般都支援 HTML,Font Awesome 方案可行。但也建議先用 Emoji 試試,夠用就沒必要搞複雜了。

常見問題

GitHub README 中 Font Awesome 圖標不顯示怎麼辦?

這是最常見的問題。GitHub 出於安全考慮,不允許外部 CSS 和 JavaScript 運行,所以 <i class="fa-solid fa-user"> 標籤雖然不會被移除,但對應的圖標樣式不會加載。解決方法是用 SVG 圖片引用或者直接用 Emoji 替代。

為什麼同一個 Markdown 文件在不同平台圖標顯示不一樣?

Markdown 的圖標渲染取決於各平台的 HTML 白名單策略和 CSS 加載權限。比如 GitHub 會剝離大部分 HTML 屬性,而 GitLab 和自己的網站則寬鬆得多。這就是為什麼跨平台文檔推薦用 Emoji 的原因——它不依賴任何外部資源。

Markdown 圖標可以自定義顏色和大小嗎?

Emoji 和 Unicode 符號的顏色和大小通常跟隨文本樣式,無法單獨控制。Font Awesome 圖標可以通過 CSS 類(如 fa-lgfa-2x)和顏色樣式來調整,但這只在支援自定義 CSS 的平台上有效。SVG 圖片可以通過 width/height 屬性調整大小。

參考來源

  1. Font Awesome Official Documentation — Font Awesome 圖標庫官方文檔,提供完整的圖標列表和使用方法
  2. GitHub Flavored Markdown Spec — GitHub 官方 Markdown 文檔,包含 HTML 白名單策略說明
  3. Python-Markdown Extensions — Python Markdown 擴展官方文檔
  4. Font Awesome Markdown Extension — fontawesome-markdown 擴展項目文檔
  5. shields.io — 開源徽章生成服務,廣泛用於 GitHub 項目狀態展示