Flex 預設字體族 (如 `Arial`, `SimSun` 映射) 僅包含英文字形,**中文字體加粗需顯式指定支援粗體的中文字體族名** (如 `微軟雅黑`, `黑體`, `思源黑體`),並設定 `fontWeight="bold"`。
錯誤與正確寫法對比
<!-- 錯誤:僅設 fontWeight,中文不加粗 -->
<s:Label text="標籤:" fontWeight="bold" fontSize="14"/>
<!-- 正確:指定中文字體族 + fontWeight -->
<s:Label text="標籤:" fontWeight="bold" fontFamily="微軟雅黑" fontSize="14"/>
<!-- 亦可使用系統字體別名 (需客戶端安裝) -->
<s:Label text="標籤:" fontWeight="bold" fontFamily="SimHei" fontSize="14"/>
根本原因
- Flex 文字引擎 (FTE) 依據 `fontFamily` 查找字體檔案中的粗體字形表
- 預設 fallback 字體鏈中英文字體優先,中文 fallback 通常只有 Regular 字重
- 明確指定 `fontFamily="微軟雅黑"` 可直接命中 `msyhbd.ttc` (Bold 字重檔案)
跨平台部署建議
- 嵌入字體:將 `msyh.ttc` / `msyhbd.ttc` 嵌入 SWF,`@font-face` 定義 `font-family: "YaHei"; font-weight: bold;`,確保所有平台一致顯示
- Web 安全字體棧:`fontFamily="Microsoft YaHei, SimHei, Heiti SC, sans-serif"` 由瀏覽器/運行時依序 fallback
- Spark Label 進階:使用 `bold` 標籤語法支援更精細排版控制
常見誤區
- 以為 `fontWeight="bold"` 全域生效 → **僅對當前 fontFamily 內可用字重生效**
- 使用 `htmlText` 加 `` 標籤 → 同樣受限於字體族可用字重
- 混淆 `fontStyle="italic"` (斜體) 與 `fontWeight` (粗體) → 兩者獨立控制