diff --git a/docs/markdown.md b/docs/markdown.md index 4f2f1db..77d41cb 100644 --- a/docs/markdown.md +++ b/docs/markdown.md @@ -80,6 +80,22 @@ 图标会渲染为 `` 形式。 +### 支持多种图片格式 + +默认情况下,`:[icon-name]` 会查找 `.png` 文件。你也可以显式指定其他支持的格式: + +```markdown +:[attack] +:[attack.svg] +:[shield.gif] +:[photo.jpg] +:[icon.webp] +``` + +**支持的扩展名:** `.svg`、`.png`、`.gif`、`.jpg`、`.jpeg`、`.webp` + +**注意:** CSS class 名称始终使用不带扩展名的图标名称(如 `icon-attack`),方便统一样式控制。 + ### 配置图标前缀 可通过 `iconPath` 属性指定图标目录: diff --git a/src/markdown/index.ts b/src/markdown/index.ts index fe02629..e861f5a 100644 --- a/src/markdown/index.ts +++ b/src/markdown/index.ts @@ -36,11 +36,31 @@ const marked = new Marked() { level: 'inline', marker: ':', - // :[blah] becomes + // :[icon] 或 :[icon.ext] 语法 + // 支持的扩展名: .svg, .png, .gif, .jpg, .jpeg, .webp + // 如果不指定扩展名,默认为 .png renderer(token) { if (!token.meta.name) { - const style = globalIconPrefix ? `style="--icon-src: url('${globalIconPrefix}/${token.text}.png')"` : ''; - return ``; + const iconText = token.text || ''; + + // 已知支持的图片扩展名 + const supportedExtensions = ['svg', 'png', 'gif', 'jpg', 'jpeg', 'webp']; + + // 检查是否包含扩展名(查找最后一个点) + let iconName = iconText; + let extension = 'png'; // 默认扩展名 + + const lastDotIndex = iconName.lastIndexOf('.'); + if (lastDotIndex > 0) { + const potentialExt = iconName.slice(lastDotIndex + 1).toLowerCase(); + if (supportedExtensions.includes(potentialExt)) { + extension = potentialExt; + iconName = iconName.slice(0, lastDotIndex); + } + } + + const style = globalIconPrefix ? `style="--icon-src: url('${globalIconPrefix}/${iconName}.${extension}')"` : ''; + return ``; } return false; }