[UI/字体] 英文版界面全面接入暗黑2原版 Exocet(O带十字)与 Formal 436 字体 #504
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景与问题描述 (Background & Problem Statement)
暗黑破坏神 II(Diablo II v1.13c)原版英文界面之所以极具哥特与神秘主义辨识度,核心在于使用了两款标志性字体:
O中间带有十字(\oplus,源自古希腊 Theta\Theta早期石刻铭文)、字母T呈正十字架(+)、字母Q源自古希腊 Qoppa。data\local\font\latin\中对应font8、font16、font24、font30、font42、fontexocet8、fontexocet10等,用于主标题、UI 按钮、角色属性/技能树/任务面板标题、区域进入横幅(“Entering ...”)、地面掉落物品标签、装备名称与词缀标题等。FRML436N.TTF):data\local\font\latin\中对应fontformal10、fontformal11、fontformal12,用于 NPC 对话长文本滚动字幕、任务日志正文、聊天框与密集说明文本。当前项目现状
src/ui/font.ts):虽然public/ui/fonts/下已由scripts/pack-ui-assets.ts从 MPQ 提取了font6.png、font8.png、font16.png、font30.png、fontexocet10.png、fontformal12.png及metrics.json,且D2FontRenderer实现了getTintedAtlas(),但D2FontRenderer.drawText()(第 259–280 行)目前并未真正使用 DC6 图集逐字形(glyph)绘制,也未加载本地 Exocet / Formal 436 字体文件,而是退化为系统默认衬线字体栈("Cinzel", "Times New Roman", "Liberation Serif", ...)调用ctx.fillText(),导致英文字符缺失原版O带十字(\oplus)等标志性字形。acts.html及未来的英文版入口与首页 #503):当前全局 CSS 使用ui-monospace, SFMono-Regular, Menlo, Consolas, monospace,未引入本地缓存的Exocet与Formal 436Web 字体(@font-face)。核心需求与设计方案 (Requirements & Proposed Design)
1. 本地内置 Exocet 与 Formal 436 Web 字体资源(遵循本地资源缓存规范)
public/ui/fonts/下内置本地 Web 字体文件(.woff2/.ttf,严禁使用外部 CDN 外链):Exocet(Light / Heavy,确保包含带十字的O/o字形与十字T字形);Formal 436(Regular,对应FRML436N)。@font-face:'D2Exocet'-> 用于英文版标题、按钮、横幅、物品名与 HUD 核心标签;'D2Formal436'-> 用于英文版 NPC 对话框(#dialog)、任务日志长文、详细说明与顶栏辅助文本。2. Canvas 字体引擎 (
src/ui/font.ts) 英文原版渲染对齐D2FontRenderer图集已加载时,支持按metrics.json(Woo!\x01.tbl度量表)与getTintedAtlas(font, color)逐字形精确 Blit 原版 DC6 位图字体(font6,font8,font16,font30,fontexocet10,fontformal12),100% 还原原版像素级带十字O与 12 色控制码(ÿc0..ÿc;);ctx.font的回退字体栈升级为:font16,font30,fontexocet10,font8,font6):"D2Exocet", "Exocet", ...fontformal12):"D2Formal436", "Formal 436", ...3. 英文界面(配合 #503 双语体系)全场景覆盖
index.html) 与英文版acts页面:Exocet/Formal 436;hud-manager.ts,character-sheet.ts,skill-tree-panel.ts,world-panels.ts,inventory.ts,ground-labels.ts,transition.ts):Entering Rogue Encampment、Blood Moor)、面板大标题(Character、Inventory、Skill Tree、Quests、Waypoints、Private Stash、Horadric Cube)、地面掉落标签、装备 Tooltip 名称与 NPC 头顶菜单使用 Exocet(font16/font30/fontexocet10/font8);fontformal12)。验收标准 (Acceptance Criteria)
public/ui/fonts/包含本地打包的Exocet与Formal 436字体资源及原版 DC6 字体图集,无任何外部 CDN 依赖。O中间带十字\oplus)与 Formal 436 字体特征。src/ui/font.ts的D2FontRenderer在英文文本渲染时真实生效(支持原版 DC6 位图字形与D2Exocet/D2Formal436字体栈),12 种暗黑颜色码(ÿc0..ÿc;)着色准确。