feat(前端界面): 统一前端界面文案
build.yaml / build (push) Successful in 35s

This commit is contained in:
2026-07-07 16:03:25 +08:00
parent 67eed80507
commit 73336bcc0e
3 changed files with 67 additions and 20 deletions
+16 -1
View File
@@ -645,10 +645,25 @@ body[data-hide-meta] .meta-panel {
} }
.doc-font-detail { .doc-font-detail {
overflow: hidden;
color: var(--text-muted); color: var(--text-muted);
font-size: 11px; font-size: 11px;
line-height: 1.35; line-height: 1.35;
overflow-wrap: anywhere; text-overflow: ellipsis;
white-space: nowrap;
}
.doc-font-result {
display: grid;
grid-template-columns: minmax(72px, 42%) minmax(0, 1fr);
gap: 8px;
}
.doc-font-result span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
.font-list { .font-list {
+44 -12
View File
@@ -1535,17 +1535,44 @@ function renderDocumentFonts() {
if (font.embedded && font.status !== "embedded") { if (font.embedded && font.status !== "embedded") {
badges.append(fontBadge("内嵌", "embedded")); badges.append(fontBadge("内嵌", "embedded"));
} }
const detail = document.createElement("div"); const result = fontResult(font);
detail.className = "doc-font-detail"; const metaText = fontMeta(font);
detail.textContent = fontDetail(font);
head.append(name, badges); head.append(name, badges);
row.append(head, detail); row.append(head);
appendFontResult(row, result);
appendFontDetail(row, metaText);
fragment.append(row); fragment.append(row);
} }
el.docFontList.append(fragment); el.docFontList.append(fragment);
} }
function appendFontResult(row, result) {
if (!result.source && !result.detail) {
return;
}
const detail = document.createElement("div");
const source = document.createElement("span");
const text = document.createElement("span");
detail.className = "doc-font-detail doc-font-result";
source.textContent = result.source;
text.textContent = result.detail;
detail.title = [result.source, result.detail].filter((item) => item).join(" · ");
detail.append(source, text);
row.append(detail);
}
function appendFontDetail(row, text) {
if (!text) {
return;
}
const detail = document.createElement("div");
detail.className = "doc-font-detail";
detail.textContent = text;
detail.title = text;
row.append(detail);
}
function fontBadge(text, status) { function fontBadge(text, status) {
const badge = document.createElement("span"); const badge = document.createElement("span");
badge.className = `font-badge ${status}`; badge.className = `font-badge ${status}`;
@@ -1582,7 +1609,18 @@ function statusText(status) {
} }
} }
function fontDetail(font) { function fontResult(font) {
const result = { source: "", detail: "" };
if (font.matched) {
result.source = font.embedded || font.status === "embedded" ? `内嵌 ${font.matched}` : `匹配 ${font.matched}`;
}
if (font.detail) {
result.detail = font.detail;
}
return result;
}
function fontMeta(font) {
const parts = []; const parts = [];
if (font.familyName && font.familyName !== font.fontName) { if (font.familyName && font.familyName !== font.fontName) {
parts.push(`字体族 ${font.familyName}`); parts.push(`字体族 ${font.familyName}`);
@@ -1590,13 +1628,7 @@ function fontDetail(font) {
if (font.charset) { if (font.charset) {
parts.push(`字符集 ${font.charset}`); parts.push(`字符集 ${font.charset}`);
} }
if (font.matched) { return parts.join(" · ");
parts.push(font.embedded || font.status === "embedded" ? `内嵌 ${font.matched}` : `匹配 ${font.matched}`);
}
if (font.detail) {
parts.push(font.detail);
}
return parts.join(" · ") || "-";
} }
function fitWidth(updateStatus = true) { function fitWidth(updateStatus = true) {
+7 -7
View File
@@ -22,13 +22,13 @@ import (
) )
const ( const (
// FontStatusEmbedded 字体使用OFD内嵌字体 // FontStatusEmbedded 内嵌字体可用
FontStatusEmbedded = "embedded" FontStatusEmbedded = "embedded"
// FontStatusMatched 字体命中外部字体 // FontStatusMatched 外部字体匹配
FontStatusMatched = "matched" FontStatusMatched = "matched"
// FontStatusFallback 字体使用外部字体回退 // FontStatusFallback 外部字体回退
FontStatusFallback = "fallback" FontStatusFallback = "fallback"
// FontStatusMissing 字体缺失 // FontStatusMissing 字体资源缺失
FontStatusMissing = "missing" FontStatusMissing = "missing"
) )
@@ -98,7 +98,7 @@ func (r *Renderer) FontInfos() ([]FontInfo, error) {
ID: id, ID: id,
FontName: id, FontName: id,
Status: FontStatusMissing, Status: FontStatusMissing,
Detail: "未在OFD资源中声明", Detail: "字体资源未被声明",
Used: used, Used: used,
}) })
} }
@@ -130,7 +130,7 @@ func (r *Renderer) fontInfo(font Font) FontInfo {
if _, err := r.Reader.ResData(font.FontFile); err == nil { if _, err := r.Reader.ResData(font.FontFile); err == nil {
info.Status = FontStatusEmbedded info.Status = FontStatusEmbedded
info.Matched = path.Base(font.FontFile) info.Matched = path.Base(font.FontFile)
info.Detail = "使用OFD内嵌字体" info.Detail = "使用内嵌字体文件"
} else { } else {
info.Status = FontStatusMissing info.Status = FontStatusMissing
info.Detail = "内嵌字体文件缺失" info.Detail = "内嵌字体文件缺失"
@@ -149,7 +149,7 @@ func (r *Renderer) fontInfo(font Font) FontInfo {
return info return info
} }
info.Status = FontStatusMissing info.Status = FontStatusMissing
info.Detail = "未找到可用字体" info.Detail = "可用字体文件缺失"
return info return info
} }