From 9d0138f69b442f8a8dde614e30770b24628a566c Mon Sep 17 00:00:00 2001 From: troytt <47798984@qq.com> Date: Mon, 28 Sep 2026 12:11:33 +0000 Subject: [PATCH] fix(ui,fonts): hybrid DC6+CJK rendering, middle-dot atlas mask, TTF contour refinement, and recess centering (Issue #504 R2 review) --- public/ui/fonts/D2Exocet.ttf | Bin 78708 -> 70568 bytes public/ui/fonts/D2Formal436.ttf | Bin 37136 -> 36680 bytes public/ui/fonts/font16.png | Bin 10508 -> 10565 bytes public/ui/fonts/font30.png | Bin 32561 -> 32705 bytes public/ui/fonts/font6.png | Bin 5320 -> 5345 bytes public/ui/fonts/font8.png | Bin 7713 -> 7716 bytes public/ui/fonts/fontexocet10.png | Bin 9506 -> 9565 bytes public/ui/fonts/fontformal12.png | Bin 13256 -> 13247 bytes public/ui/fonts/metrics.json | 84 ++++++++++----------- scripts/build-d2-ttf.ts | 3 + scripts/pack-ui-assets.ts | 73 ++++++++++++++++-- scripts/verify-issue-504-browser.ts | 71 +++++++++++++++--- src/ui/character-sheet.ts | 72 +++++++++--------- src/ui/font.ts | 107 ++++++++++++++++++++------- src/ui/world-panels.ts | 2 +- tests/issue-504-exocet-fonts.test.ts | 43 +++++++++-- 16 files changed, 326 insertions(+), 129 deletions(-) diff --git a/public/ui/fonts/D2Exocet.ttf b/public/ui/fonts/D2Exocet.ttf index 32fea7af0ec9bfcf1b797513b35ff565ee5b5fde..a80d0b7115ba314cc1ea4d1ce388579f31840c1a 100644 GIT binary patch literal 70568 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 literal 78708 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�BkqOe4p`@UzdTWBJ$QB`mRGJ774CbZO*Wig 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 delta 2924 zcmai$ZA_He703V2ybtrh3^EKO@2DssBZDC83kxW$qOvem&`}UUv7J?U>B1t4I^*hE z+O_V~W0OtRpzWH5Y;C0(KWvO`N#h5T(rDXlvdvP1$tIc&Ye{MolbWUfXBY^(b<+>O znS1VY&&xgMp8GuahIQee>%!jPmp`t|1(fH&`8$C_?HvdISv?F4-2zY+;Dlv|aRcQk z%F6E^H9QyT-pm8 zD1Xt@-P<>F6{{&vYtLcO{pRKlqg4S->aOVm;;kr=N>ln`KQI&K63%Ppw0})je9~sh zQhMaFDPK-?nPqsRDscx@c~D@Gag!_Z+|;S$Xo^&txi_n%Db9_f^Wn&OOT1o`_Lb6- z;E>hrPMNTk$gir+GF@tsP?svdHd>`fO^?@6)vxm^V@O7t_*_|XHQp?z)dG`d5k2ye zT5Qz(+>?juPbFyg$Z))4_Ti+A#&4B(YwR){N|fY;B{uGJ#;-irtjVa^EqfD|NYze* zZpJUC6LPI1a~qY968t@0-x;{lRJY{m#V!yOcy|lq7-5!&INT27iS;=5MvYEpa ztpJ#m@EVsErBu9a(kWw7Rgx-Ic0;U`_Q=GVCW|PYWl~w5A}1;`U$VK|73=Tguu}&s)N~LFwRk}B&D%!qM<=Up^1^ZGZp?af@M@H)>-8I;>tbb7EkcM)e)N0qI zeMaSLVai{sJrXpUzZPd|%_Bw5zLF)5Jx0mcoDw}uid)Jy7t3RxL%P>n%(0Ua32pw5 zqR&MULt8zY``XxH3Cnb=OHO1aDq*?fN|&*KMIO2>a=0l@TKx&~KsCzEokr(OcC=LU z=Y_Gam6ol=Mh{-a#^{zqJx-~uE0qKJPMIpVnqxgFWAQ0koup>lCiz3sB4@NwCp80e zu!3H%D{_0=8+s|;?~Bsv$K`@x^*r zEA?D&XLHO<%x@sf#Z@IPUIbS8ZBJa}@AauheSWNPV>*jCc6xO)+0xqBDfi=T;@f42 z=Hau(G6mvj`lV75-SE?<16nspTStxrcUPq?OpcyDc~$9aVS@*=>&x?PV%)v^|LTMm z==|txs$~14T`L#cToUqc{}w-H)?pv(q&+lT&nIJFrHqPE%BeJ8pJ!PSj=&{z<>H^4^@ARk56?6CCs+Nt3v3pi4 z-AuMF5WUVF3F(^rlkRFs_PTd!zPm7gqi%JxC0b`Q(=7ONZ?T+X0X`D@TE zf9#Ks+#c*Ta(S1#Senmx<-HY24yHO*CGDRtq+gsVo9!{bCX#43M&E(4`pn$>@Yxxo zEm-=+wKPyR*ML!tR2MsR(V>TH9OkOe$nBBxj`pEl$g+?u-WE!wu0OIH= z?ipY^38;z~X>?%hPt}8&w5Sakn z^yIDu7Uz*RAhnQiK8;4xIiEo}gF$58Aq*g^hu;+0Kn~Y0DF>EX$S3@6QAr=U0pykv z2Aq2xSiY9<`3magxyeKj$oBySG*U1`#(|Z~$P=K@Nk#z=We=5BQK`s4I>;2@ts`SV zaV@Z#`Xws43zP;3gI)vDN2puIaoH8Z`Bw@_h`eB_f>d6A4%iR|%4xj(2Jq^~5!w+nw{cUb? z0SIo>gbAQ7n{aX6b>MXaIZ7sh`a*JzOaToHsDS}B(77+2FtG1D0Cr3RjmyXw(DW&= zi?ZJW>`@7wH#-UETgHKXZG-{0(njku)_;E^u>Tg&#zk#@pgj*b0N|h-=w;a diff --git a/public/ui/fonts/font16.png b/public/ui/fonts/font16.png index 667116e6836ccc529c4ec0bc15bf7c4f89f180f2..b49a5fbf118f4078dfd2d9291109fb89807d472f 100644 GIT binary patch delta 9629 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 Ta43oZ00008NkvXXu0mjf%q!Pr delta 9542 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%0ATOC2Rz}E5fvDJ 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 diff --git a/public/ui/fonts/font30.png b/public/ui/fonts/font30.png index d95667a4244c9b01a2f9ebe20ebb813a8dea83fe..90e6bdd4a27f439db817a7302d148a5a0bd3aecd 100644 GIT binary patch delta 28987 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 delta 28841 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 diff --git a/public/ui/fonts/font6.png b/public/ui/fonts/font6.png index 57158f7241f6660779512f1647adb278339ef903..0395a810a68f77ffdf65d927e6f20317baeda2f0 100644 GIT binary patch delta 1697 zcmV;S244BdDd8!wJp%!cvpxeJ3V%TB*4~eWH!zlt(O_UYfD=e+vWJI22LmODc)rLnWX1?h)| z=o*46S;y|aq&x0kjd!nogF-}aOFrcj(pUjS7hrC0r9C@}qq1z)vh9bY$MM%H=Np6l zsV6tJXBzWM+^Ln)#rzBE9e*IZHzDaw0R2IUO)X6FjXYox56^!LLu$l)XiIy%bR-ua zoT*i>8^61FdER4{U&8VesDA{RGs|aavT%(_HNcxjf9@8SmU;;ic*~2#?4^@WOiO+z zegzVlI>oPca>AzsAXGx41CpWIHxA*i2Y*4JhlhuU#}AC&$F#ih?|)o!?hR_*;A$zX zuR5MZETLQ0wmp$ve1m_!baa%mX8%vPYx8L`gqL{>PsCI@E{cPsaI{bY)P!HTBy<$DV&q@=_B;{e3sMb_?}18{g%h$bp@w7 zAWer&-qWk*_Q#^bYmc`a;Ms~xvlCr(v4UCSuB#s$`zT)o3xD{b(ptZz;nQrEbo^mW zdse3^E#hbP9nR-tElxyy^0vpb>8{x)sXjxoZJqen8M}4w-m@=sJUl!+JUqS~HR>h< zI{r*`{Z(r#zd66!PN58F{#|xU;Y*ESGr{lW!Z8)+*U6P-#{=ys6zoS_MNW8fSGCjx zIUkD_irPkF%zs|vLC>xO9t7Xri?gmvaTnDZH~aFu#2sZTPTNl%SS=&ippH`;@E)tk zk`gkoy;vy=vc=u=so2XLS*&g`gxb0ehy)`Vh#3%y^8%x=Sym#wQfl*fR2s~p9XAL?P<)o0K?W^DLKkG&kk@yX zO}6YMOPiKXazLRmh7Zg6<;;SPaj%7vO{b`H>nis`Ku$rEvsrNtxj=bc^3T@XsDdlm z%JLC(ZhxI+(WGwjd)Nsk;kREe;Njun;oCT|O;L6NEelZh}bAPzJY&y&5FzA*-uxLmsGH|>BF>rL< zj#+(HO5?SF9%@FjQyVp=Q;bw0U59!Y`*kbJS5oL8@)yljnMcE2jgvX{cqVKs&N*a9>< zBY%rFAbn+WJ~VH+8<+=ZQ9?>@F(AvsukT3U?Ee=jblD1A9^8GC{GIPBJ9GNn=;lWB z(Q)MRem!gCZEus~kf{0<7HQ^g$zb&rS8Vi^+aT-HRhIq=()>RO4F*Y*E;l=x?;GqX zw?Y1Jca)PBt$h3!Uy9@5;o;%o@nfU5TYuG)@V6KfOVoXVPpnK{N2_^3|AE70TYqFa%xQ>;$U;Q zzpxPT;%>99a@$?)&9eIj%!OvKr>y31-=K?+Kn1oE`hifFi#~EMxToK1th00000NkvXXu0mjf?5<)s delta 1672 zcmV;326y@4Daa|XJp%!DvpxeJ3V#m|4-XFy4-XHIpASFaZFBB;`|}?2+mzoA&;d~- zOes^^3>(i+>xjnuPIN%S;d`HvY?|C2-Su`6-fbnW%bV<)T#IS;5)u_RU#(k{u;0~E zRen~n{1A0I9M$?nm|E-Mh+8AaItA0sVMHmO_>UTeD9V~Sc(5T;tiGn1J%8`7nv%C7 zaHhk@{0OgNtJkI8+mUeI%;5C+mCd%?8G0#=odqsPKQu(w5M0SRcK0RSasO((d+i$( zB6?f$DW8zW3Mje&b9*c8*-;#oWwVxTKO{Ylzg9Wl80=3yxv4$Vm|x;ft&}e2Ur_G= z*}Vx#ZvyBKN^ELjl5gYzi+^}{{$m(YBj!U}+T*1ox%l8rt$N+~-NnoE9;^HkmY+cV zBgmXtK0}j*YfP#E-Zc7ix45*_OOU`@ULkjT_2ezlVmJ|%!yj2U)7 zGF1DCDm`cY*agcPJ)Xtjf1UP1@f?AXpClh`tuS!4Lpqw&!n$Bp- zkI!CmU*xI-%(GaTrm5ntqf0@gGT}@uy{AWqzwbv)TcYu_`BWT{;ELx2eC3Qfn7p7T z8t_cx_Ub_isq{r{K7T;d%{JXyLK9lv$VksH|CyNZv#Na18E8n4uDPdQ0pPP4-nB;Y z#ToT=r_e%`u1MjWoKGL2&*!t8M#uL&n(nte9#tf{`OW#&b_!)c^Y5}-3SVjr zn+bj|7mleozfP_!J0569pPsLv5$YOPiA=K7& zKqMH^K+J$poEI2{&9V~dl~S9>qtaj&?YPOnN>Rz_)r#y!$QZ8(;}te|fk(5sqssv9 zK17D#aJLuCn!a*vd)Xb$#?H?V%pwznQa;jE?t!WU!ha06xBJQ!--fp?+$kC!JD{#D zQ^R2|Ssu3ENe-OBgW|K~3^HgL61pJEhP=MBY_er9S=zL8k^>5jF??9gFJ~5XjC(DV zY&u1qTUWUk0&*(SoXv`J$OX#ll7F`5MipGiR+f*TbL%XNCUukF!%i>>zx{dv4-XFy z507_7EPn~P3^?;fL+|p$Jx4W#0biD#+8UcCVx=X^ALHV3HpT?A1Z$vY9SsmVmM8NU z`h;*S6)bDUw}S&+=Y15Xi{%2g+D1rjqOpY>qrl#REG__ytU^YvscHW>PIm_N1y^PU z@{5^(oWtd1(^)=;LAMlwMMF}Nf#VH`furko%zx^$QW_^lwA+HlBHHdkA!Gbb#0!~> zj-)v;gX8O*vOB&XfJ`F(3gRDwoI+e_nk{Qj9Fk@$Q5R$9f-k`v5Yu8&sPoAc@<U5>k4L0a+e? zeSb#+XaB!Qq03g_^5E{9WG)Y~iLe|fy^c@Z8S9v&V)GyV?@_x036 SRSnMo0000*|c`RXE)%pY3%^@#pLrp&9C}^ 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 O0000!h@7GGjX>2ciH~!mi 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 LNkvXXu0mjfu)C=< diff --git a/public/ui/fonts/fontexocet10.png b/public/ui/fonts/fontexocet10.png index f83c01316c92210c77b6addc726c4d14adcfcf3e..00716d522c1e095adc97eaf0ce862b94cee940a1 100644 GIT binary patch delta 8813 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 X8UibzBM!Sh{d>~la^Naa{eb@f8igID delta 8754 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 P|CY44f>@=9q5ppYbHxij diff --git a/public/ui/fonts/fontformal12.png b/public/ui/fonts/fontformal12.png index c64f2120bdd32f1be9fab8e5acf3939504d313ec..63b22d1437273db96d253f3e0dc3ec114c659e7d 100644 GIT binary patch delta 12451 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 L%KfYo*7yHEdrSJQ diff --git a/public/ui/fonts/metrics.json b/public/ui/fonts/metrics.json index 218aebf..851add5 100644 --- a/public/ui/fonts/metrics.json +++ b/public/ui/fonts/metrics.json @@ -1349,30 +1349,30 @@ }, { "code": 149, - "width": 7, + "width": 3, "height": 7, "x": 80, "y": 144, - "frameW": 0, - "frameH": 0 + "frameW": 9, + "frameH": 11 }, { "code": 150, - "width": 7, + "width": 4, "height": 7, "x": 96, "y": 144, - "frameW": 0, - "frameH": 0 + "frameW": 9, + "frameH": 11 }, { "code": 151, - "width": 7, + "width": 4, "height": 7, "x": 112, "y": 144, - "frameW": 0, - "frameH": 0 + "frameW": 9, + "frameH": 11 }, { "code": 152, @@ -1560,8 +1560,8 @@ "height": 7, "x": 192, "y": 160, - "frameW": 9, - "frameH": 11 + "frameW": 0, + "frameH": 0 }, { "code": 173, @@ -1650,8 +1650,8 @@ "height": 7, "x": 96, "y": 176, - "frameW": 9, - "frameH": 11 + "frameW": 0, + "frameH": 0 }, { "code": 183, @@ -3662,7 +3662,7 @@ }, { "code": 149, - "width": 7, + "width": 4, "height": 14, "x": 80, "y": 144, @@ -5975,30 +5975,30 @@ }, { "code": 149, - "width": 12, + "width": 5, "height": 10, "x": 80, "y": 144, - "frameW": 0, - "frameH": 0 + "frameW": 14, + "frameH": 16 }, { "code": 150, - "width": 12, + "width": 5, "height": 10, "x": 96, "y": 144, - "frameW": 0, - "frameH": 0 + "frameW": 14, + "frameH": 16 }, { "code": 151, - "width": 12, + "width": 5, "height": 10, "x": 112, "y": 144, - "frameW": 0, - "frameH": 0 + "frameW": 14, + "frameH": 16 }, { "code": 152, @@ -8288,30 +8288,30 @@ }, { "code": 149, - "width": 21, + "width": 8, "height": 19, "x": 145, "y": 270, - "frameW": 0, - "frameH": 0 + "frameW": 29, + "frameH": 30 }, { "code": 150, - "width": 21, + "width": 10, "height": 19, "x": 174, "y": 270, - "frameW": 0, - "frameH": 0 + "frameW": 29, + "frameH": 30 }, { "code": 151, - "width": 21, + "width": 10, "height": 19, "x": 203, "y": 270, - "frameW": 0, - "frameH": 0 + "frameW": 29, + "frameH": 30 }, { "code": 152, @@ -10601,30 +10601,30 @@ }, { "code": 149, - "width": 12, + "width": 5, "height": 10, "x": 85, "y": 162, - "frameW": 0, - "frameH": 0 + "frameW": 17, + "frameH": 18 }, { "code": 150, - "width": 12, + "width": 9, "height": 10, "x": 102, "y": 162, - "frameW": 0, - "frameH": 0 + "frameW": 17, + "frameH": 18 }, { "code": 151, - "width": 12, + "width": 9, "height": 10, "x": 119, "y": 162, - "frameW": 0, - "frameH": 0 + "frameW": 17, + "frameH": 18 }, { "code": 152, @@ -12914,7 +12914,7 @@ }, { "code": 149, - "width": 10, + "width": 6, "height": 20, "x": 175, "y": 270, diff --git a/scripts/build-d2-ttf.ts b/scripts/build-d2-ttf.ts index 8ddbdd0..028640b 100644 --- a/scripts/build-d2-ttf.ts +++ b/scripts/build-d2-ttf.ts @@ -121,6 +121,7 @@ export interface BuildTrueTypeFontOptions { readonly scale: number readonly isForeground: (paletteIdx: number) => boolean readonly minContourAreaPixels?: number + readonly refineMask?: (mask: Uint8Array, frame: Dc6FrameLike) => void } function computePolygonSignedArea(pts: readonly Point[]): number { @@ -146,6 +147,7 @@ export function buildTrueTypeFont(options: BuildTrueTypeFontOptions): Uint8Array scale, isForeground, minContourAreaPixels = 0, + refineMask, } = options interface BuiltGlyph { @@ -274,6 +276,7 @@ export function buildTrueTypeFont(options: BuildTrueTypeFontOptions): Uint8Array for (let i = 0; i < mask.length; i++) { mask[i] = isForeground(frame.indices[i] ?? 0) ? 1 : 0 } + refineMask?.(mask, frame) contours = traceBitmapContours(mask, frame.width, frame.height, glyphBaselineY, scale) if (minContourAreaPixels > 0 && contours.length > 1) { const minAreaUnits = minContourAreaPixels * scale * scale diff --git a/scripts/pack-ui-assets.ts b/scripts/pack-ui-assets.ts index a2d8399..d11343b 100644 --- a/scripts/pack-ui-assets.ts +++ b/scripts/pack-ui-assets.ts @@ -163,27 +163,53 @@ function buildFontAtlas(name: string, dc6: SpriteSheet, tblBytes: Uint8Array): { const dotFrameIdx = dotRecOff + 8 < tblBytes.length ? (tblBytes[dotRecOff + 8] ?? 0x2e) : 0x2e const dotFrame = frames[dotFrameIdx] ?? frames[0x2e] + const dashRecOff = 12 + 0x2d * 14 + const dashMetricW = dashRecOff + 3 < tblBytes.length ? (tblBytes[dashRecOff + 3] || 8) : 8 + const dashFrameIdx = dashRecOff + 8 < tblBytes.length ? (tblBytes[dashRecOff + 8] ?? 0x2d) : 0x2d + const dashFrame = frames[dashFrameIdx] ?? frames[0x2d] + for (let i = 0; i < 256; i++) { const recOff = 12 + i * 14 let metricWidth = recOff + 3 < tblBytes.length ? (tblBytes[recOff + 3] || 6) : 6 const metricHeight = recOff + 4 < tblBytes.length ? (tblBytes[recOff + 4] || lineHeight) : lineHeight const frameIdx = recOff + 8 < tblBytes.length ? (tblBytes[recOff + 8] ?? i) : i let frame: SpriteFrame | undefined = frames[frameIdx] ?? frames[i] - if (i === 0xb7 && dotFrame) { - const shiftY = Math.max(1, Math.round(dotFrame.height * 0.35)) + if ((i === 0xb7 || i === 0x95) && dotFrame) { + const shiftY = Math.max(1, Math.round(dotFrame.height * 0.22)) const shiftedIndices = new Uint8Array(dotFrame.width * dotFrame.height) + const shiftedMask = new Uint8Array(dotFrame.width * dotFrame.height) for (let y = 0; y < dotFrame.height; y++) { const srcY = y + shiftY if (srcY < dotFrame.height) { for (let x = 0; x < dotFrame.width; x++) { - shiftedIndices[y * dotFrame.width + x] = dotFrame.indices[srcY * dotFrame.width + x]! + const dstIdx = y * dotFrame.width + x + const srcIdx = srcY * dotFrame.width + x + shiftedIndices[dstIdx] = dotFrame.indices[srcIdx]! + shiftedMask[dstIdx] = dotFrame.mask[srcIdx]! } } } - frame = { ...dotFrame, indices: shiftedIndices } + frame = { ...dotFrame, indices: shiftedIndices, mask: shiftedMask } metricWidth = dotMetricW } else if (i !== 0x3f && i >= 0x7f && isPlaceholderQuestionMark(frame)) { - frame = undefined + if ((i === 0x96 || i === 0x97) && dashFrame) { + frame = dashFrame + metricWidth = dashMetricW + } else { + frame = undefined + } + } + if (i !== 0x20 && i !== 0xa0 && frame) { + let hasVisiblePixel = false + for (let k = 0; k < frame.indices.length; k++) { + if (frame.mask[k] !== 0 && frame.indices[k] !== 0) { + hasVisiblePixel = true + break + } + } + if (!hasVisiblePixel) { + frame = undefined + } } const gx = (i % 16) * cellW const gy = Math.floor(i / 16) * cellH @@ -460,7 +486,7 @@ async function main(): Promise { // 7b. Generate authentic local TrueType WebFonts (`D2Exocet.ttf` & `D2Formal436.ttf`) from 1.13c DC6 font sheets const f42Dc6 = await decodeUiDc6('data\\local\\font\\latin\\font42.dc6') const f42Tbl = await archives.read('data\\local\\font\\latin\\font42.tbl') - const exocetFg = new Set([4, 6, 7, 12, 13, 14, 19, 20, 23, 24, 26, 28, 29, 30, 31, 32]) + const exocetFg = new Set([4, 6, 7, 12, 13, 14, 20, 23, 24, 26, 28, 29, 30, 31, 32]) const exocetTtf = buildTrueTypeFont({ familyName: 'D2Exocet', postScriptName: 'D2Exocet-Regular', @@ -470,6 +496,28 @@ async function main(): Promise { scale: 28, isForeground: idx => exocetFg.has(idx), minContourAreaPixels: 2, + refineMask: (mask, frame) => { + const w = frame.width + const h = frame.height + for (let y = 1; y < h - 1; y++) { + for (let x = 1; x < w - 1; x++) { + const i = y * w + x + const p = frame.indices[i] ?? 0 + if (mask[i] && (p === 4 || p === 6) && !mask[i - 1] && !mask[i + 1]) { + mask[i] = 0 + } + } + } + for (let y = 1; y < h - 1; y++) { + for (let x = 1; x < w - 1; x++) { + const i = y * w + x + const p = frame.indices[i] ?? 0 + if (!mask[i] && (p === 3 || p === 18 || p === 19) && mask[i - 1] && mask[i + 1]) { + mask[i] = 1 + } + } + } + }, }) writeFileSync(join(fontsDir, 'D2Exocet.ttf'), exocetTtf) @@ -483,6 +531,19 @@ async function main(): Promise { baselineY: 26, scale: 56, isForeground: idx => idx >= 28, + refineMask: (mask, frame) => { + const w = frame.width + const h = frame.height + const base = mask.slice() + for (let y = 1; y < h - 1; y++) { + for (let x = 1; x < w - 1; x++) { + const i = y * w + x + if (!base[i] && frame.indices[i] === 27 && base[i - w] && base[i + w] && base[i - 1] !== base[i + 1]) { + mask[i] = 1 + } + } + } + }, }) writeFileSync(join(fontsDir, 'D2Formal436.ttf'), formalTtf) diff --git a/scripts/verify-issue-504-browser.ts b/scripts/verify-issue-504-browser.ts index 20a8f9c..050a5fc 100644 --- a/scripts/verify-issue-504-browser.ts +++ b/scripts/verify-issue-504-browser.ts @@ -12,7 +12,7 @@ import { createServer } from 'vite' const ARTIFACT_DIR = process.argv[2] || - '/usr/local/google/home/taodao/diablo2-web/.agents/teamwork/reviewer_504_r1' + '/usr/local/google/home/taodao/diablo2-web/.agents/teamwork/reviewer_504_r2' const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)) @@ -241,7 +241,11 @@ async function main(): Promise { await waitForGameReady() // 1. Capture Area Entry Banner (`Font30` Exocet) + Top-left `#hud` (`D2Exocet`) + Ground `Alt` Item Labels (`D2Exocet`) - await evalJs(`(() => { + const groundLabelCheck = await evalJs<{ + groundLabelsCount: number + groundLabelFontFamily: string + groundLabelTexts: string[] + }>(`(async () => { const inst = window.__d2webHudInstance; inst.leftPanel = 'none'; inst.rightPanel = 'none'; @@ -251,10 +255,25 @@ async function main(): Promise { titleZh: '罗格营地', untilMs: performance.now() + 60000, }; - document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Alt', code: 'AltLeft', bubbles: true })); - inst.render(performance.now(), false); + if (inst.inventory.equipped?.helm) { + inst.callbacks.onDropItemToGround?.({ ...inst.inventory.equipped.helm, id: 'verify-ground-helm' }); + } + if (inst.inventory.equipped?.weapon1) { + inst.callbacks.onDropItemToGround?.({ ...inst.inventory.equipped.weapon1, id: 'verify-ground-weapon' }); + } + inst.showGroundLabels = true; + await new Promise(r => setTimeout(r, 300)); + const els = Array.from(document.querySelectorAll('.d2-ground-label')); + return { + groundLabelsCount: els.length, + groundLabelFontFamily: els[0] ? getComputedStyle(els[0]).fontFamily : '', + groundLabelTexts: els.map(el => el.textContent || ''), + }; })()`) - await sleep(300) + console.log(' Verified Alt ground labels:', JSON.stringify(groundLabelCheck)) + if (groundLabelCheck.groundLabelsCount < 2 || !groundLabelCheck.groundLabelFontFamily.includes('D2Exocet')) { + throw new Error(`Expected >=2 .d2-ground-label DOM elements using D2Exocet, got: ${JSON.stringify(groundLabelCheck)}`) + } await saveScreenshot('issue-504-acts-en-area-banner.png') // 2. Verify DC6 bitmap blitting, DC6 'O' cross vs Formal 436 hollow 'O', and 12 distinct color codes @@ -279,6 +298,7 @@ async function main(): Promise { document.fonts.load('14px D2Formal436'), ]); const inst = window.__d2webHudInstance; + inst.showGroundLabels = false; const measureDc6GlyphCenterAlpha = (fontName) => { const c = document.createElement('canvas'); @@ -346,7 +366,6 @@ async function main(): Promise { return origFillText.apply(this, args); }; try { - document.dispatchEvent(new KeyboardEvent('keyup', { key: 'Alt', code: 'AltLeft', bubbles: true })); if (inst.leftPanel !== 'char') inst.toggleLeftPanel('char'); if (inst.rightPanel !== 'inv') inst.toggleRightPanel('inv'); inst.inventory.handleMouseMove(561, 93); @@ -412,16 +431,44 @@ async function main(): Promise { await saveScreenshot('issue-504-acts-en-quests-skills-dialog.png') }) - // ── Phase C: Verify acts-zh.html bilingual CJK + Exocet/Formal 436 rendering ── + // ── Phase C: Verify acts-zh.html hybrid DC6 + CJK bilingual rendering ── await withChromePage(`${baseUrl}/acts-zh.html?act=1`, 'acts-zh.html', 9253, async ({ evalJs, saveScreenshot, waitForGameReady, externalUrls }) => { await waitForGameReady() - await evalJs(`(() => { + const zhCheck = await evalJs<{ + dc6BlitCount: number + fillTextCount: number + }>(`(() => { const inst = window.__d2webHudInstance; - if (inst.leftPanel !== 'char') inst.toggleLeftPanel('char'); - if (inst.rightPanel !== 'inv') inst.toggleRightPanel('inv'); - inst.inventory.handleMouseMove(561, 93); - inst.render(performance.now(), false); + let blitCount = 0; + let fillCount = 0; + const origDrawImage = CanvasRenderingContext2D.prototype.drawImage; + const origFillText = CanvasRenderingContext2D.prototype.fillText; + CanvasRenderingContext2D.prototype.drawImage = function(...args) { + if (args.length === 9) blitCount++; + return origDrawImage.apply(this, args); + }; + CanvasRenderingContext2D.prototype.fillText = function(...args) { + fillCount++; + return origFillText.apply(this, args); + }; + try { + if (inst.leftPanel !== 'char') inst.toggleLeftPanel('char'); + if (inst.rightPanel !== 'inv') inst.toggleRightPanel('inv'); + inst.inventory.handleMouseMove(561, 93); + inst.render(performance.now(), false); + } finally { + CanvasRenderingContext2D.prototype.drawImage = origDrawImage; + CanvasRenderingContext2D.prototype.fillText = origFillText; + } + return { + dc6BlitCount: blitCount, + fillTextCount: fillCount, + }; })()`) + console.log('4. Verified acts-zh.html hybrid DC6 + CJK rendering:', JSON.stringify(zhCheck)) + if (zhCheck.dc6BlitCount < 100 || zhCheck.fillTextCount < 10) { + throw new Error(`Expected acts-zh.html hybrid rendering (>100 DC6 blits and >=10 CJK fillText calls), got: ${JSON.stringify(zhCheck)}`) + } await sleep(300) if (externalUrls.length > 0) { throw new Error(`External network requests detected on acts-zh.html: ${JSON.stringify(externalUrls)}`) diff --git a/src/ui/character-sheet.ts b/src/ui/character-sheet.ts index 6e629eb..3a4cdb9 100644 --- a/src/ui/character-sheet.ts +++ b/src/ui/character-sheet.ts @@ -162,12 +162,12 @@ export class CharacterSheetPanel { } // 3. Top Header: Character Name & Class - font.drawText(ctx, this.attrs.name, ox + 90, oy + 24, { + font.drawText(ctx, this.attrs.name, ox + 90, oy + 21, { font: 'fontexocet10', color: 'gold', align: 'center', }) - font.drawText(ctx, isEn ? this.attrs.classNameEn : this.attrs.classNameZh, ox + 236, oy + 24, { + font.drawText(ctx, isEn ? this.attrs.classNameEn : this.attrs.classNameZh, ox + 236, oy + 21, { font: 'fontexocet10', color: 'white', align: 'center', @@ -175,20 +175,20 @@ export class CharacterSheetPanel { // 4. Level, Experience, Next Level font.drawText(ctx, isEn ? 'Level' : '等级', ox + 42, oy + 46, { font: isEn ? 'font6' : 'font8', color: 'tan', align: 'center' }) - font.drawText(ctx, String(this.attrs.level), ox + 42, oy + 63, { font: 'fontexocet10', color: 'white', align: 'center' }) + font.drawText(ctx, String(this.attrs.level), ox + 42, oy + 62, { font: 'fontexocet10', color: 'white', align: 'center' }) font.drawText(ctx, isEn ? 'Experience' : '当前经验值', ox + 135, oy + 46, { font: isEn ? 'font6' : 'font8', color: 'tan', align: 'center' }) - font.drawText(ctx, this.attrs.xp.toLocaleString(), ox + 135, oy + 61, { font: 'font6', color: 'white', align: 'center' }) + font.drawText(ctx, this.attrs.xp.toLocaleString(), ox + 135, oy + 62, { font: 'font6', color: 'white', align: 'center' }) font.drawText(ctx, isEn ? 'Next Level' : '升级所需经验', ox + 245, oy + 46, { font: isEn ? 'font6' : 'font8', color: 'tan', align: 'center' }) - font.drawText(ctx, this.attrs.nextLevelXp.toLocaleString(), ox + 245, oy + 61, { font: 'font6', color: 'white', align: 'center' }) + font.drawText(ctx, this.attrs.nextLevelXp.toLocaleString(), ox + 245, oy + 62, { font: 'font6', color: 'white', align: 'center' }) // 5. Four Primary Attributes (`Str`, `Dex`, `Vit`, `Ene`) const statRows: readonly { key: BaseStatKey; label: string; y: number; val: number }[] = [ - { key: 'str', label: isEn ? 'Strength' : '力量', y: 91, val: this.attrs.str }, - { key: 'dex', label: isEn ? 'Dexterity' : '敏捷', y: 153, val: this.attrs.dex }, - { key: 'vit', label: isEn ? 'Vitality' : '体力', y: 239, val: this.attrs.vit }, - { key: 'ene', label: isEn ? 'Energy' : '精力', y: 301, val: this.attrs.ene }, + { key: 'str', label: isEn ? 'Strength' : '力量', y: 94, val: this.attrs.str }, + { key: 'dex', label: isEn ? 'Dexterity' : '敏捷', y: 156, val: this.attrs.dex }, + { key: 'vit', label: isEn ? 'Vitality' : '体力', y: 242, val: this.attrs.vit }, + { key: 'ene', label: isEn ? 'Energy' : '精力', y: 304, val: this.attrs.ene }, ] for (const r of statRows) { font.drawText(ctx, r.label, ox + 18, oy + r.y, { font: 'font8', color: 'tan' }) @@ -212,7 +212,7 @@ export class CharacterSheetPanel { // Remaining Stat Points if (this.attrs.statPoints > 0) { if (isEn) { - font.drawText(ctx, 'Stat Points', ox + 56, oy + 361, { + font.drawText(ctx, 'Stat Points', ox + 56, oy + 363, { font: 'font6', color: 'red', align: 'center', @@ -223,13 +223,13 @@ export class CharacterSheetPanel { align: 'center', }) } else { - font.drawText(ctx, '剩余属性点', ox + 56, oy + 366, { + font.drawText(ctx, '剩余属性点', ox + 56, oy + 368, { font: 'font8', color: 'red', align: 'center', }) } - font.drawText(ctx, String(this.attrs.statPoints), ox + 122, oy + 366, { + font.drawText(ctx, String(this.attrs.statPoints), ox + 122, oy + 368, { font: 'fontexocet10', color: 'red', align: 'center', @@ -249,12 +249,12 @@ export class CharacterSheetPanel { align: 'center', }) } else { - font.drawText(ctx, '左键技能伤害', ox + 164, oy + 91, { + font.drawText(ctx, '左键技能伤害', ox + 164, oy + 94, { font: 'font8', color: 'tan', }) } - font.drawText(ctx, liveRuntime.leftSkillDmg, ox + 288, oy + 91, { + font.drawText(ctx, liveRuntime.leftSkillDmg, ox + 288, oy + 94, { font: 'font6', color: 'blue', align: 'center', @@ -266,68 +266,68 @@ export class CharacterSheetPanel { color: 'tan', align: 'center', }) - font.drawText(ctx, 'Damage', ox + 214, oy + 121, { + font.drawText(ctx, 'Damage', ox + 214, oy + 122, { font: 'font6', color: 'tan', align: 'center', }) } else { - font.drawText(ctx, '右键技能伤害', ox + 164, oy + 115, { + font.drawText(ctx, '右键技能伤害', ox + 164, oy + 118, { font: 'font8', color: 'tan', }) } - font.drawText(ctx, liveRuntime.rightSkillDmg, ox + 288, oy + 115, { + font.drawText(ctx, liveRuntime.rightSkillDmg, ox + 288, oy + 118, { font: 'font6', color: 'blue', align: 'center', }) - font.drawText(ctx, isEn ? 'Attack Rating' : '命中率', ox + 166, oy + 152, { font: 'font8', color: 'tan' }) - font.drawText(ctx, String(this.attrs.attackRating), ox + 290, oy + 152, { + font.drawText(ctx, isEn ? 'Attack Rating' : '命中率', ox + 166, oy + 156, { font: 'font8', color: 'tan' }) + font.drawText(ctx, String(this.attrs.attackRating), ox + 290, oy + 156, { font: 'font8', color: 'white', align: 'center', }) - font.drawText(ctx, isEn ? 'Defense' : '防御力', ox + 166, oy + 201, { font: 'font8', color: 'tan' }) - font.drawText(ctx, String(this.attrs.defense), ox + 290, oy + 201, { + font.drawText(ctx, isEn ? 'Defense' : '防御力', ox + 166, oy + 204, { font: 'font8', color: 'tan' }) + font.drawText(ctx, String(this.attrs.defense), ox + 290, oy + 204, { font: 'font8', color: 'blue', align: 'center', }) - font.drawText(ctx, isEn ? 'Stamina' : '耐力', ox + 166, oy + 238, { font: 'font8', color: 'tan' }) - font.drawText(ctx, `${Math.round(liveRuntime.maxStamina)}`, ox + 251, oy + 238, { + font.drawText(ctx, isEn ? 'Stamina' : '耐力', ox + 166, oy + 242, { font: 'font8', color: 'tan' }) + font.drawText(ctx, `${Math.round(liveRuntime.maxStamina)}`, ox + 251, oy + 242, { font: 'font8', color: 'white', align: 'center', }) - font.drawText(ctx, `${Math.round(liveRuntime.stamina)}`, ox + 291, oy + 238, { + font.drawText(ctx, `${Math.round(liveRuntime.stamina)}`, ox + 291, oy + 242, { font: 'font8', color: 'white', align: 'center', }) - font.drawText(ctx, isEn ? 'Life' : '生命', ox + 166, oy + 262, { font: 'font8', color: 'tan' }) - font.drawText(ctx, `${Math.round(liveRuntime.maxHp)}`, ox + 251, oy + 262, { + font.drawText(ctx, isEn ? 'Life' : '生命', ox + 166, oy + 266, { font: 'font8', color: 'tan' }) + font.drawText(ctx, `${Math.round(liveRuntime.maxHp)}`, ox + 251, oy + 266, { font: 'font8', color: 'blue', align: 'center', }) - font.drawText(ctx, `${Math.round(liveRuntime.hp)}`, ox + 291, oy + 262, { + font.drawText(ctx, `${Math.round(liveRuntime.hp)}`, ox + 291, oy + 266, { font: 'font8', color: 'white', align: 'center', }) - font.drawText(ctx, isEn ? 'Mana' : '法力', ox + 166, oy + 300, { font: 'font8', color: 'tan' }) - font.drawText(ctx, `${Math.round(liveRuntime.maxMana)}`, ox + 251, oy + 300, { + font.drawText(ctx, isEn ? 'Mana' : '法力', ox + 166, oy + 304, { font: 'font8', color: 'tan' }) + font.drawText(ctx, `${Math.round(liveRuntime.maxMana)}`, ox + 251, oy + 304, { font: 'font8', color: 'blue', align: 'center', }) - font.drawText(ctx, `${Math.round(liveRuntime.mana)}`, ox + 291, oy + 300, { + font.drawText(ctx, `${Math.round(liveRuntime.mana)}`, ox + 291, oy + 304, { font: 'font8', color: 'white', align: 'center', @@ -335,20 +335,20 @@ export class CharacterSheetPanel { // 7. Four Elemental Resistances const resRows = [ - { labelEn: ['Fire Resistance'], labelZh: '火焰抗性', y: 341, val: this.attrs.fireRes }, - { labelEn: ['Cold Resistance'], labelZh: '冰冷抗性', y: 365, val: this.attrs.coldRes }, - { labelEn: ['Lightning', 'Resistance'], labelZh: '闪电抗性', y: 389, val: this.attrs.lightRes }, - { labelEn: ['Poison Resistance'], labelZh: '毒素抗性', y: 413, val: this.attrs.poisRes }, + { labelEn: ['Fire Resistance'], labelZh: '火焰抗性', y: 344, val: this.attrs.fireRes }, + { labelEn: ['Cold Resistance'], labelZh: '冰冷抗性', y: 368, val: this.attrs.coldRes }, + { labelEn: ['Lightning', 'Resistance'], labelZh: '闪电抗性', y: 392, val: this.attrs.lightRes }, + { labelEn: ['Poison Resistance'], labelZh: '毒素抗性', y: 416, val: this.attrs.poisRes }, ] as const for (const res of resRows) { if (isEn) { if (res.labelEn.length === 2) { - font.drawText(ctx, res.labelEn[0], ox + 214, oy + res.y - 2, { + font.drawText(ctx, res.labelEn[0], ox + 214, oy + res.y - 4, { font: 'font6', color: 'tan', align: 'center', }) - font.drawText(ctx, res.labelEn[1], ox + 214, oy + res.y + 6, { + font.drawText(ctx, res.labelEn[1], ox + 214, oy + res.y + 4, { font: 'font6', color: 'tan', align: 'center', diff --git a/src/ui/font.ts b/src/ui/font.ts index 6ea1862..2b32e33 100644 --- a/src/ui/font.ts +++ b/src/ui/font.ts @@ -334,19 +334,27 @@ export class D2FontRenderer { return total } - private canBlitAllSpans(font: D2FontName, spans: readonly TextSpan[]): boolean { + private canBlitGlyph(meta: FontAtlasMeta, rawCode: number): boolean { + const code = normalizeDc6CharCode(rawCode) + const g = code < 256 ? meta.glyphs[code] : undefined + if (!g) return false + if (code !== 0x20 && code !== 0xa0 && (g.frameW <= 0 || g.frameH <= 0)) return false + return true + } + + private hasAnyBlitableGlyph(font: D2FontName, spans: readonly TextSpan[]): boolean { if (!this.loaded || !this.images.has(font)) return false const meta = this.metas[font] if (!meta) return false for (const span of spans) { for (let i = 0; i < span.text.length; i++) { const code = normalizeDc6CharCode(span.text.charCodeAt(i)) - const g = code < 256 ? meta.glyphs[code] : undefined - if (!g) return false - if (code !== 0x20 && code !== 0xa0 && (g.frameW <= 0 || g.frameH <= 0)) return false + if (code !== 0x20 && code !== 0xa0 && this.canBlitGlyph(meta, code)) { + return true + } } } - return true + return false } /** @@ -385,43 +393,88 @@ export class D2FontRenderer { ctx.font = `${isTitleFont ? 'bold ' : ''}${pxSize}px ${fontStack}` ctx.textBaseline = 'alphabetic' - if (typeof ctx.drawImage === 'function' && this.canBlitAllSpans(font, spans)) { + if (typeof ctx.drawImage === 'function' && this.hasAnyBlitableGlyph(font, spans)) { const meta = this.metas[font]! + let hybridTotal = 0 + for (const span of spans) { + let i = 0 + while (i < span.text.length) { + const rawCode = span.text.charCodeAt(i) + if (this.canBlitGlyph(meta, rawCode)) { + const code = normalizeDc6CharCode(rawCode) + hybridTotal += Math.max(4, meta.glyphs[code]!.width) + i++ + } else { + let j = i + 1 + while (j < span.text.length && !this.canBlitGlyph(meta, span.text.charCodeAt(j))) { + j++ + } + hybridTotal += ctx.measureText(span.text.slice(i, j)).width + i = j + } + } + } + if (align === 'center') curX = Math.round(x - hybridTotal / 2) + else if (align === 'right') curX = Math.round(x - hybridTotal) + const dstY = baseY - FONT_BASELINE_OFFSET[font] const shadowAtlas = shadow ? this.getTintedAtlas(font, 'black') : null for (const span of spans) { const tinted = this.getTintedAtlas(font, span.color) - for (let i = 0; i < span.text.length; i++) { - const code = normalizeDc6CharCode(span.text.charCodeAt(i)) - const g = meta.glyphs[code]! - const adv = Math.max(4, g.width) - if (code !== 0x20 && code !== 0xa0 && g.frameW > 0 && g.frameH > 0 && tinted) { - if (shadow && span.color !== 'black' && shadowAtlas) { + let i = 0 + while (i < span.text.length) { + const rawCode = span.text.charCodeAt(i) + if (this.canBlitGlyph(meta, rawCode)) { + const code = normalizeDc6CharCode(rawCode) + const g = meta.glyphs[code]! + const adv = Math.max(4, g.width) + const gx = Math.round(curX) + if (code !== 0x20 && code !== 0xa0 && g.frameW > 0 && g.frameH > 0 && tinted) { + if (shadow && span.color !== 'black' && shadowAtlas) { + ctx.drawImage( + shadowAtlas, + g.x, + g.y, + g.frameW, + g.frameH, + gx + 1, + dstY + 1, + g.frameW, + g.frameH, + ) + } ctx.drawImage( - shadowAtlas, + tinted, g.x, g.y, g.frameW, g.frameH, - curX + 1, - dstY + 1, + gx, + dstY, g.frameW, g.frameH, ) } - ctx.drawImage( - tinted, - g.x, - g.y, - g.frameW, - g.frameH, - curX, - dstY, - g.frameW, - g.frameH, - ) + curX += adv + i++ + } else { + let j = i + 1 + while (j < span.text.length && !this.canBlitGlyph(meta, span.text.charCodeAt(j))) { + j++ + } + const cjkRun = span.text.slice(i, j) + const rx = Math.round(curX) + if (shadow) { + ctx.fillStyle = '#000000' + ctx.fillText(cjkRun, rx + 1, baseY + 1) + ctx.fillText(cjkRun, rx - 1, baseY + 1) + ctx.fillText(cjkRun, rx + 1, baseY - 1) + } + ctx.fillStyle = D2_COLOR_HEX[span.color] + ctx.fillText(cjkRun, rx, baseY) + curX += ctx.measureText(cjkRun).width + i = j } - curX += adv } } ctx.restore() diff --git a/src/ui/world-panels.ts b/src/ui/world-panels.ts index 5231ada..41bd739 100644 --- a/src/ui/world-panels.ts +++ b/src/ui/world-panels.ts @@ -2383,7 +2383,7 @@ export class WorldPanelsHud { ctx.strokeStyle = '#6c5838' ctx.strokeRect(ox + 18.5, oy + 264.5, 283, 115) - font.drawText(ctx, `${qInfo.title} ${qInfo.statusTag}`, ox + 160, oy + 280, { + font.drawText(ctx, `${qInfo.title} ${qInfo.statusTag}`, ox + 160, oy + 282, { font: 'fontexocet10', color: qInfo.status === 'completed' ? 'gold' : 'white', align: 'center', diff --git a/tests/issue-504-exocet-fonts.test.ts b/tests/issue-504-exocet-fonts.test.ts index 240cacf..9e2a38d 100644 --- a/tests/issue-504-exocet-fonts.test.ts +++ b/tests/issue-504-exocet-fonts.test.ts @@ -124,15 +124,22 @@ describe('Diablo II v1.13c Exocet & Formal 436 Fonts (Issue #504)', () => { const exocetBuf = readFileSync(exocetPath) // D2Exocet 'O' (U+004F) has 1 outer boundary + 4 inner holes around the central cross (⊕) = 5 contours expect(getTrueTypeGlyphContourCount(exocetBuf, 'O'.charCodeAt(0))).toBe(5) - // Solid strokes 'E', 'F', 'H' have 1 outer contour and 0 highlight pinholes + // D2Exocet 'Q' and 'q' (Qoppa) have 1 outer boundary + 1 enclosed inner hole = 2 contours + expect(getTrueTypeGlyphContourCount(exocetBuf, 'Q'.charCodeAt(0))).toBe(2) + expect(getTrueTypeGlyphContourCount(exocetBuf, 'q'.charCodeAt(0))).toBe(2) + // D2Exocet '=' has 2 separate horizontal bar contours + expect(getTrueTypeGlyphContourCount(exocetBuf, '='.charCodeAt(0))).toBe(2) + // Solid strokes 'E', 'F', 'H', '5' have 1 outer contour and 0 highlight/shadow pinholes expect(getTrueTypeGlyphContourCount(exocetBuf, 'E'.charCodeAt(0))).toBe(1) expect(getTrueTypeGlyphContourCount(exocetBuf, 'F'.charCodeAt(0))).toBe(1) expect(getTrueTypeGlyphContourCount(exocetBuf, 'H'.charCodeAt(0))).toBe(1) + expect(getTrueTypeGlyphContourCount(exocetBuf, '5'.charCodeAt(0))).toBe(1) const formalBuf = readFileSync(formalPath) - // D2Formal436 'O' (U+004F) and 'e' (U+0065) have 1 outer boundary + 1 open counter hole = 2 contours + // D2Formal436 'O' (U+004F), 'e' (U+0065), and '&' (U+0026) have 1 outer boundary + 1 open counter hole = 2 contours expect(getTrueTypeGlyphContourCount(formalBuf, 'O'.charCodeAt(0))).toBe(2) expect(getTrueTypeGlyphContourCount(formalBuf, 'e'.charCodeAt(0))).toBe(2) + expect(getTrueTypeGlyphContourCount(formalBuf, '&'.charCodeAt(0))).toBe(2) // '8' and 'B' have 1 outer boundary + 2 counter holes = 3 contours expect(getTrueTypeGlyphContourCount(formalBuf, '8'.charCodeAt(0))).toBe(3) expect(getTrueTypeGlyphContourCount(formalBuf, 'B'.charCodeAt(0))).toBe(3) @@ -411,6 +418,18 @@ describe('Diablo II v1.13c Exocet & Formal 436 Fonts (Issue #504)', () => { }) expect(drawImageCalls).toHaveLength(0) expect(fillTextCount).toBeGreaterThan(0) + + // 5. Mixed ASCII + CJK string ("+45 防御") blits "+45" via DC6 drawImage (6 calls: 3 shadow + 3 fg) and draws "防御" via fillText + drawImageCalls.length = 0 + fillTextCount = 0 + renderer.drawText(blitCtx, '+45 防御', 200, 100, { + font: 'font16', + color: 'blue', + align: 'center', + shadow: true, + }) + expect(drawImageCalls).toHaveLength(6) + expect(fillTextCount).toBe(4) }) it('produces 12 distinct colors and tinted atlases for all 12 Diablo II color codes (ÿc0..ÿc;)', () => { @@ -599,8 +618,22 @@ describe('Diablo II v1.13c Exocet & Formal 436 Fonts (Issue #504)', () => { expect(match!.widthPx).toBeLessThanOrEqual(104) } - // Verify middle dot U+00B7 (0xB7) in metrics.json uses period width (<= 10px) rather than '?' placeholder width - expect(metricsJson.fontformal12.glyphs[0xb7].width).toBe(metricsJson.fontformal12.glyphs[0x2e].width) - expect(metricsJson.font30.glyphs[0xb7].width).toBe(metricsJson.font30.glyphs[0x2e].width) + // Verify middle dot U+00B7 (0xB7), bullet (0x95), and en/em-dashes (0x96/0x97) in metrics.json across all 6 DC6 fonts + for (const fn of ['font6', 'font8', 'font16', 'font30', 'fontexocet10', 'fontformal12'] as const) { + expect(metricsJson[fn].glyphs[0xb7].width).toBe(metricsJson[fn].glyphs[0x2e].width) + expect(metricsJson[fn].glyphs[0xb7].frameW).toBeGreaterThan(0) + expect(metricsJson[fn].glyphs[0xb7].frameH).toBeGreaterThan(0) + expect(metricsJson[fn].glyphs[0x95].frameW).toBeGreaterThan(0) + expect(metricsJson[fn].glyphs[0x96].frameW).toBeGreaterThan(0) + expect(metricsJson[fn].glyphs[0x97].frameW).toBeGreaterThan(0) + } + + // Verify vertical centering inside stone recesses (oy=60: top recess 10..23 -> baseline 81; Str recess 83..98 -> baseline 154) + expect(drawnLabels.find(d => d.text === 'Isendra')?.y).toBe(60 + 21) + expect(drawnLabels.find(d => d.text === 'Sorceress')?.y).toBe(60 + 21) + expect(drawnLabels.find(d => d.text === 'Strength')?.y).toBe(60 + 94) + expect(drawnLabels.find(d => d.text === 'Dexterity')?.y).toBe(60 + 156) + expect(drawnLabels.find(d => d.text === 'Vitality')?.y).toBe(60 + 242) + expect(drawnLabels.find(d => d.text === 'Energy')?.y).toBe(60 + 304) }) })