mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-08-30 12:12:40 +08:00
+16
-1
@@ -645,10 +645,25 @@ body[data-hide-meta] .meta-panel {
|
||||
}
|
||||
|
||||
.doc-font-detail {
|
||||
overflow: hidden;
|
||||
color: var(--text-muted);
|
||||
font-size: 11px;
|
||||
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 {
|
||||
|
||||
+44
-12
@@ -1535,17 +1535,44 @@ function renderDocumentFonts() {
|
||||
if (font.embedded && font.status !== "embedded") {
|
||||
badges.append(fontBadge("内嵌", "embedded"));
|
||||
}
|
||||
const detail = document.createElement("div");
|
||||
detail.className = "doc-font-detail";
|
||||
detail.textContent = fontDetail(font);
|
||||
const result = fontResult(font);
|
||||
const metaText = fontMeta(font);
|
||||
|
||||
head.append(name, badges);
|
||||
row.append(head, detail);
|
||||
row.append(head);
|
||||
appendFontResult(row, result);
|
||||
appendFontDetail(row, metaText);
|
||||
fragment.append(row);
|
||||
}
|
||||
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) {
|
||||
const badge = document.createElement("span");
|
||||
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 = [];
|
||||
if (font.familyName && font.familyName !== font.fontName) {
|
||||
parts.push(`字体族 ${font.familyName}`);
|
||||
@@ -1590,13 +1628,7 @@ function fontDetail(font) {
|
||||
if (font.charset) {
|
||||
parts.push(`字符集 ${font.charset}`);
|
||||
}
|
||||
if (font.matched) {
|
||||
parts.push(font.embedded || font.status === "embedded" ? `内嵌 ${font.matched}` : `匹配 ${font.matched}`);
|
||||
}
|
||||
if (font.detail) {
|
||||
parts.push(font.detail);
|
||||
}
|
||||
return parts.join(" · ") || "-";
|
||||
return parts.join(" · ");
|
||||
}
|
||||
|
||||
function fitWidth(updateStatus = true) {
|
||||
|
||||
+7
-7
@@ -22,13 +22,13 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
// FontStatusEmbedded 字体使用OFD内嵌字体
|
||||
// FontStatusEmbedded 内嵌字体可用
|
||||
FontStatusEmbedded = "embedded"
|
||||
// FontStatusMatched 字体命中外部字体
|
||||
// FontStatusMatched 外部字体匹配
|
||||
FontStatusMatched = "matched"
|
||||
// FontStatusFallback 字体使用外部字体回退
|
||||
// FontStatusFallback 外部字体回退
|
||||
FontStatusFallback = "fallback"
|
||||
// FontStatusMissing 字体缺失
|
||||
// FontStatusMissing 字体资源缺失
|
||||
FontStatusMissing = "missing"
|
||||
)
|
||||
|
||||
@@ -98,7 +98,7 @@ func (r *Renderer) FontInfos() ([]FontInfo, error) {
|
||||
ID: id,
|
||||
FontName: id,
|
||||
Status: FontStatusMissing,
|
||||
Detail: "未在OFD资源中声明",
|
||||
Detail: "字体资源未被声明",
|
||||
Used: used,
|
||||
})
|
||||
}
|
||||
@@ -130,7 +130,7 @@ func (r *Renderer) fontInfo(font Font) FontInfo {
|
||||
if _, err := r.Reader.ResData(font.FontFile); err == nil {
|
||||
info.Status = FontStatusEmbedded
|
||||
info.Matched = path.Base(font.FontFile)
|
||||
info.Detail = "使用OFD内嵌字体"
|
||||
info.Detail = "使用内嵌字体文件"
|
||||
} else {
|
||||
info.Status = FontStatusMissing
|
||||
info.Detail = "内嵌字体文件缺失"
|
||||
@@ -149,7 +149,7 @@ func (r *Renderer) fontInfo(font Font) FontInfo {
|
||||
return info
|
||||
}
|
||||
info.Status = FontStatusMissing
|
||||
info.Detail = "未找到可用字体"
|
||||
info.Detail = "可用字体文件缺失"
|
||||
return info
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user