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 {
|
.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
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user