feat: 初始化画个标仓库 - AI驱动设计系统(BYOK模式) - 224源/371504图标+25海报源+130技能

This commit is contained in:
sgp
2026-10-03 21:44:18 +08:00
commit 9e222877ea
497 changed files with 43611 additions and 0 deletions
File diff suppressed because one or more lines are too long
+159
View File
@@ -0,0 +1,159 @@
/**
* 画个标 · 装饰图形系统
* 落地 GitHub logo-design-skill 专业设计方法论:专业 LOGO 的"设计感"来自
* 图形层次 —— 双线环、点状环绕、星点、角括号、弧线、绶带、几何衬底(容器)。
* 所有装饰原语为 24x24 viewBox 字符串,作为 icon 元素渲染。
* fill=true 表示实心填充型(无描边,可用于容器/色块);fill=false 表示描边型。
*/
const HGB_Decorations = (function () {
'use strict';
let seq = 0;
function uid() { return 'dc' + Date.now().toString(36) + (seq++).toString(36); }
/** 颜色亮化:amt 0~1(值越大越接近白色) */
function lighten(hex, amt) {
const c = String(hex || '#888888').replace('#', '');
if (c.length !== 6) return '#cccccc';
const f = (v) => Math.round(v + (255 - v) * Math.min(1, Math.max(0, amt))).toString(16).padStart(2, '0');
return '#' + f(parseInt(c.slice(0, 2), 16)) + f(parseInt(c.slice(2, 4), 16)) + f(parseInt(c.slice(4, 6), 16));
}
/** 颜色加深:amt 0~1 */
function shade(hex, amt) {
const c = String(hex || '#888888').replace('#', '');
if (c.length !== 6) return '#444444';
const f = (v) => Math.round(v * (1 - Math.min(1, Math.max(0, amt)))).toString(16).padStart(2, '0');
return '#' + f(parseInt(c.slice(0, 2), 16)) + f(parseInt(c.slice(2, 4), 16)) + f(parseInt(c.slice(4, 6), 16));
}
/** 判断颜色明暗(返回 true 表示偏深色) */
function isDark(hex) {
const c = String(hex || '#FFFFFF').replace('#', '');
if (c.length !== 6) return false;
const r = parseInt(c.slice(0, 2), 16), g = parseInt(c.slice(2, 4), 16), b = parseInt(c.slice(4, 6), 16);
return (0.2126 * r + 0.7152 * g + 0.0722 * b) < 150;
}
/**
* 装饰原语库
*/
const DECO_KIT = {
/* ---- 环绕/边框类(描边型) ---- */
'deco-dotring': { name: '点状环绕', fill: true, sw: 0, opacity: 0.9,
svg: '<circle cx="12" cy="2" r="1.15"/><circle cx="17.07" cy="4.93" r="1.15"/><circle cx="19.92" cy="10" r="1.15"/><circle cx="19.92" cy="14" r="1.15"/><circle cx="17.07" cy="19.07" r="1.15"/><circle cx="12" cy="22" r="1.15"/><circle cx="6.93" cy="19.07" r="1.15"/><circle cx="4.08" cy="14" r="1.15"/><circle cx="4.08" cy="10" r="1.15"/><circle cx="6.93" cy="4.93" r="1.15"/>' },
'deco-rayring': { name: '射线环', fill: false, sw: 2, opacity: 0.95,
svg: (function () { let p = ''; for (let i = 0; i < 12; i++) { const a = i * 30 * Math.PI / 180, c = Math.cos(a), s = Math.sin(a); p += 'M' + (12 + 8 * c).toFixed(2) + ' ' + (12 + 8 * s).toFixed(2) + 'L' + (12 + 11.5 * c).toFixed(2) + ' ' + (12 + 11.5 * s).toFixed(2); } return p; })() },
'deco-doublering': { name: '双线环', fill: false, sw: 4, opacity: 0.85,
svg: '<circle cx="12" cy="12" r="10.5"/><circle cx="12" cy="12" r="7"/>' },
'deco-arc-top': { name: '上弧形', fill: false, sw: 5, opacity: 0.9,
svg: '<path d="M2 9 A 14 14 0 0 1 22 9"/>' },
'deco-arc-bottom': { name: '下弧形', fill: false, sw: 5, opacity: 0.9,
svg: '<path d="M2 15 A 14 14 0 0 0 22 15"/>' },
'deco-corner-tl': { name: '左上角括号', fill: false, sw: 5, opacity: 0.95,
svg: '<path d="M4 11 V4 H11"/>' },
'deco-corner-br': { name: '右下角括号', fill: false, sw: 5, opacity: 0.95,
svg: '<path d="M20 13 V20 H13"/>' },
'deco-stars': { name: '星点散落', fill: true, sw: 0, opacity: 0.9,
svg: '<path d="M6 4l.9 2.2L9 7l-2.1.9L6 10l-.9-2.1L3 7l2.1-.9z"/><path d="M18 14l.8 1.9 1.9.8-1.9.8-.8 1.9-.8-1.9-1.9-.8 1.9-.8z"/><path d="M16 3.5l.6 1.4 1.4.6-1.4.6-.6 1.4-.6-1.4-1.4-.6 1.4-.6z"/>' },
'deco-divider': { name: '菱形分隔线', fill: true, sw: 0, opacity: 0.95,
svg: '<rect x="2" y="11" width="7" height="2" rx="1"/><path d="M12 8.5l2.6 3.5-2.6 3.5-2.6-3.5z"/><rect x="15" y="11" width="7" height="2" rx="1"/>' },
'deco-chevron': { name: '人字饰带', fill: false, sw: 5, opacity: 0.9,
svg: '<path d="M5 6l6 6-6 6"/><path d="M13 6l6 6-6 6"/>' },
'deco-tri-corner': { name: '三角角标', fill: true, sw: 0, opacity: 0.9,
svg: '<path d="M12 3L21 21H3z"/>' },
'deco-line': { name: '细分隔线', fill: true, sw: 0, opacity: 0.9,
svg: '<rect x="0" y="11" width="24" height="2" rx="1"/>' },
'deco-spark': { name: '光芒四射', fill: true, sw: 0, opacity: 0.9,
svg: '<path d="M12 2l1.8 6.2L20 10l-6.2 1.8L12 18l-1.8-6.2L4 10l6.2-1.8z"/>' },
'deco-laurel-l': { name: '左月桂叶', fill: false, sw: 5, opacity: 0.9,
svg: '<path d="M14 21a8 8 0 0 1-8-8M14 21c-1 0-2-3-2-8s1-8 2-8M6 13a6 6 0 0 1 3-6c2-1 3 1 3 4"/>' },
'deco-laurel-r': { name: '右月桂叶', fill: false, sw: 5, opacity: 0.9,
svg: '<path d="M10 21a8 8 0 0 0 8-8M10 21c1 0 2-3 2-8s-1-8-2-8M18 13a6 6 0 0 0-3-6c-2-1-3 1-3 4"/>' },
/* ---- 实心几何衬底(容器,图标徽章化) ---- */
'deco-shape-circle': { name: '圆形衬底', fill: true, sw: 0, opacity: 1,
svg: '<circle cx="12" cy="12" r="11"/>' },
'deco-shape-squircle':{ name: '圆角方形衬底', fill: true, sw: 0, opacity: 1,
svg: '<rect x="1.6" y="1.6" width="20.8" height="20.8" rx="5"/>' },
'deco-shape-hexagon': { name: '六边形衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M12 1.5L21.3 6.75v10.5L12 22.5 2.7 17.25V6.75z"/>' },
'deco-shape-star': { name: '星形衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M12 1.6l3.2 6.5 7.2 1-5.2 5 1.2 7.1L12 17.9l-6.4 3.3 1.2-7.1-5.2-5 7.2-1z"/>' },
'deco-shape-shield': { name: '盾形衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M12 1.8L20.5 5v7c0 4.6-3.5 8.2-8.5 10.2C7 20.2 3.5 16.6 3.5 12V5z"/>' },
'deco-shape-diamond': { name: '菱形衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M12 1.5L22.5 12 12 22.5 1.5 12z"/>' },
'deco-shape-triangle': { name: '三角衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M12 1.6 L22.4 21.5 H1.6 z"/>' },
'deco-shape-arch': { name: '拱形衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M2 24V11a10 10 0 0 1 20 0v13z"/>' },
'deco-shape-pill': { name: '胶囊衬底', fill: true, sw: 0, opacity: 1,
svg: '<rect x="1.6" y="7" width="20.8" height="10" rx="5"/>' },
'deco-shape-ribbon': { name: '绶带横幅', fill: true, sw: 0, opacity: 1,
svg: '<path d="M2 5h20v11h-8.4l-1.6 3.4L10.4 16H2z"/>' },
'deco-shape-heart': { name: '爱心衬底', fill: true, sw: 0, opacity: 1,
svg: '<path d="M12 21s-8.5-5-10.5-10C-.5 6.5 3 3 6.5 3c2 0 3.6 1 5.5 3 1.9-2 3.5-3 5.5-3C21 3 24.5 6.5 22.5 11 20.5 16 12 21 12 21z"/>' },
/* ---- 分屏/背景面板(填充型,铺满画布) ---- */
'deco-panel-left': { name: '左半色板', fill: true, sw: 0, opacity: 1,
svg: '<rect x="0" y="0" width="12" height="24"/>' },
'deco-panel-diag': { name: '对角色板', fill: true, sw: 0, opacity: 1,
svg: '<path d="M0 0h16L6 24H0z"/>' },
'deco-panel-band': { name: '横向色带', fill: true, sw: 0, opacity: 1,
svg: '<rect x="0" y="10" width="24" height="4.4"/>' },
'deco-panel-barc': { name: '底边色块', fill: true, sw: 0, opacity: 1,
svg: '<path d="M0 16h24v8H0z"/>' }
};
/**
* 构造装饰元素(同 icon 元素结构,渲染走 applyIconStyle)
* @param {string} id DECO_KIT 键名
* @param {number} x 左上角 x
* @param {number} y 左上角 y
* @param {number} w 宽
* @param {number} h 高
* @param {string} color 填充/描边色
* @param {object} grad {id,type,from,to} 渐变对象(有则覆盖纯色)
*/
function decoEl(id, x, y, w, h, color, grad) {
const def = DECO_KIT[id];
if (!def) return null;
const fill = grad ? 'url(#' + grad.id + ')' : (def.fill ? color : 'none');
return {
id: uid(), type: 'icon', name: def.name, iconId: id,
svg: def.svg, x, y, w, h, rotation: 0,
fill: fill,
stroke: def.fill ? 'none' : color,
strokeWidth: def.sw || 4,
grad: grad || null,
opacity: def.opacity != null ? def.opacity : 1,
visible: true, locked: false
};
}
/**
* 按风格返回装饰组合(供布局选择参考;布局也可自选具体原语)
* @param {string} styleId 风格 id
* @param {object} palette 配色 {colors:[主,辅,点,背景]}
* @returns {{dec:Array, decoColor:string, grad:object}}
*/
function buildDecoSet(styleId, palette) {
const colors = (palette && palette.colors) || ['#2563EB', '#3B82F6', '#F59E0B', '#FFFFFF'];
const decoColor = lighten(colors[1] || colors[0], 0.42); // 浅色点缀,低对比
const grad = {
id: 'grad-main' + (++seq),
type: 'linear',
from: colors[0],
to: lighten(colors[0], 0.28)
};
const map = {
minimal: ['deco-doublering'],
gradient: ['deco-dotring'],
vintage: ['deco-arc-top', 'deco-arc-bottom'],
tech: ['deco-corner-tl', 'deco-corner-br'],
playful: ['deco-stars'],
luxury: ['deco-divider'],
flat: ['deco-shape-circle']
};
return { dec: map[styleId] || [], decoColor, grad };
}
return { decoEl, buildDecoSet, lighten, shade, isDark, DECO_KIT };
})();
+62
View File
@@ -0,0 +1,62 @@
/**
* 画个标 · 留学主题字体库
* 包含中文/英文排版推荐 + 可选的 Google Fonts 网络加载
*/
const HGB_Fonts = {
groups: [
{
name: '中文 · 正式',
items: [
{ family: 'SimSun', cn: '宋体', web: false, desc: '经典衬线,典雅学术' },
{ family: 'SimHei', cn: '黑体', web: false, desc: '现代无衬线,稳重清晰' },
{ family: 'KaiTi', cn: '楷体', web: false, desc: '手写感,亲和人文' },
{ family: 'Microsoft YaHei', cn: '微软雅黑', web: false, desc: '屏幕友好,现代通用' }
]
},
{
name: '英文 · 衬线',
items: [
{ family: 'Georgia', cn: 'Georgia', web: false, desc: '经典衬线,传统名校' },
{ family: 'Times New Roman', cn: 'Times', web: false, desc: '报刊气质,学术规范' },
{ family: 'Playfair Display', cn: 'Playfair', web: true, desc: '高端时尚衬线(网络加载)' }
]
},
{
name: '英文 · 无衬线',
items: [
{ family: 'Arial', cn: 'Arial', web: false, desc: '清晰通用,商务首选' },
{ family: 'Verdana', cn: 'Verdana', web: false, desc: '宽字距,易读性强' },
{ family: 'Montserrat', cn: 'Montserrat', web: true, desc: '现代几何感(网络加载)' },
{ family: 'Poppins', cn: 'Poppins', web: true, desc: '圆润时尚(网络加载)' }
]
},
{
name: '英文 · 装饰',
items: [
{ family: 'Impact', cn: 'Impact', web: false, desc: '粗壮有力,标题冲击' },
{ family: 'Courier New', cn: 'Courier', web: false, desc: '等宽打字机,复古文艺' }
]
}
]
};
/** 动态加载 Google Fonts(网络可用时) */
HGB_Fonts.loadWebFont = function (family) {
const id = 'hgb-font-' + family.replace(/[^a-zA-Z0-9]/g, '');
if (document.getElementById(id)) return;
const link = document.createElement('link');
link.id = id;
link.rel = 'stylesheet';
link.href = 'https://fonts.googleapis.com/css2?family=' +
encodeURIComponent(family.replace(/ /g, '+')) + ':wght@400;700;900&display=swap';
document.head.appendChild(link);
};
/** 按 family 查找字体项 */
HGB_Fonts.find = function (family) {
for (const g of this.groups) {
const f = g.items.find(i => i.family === family);
if (f) return f;
}
return null;
};
File diff suppressed because it is too large Load Diff
+97
View File
@@ -0,0 +1,97 @@
/**
* 画个标 · 留学教育元素库 & 基础图形库
* 所有图标统一 24x24 viewBox,线性风格(stroke-based)
*/
const HGB_Icons = {
/* ========== 留学教育元素(第一专项模块) ========== */
edu: [
{
id: 'graduation-cap',
name: '学士帽',
svg: '<polygon points="12 3 1.5 8 12 13 22.5 8 12 3"/><path d="M6 10.6v4.4c0 2.1 2.7 3.6 6 3.6s6-1.5 6-3.6v-4.4"/><line x1="12" y1="13" x2="12" y2="18.6"/><circle cx="12" cy="19.4" r="0.8"/>',
desc: '毕业与学术的经典象征'
},
{
id: 'open-book',
name: '书籍',
svg: '<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>',
desc: '知识、学习与阅读'
},
{
id: 'globe',
name: '地球仪',
svg: '<circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>',
desc: '国际化与全球视野'
},
{
id: 'diploma',
name: '毕业文凭',
svg: '<circle cx="12" cy="8" r="6"/><polyline points="15.48 12.89 17 22 12 19 7 22 8.52 12.89"/>',
desc: '学位证书与荣誉'
},
{
id: 'plane',
name: '留学航线',
svg: '<path d="M22 2L11 13"/><path d="M22 2l-7 20-4-9-9-4 20-7z"/>',
desc: '出国与远行'
},
{
id: 'lighthouse',
name: '灯塔',
svg: '<polygon points="12 2 9.5 5 14.5 5 12 2"/><rect x="9" y="5" width="6" height="5" rx="0.6"/><path d="M8.5 10h7l1.2 4h-9.4z"/><path d="M7.5 14h9l1 8h-11z"/><circle cx="12" cy="7.5" r="1.1"/>',
desc: '指引与方向'
},
{
id: 'pen',
name: '钢笔',
svg: '<path d="M12 19l7-7 3 3-7 7-3-3z"/><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"/><path d="M2 2l7.586 7.586"/><circle cx="11" cy="11" r="2"/>',
desc: '写作与学术'
},
{
id: 'landmark',
name: '学府建筑',
svg: '<line x1="3" y1="22" x2="21" y2="22"/><line x1="6" y1="18" x2="6" y2="11"/><line x1="10" y1="18" x2="10" y2="11"/><line x1="14" y1="18" x2="14" y2="11"/><line x1="18" y1="18" x2="18" y2="11"/><polygon points="12 2 20 7 4 7"/>',
desc: '校园与学院'
},
{
id: 'compass',
name: '指南针',
svg: '<circle cx="12" cy="12" r="10"/><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"/>',
desc: '探索与方向'
},
{
id: 'key',
name: '未来之匙',
svg: '<path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"/>',
desc: '开启未来之门'
},
{
id: 'star-grad',
name: '五星奖章',
svg: '<circle cx="12" cy="12" r="10"/><polygon points="12 5.5 13.8 9.3 18 9.8 15 12.6 15.8 16.8 12 14.7 8.2 16.8 9 12.6 6 9.8 10.2 9.3"/>',
desc: '优秀与卓越'
},
{
id: 'lightbulb',
name: '灵感之灯',
svg: '<path d="M9 18h6"/><path d="M10 22h4"/><path d="M12 2a7 7 0 0 0-4 12.7c.6.5 1 1.3 1 2.1V17h6v-.2c0-.8.4-1.6 1-2.1A7 7 0 0 0 12 2z"/>',
desc: '创意与灵感'
}
],
/* ========== 基础图形 ========== */
shapes: [
{ id: 'circle', name: '圆形', svg: '<circle cx="12" cy="12" r="9"/>', desc: '圆润、包容' },
{ id: 'square', name: '方形', svg: '<rect x="3.5" y="3.5" width="17" height="17" rx="1"/>', desc: '稳重、可靠' },
{ id: 'rounded', name: '圆角方', svg: '<rect x="3.5" y="5" width="17" height="14" rx="4"/>', desc: '现代、亲和' },
{ id: 'hexagon', name: '六边形', svg: '<polygon points="12 2.5 20.5 7.25 20.5 16.75 12 21.5 3.5 16.75 3.5 7.25"/>', desc: '科技、独特' },
{ id: 'triangle', name: '三角', svg: '<polygon points="12 3 22 20 2 20"/>', desc: '进取、上升' },
{ id: 'diamond', name: '菱形', svg: '<polygon points="12 2.5 21.5 12 12 21.5 2.5 12"/>', desc: '优雅、精致' },
{ id: 'star', name: '五角星', svg: '<polygon points="12 2.8 14.7 8.7 21.2 9.5 16.5 14 17.6 20.4 12 17.2 6.4 20.4 7.5 14 2.8 9.5 9.3 8.7"/>', desc: '卓越、闪耀' },
{ id: 'heart', name: '爱心', svg: '<path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.6l-1-1a5.5 5.5 0 0 0-7.8 7.8l1 1L12 21l7.8-7.6 1-1a5.5 5.5 0 0 0 0-7.8z"/>', desc: '关爱、热情' },
{ id: 'shield', name: '盾牌', svg: '<path d="M12 2l8 3v6c0 5-3.5 9.5-8 11-4.5-1.5-8-6-8-11V5z"/>', desc: '保障、专业' },
{ id: 'ring', name: '圆环', svg: '<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="4.5"/>', desc: '环环相扣' },
{ id: 'seal', name: '印章圆', svg: '<circle cx="12" cy="12" r="9.5"/><circle cx="12" cy="12" r="6.5"/>', desc: '认证、官方' },
{ id: 'arch', name: '拱门', svg: '<path d="M4 21v-9a8 8 0 0 1 16 0v9"/><path d="M8 21v-9a4 4 0 0 1 8 0v9"/>', desc: '经典、学术' }
]
};
+169
View File
@@ -0,0 +1,169 @@
/**
* 画个标 · 垂直行业模块库
* 每个行业包含:专属元素库、推荐配色方案、推荐风格与字体
* 行业元素统一 24x24 viewBox 线性风格
*/
const HGB_Industries = [
/* ================= 留学教育 ================= */
{
id: 'edu',
name: '留学教育',
emoji: '🎓',
desc: '学士帽、书籍、地球仪等教育视觉元素',
icons: HGB_Icons.edu,
palettes: [
{ name: '学术蓝', desc: '沉稳专业,国际教育主流', colors: ['#1B4F72', '#2980B9', '#AED6F1', '#F4F6F7'], scene: '留学中介' },
{ name: '常春藤绿', desc: '常春藤盟校气质', colors: ['#1E8449', '#27AE60', '#D5F5E3', '#FFFFFF'], scene: '本科留学' },
{ name: '皇家金', desc: '学历含金量与荣耀', colors: ['#7D6608', '#D4AC0D', '#F9E79F', '#FEF9E7'], scene: '商学院' },
{ name: '梦想天蓝', desc: '清新明亮,追梦活力', colors: ['#2471A3', '#5DADE2', '#EBF5FB', '#FFFFFF'], scene: '语言培训' }
],
styleIds: ['minimal', 'badge', 'vintage'],
fontFamilies: ['SimSun', 'Georgia', 'Playfair Display', 'SimHei']
},
/* ================= 餐饮美食 ================= */
{
id: 'food',
name: '餐饮美食',
emoji: '🍽️',
desc: '厨师帽、咖啡、汉堡等餐饮元素',
icons: [
{ id: 'chef-hat', name: '厨师帽', svg: '<path d="M17 21a1 1 0 0 0 1-1v-5.35c0-.457.316-.844.727-1.041a4 4 0 0 0-2.134-7.589 5 5 0 0 0-9.186 0 4 4 0 0 0-2.134 7.588c.411.198.727.585.727 1.041V20a1 1 0 0 0 1 1Z"/><path d="M6 17h12"/>', desc: '主厨与专业烹饪' },
{ id: 'coffee', name: '咖啡杯', svg: '<path d="M17 8h1a4 4 0 1 1 0 8h-1"/><path d="M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z"/><line x1="6" y1="2" x2="6" y2="4"/><line x1="10" y1="2" x2="10" y2="4"/><line x1="14" y1="2" x2="14" y2="4"/>', desc: '咖啡厅与休闲时光' },
{ id: 'utensils', name: '刀叉餐具', svg: '<path d="M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2"/><path d="M7 2v20"/><path d="M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7"/>', desc: '用餐与精致餐饮' },
{ id: 'burger', name: '汉堡', svg: '<path d="M3 11a9 9 0 0 1 18 0z"/><path d="M4 13.5h16"/><path d="M4.5 15.5h15"/><path d="M5 16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2z"/>', desc: '快餐与欢乐' },
{ id: 'wine', name: '高脚杯', svg: '<path d="M8 22h8"/><path d="M7 10h10"/><path d="M12 15v7"/><path d="M12 15a5 5 0 0 0 5-5c0-2-.8-4-2-6H9c-1.2 2-2 4-2 6a5 5 0 0 0 5 5z"/>', desc: '品酒与格调' },
{ id: 'cake', name: '蛋糕', svg: '<circle cx="12" cy="18" r="4"/><path d="M12 14c3.3 0 6-2.2 6-5 0 0-2.5 1-3.5-1.5C13.5 5 14 3 12 3s-1.5 2-2.5 4.5C8.5 10 6 9 6 9c0 2.8 2.7 5 6 5z"/>', desc: '甜品与庆典' },
{ id: 'soup', name: '热汤碗', svg: '<path d="M4 11h16a1 1 0 0 1 .5 1.87c-.8.4-1.3 1.3-1.3 2.13V17a3 3 0 0 1-3 3h-8a3 3 0 0 1-3-3v-2c0-.83-.5-1.73-1.3-2.13A1 1 0 0 1 4 11Z"/><path d="M8 10V9"/><path d="M16 10V9"/><path d="M12 10V9"/>', desc: '暖汤与养生' },
{ id: 'icecream', name: '冰淇淋', svg: '<path d="M12 2a5 5 0 0 1 5 5c0 3-1 5-2 8H9c-1-3-2-5-2-8a5 5 0 0 1 5-5z"/><path d="M9.5 17h5"/>', desc: '清凉与甜蜜' }
],
palettes: [
{ name: '香橙暖阳', desc: '热情食欲,餐饮首选', colors: ['#E67E22', '#F39C12', '#FDEBD0', '#FFF9F0'], scene: '中西餐厅' },
{ name: '红酒典雅', desc: '高格调,成熟稳重', colors: ['#7B241C', '#C0392B', '#F5B7B1', '#FDF2F2'], scene: '西餐酒吧' },
{ name: '抹茶清新', desc: '自然清新,健康轻食', colors: ['#1E8449', '#7DCEA0', '#E9F7EF', '#FFFFFF'], scene: '轻食甜品' },
{ name: '咖啡醇香', desc: '温暖醇厚,休闲空间', colors: ['#6F4E37', '#A67B5B', '#DCC7AA', '#F7F1E5'], scene: '咖啡烘焙' }
],
styleIds: ['cartoon', 'hand', 'badge'],
fontFamilies: ['Microsoft YaHei', 'Poppins', 'KaiTi', 'Verdana']
},
/* ================= 医疗健康 ================= */
{
id: 'health',
name: '医疗健康',
emoji: '⚕️',
desc: '十字、心跳、药丸等健康元素',
icons: [
{ id: 'medical-cross', name: '医疗十字', svg: '<circle cx="12" cy="12" r="10"/><path d="M12 8v8"/><path d="M8 12h8"/>', desc: '医疗与急救' },
{ id: 'heart-pulse', name: '心跳', svg: '<path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.6l-1-1a5.5 5.5 0 0 0-7.8 7.8l1 1L12 21l7.8-7.6 1-1a5.5 5.5 0 0 0 0-7.8z"/><path d="M7 12h3l1.5-3 2 6 1.5-3h2"/>', desc: '健康与生命活力' },
{ id: 'pill', name: '药丸', svg: '<path d="M10.5 20.5a5 5 0 0 1-7-7l8-8a5 5 0 0 1 7 7z"/><path d="M3.5 13.5l7-7"/>', desc: '医药与护理' },
{ id: 'stethoscope', name: '听诊器', svg: '<path d="M4.8 2.3A.3.3 0 1 0 5 2H4a2 2 0 0 0-2 2v5a6 6 0 0 0 6 6 6 6 0 0 0 6-6V4a2 2 0 0 0-2-2h-1a.2.2 0 1 0 .3.3"/><path d="M8 15v1a6 6 0 0 0 6 6 6 6 0 0 0 6-6v-4"/><circle cx="20" cy="10" r="2"/>', desc: '诊疗与关怀' },
{ id: 'first-aid', name: '急救箱', svg: '<rect x="2" y="6" width="20" height="12" rx="2"/><path d="M12 9v6"/><path d="M9 12h6"/><path d="M8 6V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1"/>', desc: '急救与保障' },
{ id: 'syringe', name: '注射器', svg: '<path d="m18 2 4 4"/><path d="m17 7 3-3"/><path d="M19 9 8.7 19.3c-1 1-2.5 1-3.4 0l-.6-.6c-1-1-1-2.5 0-3.4L15 5"/><path d="m9 11 4 4"/><path d="m5 19-3 3"/><path d="m14 4 6 6"/>', desc: '接种与医学' },
{ id: 'ambulance', name: '救护车', svg: '<rect x="2" y="5" width="16" height="12" rx="2"/><path d="M18 9h3l2 3v5h-2"/><path d="M7 8v6"/><path d="M4 11h6"/><circle cx="6.5" cy="19" r="1.8"/><circle cx="18" cy="19" r="1.8"/>', desc: '应急与救援' },
{ id: 'microscope', name: '显微镜', svg: '<path d="M6 18h8"/><path d="M3 22h18"/><path d="M14 22a7 7 0 1 0 0-14h-1"/><path d="M9 14h2"/><path d="M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z"/><path d="M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3"/>', desc: '研究与实验室' }
],
palettes: [
{ name: '医疗蓝', desc: '专业信赖,医疗主流', colors: ['#1A5276', '#5DADE2', '#D6EAF8', '#FFFFFF'], scene: '综合医院' },
{ name: '健康绿', desc: '生机健康,自然疗愈', colors: ['#1E8449', '#58D68D', '#D5F5E3', '#FFFFFF'], scene: '养生保健' },
{ name: '纯净白蓝', desc: '洁净清爽,现代诊所', colors: ['#2E86C1', '#85C1E9', '#F0F8FF', '#FFFFFF'], scene: '口腔诊所' },
{ name: '安心浅蓝', desc: '温和安心,母婴护理', colors: ['#2874A6', '#5DADE2', '#EBF5FB', '#F4F6F6'], scene: '母婴护理' }
],
styleIds: ['minimal', 'business', 'tech'],
fontFamilies: ['Microsoft YaHei', 'Arial', 'SimHei', 'Montserrat']
},
/* ================= 科技互联网 ================= */
{
id: 'tech',
name: '科技互联网',
emoji: '💻',
desc: '芯片、火箭、代码等科技元素',
icons: [
{ id: 'chip', name: '芯片', svg: '<rect x="7" y="7" width="10" height="10" rx="1"/><path d="M9 3v4"/><path d="M15 3v4"/><path d="M9 17v4"/><path d="M15 17v4"/><path d="M3 9h4"/><path d="M3 15h4"/><path d="M17 9h4"/><path d="M17 15h4"/><rect x="10" y="10" width="4" height="4"/>', desc: '半导体与算力' },
{ id: 'rocket', name: '火箭', svg: '<path d="M12 2c2.5 3 4 6 4 9l3 3v5h-4l-1.5 2.5L12 22l-1.5-1.5L9 19H5v-5l3-3c0-3 1.5-6 4-9z"/><circle cx="12" cy="11" r="2"/>', desc: '创新与速度' },
{ id: 'code', name: '代码', svg: '<path d="M8 6l-6 6 6 6"/><path d="M16 6l6 6-6 6"/>', desc: '开发与编程' },
{ id: 'cloud', name: '云服务', svg: '<path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/>', desc: '云计算与存储' },
{ id: 'robot', name: '机器人', svg: '<rect x="4" y="8" width="16" height="12" rx="2"/><path d="M12 8V4"/><circle cx="12" cy="3" r="1"/><circle cx="9" cy="13" r="1"/><circle cx="15" cy="13" r="1"/><path d="M9 17h6"/>', desc: 'AI 与自动化' },
{ id: 'gear', name: '齿轮', svg: '<circle cx="12" cy="12" r="3"/><path d="M12 2v3"/><path d="M12 19v3"/><path d="M2 12h3"/><path d="M19 12h3"/><path d="M4.9 4.9l2.1 2.1"/><path d="M17 17l2.1 2.1"/><path d="M19.1 4.9L17 7"/><path d="M7 17l-2.1 2.1"/>', desc: '系统与运转' },
{ id: 'monitor', name: '显示器', svg: '<rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8"/><path d="M12 17v4"/>', desc: '软件与界面' },
{ id: 'wifi', name: '无线网络', svg: '<path d="M5 12.55a11 11 0 0 1 14.08 0"/><path d="M8.53 16.11a7 7 0 0 1 6.95 0"/><line x1="12" y1="20" x2="12.01" y2="20"/>', desc: '连接与在线' }
],
palettes: [
{ name: '科技蓝紫', desc: '智慧深邃,数字感', colors: ['#4A235A', '#8E44AD', '#BB8FCE', '#F5EEF8'], scene: '互联网公司' },
{ name: '电路蓝', desc: '冷静专业,工业科技', colors: ['#1B2631', '#2980B9', '#85C1E9', '#F4F6F7'], scene: '智能硬件' },
{ name: '极客霓虹', desc: '活力张扬,年轻潮流', colors: ['#0B132B', '#3A86FF', '#FF006E', '#FB5607'], scene: '游戏娱乐' },
{ name: '未来银灰', desc: '极简高级,未来感', colors: ['#2C3E50', '#7F8C8D', '#BDC3C7', '#ECF0F1'], scene: '人工智能' }
],
styleIds: ['tech', 'gradient', 'minimal'],
fontFamilies: ['SimHei', 'Montserrat', 'Verdana', 'Microsoft YaHei']
},
/* ================= 体育竞技 ================= */
{
id: 'sport',
name: '体育竞技',
emoji: '🏆',
desc: '奖杯、足球、奖牌等运动元素',
icons: [
{ id: 'trophy', name: '奖杯', svg: '<path d="M8 21h8"/><path d="M12 17v4"/><path d="M7 4h10v6a5 5 0 0 1-10 0z"/><path d="M7 6H4a2.5 2.5 0 0 0 0 5h3"/><path d="M17 6h3a2.5 2.5 0 0 1 0 5h-3"/>', desc: '冠军与荣耀' },
{ id: 'soccer', name: '足球', svg: '<circle cx="12" cy="12" r="9"/><path d="M12 7l2.5 1.5L13.5 11h-3l-1-2.5z"/><path d="M12 3v4"/><path d="M5 8.5l3 1"/><path d="M16 20l-1.5-2.5"/><path d="M8 20l1.5-2.5"/>', desc: '绿茵与团队' },
{ id: 'basketball', name: '篮球', svg: '<circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3a9 9 0 0 0 0 18"/>', desc: '活力与对抗' },
{ id: 'medal', name: '奖牌', svg: '<circle cx="12" cy="14" r="5"/><path d="M9 3l-1 3"/><path d="M15 3l1 3"/><path d="M9.5 6h5"/><path d="M12 12l.9 1.7 1.9.3-1.4 1.3.3 1.9-1.7-.9-1.7.9.3-1.9L9.2 14l1.9-.3z"/>', desc: '成就与荣誉' },
{ id: 'runner', name: '奔跑', svg: '<circle cx="13" cy="4" r="2"/><path d="M5 21l3-6 2 1 1 5"/><path d="M8 15l2-4 3-1 3 3 2 1"/>', desc: '运动与坚持' },
{ id: 'dumbbell', name: '哑铃', svg: '<path d="M6.5 6.5v11"/><path d="M17.5 6.5v11"/><path d="M2 9v6"/><path d="M22 9v6"/><rect x="6.5" y="9" width="11" height="6" rx="1"/>', desc: '力量与健身' },
{ id: 'bike', name: '骑行', svg: '<circle cx="6" cy="17" r="3.5"/><circle cx="18" cy="17" r="3.5"/><path d="M6 17L10 8h4l4 9"/><path d="M14 8h2"/>', desc: '健康与户外' },
{ id: 'stopwatch', name: '秒表', svg: '<circle cx="12" cy="13" r="8"/><path d="M12 9v4l2.5 2.5"/><path d="M9 2h6"/><path d="M12 2v3"/>', desc: '竞速与计时' }
],
palettes: [
{ name: '活力橙', desc: '阳光热情,运动活力', colors: ['#E67E22', '#F39C12', '#FDEBD0', '#FFF9F0'], scene: '综合健身' },
{ name: '赛场绿', desc: '清新自然,健康向上', colors: ['#1E8449', '#52BE80', '#D5F5E3', '#FFFFFF'], scene: '户外运动' },
{ name: '冠军金', desc: '尊贵闪耀,胜利荣光', colors: ['#7D6608', '#D4AC0D', '#F9E79F', '#FEF9E7'], scene: '竞技赛事' },
{ name: '热血红', desc: '激情澎湃,力量对决', colors: ['#922B21', '#E74C3C', '#F5B7B1', '#FDEDEC'], scene: '搏击格斗' }
],
styleIds: ['cartoon', 'hand', 'badge'],
fontFamilies: ['Impact', 'Microsoft YaHei', 'KaiTi', 'Arial']
},
/* ================= 金融商务 ================= */
{
id: 'finance',
name: '金融商务',
emoji: '💼',
desc: '钱币、银行、图表等商务元素',
icons: [
{ id: 'coin', name: '钱币', svg: '<circle cx="12" cy="12" r="9"/><path d="M12 6v12"/><path d="M8.5 9.5h7"/><path d="M8.5 14.5h7"/>', desc: '财富与价值' },
{ id: 'bank', name: '银行', svg: '<polygon points="3 9 12 3 21 9"/><rect x="3" y="10" width="18" height="4"/><path d="M5 14v5"/><path d="M9.5 14v5"/><path d="M14.5 14v5"/><path d="M19 14v5"/><path d="M3 19h18"/>', desc: '金融与信用' },
{ id: 'trending-up', name: '增长图表', svg: '<path d="M23 6l-9.5 9.5-5-5L1 18"/><path d="M17 6h6v6"/>', desc: '增长与上升' },
{ id: 'handshake', name: '握手', svg: '<path d="m11 17 2 2a1 1 0 1 0 3-3"/><path d="m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4"/><path d="m21 3 1 11h-2"/><path d="M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3"/><path d="M3 4h8"/>', desc: '合作与共赢' },
{ id: 'briefcase', name: '公文包', svg: '<rect x="2" y="7" width="20" height="14" rx="2"/><path d="M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><path d="M2 13h20"/>', desc: '商务与职场' },
{ id: 'calculator', name: '计算器', svg: '<rect x="4" y="2" width="16" height="20" rx="2"/><line x1="8" y1="6" x2="16" y2="6"/><line x1="16" y1="14" x2="16" y2="18"/><path d="M8 14h.01"/><path d="M12 14h.01"/><path d="M8 18h.01"/><path d="M12 18h.01"/>', desc: '财务与计算' },
{ id: 'gem', name: '钻石', svg: '<path d="M6 3h12l4 6-10 13L2 9z"/><path d="M2 9h20"/><path d="M12 22L8 9l4-6 4 6z"/>', desc: '珍贵与高端' },
{ id: 'money-bag', name: '钱袋', svg: '<path d="M8 7L5 3h14l-3 4"/><path d="M8 7h8v3a4 4 0 0 1-8 0z"/><path d="M6 17a4 4 0 0 0 4 4h4a4 4 0 0 0 4-4v-4H6z"/>', desc: '投资与储蓄' }
],
palettes: [
{ name: '商务深蓝', desc: '专业稳重,金融权威', colors: ['#1B2631', '#2E86C1', '#F1C40F', '#F4F6F7'], scene: '银行保险' },
{ name: '金砖', desc: '奢华尊贵,财富象征', colors: ['#7D6608', '#D4AC0D', '#F9E79F', '#FEF9E7'], scene: '投资理财' },
{ name: '稳重灰蓝', desc: '严谨理性,商务咨询', colors: ['#34495E', '#5D6D7E', '#AEB6BF', '#FFFFFF'], scene: '企业咨询' },
{ name: '翡翠绿', desc: '稳健增长,安心可靠', colors: ['#145A32', '#1E8449', '#ABEBC6', '#F0FDF4'], scene: '证券基金' }
],
styleIds: ['business', 'minimal', 'vintage'],
fontFamilies: ['Arial', 'SimHei', 'Georgia', 'Montserrat']
}
];
/** 按 id 查找行业(使用原生 find,避免覆盖数组方法) */
HGB_Industries.find = function (id) {
return Array.prototype.find.call(this, x => x.id === id) || this[0];
};
/** 当前行业(默认留学教育) */
HGB_Industries.current = function () {
const id = localStorage.getItem('hgb_industry') || 'edu';
return HGB_Industries.find(id);
};
/** 设置当前行业 */
HGB_Industries.setCurrent = function (id) {
localStorage.setItem('hgb_industry', id);
};
+35
View File
@@ -0,0 +1,35 @@
# 画个标 · 系统基线(构建自动生成,勿手改)
> 由 `scripts/build-baseline.js` 生成。素材/技能变更并构建后,重新运行 `node scripts/build-baseline.js` 即自动更新。
> 执行「AI 指令库 指令一~四」前,先读本文件获取当前基线,勿依赖记忆中的数字。
## 生成时间
2026-08-24T11:30:15.593Z
## ① 图标库(共享,LOGO/头像/海报共用)
- 源数:224 | 图标总数:371504
- 类型分布:icon 165 / emoji 27 / brand 32
- 源清单(含 count/file/workspaces):js/data/manifest/icons.json
## ② 海报素材库
- 源数:25 | 素材总数:1582
- 类型分布:palette 6 / decoration 4 / bg 3 / font 12
- 源清单:js/data/manifest/posters.json
## ③ 技能库
- 共享技能:54(分类:layout 10 / color 9 / typography 8 / icon 8 / ai 6 / presentation 5 / export 8)
- 海报技能:64(分类:layout 8 / color 8 / typography 8 / grid 8 / hierarchy 8 / print 8 / creative 8 / ai 8)
- 表情技能:12(分类:motion 11 / emotion 1)
- 三区覆盖(共享,按 scene/workspaces):LOGO 向 54 / 头像向 45 / 海报向 54 / 未标注 0
- 三区覆盖(海报专属):LOGO 向 0 / 头像向 0 / 海报向 64
- 技能明细:js/data/manifest/skills.json
## 指令使用提示
- 指令一(新增图标源):去重以本文件 ① 的源清单 + icon-sources.js 现有 id 为准
- 指令二(新增海报源):去重以 ② + poster-sources.js 现有 id 为准
- 指令三(新增技能):看 ③ 三区覆盖找缺口(头像向最少则优先补头像);表情向技能看表情技能分类分布
+85
View File
@@ -0,0 +1,85 @@
# 画个标 · 素材与技能库读取指南(AI / 外部项目专用)
> 本目录是「画个标」系统对外暴露的**机器可读出口**:三份 JSON manifest + 本指南。
> 其他项目或 AI 要复用本库的素材/技能,**先读本指南 + 对应 manifest,再按需定向读数据文件**,即可准确命中,无需猜测文件名或解析大体积 JS 索引。
## 一、库里有什么(三套资源)
| 库 | manifest | 数据文件 | 数量(以对应 manifest 的 `total` 为准) |
|---|---|---|---|
| 共享图标库(LOGO/头像) | [icons.json](icons.json) | `js/data/sources/{id}.js` + `js/data/builtin-icons.js` | 222 源 / 370,268 图标 |
| 头像风格(DiceBear) | [icons.json](icons.json)(`dicebear` 字段) | `js/data/sources/dicebear-{style}.js` | 55 风格 |
| 海报素材库 | [posters.json](posters.json) | `js/data/posters/{id}.js` + `js/data/posters/{id}/files/` | 25 源 / 1,582 素材 |
| 共享技能 | [skills.json](skills.json)(`shared`) | 实现代码 `js/skills/*.js` | 48 个 / 7 类 |
| 海报技能 | [skills.json](skills.json)(`poster`) | 实现代码 `js/poster-skills/*.js` | 56 个 / 8 类 |
| 表情技能 | [skills.json](skills.json)(`sticker`) | 实现代码 `js/sticker-skills/*.js` | 12 个 / 2 类 |
> 注:上表数量为快照,**一切以对应 manifest 内的 `total` / `count` 字段为准**(构建时自动更新,本 README 为手写维护)。
## 二、manifest 结构(标准字段)
### icons.json / posters.json
```json
{
"kind": "icons", // icons | posters
"total": 367988, // 库内素材总数
"builtAt": "2026-08-23T…", // 构建时间(ISO)
"idRule": "「源:名称」,如 lucide:graduation-cap",
"sources": [ // 每个源一条(含实际内置数 count)
{
"id": "lucide", "type": "icon", // type: icon/emoji/brand(海报: palette/font/bg/decoration…)
"name": "Lucide Icons", "nameCn": "Lucide 图标",
"desc": "…", "style": "线条",
"license": "ISC", "licenseNote": "…", // 协议务必先读,商用需合规
"home": "…", "github": "…", "npm": "…",
"format": "sprite", // 拉取方式:iconify/dir-files/gh-files/sprite/nodes/remix-files
"coordText": "24 坐标", "variants": "…", "added": "2026-08-10",
"count": 1767, // 该源实际内置数
"file": "sources/lucide.js", // 该源数据文件相对路径(js/data/ 下)
"workspaces": ["logo","avatar"]
}
]
}
```
- **图标 id 规范**:内置库 `源:名称`(`lucide:graduation-cap`);行业图标为裸 id。
- **数据文件** `js/data/sources/{id}.js` 内容形态:`window['HGB_Source_{id}'] = { icons: [{ id, name, categoryCn, svg, type }] }`。`svg` 为归一化到 24 viewBox 的 body 片段(含 path/几何),渲染时套 `<svg viewBox="0 0 24 24">`。
- **头像**:`js/data/sources/dicebear-{style}.js` = `window.HGB_Dicebear_{style} = {…DiceBear 定义…}`(渲染器规则见 DiceBear 官方 schema)。
### posters.json
- **素材 id**:`源:相对路径`(如 `fontsource-inter:latin-400-normal.woff2`)。
- 数据文件 `js/data/posters/{id}.js` = `window['HGB_PosterSource_{id}'] = { items: [{ id, name, categoryCn, type, svg?|file?|data? }] }`;二进制(字体/位图)在 `js/data/posters/{id}/files/` 按 `file` 引用直读;配色为内联 `data`。
### skills.json
```json
{
"kind": "skills",
"shared": {
"total": 48,
"skills": [{
"id": "contrast-check", "name": "对比度检查", "category": "color",
"emoji": "🎨", "scene": "…", "summary": "…", "params": "…", "source": "自研",
"step": 3, // 设计流水线步骤 1品牌洞察/2方案生成/3方案评审/4迭代优化/5交付导出
"kind": "check", // gen 生成建议 / check 方案检查 / deliver 交付导出
"workspaces": ["logo","avatar","poster"]
}]
},
"poster": { "total": 56, "skills": [ …同字段(无 step/kind,按 category 8 类)… ] },
"sticker": { "total": 12, "skills": [ …同字段(无 step/kind,按 category motion/emotion 2 类)… ] }
}
```
- 技能元数据是纯数据可直接当知识用;**run/test 是函数实现**,仅供系统执行(`HGB_Skills.run(id, args)` / `HGB_Skills.test(id)`),外部如需「执行技能」请加载 `js/skills/*.js`(含数据依赖)后调用 API。
- 表情技能(`sticker`)实现代码 `js/sticker-skills/*.js`,API 为 `HGB_StickerSkills.run(id, args)` / `HGB_StickerSkills.test(id)`,`workspaces` 统一 `["emoji"]`;其动画决策依赖 `js/core/motion.js`(ANIMS 注册表,预览与导出逐帧采样共用同一套 `apply`)。
## 三、AI 推荐读取流程
1. 先读本指南(README.md)了解库结构与 id 规范;
2. 读对应 manifest 定位「有哪些源 / 每源多少 / 协议是否合规」;
3. 需要具体素材时,按 manifest 的 `file` 字段定向读 `js/data/sources/{id}.js`(或 `posters/{id}.js`),避免读 2.4MB 单行索引 `builtin-icons.js`;
4. 协议存疑(BY-SA/BY-NC/BY-ND/GPL)不商用;多色源(type emoji/brand)保留原色。
## 四、维护(构建后 manifest 自动更新)
- 图标:`node scripts/build-icons.js` → 重写 `builtin-icons.js` + `sources/{id}.js` + `manifest/icons.json`
- 海报:`node scripts/build-posters.js` → 重写 `poster-builtin.js` + `posters/{id}.js` + `manifest/posters.json`
- 技能:`node scripts/build-skill-manifest.js` → 重写 `manifest/skills.json`(技能元数据;技能代码改动后需重跑)
- 前端页面 sources.html / poster-sources.html 优先读 manifest(fetch 失败自动回退内置配置),skills 页面直接读技能 API(与 manifest 同源)。
File diff suppressed because it is too large Load Diff
+509
View File
@@ -0,0 +1,509 @@
{
"kind": "posters",
"total": 1582,
"builtAt": "2026-08-23T11:12:08.130Z",
"guide": "js/data/manifest/README.md",
"idRule": "「源:相对路径」,如 fontsource-inter:latin-400-normal.woff2",
"sources": [
{
"id": "uigradients",
"type": "palette",
"name": "uiGradients",
"nameCn": "UI 渐变配色库",
"desc": "GitHub 社区精选 200+ 款渐变配色方案,含品牌渐变、自然风光与经典风格渐变,可直接用于海报背景与主视觉",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://uigradients.com",
"github": "https://github.com/ghosh/uiGradients",
"format": "gh-files",
"coordText": "配色数据(gradients.json,顶层数组:名称 + 十六进制色值序列)",
"variants": "单文件 gradients.json,约 200 款渐变",
"added": "2026-08-20",
"count": 1,
"file": "posters/uigradients.js",
"workspaces": [
"poster"
]
},
{
"id": "twemoji",
"type": "decoration",
"name": "Twemoji",
"nameCn": "Twitter 彩色表情",
"desc": "Twitter/X 官方彩色 Emoji 表情 SVG(CC BY 4.0),适合作为海报点缀符号与情感化视觉元素",
"license": "CC BY 4.0",
"licenseNote": "CC BY 4.0,可商用,使用需署名(Twitter/X 官方表情库)",
"home": "https://twemoji.twitter.com",
"github": "https://github.com/jdecked/twemoji",
"format": "gh-files",
"coordText": "36×36 视口彩色矢量表情,保留原始比例",
"variants": "表情全集 3600+ 过大,首批 maxItems 限量收录 500 个常用表情(活动/运动/物品/符号),后续可按需扩量",
"added": "2026-08-20",
"count": 500,
"file": "posters/twemoji.js",
"workspaces": [
"poster"
]
},
{
"id": "heropatterns",
"type": "bg",
"name": "Hero Patterns",
"nameCn": "可平铺背景底纹",
"desc": "Steve Schoger 经典背景底纹集合(lowmess 维护 v2.1),约 90 款几何/纹理/趣味图案,可无缝平铺,直接作为海报背景底纹",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://heropatterns.com",
"github": "https://github.com/lowmess/hero-patterns",
"format": "gh-files",
"coordText": "平铺单元 SVG(各图案尺寸不一,保留原始 viewBox)",
"variants": "全量收录 ~90 款,默认黑色填充(可叠加底色或换色后使用)",
"added": "2026-08-21",
"count": 87,
"file": "posters/heropatterns.js",
"workspaces": [
"poster"
]
},
{
"id": "league-spartan",
"type": "font",
"name": "League Spartan",
"nameCn": "League Spartan 字体",
"desc": "League of Moveable Type 出品的现代几何无衬线字体(SIL OFL 1.1),粗细跨度 Thin→Black 共 9 个字重,适合海报大标题与品牌主视觉",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://www.theleagueofmoveabletype.com/league-spartan",
"github": "https://github.com/theleagueof/league-spartan",
"format": "gh-files",
"coordText": "TTF 静态字体文件(9 个字重,浏览器 @font-face 直载)",
"variants": "Thin / ExtraLight / Light / Regular / Medium / SemiBold / Bold / ExtraBold / Black",
"added": "2026-08-21",
"count": 9,
"file": "posters/league-spartan.js",
"workspaces": [
"poster"
]
},
{
"id": "open-color",
"type": "palette",
"name": "Open Color",
"nameCn": "Open Color 现代色板",
"desc": "MIT 开源现代色板:13 个色系(灰/红/粉/紫/蓝/青/绿/黄/橙…)× 每个 10 级明度,共 130 色,色调统一和谐,适合海报背景、强调色与数据可视化配色",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://yeun.github.io/open-color/",
"github": "https://github.com/yeun/open-color",
"format": "gh-files",
"coordText": "配色数据(open-color.json,13 色系 × 10 明度十六进制色值)",
"variants": "单文件 open-color.json,130 色(13 色系 × 10 级)",
"added": "2026-08-21",
"count": 1,
"file": "posters/open-color.js",
"workspaces": [
"poster"
]
},
{
"id": "catppuccin",
"type": "palette",
"name": "Catppuccin",
"nameCn": "Catppuccin 主题色板",
"desc": "社区热门主题色板:Latte / Frappe / Macchiato / Mocha 4 套主题 × 26 色(含玫瑰水/火焰/粉/葡萄紫等柔和高对比色),风格柔和不刺眼,适合海报背景与强调色",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://catppuccin.com",
"github": "https://github.com/catppuccin/palette",
"format": "gh-files",
"coordText": "配色数据(palette.json 4 主题 × 26 色 + palette-porcelain.json 变体)",
"variants": "2 个 JSON:主色板 palette.json + 陶瓷变体 palette-porcelain.json",
"added": "2026-08-21",
"count": 2,
"file": "posters/catppuccin.js",
"workspaces": [
"poster"
]
},
{
"id": "coolshapes",
"type": "decoration",
"name": "Coolshapes",
"nameCn": "几何装饰形状",
"desc": "100% 开源几何装饰形状包:椭圆/花朵/月亮/多边形/星星/三角/轮辐等 66 款矢量图形(200×200),适合作为海报点缀元素与插画局部",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://coolshap.es",
"github": "https://github.com/realvjy/coolshapes",
"format": "gh-files",
"coordText": "200×200 视口矢量图形,保留原始坐标(可等比缩放后叠加使用)",
"variants": "全量收录 66 款(ellipse/flower/misc/moon/polygon/star/triangle/wheel)",
"added": "2026-08-21",
"count": 66,
"file": "posters/coolshapes.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-playfair",
"type": "font",
"name": "Playfair Display",
"nameCn": "Playfair Display 字体",
"desc": "经典高对比衬线标题字体(OFL 1.1),字重 400-900 可变 + 斜体,优雅文艺气质,适合海报大标题与品牌视觉",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Playfair+Display",
"github": "https://github.com/clauseggers/Playfair-Display",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext / cyrillic / vietnamese × normal / italic)",
"variants": "8 个子集文件,字重 400-900 可调(wght 轴),拉丁子集覆盖英文/数字/西文标点",
"added": "2026-08-21",
"count": 8,
"file": "posters/fontsource-playfair.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-oswald",
"type": "font",
"name": "Oswald",
"nameCn": "Oswald 字体",
"desc": "高辨识度压缩无衬线标题字体(OFL 1.1),窄而有力的字形,适合海报标题、数据标注与运动/促销风格",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Oswald",
"github": "https://github.com/googlefonts/OswaldFont",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext / cyrillic / cyrillic-ext / vietnamese)",
"variants": "5 个子集文件,字重 200-700 可调(wght 轴),压缩宽高比醒目",
"added": "2026-08-21",
"count": 5,
"file": "posters/fontsource-oswald.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-space-grotesk",
"type": "font",
"name": "Space Grotesk",
"nameCn": "Space Grotesk 字体",
"desc": "几何无衬线标题字体(OFL 1.1),带有现代科技与实验气质,适合科技/数码/潮流风格海报与界面视觉",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Space+Grotesk",
"github": "https://github.com/floriankarsten/space-grotesk",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext / vietnamese)",
"variants": "3 个子集文件,字重 300-700 可调(wght 轴),几何字形现代感强",
"added": "2026-08-21",
"count": 3,
"file": "posters/fontsource-space-grotesk.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-inter",
"type": "font",
"name": "Inter",
"nameCn": "Inter 字体",
"desc": "被誉为「最佳界面字体」的现代无衬线字体(OFL 1.1),字重 100-900 跨度极大且阅读舒适,海报正文、数据信息区与界面设计的最佳选择",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Inter",
"github": "https://github.com/rsms/inter",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext / cyrillic × normal / italic)",
"variants": "6 个子集文件,字重 100-900 可调(wght 轴),海报正文/信息区首选无衬线",
"added": "2026-08-21",
"count": 6,
"file": "posters/fontsource-inter.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-jetbrains-mono",
"type": "font",
"name": "JetBrains Mono",
"nameCn": "JetBrains Mono 字体",
"desc": "JetBrains 出品的等宽编程字体(OFL 1.1),字形锐利辨识度高,适合科技/数码/代码风海报、数据标注与信息图",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/JetBrains+Mono",
"github": "https://github.com/JetBrains/JetBrainsMono",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext / cyrillic × normal / italic)",
"variants": "6 个子集文件,字重 100-800 可调(wght 轴),等宽字形适合技术/数据风格",
"added": "2026-08-21",
"count": 6,
"file": "posters/fontsource-jetbrains-mono.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-cinzel",
"type": "font",
"name": "Cinzel",
"nameCn": "Cinzel 字体",
"desc": "灵感源自古罗马碑刻的装饰衬线字体(OFL 1.1),字形庄重典雅,适合历史/文艺/高端品牌海报大标题",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Cinzel",
"github": "https://github.com/ndiscovered/cinzel",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext,无斜体)",
"variants": "2 个子集文件,字重 400-900 可调(wght 轴),罗马碑刻风格标题衬线",
"added": "2026-08-21",
"count": 2,
"file": "posters/fontsource-cinzel.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-lora",
"type": "font",
"name": "Lora",
"nameCn": "Lora 字体",
"desc": "气质古典的正文衬线字体(OFL 1.1),在屏幕与印刷上均有出色可读性,适合正文段落、引言与文艺风格海报",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Lora",
"github": "https://github.com/cyrealtype/Lora-Cyrillic",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext × normal / italic)",
"variants": "4 个子集文件,字重 400-700 可调(wght 轴),古典衬线正文首选",
"added": "2026-08-21",
"count": 4,
"file": "posters/fontsource-lora.js",
"workspaces": [
"poster"
]
},
{
"id": "patternfills",
"type": "bg",
"name": "PatternFills",
"nameCn": "图案填充底纹",
"desc": "SVG 图案填充集合(MIT):横/竖条纹、十字、菱格、点阵等 50 款经典灰阶平铺纹理,单元 10×10 无缝平铺,适合海报背景底纹与信息图分区底",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://iros.github.io/patternfills/",
"github": "https://github.com/iros/patternfills",
"format": "gh-files",
"coordText": "10×10 平铺单元 SVG(灰阶 #aaa 线条,可叠底色或换色后使用)",
"variants": "全量收录 50 款(水平/垂直条纹、十字、菱格、点阵、犬牙纹等)",
"added": "2026-08-21",
"count": 49,
"file": "posters/patternfills.js",
"workspaces": [
"poster"
]
},
{
"id": "brand-colors",
"type": "palette",
"name": "Brand Colors",
"nameCn": "品牌色板",
"desc": "收录全球 130+ 知名品牌官方主色(MIT),单一 JSON 按品牌名映射十六进制色值(部分含多色变体),适合海报调用品牌主色、做品牌对比或多品牌视觉素材",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://brandcolors.net",
"github": "https://github.com/reimertz/brand-colors",
"format": "gh-files",
"coordText": "配色数据(brandColors.json,品牌名 → 十六进制主色扁平映射)",
"variants": "单文件 brandColors.json,130+ 品牌、部分含多色变体(-2/-3 后缀)",
"added": "2026-08-21",
"count": 1,
"file": "posters/brand-colors.js",
"workspaces": [
"poster"
]
},
{
"id": "pixelarticons",
"type": "decoration",
"name": "Pixelarticons",
"nameCn": "像素风图标",
"desc": "手工像素风矢量图标集(MIT,24×24 网格、无抗锯齿),单色可任意换色,适合复古游戏/像素/潮流风格海报点缀元素与信息符号",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://pixelarticons.com",
"github": "https://github.com/halfmage/pixelarticons",
"format": "dir-files",
"coordText": "24×24 视口单色像素图标(fill=currentColor,可换色)",
"variants": "maxItems 限量收录 400 枚基础图标(剔除 -sharp 变体,全量 1036 枚)",
"added": "2026-08-21",
"count": 399,
"file": "posters/pixelarticons.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-montserrat",
"type": "font",
"name": "Montserrat",
"nameCn": "Montserrat 字体",
"desc": "几何无衬线标题字体(OFL 1.1),字重 100-900 可变 + 斜体,字形温和圆润,海报/品牌设计领域全球最常用的全能标题字体",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Montserrat",
"github": "https://github.com/JulietaUla/Montserrat",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext × normal / italic)",
"variants": "4 个子集文件,字重 100-900 可调(wght 轴),标题与正文全能无衬线",
"added": "2026-08-21",
"count": 4,
"file": "posters/fontsource-montserrat.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-bebas-neue",
"type": "font",
"name": "Bebas Neue",
"nameCn": "Bebas Neue 字体",
"desc": "经典压缩无衬线大写标题字体(OFL 1.1),窄高字形醒目有力,电影海报/时尚/运动/促销风格的标题标杆字体",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Bebas+Neue",
"github": "https://github.com/dharmatype/Bebas-Neue",
"format": "dir-files",
"coordText": "静态字体 woff2 子集(latin / latin-ext,仅 400 常规字重)",
"variants": "2 个子集文件,单字重 400 压缩大写,适合大号标题与品牌字标",
"added": "2026-08-21",
"count": 2,
"file": "posters/fontsource-bebas-neue.js",
"workspaces": [
"poster"
]
},
{
"id": "material-colors",
"type": "palette",
"name": "Material Colors",
"nameCn": "Material Design 色板",
"desc": "Google Material Design 经典官方色板(MIT):19 色系 × 10 级明度 + 4 个 accent 高饱和变体 + 深浅文本/图标色,共 260+ 色值,色彩体系科学统一,适合海报系统配色与信息可视化",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://material.io/design/color",
"github": "https://github.com/shuhei/material-colors",
"format": "dir-files",
"coordText": "配色数据(colors.json,色系名 → 明度/变体 → 十六进制;含 rgba 文本/图标色)",
"variants": "单文件 colors.json,260+ 色值(19 色系 × 50-900/a100-a700 + 文本/图标色)",
"added": "2026-08-21",
"count": 1,
"file": "posters/material-colors.js",
"workspaces": [
"poster"
]
},
{
"id": "circle-flags",
"type": "decoration",
"name": "Circle Flags",
"nameCn": "圆形国旗图标",
"desc": "268+ 枚 ISO 3166-1 各国圆形国旗矢量图标(MIT),国旗元素圆角化处理并带白色描边,适合海报中的国家/地区标识、旅行与国际主题、多国对比等装饰元素",
"license": "MIT",
"licenseNote": "MIT 协议,可自由商用、修改、再分发,需保留版权声明",
"home": "https://hatscripts.github.io/circle-flags/",
"github": "https://github.com/HatScripts/circle-flags",
"format": "gh-files",
"coordText": "圆形国旗 SVG(各国比例徽章造型,viewBox 各异逐图标归一化)",
"variants": "全量收录 268+ 枚 ISO 3166-1 圆形国旗(cn/us/jp/... 两字母代码命名)",
"added": "2026-08-22",
"count": 405,
"file": "posters/circle-flags.js",
"workspaces": [
"poster"
]
},
{
"id": "glacial-strat-patterns",
"type": "bg",
"name": "Glacial Strat Patterns",
"nameCn": "地质层理图案",
"desc": "地质层理结构矢量图案集(图案资产 CC BY 4.0):13 款模拟冰川/沉积岩地层剖面的层理纹理,多层渐变与弯折地质构造,适合地质、自然、科学主题海报的背景与氛围底纹",
"license": "CC-BY-4.0",
"licenseNote": "图案资产遵循 CC BY 4.0(商用/修改需署名:MNiMORPH/glacial-strat-patterns);仓库代码部分为 MIT",
"home": "https://github.com/MNiMORPH/glacial-strat-patterns",
"github": "https://github.com/MNiMORPH/glacial-strat-patterns",
"format": "gh-files",
"coordText": "地质层理剖面 SVG(地质符号命名,如 Cdm/Dcm/Gms,多层渐变填充)",
"variants": "全量收录 13 款(svg/ 目录:Cdm/Dcm/Dmm/Dms/Em/Fl/Fm/Gh/Gms/P/R/Sm/Sr)",
"added": "2026-08-22",
"count": 13,
"file": "posters/glacial-strat-patterns.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-poppins",
"type": "font",
"name": "Poppins",
"nameCn": "Poppins 字体",
"desc": "现代几何无衬线字体(OFL 1.1),圆形几何字干、比例均衡,兼具标题力量感与正文易读性,海报/品牌/UI 设计最热门的全能字体之一",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Poppins",
"github": "https://github.com/itfoundry/Poppins",
"format": "dir-files",
"coordText": "静态字体 woff2 子集(latin,字重 300/400/500/600/700 常规)",
"variants": "5 个 latin 子集文件,常用字重 300-700,正文与标题两用几何无衬线",
"added": "2026-08-22",
"count": 5,
"file": "posters/fontsource-poppins.js",
"workspaces": [
"poster"
]
},
{
"id": "fontsource-caveat",
"type": "font",
"name": "Caveat",
"nameCn": "Caveat 手写字体",
"desc": "Google Fonts 最热门的手写风格字体(OFL 1.1),笔触自然、随性亲和,字重 400-700 可变,适合海报手账/文艺/婚礼/儿童/美食等亲和力场景的标题、引言与手写感点缀",
"license": "OFL-1.1",
"licenseNote": "SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名",
"home": "https://fonts.google.com/specimen/Caveat",
"github": "https://github.com/googlefonts/caveat",
"format": "dir-files",
"coordText": "可变字体 woff2 子集(latin / latin-ext × wght 轴,400-700 可调)",
"variants": "2 个子集文件,字重 400-700 可调(wght 轴),自然手写风标题与引言",
"added": "2026-08-23",
"count": 2,
"file": "posters/fontsource-caveat.js",
"workspaces": [
"poster"
]
},
{
"id": "chinese-colors",
"type": "palette",
"name": "Chinese Traditional Colors",
"nameCn": "中国传统色",
"desc": "中国传统色彩体系:粉鳳仙/荷花紅/青蓮紫/黛藍等 200+ 款典雅配色,每条含中文名 + 拼音 + 十六进制色值,适合国风/节日/婚礼/茶饮等传统文化主题海报配色",
"license": "ISC",
"licenseNote": "ISC 协议,可自由商用、修改、再分发(等同 MIT 的宽松许可)",
"home": "https://github.com/hecodeit/chinese-colors",
"github": "https://github.com/hecodeit/chinese-colors",
"format": "dir-files",
"coordText": "配色数据(colors.json,顶层数组:中文名 + 拼音 + 十六进制色值)",
"variants": "单文件 colors.json,320 款中国传统色(粉/紫/紅/黄/绿/蓝/黛等色系,含拼音标注)",
"added": "2026-08-23",
"count": 1,
"file": "posters/chinese-colors.js",
"workspaces": [
"poster"
]
}
]
}
File diff suppressed because it is too large Load Diff
+62
View File
@@ -0,0 +1,62 @@
/**
* 画个标 · 留学教育行业色彩方案推荐系统
* 每套方案:主题色 / 辅助色 / 点缀色 / 背景 / 适用场景说明
*/
const HGB_Palettes = [
{
id: 'academic-blue',
name: '学术蓝',
desc: '沉稳专业,国际教育主流色',
colors: ['#1B4F72', '#2980B9', '#AED6F1', '#F4F6F7'],
scene: '留学中介、国际学校'
},
{
id: 'ivy-green',
name: '常春藤绿',
desc: '常春藤盟校气质,学术与成长',
colors: ['#1E8449', '#27AE60', '#D5F5E3', '#FFFFFF'],
scene: '本科留学、精英教育'
},
{
id: 'crimson',
name: '典雅红',
desc: '哈佛红传承,权威与荣耀',
colors: ['#7B241C', '#C0392B', '#F5B7B1', '#FDEDEC'],
scene: '研究生申请、名校项目'
},
{
id: 'royal-gold',
name: '皇家金',
desc: '贵族气质,彰显学历含金量',
colors: ['#7D6608', '#D4AC0D', '#F9E79F', '#FEF9E7'],
scene: '商学院、高端留学服务'
},
{
id: 'ocean-blue',
name: '海洋蓝',
desc: '向往远航,探索世界的决心',
colors: ['#154360', '#2E86C1', '#D6EAF8', '#FFFFFF'],
scene: '海外游学、交换项目'
},
{
id: 'violet',
name: '学术紫',
desc: '智慧与创造,文理学院风',
colors: ['#4A235A', '#8E44AD', '#D2B4DE', '#F5EEF8'],
scene: '艺术留学、文理学院'
},
{
id: 'oxford',
name: '牛津灰红',
desc: '传统英伦,学院制服配色',
colors: ['#566573', '#CB4335', '#F2F3F4', '#FFFFFF'],
scene: '英联邦国家留学'
},
{
id: 'sky-dream',
name: '梦想天蓝',
desc: '清新明亮,追梦与活力',
colors: ['#2471A3', '#5DADE2', '#FDFEFE', '#EBF5FB'],
scene: '低龄留学、语言培训'
}
];
File diff suppressed because one or more lines are too long
+698
View File
@@ -0,0 +1,698 @@
/* ============================================================
* 海报素材来源配置(唯一权威清单)
* 用途:
* 1. 构建脚本 scripts/build-posters.js require 本文件获取下载/解析配置
* 2. 「海报素材」页面 poster-sources.html 读取本文件渲染来源清单
* 新增来源步骤:
* 1. 在数组末尾追加配置(GitHub 直拉 gh-files / npm dir-files)
* 2. 运行 node scripts/build-posters.js 重新构建
* 3. poster.html / poster-sources.html / poster-skills.html 中 bump ?v= 版本
* 字段说明:
* id 唯一 id(内置库「源:名称」前缀)
* type 素材类型:bg(背景底纹) / illustration(插画) / template(成品模板)
* decoration(装饰元素) / mockup(展示样机) / photo(无版权图片)
* font(字体) / palette(配色方案)
* name 英文名 nameCn 中文名 desc 一句话风格描述
* license 协议 licenseNote 协议中文说明(署名要求等)
* home 官网 github GitHub 仓库
* format 拉取方式:gh-files(GitHub 仓库直拉)| dir-files(npm 目录枚举)
* gh/ghBranch GitHub 仓库与分支(format=gh-files 必填)
* npm npm 包名(format=dir-files 必填)
* dirs 目标目录(gh-files / dir-files 均用)
* ext 文件扩展名过滤(默认 .svg;海报可含 .png/.jpg/.json/.ttf)
* scaleMode wrap(保留原始坐标/比例,适合位图/模板)| body(缩放几何,适合纯矢量装饰)
* coordText 坐标系说明(页面展示)
* variants 变体说明(页面展示)
* added 收录日期(页面展示)
* workspaces 适用工作区(海报库固定 ['poster'];预留扩展)
* ============================================================ */
(function (root, factory) {
if (typeof module !== 'undefined' && module.exports) module.exports = factory();
else root.HGB_PosterSources = factory();
})(typeof self !== 'undefined' ? self : this, function () {
'use strict';
return [
/* ============================================================
* 首批合规源(2026-08-20 录入,license 逐条核实 + jsDelivr 可拉取验证):
* uiGradients 配色 palette(MIT,gradients.json 顶层为 [{name, colors}] 数组)
* twemoji 装饰 decoration(CC BY 4.0,assets/svg 表情全量过大,maxItems 限量收录)
* 已筛选但暂不可用(记录备查):
* unDraw 自定义协议明令禁止 AI/机器学习训练,与 AI 海报生成冲突 → 排除
* Open Doodles CC0 但素材托管于 Dropbox/Webflow,无 GitHub 仓库可直拉 → 不可用
* Hero Patterns 官网声明免费但仓库无 LICENSE 文件 → 合规风险,待定
* open-peeps / humaaans / MagicPattern svg-backgrounds jsDelivr 未索引(404)→ 不可用
* svg-patterns npm 包 p/*.js 为依赖 virtual-dom 的 JS 模板(非静态 SVG)→ 待定
* subtlepatterns npm 包存在但许可证未定(Toptal 自定义条款)→ 待定
* ============================================================ */
{
id: 'uigradients',
type: 'palette',
name: 'uiGradients',
nameCn: 'UI 渐变配色库',
desc: 'GitHub 社区精选 200+ 款渐变配色方案,含品牌渐变、自然风光与经典风格渐变,可直接用于海报背景与主视觉',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://uigradients.com',
github: 'https://github.com/ghosh/uiGradients',
format: 'gh-files',
gh: 'ghosh/uiGradients',
ghBranch: 'master',
dirs: ['.'],
ext: ['.json'],
scaleMode: 'wrap',
coordText: '配色数据(gradients.json,顶层数组:名称 + 十六进制色值序列)',
variants: '单文件 gradients.json,约 200 款渐变',
added: '2026-08-20',
workspaces: ['poster']
},
{
id: 'twemoji',
type: 'decoration',
name: 'Twemoji',
nameCn: 'Twitter 彩色表情',
desc: 'Twitter/X 官方彩色 Emoji 表情 SVG(CC BY 4.0),适合作为海报点缀符号与情感化视觉元素',
license: 'CC BY 4.0',
licenseNote: 'CC BY 4.0,可商用,使用需署名(Twitter/X 官方表情库)',
home: 'https://twemoji.twitter.com',
github: 'https://github.com/jdecked/twemoji',
format: 'gh-files',
gh: 'jdecked/twemoji',
ghBranch: 'master',
dirs: ['assets/svg'],
ext: ['.svg'],
scaleMode: 'wrap',
coordText: '36×36 视口彩色矢量表情,保留原始比例',
exclude: '(?:^|/)1f1[ef]', // 剔除国旗段(1f1e6-1f1ff 区域指示符占位过多,海报价值低;锚定文件名而非完整路径)
variants: '表情全集 3600+ 过大,首批 maxItems 限量收录 500 个常用表情(活动/运动/物品/符号),后续可按需扩量',
added: '2026-08-20',
maxItems: 500,
workspaces: ['poster']
},
/* ============================================================
* 第二批合规源(2026-08-21 录入,license 逐条核实 + jsDelivr 可拉取验证):
* hero-patterns 背景底纹 bg(lowmess fork v2.1.0,MIT;src/patterns/*.js 为函数模板,
* 构建时由 transform:'heropatterns' 专用解析器执行为静态 SVG,全量 ~90 款)
* league-spartan 字体 font(SIL OFL 1.1;fonts/ttf/ 9 个字重 TTF,适合海报大标题)
* open-color 配色 palette(MIT;open-color.json 13 色系 × 10 明度,经典现代色板)
* 本轮探测排除(记录备查):
* fxemoji / emoji-data / fluentui-emoji jsDelivr 包超 50MB 拒绝索引(403)→ 不可用
* noto-emoji(旧 tag) jsDelivr 未索引该 tag(404)→ 不可用
* Open Doodles / LadybugBot illustrations / illlustrations jsDelivr 未索引(404)→ 不可用
* color-names(MIT) 31,915 行色名 CSV 无视觉预览,海报场景价值低 → 本轮不收录
* Montserrat / Raleway 字体仓库 jsDelivr 超 50MB → 不可用;league-gothic 仅 .glyphs 源文件无成品字体
* ostrich-sans / chunk(The League of Moveable Type) jsDelivr 未索引 或 仅 UFO 源文件无 TTF 成品 → 不可用
* ============================================================ */
{
id: 'heropatterns',
type: 'bg',
name: 'Hero Patterns',
nameCn: '可平铺背景底纹',
desc: 'Steve Schoger 经典背景底纹集合(lowmess 维护 v2.1),约 90 款几何/纹理/趣味图案,可无缝平铺,直接作为海报背景底纹',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://heropatterns.com',
github: 'https://github.com/lowmess/hero-patterns',
format: 'gh-files',
gh: 'lowmess/hero-patterns',
ghBranch: '2.1.0',
dirs: ['src/patterns'],
ext: ['.js'],
scaleMode: 'wrap',
coordText: '平铺单元 SVG(各图案尺寸不一,保留原始 viewBox)',
exclude: '(?:^|/)_', // 剔除 _defaults.js / _utils.js 工具模块(锚定文件名而非完整路径)
transform: 'heropatterns', // 构建脚本专用:JS 函数模板 → 静态 SVG
variants: '全量收录 ~90 款,默认黑色填充(可叠加底色或换色后使用)',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'league-spartan',
type: 'font',
name: 'League Spartan',
nameCn: 'League Spartan 字体',
desc: 'League of Moveable Type 出品的现代几何无衬线字体(SIL OFL 1.1),粗细跨度 Thin→Black 共 9 个字重,适合海报大标题与品牌主视觉',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://www.theleagueofmoveabletype.com/league-spartan',
github: 'https://github.com/theleagueof/league-spartan',
format: 'gh-files',
gh: 'theleagueof/league-spartan',
ghBranch: 'master',
dirs: ['fonts/ttf'],
ext: ['.ttf'],
scaleMode: 'wrap',
coordText: 'TTF 静态字体文件(9 个字重,浏览器 @font-face 直载)',
variants: 'Thin / ExtraLight / Light / Regular / Medium / SemiBold / Bold / ExtraBold / Black',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'open-color',
type: 'palette',
name: 'Open Color',
nameCn: 'Open Color 现代色板',
desc: 'MIT 开源现代色板:13 个色系(灰/红/粉/紫/蓝/青/绿/黄/橙…)× 每个 10 级明度,共 130 色,色调统一和谐,适合海报背景、强调色与数据可视化配色',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://yeun.github.io/open-color/',
github: 'https://github.com/yeun/open-color',
format: 'gh-files',
gh: 'yeun/open-color',
ghBranch: '1.9.1',
dirs: ['.'],
ext: ['.json'],
exclude: '(?:^|/)params\\.json$', // 剔除站点元数据 params.json(非配色数据)
scaleMode: 'wrap',
coordText: '配色数据(open-color.json,13 色系 × 10 明度十六进制色值)',
variants: '单文件 open-color.json,130 色(13 色系 × 10 级)',
added: '2026-08-21',
workspaces: ['poster']
},
/* ============================================================
* 第三批合规源(2026-08-21 录入,license 逐条核实 + jsDelivr 可拉取验证):
* catppuccin/palette 配色 palette(MIT;palette.json 4 主题 × 26 色 + porcelain 变体)
* coolshapes 装饰 decoration(MIT;public/shapes/svg 66 款几何/花朵/月亮/星星等海报点缀形状)
* Playfair Display / Oswald / Space Grotesk 字体 font(OFL-1.1;fontsource 可变字体 woff2 子集,
* latin/cyrillic/vietnamese 按需直载,适合海报标题与正文,字体包可自由商用)
* 本轮探测排除(记录备查):
* nord 仅 ACO/ASE/GPL 等专有色板格式,无 JSON 数据 → 不可直接收录
* tokyonight.nvim extras JSON 为终端主题配置(含背景/前景/ANSI 索引色),非纯色板 → 不作为配色源
* dracula/dracula R 语言包结构,无独立配色 JSON 文件 → 不可用
* altercation/solarized jsDelivr 未索引(404)→ 不可用
* googlefonts/noto-emoji jsDelivr 仓库超限(403)→ 不可用
* ============================================================ */
{
id: 'catppuccin',
type: 'palette',
name: 'Catppuccin',
nameCn: 'Catppuccin 主题色板',
desc: '社区热门主题色板:Latte / Frappe / Macchiato / Mocha 4 套主题 × 26 色(含玫瑰水/火焰/粉/葡萄紫等柔和高对比色),风格柔和不刺眼,适合海报背景与强调色',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://catppuccin.com',
github: 'https://github.com/catppuccin/palette',
format: 'gh-files',
gh: 'catppuccin/palette',
ghBranch: 'v0.2.0',
dirs: ['.'],
ext: ['.json'],
scaleMode: 'wrap',
coordText: '配色数据(palette.json 4 主题 × 26 色 + palette-porcelain.json 变体)',
variants: '2 个 JSON:主色板 palette.json + 陶瓷变体 palette-porcelain.json',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'coolshapes',
type: 'decoration',
name: 'Coolshapes',
nameCn: '几何装饰形状',
desc: '100% 开源几何装饰形状包:椭圆/花朵/月亮/多边形/星星/三角/轮辐等 66 款矢量图形(200×200),适合作为海报点缀元素与插画局部',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://coolshap.es',
github: 'https://github.com/realvjy/coolshapes',
format: 'gh-files',
gh: 'realvjy/coolshapes',
ghBranch: 'main',
dirs: ['public/shapes/svg'],
ext: ['.svg'],
scaleMode: 'wrap',
coordText: '200×200 视口矢量图形,保留原始坐标(可等比缩放后叠加使用)',
variants: '全量收录 66 款(ellipse/flower/misc/moon/polygon/star/triangle/wheel)',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-playfair',
type: 'font',
name: 'Playfair Display',
nameCn: 'Playfair Display 字体',
desc: '经典高对比衬线标题字体(OFL 1.1),字重 400-900 可变 + 斜体,优雅文艺气质,适合海报大标题与品牌视觉',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Playfair+Display',
github: 'https://github.com/clauseggers/Playfair-Display',
format: 'dir-files',
npm: '@fontsource-variable/playfair-display',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext / cyrillic / vietnamese × normal / italic)',
variants: '8 个子集文件,字重 400-900 可调(wght 轴),拉丁子集覆盖英文/数字/西文标点',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-oswald',
type: 'font',
name: 'Oswald',
nameCn: 'Oswald 字体',
desc: '高辨识度压缩无衬线标题字体(OFL 1.1),窄而有力的字形,适合海报标题、数据标注与运动/促销风格',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Oswald',
github: 'https://github.com/googlefonts/OswaldFont',
format: 'dir-files',
npm: '@fontsource-variable/oswald',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext / cyrillic / cyrillic-ext / vietnamese)',
variants: '5 个子集文件,字重 200-700 可调(wght 轴),压缩宽高比醒目',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-space-grotesk',
type: 'font',
name: 'Space Grotesk',
nameCn: 'Space Grotesk 字体',
desc: '几何无衬线标题字体(OFL 1.1),带有现代科技与实验气质,适合科技/数码/潮流风格海报与界面视觉',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Space+Grotesk',
github: 'https://github.com/floriankarsten/space-grotesk',
format: 'dir-files',
npm: '@fontsource-variable/space-grotesk',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext / vietnamese)',
variants: '3 个子集文件,字重 300-700 可调(wght 轴),几何字形现代感强',
added: '2026-08-21',
workspaces: ['poster']
},
/* ============================================================
* 第四批合规源(2026-08-21 录入,license 逐条核实 + jsDelivr 可拉取验证):
* Inter / JetBrains Mono / Cinzel / Lora 字体 font(OFL-1.1;fontsource 可变字体 woff2 子集,
* 分别覆盖:无衬线正文(Inter)、等宽技术风(JetBrains Mono)、
* 罗马碑刻装饰衬线标题(Cinzel)、古典正文衬线(Lora))
* PatternFills 背景底纹 bg(MIT;src/patterns 50 款 10×10 灰阶平铺图案 SVG,
* 纯静态可独立渲染,叠底色换色后作为海报底纹)
* 本轮探测排除(记录备查):
* svelte-svg-patterns(Pattern Monster) static 目录仅 1 个 SVG(其余为 Svelte/JS 生成代码)→ 不可用
* PatternBolt 图案以 SCSS/CSS data-uri 形式打包,无独立 SVG 文件 → 不可用
* pattern-craft Next.js 项目结构,图案为 CSS/JS 代码片段 → 不可用
* textures.js 运行时生成库(D3 驱动),非静态素材 → 不可用
* illustration 类(unDraw 自定义协议禁 AI / Open Doodles 无仓库直拉 / illlustrations 404)
* 、template/mockup/photo 类:GitHub 上无可直拉的合规静态素材 → 本轮不收录,继续观测
* ============================================================ */
{
id: 'fontsource-inter',
type: 'font',
name: 'Inter',
nameCn: 'Inter 字体',
desc: '被誉为「最佳界面字体」的现代无衬线字体(OFL 1.1),字重 100-900 跨度极大且阅读舒适,海报正文、数据信息区与界面设计的最佳选择',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Inter',
github: 'https://github.com/rsms/inter',
format: 'dir-files',
npm: '@fontsource-variable/inter',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
exclude: '-(standard|opsz|greek|vietnamese|cyrillic-ext)-', // 剔除重复轴(standard/opsz 与 wght 同内容)与低用例子集
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext / cyrillic × normal / italic)',
variants: '6 个子集文件,字重 100-900 可调(wght 轴),海报正文/信息区首选无衬线',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-jetbrains-mono',
type: 'font',
name: 'JetBrains Mono',
nameCn: 'JetBrains Mono 字体',
desc: 'JetBrains 出品的等宽编程字体(OFL 1.1),字形锐利辨识度高,适合科技/数码/代码风海报、数据标注与信息图',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/JetBrains+Mono',
github: 'https://github.com/JetBrains/JetBrainsMono',
format: 'dir-files',
npm: '@fontsource-variable/jetbrains-mono',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
exclude: '-(greek|vietnamese|cyrillic-ext)-',
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext / cyrillic × normal / italic)',
variants: '6 个子集文件,字重 100-800 可调(wght 轴),等宽字形适合技术/数据风格',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-cinzel',
type: 'font',
name: 'Cinzel',
nameCn: 'Cinzel 字体',
desc: '灵感源自古罗马碑刻的装饰衬线字体(OFL 1.1),字形庄重典雅,适合历史/文艺/高端品牌海报大标题',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Cinzel',
github: 'https://github.com/ndiscovered/cinzel',
format: 'dir-files',
npm: '@fontsource-variable/cinzel',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext,无斜体)',
variants: '2 个子集文件,字重 400-900 可调(wght 轴),罗马碑刻风格标题衬线',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-lora',
type: 'font',
name: 'Lora',
nameCn: 'Lora 字体',
desc: '气质古典的正文衬线字体(OFL 1.1),在屏幕与印刷上均有出色可读性,适合正文段落、引言与文艺风格海报',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Lora',
github: 'https://github.com/cyrealtype/Lora-Cyrillic',
format: 'dir-files',
npm: '@fontsource-variable/lora',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
exclude: '-(math|symbols|cyrillic|vietnamese)-', // 剔除数学/符号/西里尔/越南语子集,保留拉丁正文
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext × normal / italic)',
variants: '4 个子集文件,字重 400-700 可调(wght 轴),古典衬线正文首选',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'patternfills',
type: 'bg',
name: 'PatternFills',
nameCn: '图案填充底纹',
desc: 'SVG 图案填充集合(MIT):横/竖条纹、十字、菱格、点阵等 50 款经典灰阶平铺纹理,单元 10×10 无缝平铺,适合海报背景底纹与信息图分区底',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://iros.github.io/patternfills/',
github: 'https://github.com/iros/patternfills',
format: 'gh-files',
gh: 'iros/patternfills',
ghBranch: 'master',
dirs: ['src/patterns'],
ext: ['.svg'],
scaleMode: 'wrap',
coordText: '10×10 平铺单元 SVG(灰阶 #aaa 线条,可叠底色或换色后使用)',
variants: '全量收录 50 款(水平/垂直条纹、十字、菱格、点阵、犬牙纹等)',
added: '2026-08-21',
workspaces: ['poster']
},
/* ============================================================
* 第五批合规源(2026-08-21 录入,license 逐条核实 + jsDelivr 可拉取验证):
* brand-colors 配色 palette(MIT;data/brandColors.json 按品牌名映射主色,130+ 品牌,
* 部分含多色变体,适合海报调用品牌主色/多品牌对比配色)
* pixelarticons 装饰 decoration(MIT;npm 2.4.1,svg/ 1036 枚 24×24 像素风图标,
* 单色可换色,适合复古游戏/像素风海报点缀;maxItems 限量收录基础版)
* 本轮探测排除(记录备查):
* primer/primitives 设计 token JSON 结构复杂(多层嵌套 token 名),非直接可用的色板数据 → 不可用
* game-icons(CC BY 3.0)/ OpenMoji(CC BY-SA 4.0) 协议不在白名单(BY-SA / 非 CC BY 4.0)→ 排除
* fangpenlin/avataaars 仅 React 组件源码,无成品 SVG 文件 → 不可用
* simple-icons / bootstrap-icons / heroicons / pixelarticons 之外的图标库 与 LOGO 库图标功能重叠,仅收
* 风格独特的 pixelarticons(像素风);其余不重复收录
* illustration / template / mockup / photo 类:仍无可直拉的合规静态源(unDraw 禁 AI / 其余 404 或自定义协议)→ 继续观测
* ============================================================ */
{
id: 'brand-colors',
type: 'palette',
name: 'Brand Colors',
nameCn: '品牌色板',
desc: '收录全球 130+ 知名品牌官方主色(MIT),单一 JSON 按品牌名映射十六进制色值(部分含多色变体),适合海报调用品牌主色、做品牌对比或多品牌视觉素材',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://brandcolors.net',
github: 'https://github.com/reimertz/brand-colors',
format: 'gh-files',
gh: 'reimertz/brand-colors',
ghBranch: 'master',
dirs: ['data'],
ext: ['.json'],
exclude: 'brandColors\\.(merged|net)\\.json$', // 仅取 brandColors.json(品牌名→hex 扁平映射),剔除重复变体
scaleMode: 'wrap',
coordText: '配色数据(brandColors.json,品牌名 → 十六进制主色扁平映射)',
variants: '单文件 brandColors.json,130+ 品牌、部分含多色变体(-2/-3 后缀)',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'pixelarticons',
type: 'decoration',
name: 'Pixelarticons',
nameCn: '像素风图标',
desc: '手工像素风矢量图标集(MIT,24×24 网格、无抗锯齿),单色可任意换色,适合复古游戏/像素/潮流风格海报点缀元素与信息符号',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://pixelarticons.com',
github: 'https://github.com/halfmage/pixelarticons',
format: 'dir-files',
npm: 'pixelarticons',
npmVersion: '2.4.1',
dirs: ['svg'],
ext: ['.svg'],
exclude: '-sharp\\.svg$', // 仅收录基础风格(-sharp 变体视觉近重复)
scaleMode: 'wrap',
coordText: '24×24 视口单色像素图标(fill=currentColor,可换色)',
variants: 'maxItems 限量收录 400 枚基础图标(剔除 -sharp 变体,全量 1036 枚)',
added: '2026-08-21',
maxItems: 400,
workspaces: ['poster']
},
/* ============================================================
* 第六批合规源(2026-08-21 录入,license 逐条核实 + jsDelivr 可拉取验证):
* Montserrat / Bebas Neue 字体 font(OFL-1.1;fontsource 包 woff2 子集,
* 分别覆盖:全能标题无衬线(Montserrat,字重 100-900 可变)、
* 经典压缩大写标题(Bebas Neue,单字重 400,电影海报风格))
* Material Colors 配色 palette(MIT;dist/colors.json 19 色系 × 10 明度
* + 4 accent 高饱和变体 + 深浅文本/图标色,260+ 色值,系统配色基准)
* 本轮探测排除(记录备查):
* chinese-color-atlas(中国传统色) free 样本为 W3C DTCG 嵌套 token 结构,非纯色板 JSON → 不可用
* zerosoul/chinese-colors 色板数据内嵌于 JS(非独立 JSON),仓库混有大量水墨 PNG/字体 → 不可用
* anup-a/svg.shapes 无独立 SVG 文件(形状打包进单个 svg.json)→ 不可用
* fu4303/svgwave(SVG Wave) 运行时生成器(Preact/Webpack 应用),非静态素材 → 不可用
* material-colors 之外(IORoot 色板为 Apple CLR 格式 / DesignColors 为 Java 库 / CARTO 为 R 包) → 不可用
* illustration / template / mockup / photo 类:仍无可直拉的合规静态源 → 继续观测
* ============================================================ */
{
id: 'fontsource-montserrat',
type: 'font',
name: 'Montserrat',
nameCn: 'Montserrat 字体',
desc: '几何无衬线标题字体(OFL 1.1),字重 100-900 可变 + 斜体,字形温和圆润,海报/品牌设计领域全球最常用的全能标题字体',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Montserrat',
github: 'https://github.com/JulietaUla/Montserrat',
format: 'dir-files',
npm: '@fontsource-variable/montserrat',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
exclude: '-(cyrillic|vietnamese)-', // 仅保留 latin / latin-ext 子集(西里尔/越南语低用例子集剔除)
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext × normal / italic)',
variants: '4 个子集文件,字重 100-900 可调(wght 轴),标题与正文全能无衬线',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'fontsource-bebas-neue',
type: 'font',
name: 'Bebas Neue',
nameCn: 'Bebas Neue 字体',
desc: '经典压缩无衬线大写标题字体(OFL 1.1),窄高字形醒目有力,电影海报/时尚/运动/促销风格的标题标杆字体',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Bebas+Neue',
github: 'https://github.com/dharmatype/Bebas-Neue',
format: 'dir-files',
npm: '@fontsource/bebas-neue',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
scaleMode: 'wrap',
coordText: '静态字体 woff2 子集(latin / latin-ext,仅 400 常规字重)',
variants: '2 个子集文件,单字重 400 压缩大写,适合大号标题与品牌字标',
added: '2026-08-21',
workspaces: ['poster']
},
{
id: 'material-colors',
type: 'palette',
name: 'Material Colors',
nameCn: 'Material Design 色板',
desc: 'Google Material Design 经典官方色板(MIT):19 色系 × 10 级明度 + 4 个 accent 高饱和变体 + 深浅文本/图标色,共 260+ 色值,色彩体系科学统一,适合海报系统配色与信息可视化',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://material.io/design/color',
github: 'https://github.com/shuhei/material-colors',
format: 'dir-files',
npm: 'material-colors',
npmVersion: '1.2.6',
dirs: ['dist'],
ext: ['.json'],
scaleMode: 'wrap',
coordText: '配色数据(colors.json,色系名 → 明度/变体 → 十六进制;含 rgba 文本/图标色)',
variants: '单文件 colors.json,260+ 色值(19 色系 × 50-900/a100-a700 + 文本/图标色)',
added: '2026-08-21',
workspaces: ['poster']
},
/* ============================================================
* 第七批合规源(2026-08-22 录入,license 逐条核实 + jsDelivr 可拉取验证):
* circle-flags 装饰 decoration(MIT;gh-pages 分支 flags/ 268+ 枚 ISO 3166-1
* 圆形国旗矢量图标,圆角化 + 白描边,海报国家/地区标识与旅行主题装饰)
* glacial-strat-patterns 背景 bg(图案资产 CC BY 4.0 / 代码 MIT;svg/ 13 款地质层理
* 剖面图案,多层渐变弯折层理,地质/自然/科学主题海报背景)
* Poppins 字体 font(OFL-1.1;fontsource 包 woff2 子集,
* 现代几何无衬线全能字体,常用字重 300-700,正文与标题两用)
* 本轮探测排除(记录备查):
* Playfair Display(fontsource-playfair-display) 与第四批 fontsource-playfair 重复 → 剔除
* dracula/dracula-theme / rose-pine/rose-pine-theme 主题色仅存于各编辑器扩展仓库
* (主仓为 .gitmodules 子模块列表或纯徽标文件),无独立配色 JSON → 不可用
* Dragoon0x/inkjet(500 参数化图案) 全部为 TS 源码,运行时生成 SVG,无预生成静态文件 → 不可用
* mrmrs/patterns jsDelivr 未索引任何可用分支(master/gh-pages 均 404)→ 不可用
* illustration / template / mockup / photo 类:仍无可直拉的合规静态源 → 继续观测
* ============================================================ */
{
id: 'circle-flags',
type: 'decoration',
name: 'Circle Flags',
nameCn: '圆形国旗图标',
desc: '268+ 枚 ISO 3166-1 各国圆形国旗矢量图标(MIT),国旗元素圆角化处理并带白色描边,适合海报中的国家/地区标识、旅行与国际主题、多国对比等装饰元素',
license: 'MIT',
licenseNote: 'MIT 协议,可自由商用、修改、再分发,需保留版权声明',
home: 'https://hatscripts.github.io/circle-flags/',
github: 'https://github.com/HatScripts/circle-flags',
format: 'gh-files',
gh: 'HatScripts/circle-flags',
ghBranch: 'gh-pages',
dirs: ['flags'],
ext: ['.svg'],
exclude: 'flags/(language|other)/', // 仅保留主目录 ISO 3166-1 国旗,剔除语言/特殊图形子目录
scaleMode: 'wrap',
coordText: '圆形国旗 SVG(各国比例徽章造型,viewBox 各异逐图标归一化)',
variants: '全量收录 268+ 枚 ISO 3166-1 圆形国旗(cn/us/jp/... 两字母代码命名)',
added: '2026-08-22',
workspaces: ['poster']
},
{
id: 'glacial-strat-patterns',
type: 'bg',
name: 'Glacial Strat Patterns',
nameCn: '地质层理图案',
desc: '地质层理结构矢量图案集(图案资产 CC BY 4.0):13 款模拟冰川/沉积岩地层剖面的层理纹理,多层渐变与弯折地质构造,适合地质、自然、科学主题海报的背景与氛围底纹',
license: 'CC-BY-4.0',
licenseNote: '图案资产遵循 CC BY 4.0(商用/修改需署名:MNiMORPH/glacial-strat-patterns);仓库代码部分为 MIT',
home: 'https://github.com/MNiMORPH/glacial-strat-patterns',
github: 'https://github.com/MNiMORPH/glacial-strat-patterns',
format: 'gh-files',
gh: 'MNiMORPH/glacial-strat-patterns',
ghBranch: 'main',
dirs: ['svg'],
ext: ['.svg'],
scaleMode: 'wrap',
coordText: '地质层理剖面 SVG(地质符号命名,如 Cdm/Dcm/Gms,多层渐变填充)',
variants: '全量收录 13 款(svg/ 目录:Cdm/Dcm/Dmm/Dms/Em/Fl/Fm/Gh/Gms/P/R/Sm/Sr)',
added: '2026-08-22',
workspaces: ['poster']
},
{
id: 'fontsource-poppins',
type: 'font',
name: 'Poppins',
nameCn: 'Poppins 字体',
desc: '现代几何无衬线字体(OFL 1.1),圆形几何字干、比例均衡,兼具标题力量感与正文易读性,海报/品牌/UI 设计最热门的全能字体之一',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Poppins',
github: 'https://github.com/itfoundry/Poppins',
format: 'dir-files',
npm: '@fontsource/poppins',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
exclude: '-(devanagari|latin-ext|100|200|800|900)-|-italic', // 仅保留 latin 常用字重 300-700 常规
scaleMode: 'wrap',
coordText: '静态字体 woff2 子集(latin,字重 300/400/500/600/700 常规)',
variants: '5 个 latin 子集文件,常用字重 300-700,正文与标题两用几何无衬线',
added: '2026-08-22',
workspaces: ['poster']
},
/* ============================================================
* 第八批合规源(2026-08-23 录入,license 逐条核实 + jsDelivr 可拉取验证):
* Caveat 字体 font(OFL-1.1;fontsource 可变字体 woff2 子集,
* 手写风格(handwriting),字重 400-700 可变,填补字体库
* 手写/书法风格缺口,适合手账/文艺/婚礼/儿童/美食等亲和力标题)
* 本轮探测排除(记录备查):
* Dancing Script / Pacifico / Lobster / Amatic SC 同属手写风格,与 Caveat 同类,
* 首批先收最具代表性的 Caveat(Google Fonts 手写体最热门),其余待后续按需扩量
* illustration / template / mockup / photo 类:仍无可直拉的合规静态源 → 继续观测
* ============================================================ */
{
id: 'fontsource-caveat',
type: 'font',
name: 'Caveat',
nameCn: 'Caveat 手写字体',
desc: 'Google Fonts 最热门的手写风格字体(OFL 1.1),笔触自然、随性亲和,字重 400-700 可变,适合海报手账/文艺/婚礼/儿童/美食等亲和力场景的标题、引言与手写感点缀',
license: 'OFL-1.1',
licenseNote: 'SIL Open Font License 1.1,可自由商用与修改;单独售卖字体文件需注明来源,与软件捆绑分发则无需署名',
home: 'https://fonts.google.com/specimen/Caveat',
github: 'https://github.com/googlefonts/caveat',
format: 'dir-files',
npm: '@fontsource-variable/caveat',
npmVersion: '5.3.0',
dirs: ['files'],
ext: ['.woff2'],
exclude: '-(cyrillic|cyrillic-ext)-', // 仅保留 latin / latin-ext 子集(西里尔低用例子集剔除)
scaleMode: 'wrap',
coordText: '可变字体 woff2 子集(latin / latin-ext × wght 轴,400-700 可调)',
variants: '2 个子集文件,字重 400-700 可调(wght 轴),自然手写风标题与引言',
added: '2026-08-23',
workspaces: ['poster']
},
/* ============================================================
* 第九批合规源(2026-08-23 录入,license 逐条核实 + jsDelivr 可拉取验证):
* Chinese Traditional Colors 配色 palette(ISC;colors.json 顶层数组,
* 200+ 款中国传统色(中文名 + 拼音 + 十六进制色值),
* 填补「文化色」类别缺口,适合国风/节日/婚礼/茶饮主题海报)
* 本轮探测排除(记录备查):
* luozhuzhen/Chinese-colors jsDelivr 未索引(master 404)→ 不可用
* @radix-ui/colors 色板仅打包为 CSS 变量文件(amber.css 等),
* 无 .json 数据形态 → 不符合 palette 内联 data 规范
* nipponcolors / traditional-japanese-colors npm 无此包(404)→ 不可用
* zerosoul/chinese-colors 色板数据内嵌于 JS + 仓库混有大量水墨 PNG/字体(前批已排除)
* illustration / template / mockup / photo 类:仍无可直拉的合规静态源 → 继续观测
* ============================================================ */
{
id: 'chinese-colors',
type: 'palette',
name: 'Chinese Traditional Colors',
nameCn: '中国传统色',
desc: '中国传统色彩体系:粉鳳仙/荷花紅/青蓮紫/黛藍等 200+ 款典雅配色,每条含中文名 + 拼音 + 十六进制色值,适合国风/节日/婚礼/茶饮等传统文化主题海报配色',
license: 'ISC',
licenseNote: 'ISC 协议,可自由商用、修改、再分发(等同 MIT 的宽松许可)',
home: 'https://github.com/hecodeit/chinese-colors',
github: 'https://github.com/hecodeit/chinese-colors',
format: 'dir-files',
npm: 'chinese-colors',
npmVersion: '1.0.0',
dirs: ['.'],
ext: ['.json'],
scaleMode: 'wrap',
coordText: '配色数据(colors.json,顶层数组:中文名 + 拼音 + 十六进制色值)',
variants: '单文件 colors.json,320 款中国传统色(粉/紫/紅/黄/绿/蓝/黛等色系,含拼音标注)',
added: '2026-08-23',
workspaces: ['poster']
}
];
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
View File
@@ -0,0 +1,2 @@
/* Bebas Neue(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:k6d2c1 */
window['HGB_PosterSource_fontsource-bebas-neue'] = {"items":[{"id":"fontsource-bebas-neue:bebas-neue-latin-400-normal","name":"bebas-neue-latin-400-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-bebas-neue/files/bebas-neue-latin-400-normal.woff2","mime":"application/octet-stream","bytes":13768,"sha256":"a7c90c89240c134f7fdd33d40c000ec90b79d675ea53e8cc5a6d423c073de412","width":null,"height":null},{"id":"fontsource-bebas-neue:bebas-neue-latin-ext-400-normal","name":"bebas-neue-latin-ext-400-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-bebas-neue/files/bebas-neue-latin-ext-400-normal.woff2","mime":"application/octet-stream","bytes":8928,"sha256":"16c95ce45a2922f52551d38d565d14c92cf257b8f219c89613407d81fdd21a39","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Caveat(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:1rved7 */
window['HGB_PosterSource_fontsource-caveat'] = {"items":[{"id":"fontsource-caveat:caveat-latin-ext-wght-normal","name":"caveat-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-caveat/files/caveat-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":29472,"sha256":"f626b95c1efa95cf6b7c9b043d3bbe8862b6abbe5f55a082102f33f7de2fd4f9","width":null,"height":null},{"id":"fontsource-caveat:caveat-latin-wght-normal","name":"caveat-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-caveat/files/caveat-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":74932,"sha256":"891951df5e8b5b0f0bc760d31375405e795c666b5add70437de12d4a6482b33f","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Cinzel(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:1klcm8m */
window['HGB_PosterSource_fontsource-cinzel'] = {"items":[{"id":"fontsource-cinzel:cinzel-latin-ext-wght-normal","name":"cinzel-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-cinzel/files/cinzel-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":14540,"sha256":"8fc2606f8ae6c569f444e138dba052d9a6e3f0657f9031796503bbb94eced600","width":null,"height":null},{"id":"fontsource-cinzel:cinzel-latin-wght-normal","name":"cinzel-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-cinzel/files/cinzel-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":25904,"sha256":"09941fb1c169c38fd414536b37690057fc01b3117a5c63dd6571186540c8f370","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Inter(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:137tz9v */
window['HGB_PosterSource_fontsource-inter'] = {"items":[{"id":"fontsource-inter:inter-cyrillic-wght-italic","name":"inter-cyrillic-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-inter/files/inter-cyrillic-wght-italic.woff2","mime":"application/octet-stream","bytes":19980,"sha256":"47d42151dff6d13f1c2b9a1f278290f625593c1f01c89612ee4ae7f063167f7a","width":null,"height":null},{"id":"fontsource-inter:inter-cyrillic-wght-normal","name":"inter-cyrillic-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-inter/files/inter-cyrillic-wght-normal.woff2","mime":"application/octet-stream","bytes":18748,"sha256":"71d5ee93cc1e9f1d520a3a8b66456de18c7879d8df09d57fcd2eaff75fef0075","width":null,"height":null},{"id":"fontsource-inter:inter-latin-ext-wght-italic","name":"inter-latin-ext-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-inter/files/inter-latin-ext-wght-italic.woff2","mime":"application/octet-stream","bytes":91900,"sha256":"71254244ccb1ec21e14db3480fef6f6826d1136dc4aca1c7d3ca7ce31294fcce","width":null,"height":null},{"id":"fontsource-inter:inter-latin-ext-wght-normal","name":"inter-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-inter/files/inter-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":85068,"sha256":"34b9c504cab7a73e37b746343a449132e56cf7b5481af2cb81dc74dcff25c956","width":null,"height":null},{"id":"fontsource-inter:inter-latin-wght-italic","name":"inter-latin-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-inter/files/inter-latin-wght-italic.woff2","mime":"application/octet-stream","bytes":51832,"sha256":"7291b5970da2237441273c03b424a504b70b18f09791473fab99687dcc314720","width":null,"height":null},{"id":"fontsource-inter:inter-latin-wght-normal","name":"inter-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-inter/files/inter-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":48256,"sha256":"3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62","width":null,"height":null}]};
@@ -0,0 +1,2 @@
/* JetBrains Mono(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:2h21yb */
window['HGB_PosterSource_fontsource-jetbrains-mono'] = {"items":[{"id":"fontsource-jetbrains-mono:jetbrains-mono-cyrillic-wght-italic","name":"jetbrains-mono-cyrillic-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-jetbrains-mono/files/jetbrains-mono-cyrillic-wght-italic.woff2","mime":"application/octet-stream","bytes":13352,"sha256":"8df3ca627bd8e1cb0e5414f7429fe7a2cf82732b0fc43f2d05bc2c471b64fcfc","width":null,"height":null},{"id":"fontsource-jetbrains-mono:jetbrains-mono-cyrillic-wght-normal","name":"jetbrains-mono-cyrillic-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-jetbrains-mono/files/jetbrains-mono-cyrillic-wght-normal.woff2","mime":"application/octet-stream","bytes":12108,"sha256":"d274604c40757f98f07df623a8b8fb5194508a6fa4f5413a7a107f09e3b7452a","width":null,"height":null},{"id":"fontsource-jetbrains-mono:jetbrains-mono-latin-ext-wght-italic","name":"jetbrains-mono-latin-ext-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-jetbrains-mono/files/jetbrains-mono-latin-ext-wght-italic.woff2","mime":"application/octet-stream","bytes":16520,"sha256":"60652c78382d7e5021ce4c3ed8985fc41d8f3d1b1a3bedcec2a44ed8979fe5eb","width":null,"height":null},{"id":"fontsource-jetbrains-mono:jetbrains-mono-latin-ext-wght-normal","name":"jetbrains-mono-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-jetbrains-mono/files/jetbrains-mono-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":15196,"sha256":"79bfdab9ba467e26eea4122e6f2567e188dd8a09a8c730d501fc487c4ab99c6e","width":null,"height":null},{"id":"fontsource-jetbrains-mono:jetbrains-mono-latin-wght-italic","name":"jetbrains-mono-latin-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-jetbrains-mono/files/jetbrains-mono-latin-wght-italic.woff2","mime":"application/octet-stream","bytes":42964,"sha256":"a8afa085e9ca5e53434e2ee918ba6b65c7dd4dda56509976b36591478c99d62e","width":null,"height":null},{"id":"fontsource-jetbrains-mono:jetbrains-mono-latin-wght-normal","name":"jetbrains-mono-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-jetbrains-mono/files/jetbrains-mono-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":40404,"sha256":"18be452724bfdc236c074ca94a249a7f41a86752c7d04ab258ce9ed5651f6a7e","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Lora(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:92heas */
window['HGB_PosterSource_fontsource-lora'] = {"items":[{"id":"fontsource-lora:lora-latin-ext-wght-italic","name":"lora-latin-ext-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-lora/files/lora-latin-ext-wght-italic.woff2","mime":"application/octet-stream","bytes":21128,"sha256":"45f989df83f3a9f40007d2ecdea98bff248c8767a1a0bbe60e94fb37b605ecee","width":null,"height":null},{"id":"fontsource-lora:lora-latin-ext-wght-normal","name":"lora-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-lora/files/lora-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":20088,"sha256":"2a2d9c22c9863086a23f5013fede1428585321812b25f2662542c39d02967c5e","width":null,"height":null},{"id":"fontsource-lora:lora-latin-wght-italic","name":"lora-latin-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-lora/files/lora-latin-wght-italic.woff2","mime":"application/octet-stream","bytes":40772,"sha256":"d824d807d4d832d12c87932d0b8ec1314dcfd502157a56dee6bb04cf8a3768ae","width":null,"height":null},{"id":"fontsource-lora:lora-latin-wght-normal","name":"lora-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-lora/files/lora-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":37788,"sha256":"ddb8c66035104e233fc024669183aad3738b6daa16deee2ebb1241bd0f98ace1","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Montserrat(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:e1v3ln */
window['HGB_PosterSource_fontsource-montserrat'] = {"items":[{"id":"fontsource-montserrat:montserrat-latin-ext-wght-italic","name":"montserrat-latin-ext-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-montserrat/files/montserrat-latin-ext-wght-italic.woff2","mime":"application/octet-stream","bytes":74892,"sha256":"9f7c3dc0c1fdbc8b09d53d1beb4aca048a5aff376ac5423878e03e83e89a7fe8","width":null,"height":null},{"id":"fontsource-montserrat:montserrat-latin-ext-wght-normal","name":"montserrat-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-montserrat/files/montserrat-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":70688,"sha256":"54d9a78b7ff60b689ad9f3017ffac8547b5d871afec733f6c1c3ae36577ee504","width":null,"height":null},{"id":"fontsource-montserrat:montserrat-latin-wght-italic","name":"montserrat-latin-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-montserrat/files/montserrat-latin-wght-italic.woff2","mime":"application/octet-stream","bytes":39632,"sha256":"0eb22e3d769a66a92dbd82e3aefa5740e5bc21afa4485f62f92b22656d49182a","width":null,"height":null},{"id":"fontsource-montserrat:montserrat-latin-wght-normal","name":"montserrat-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-montserrat/files/montserrat-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":37956,"sha256":"06b16db7a969135d48d38c49183be7fb88d4452e2a3011957c7851941f4e4879","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Oswald(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:1lb9nbt */
window['HGB_PosterSource_fontsource-oswald'] = {"items":[{"id":"fontsource-oswald:oswald-cyrillic-ext-wght-normal","name":"oswald-cyrillic-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-oswald/files/oswald-cyrillic-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":19404,"sha256":"ff62316167dc2f9cae9dea3707afcc4cf571b7f6744304ba45f2fbc40dd74179","width":null,"height":null},{"id":"fontsource-oswald:oswald-cyrillic-wght-normal","name":"oswald-cyrillic-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-oswald/files/oswald-cyrillic-wght-normal.woff2","mime":"application/octet-stream","bytes":15688,"sha256":"9307b75d3508236a0bae4f29ee3d2ce9aee545120ec9ef29e2cd1187bf6b0e5b","width":null,"height":null},{"id":"fontsource-oswald:oswald-latin-ext-wght-normal","name":"oswald-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-oswald/files/oswald-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":23952,"sha256":"7989ccc7770f5aeffa67e088bcd3b294d42fae2f8b0eca3c3c51b953d1f735cc","width":null,"height":null},{"id":"fontsource-oswald:oswald-latin-wght-normal","name":"oswald-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-oswald/files/oswald-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":28488,"sha256":"bd73278ee0c50041b91b4c03d1229e35b501637f46b6409e7da2d3a758446ea5","width":null,"height":null},{"id":"fontsource-oswald:oswald-vietnamese-wght-normal","name":"oswald-vietnamese-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-oswald/files/oswald-vietnamese-wght-normal.woff2","mime":"application/octet-stream","bytes":7576,"sha256":"ca8ab22d32ea765f3a8f7112b8bea5af717fa7f4b65fa3823ae4cf3d4a95189c","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Playfair Display(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:1t4gcce */
window['HGB_PosterSource_fontsource-playfair'] = {"items":[{"id":"fontsource-playfair:playfair-display-cyrillic-wght-italic","name":"playfair-display-cyrillic-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-cyrillic-wght-italic.woff2","mime":"application/octet-stream","bytes":23304,"sha256":"51b2dac698333379dc3a3486393fba787d17f1dcbcb50f46582ca759d53c25fc","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-cyrillic-wght-normal","name":"playfair-display-cyrillic-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-cyrillic-wght-normal.woff2","mime":"application/octet-stream","bytes":21152,"sha256":"c108681cba6a9820bff52f4a1a4a1d9edf356b347bd79b7c61e916028e8a8b54","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-latin-ext-wght-italic","name":"playfair-display-latin-ext-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-latin-ext-wght-italic.woff2","mime":"application/octet-stream","bytes":23380,"sha256":"b9dff4aec6d8ef27af595330c808c455fcc3ff46881642aa6028ed4e27a96f89","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-latin-ext-wght-normal","name":"playfair-display-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":21140,"sha256":"42898ad49a6b23f32b109243e1df596edf831015ed685f429e4dafbb181d599d","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-latin-wght-italic","name":"playfair-display-latin-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-latin-wght-italic.woff2","mime":"application/octet-stream","bytes":38804,"sha256":"54af24bd0f911f0fd7399d5445ea2023ff501d6a69f2d728f1213072f977ab14","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-latin-wght-normal","name":"playfair-display-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":38404,"sha256":"e0c764a8e9e1cce92163c55bac4b2ad6cd4cf8c696ce2289ab5c41565e65b7e2","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-vietnamese-wght-italic","name":"playfair-display-vietnamese-wght-italic","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-vietnamese-wght-italic.woff2","mime":"application/octet-stream","bytes":9568,"sha256":"6b8bfd228577635a5f45bee13c8dd4a900eba6aeb36af1680838aea3cbd7e412","width":null,"height":null},{"id":"fontsource-playfair:playfair-display-vietnamese-wght-normal","name":"playfair-display-vietnamese-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-playfair/files/playfair-display-vietnamese-wght-normal.woff2","mime":"application/octet-stream","bytes":9112,"sha256":"ef6446229b59773e671021650ef3882cf35806dae723ce047de87c0a6633039a","width":null,"height":null}]};
+2
View File
@@ -0,0 +1,2 @@
/* Poppins(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:e8kmiw */
window['HGB_PosterSource_fontsource-poppins'] = {"items":[{"id":"fontsource-poppins:poppins-latin-300-normal","name":"poppins-latin-300-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-poppins/files/poppins-latin-300-normal.woff2","mime":"application/octet-stream","bytes":7840,"sha256":"78bc3aa78faec288bbb3bf26c9a0fa4eb67b1e69da94a17233c5cab60525efdb","width":null,"height":null},{"id":"fontsource-poppins:poppins-latin-400-normal","name":"poppins-latin-400-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-poppins/files/poppins-latin-400-normal.woff2","mime":"application/octet-stream","bytes":7884,"sha256":"7d93459d86585bfcdbb7e0376056226adb25821ee54b96236fe2123e9560929f","width":null,"height":null},{"id":"fontsource-poppins:poppins-latin-500-normal","name":"poppins-latin-500-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-poppins/files/poppins-latin-500-normal.woff2","mime":"application/octet-stream","bytes":7748,"sha256":"cd36de204aca2d5fa263a731f7c20009b5e3d754ba1f1e03c33e93a48f3e7446","width":null,"height":null},{"id":"fontsource-poppins:poppins-latin-600-normal","name":"poppins-latin-600-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-poppins/files/poppins-latin-600-normal.woff2","mime":"application/octet-stream","bytes":8000,"sha256":"f4e80d9dfd374d02989b87a27b5ed4cb78fbb177c27f1478e9a8b0afb7513149","width":null,"height":null},{"id":"fontsource-poppins:poppins-latin-700-normal","name":"poppins-latin-700-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-poppins/files/poppins-latin-700-normal.woff2","mime":"application/octet-stream","bytes":7816,"sha256":"9338e65fc077355c7a87ae0d64cc101e23b9bf8ad78ae65f0f319c857311b526","width":null,"height":null}]};
@@ -0,0 +1,2 @@
/* Space Grotesk(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:efzajk */
window['HGB_PosterSource_fontsource-space-grotesk'] = {"items":[{"id":"fontsource-space-grotesk:space-grotesk-latin-ext-wght-normal","name":"space-grotesk-latin-ext-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-space-grotesk/files/space-grotesk-latin-ext-wght-normal.woff2","mime":"application/octet-stream","bytes":18940,"sha256":"952dddb45d2f96f71cbf3b7f510b24379afc3c89ea02fcf89d377b45d62c0166","width":null,"height":null},{"id":"fontsource-space-grotesk:space-grotesk-latin-wght-normal","name":"space-grotesk-latin-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-space-grotesk/files/space-grotesk-latin-wght-normal.woff2","mime":"application/octet-stream","bytes":22288,"sha256":"0640890476fc1198ab4de571fb658de443c4d85b66466ec09534a8737ab1ce9d","width":null,"height":null},{"id":"fontsource-space-grotesk:space-grotesk-vietnamese-wght-normal","name":"space-grotesk-vietnamese-wght-normal","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/fontsource-space-grotesk/files/space-grotesk-vietnamese-wght-normal.woff2","mime":"application/octet-stream","bytes":6712,"sha256":"8895e3d49825128bfa5238e4c96e9b432d7a3dadbe5c17c6081267398305dc71","width":null,"height":null}]};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
View File
@@ -0,0 +1,2 @@
/* League Spartan(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:1wk50za */
window['HGB_PosterSource_league-spartan'] = {"items":[{"id":"league-spartan:LeagueSpartan-Black","name":"LeagueSpartan-Black","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-Black.ttf","mime":"application/octet-stream","bytes":79068,"sha256":"e97f12c9f592cd26e7d5094e2ebea914f85c64919872657d935bb2e5e5240bd7","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-Bold","name":"LeagueSpartan-Bold","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-Bold.ttf","mime":"application/octet-stream","bytes":78836,"sha256":"28a76032877053bc2a01b9ec15ad2a9c912491ca74e1343aa0ee3297a1dfa230","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-ExtraBold","name":"LeagueSpartan-ExtraBold","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-ExtraBold.ttf","mime":"application/octet-stream","bytes":78884,"sha256":"1e432a9911799ec9bdf6146778e57946c7abe07acdc918c41219df1a363d6b95","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-ExtraLight","name":"LeagueSpartan-ExtraLight","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-ExtraLight.ttf","mime":"application/octet-stream","bytes":76676,"sha256":"60136ba157e893da80b3eb96ddec63898e0b0118b13ac54a6e90f4c16e62e687","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-Light","name":"LeagueSpartan-Light","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-Light.ttf","mime":"application/octet-stream","bytes":77080,"sha256":"7127c368244adf9ed3b9564e29ef74a1ce656c5dea8987f7b71960a7819abd43","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-Medium","name":"LeagueSpartan-Medium","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-Medium.ttf","mime":"application/octet-stream","bytes":77964,"sha256":"178357941afa3d007bedcc513a35f4856590af2480761ac304cfdc47bfa10b62","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-Regular","name":"LeagueSpartan-Regular","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-Regular.ttf","mime":"application/octet-stream","bytes":77976,"sha256":"f0d22ae34443b2fd9437f528ac52718b0e9b2569f866c6f43ee89122a3b01d6a","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-SemiBold","name":"LeagueSpartan-SemiBold","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-SemiBold.ttf","mime":"application/octet-stream","bytes":78648,"sha256":"8509055f2e6075a0e96d28585aad8ed00161bdedb6e49dd11278b7d65c3fb7d0","width":null,"height":null},{"id":"league-spartan:LeagueSpartan-Thin","name":"LeagueSpartan-Thin","type":"font","category":"font","categoryCn":"字体排版","workspaces":["poster"],"file":"posters/league-spartan/files/LeagueSpartan-Thin.ttf","mime":"application/octet-stream","bytes":76556,"sha256":"7c006fde088746359598115a3c80199234b1e4263d9fcf0e1f524b5e98dc92a4","width":null,"height":null}]};
File diff suppressed because one or more lines are too long
+2
View File
@@ -0,0 +1,2 @@
/* Open Color(由 scripts/build-posters.js 生成,勿手动编辑)@cfg:179z45y */
window['HGB_PosterSource_open-color'] = {"items":[{"id":"open-color:open-color","name":"open-color","type":"palette","category":"others","categoryCn":"其他","workspaces":["poster"],"data":{"white":"#ffffff","black":"#000000","gray":["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],"red":["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],"pink":["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],"grape":["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],"violet":["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],"indigo":["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],"blue":["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],"cyan":["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],"teal":["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],"green":["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],"lime":["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],"yellow":["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],"orange":["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]},"bytes":2213,"sha256":"fdf2f910ba6dc9c907a46274ea74668813e65d6a5707f03167368bd3a671eb98","mime":"application/json"}]};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More