fix(share): 分享卡链接按真实字宽居中,长链接按 host/path 收敛
原实现用字符宽度系数估算文本宽度,把标点/符号一律按 1em 计, 而 URL 里的 : / . _ - 实际只有 0.25~0.35em,整句高估 55%: 15px 的 box.shiroko.one/_/tamakyi 估算 352.5px、真实 227.9px, 越过卡片可用宽 230px 后触发等比缩字号,最终只画到 9.6px 且左偏 40px; 链接越长字号越小(长域名实测 5.3px),整段挤在卡片左侧。 - measureTextWidth 改为逐字累加 HMetric.AdvanceWidth + Kern, scale = fontSize*64 与 freetype 在 72 DPI 下的换算一致,测量结果与 DrawString 返回笔位逐位相等;字体不可用时回退估算 - drawTextCentered 随之修正,底部水印原本偏 9.8px 一并归位 - 新增 displayURL(去协议前缀)/ layoutLink / ellipsizeMiddle: 单行 15→13px;放不下按 host/path 拆两行 13→11px;host 超宽才中间省略; 字号下限 11px,行长恒定不超过 QRCardW-40 - 卡片内容高度按链接行数计算,两行时整体重新居中 守门测试见 route/question/share_layout_test.go(测量=笔位、限宽、按着墨 边界判定居中 ±3px、TEST_PREVIEW=1 出图)。
This commit is contained in:
@@ -48,6 +48,7 @@ require (
|
||||
go.opentelemetry.io/otel/sdk v1.9.0
|
||||
go.opentelemetry.io/otel/trace v1.10.0
|
||||
golang.org/x/crypto v0.54.0
|
||||
golang.org/x/image v0.13.0
|
||||
golang.org/x/net v0.56.0
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||
gopkg.in/ini.v1 v1.67.0
|
||||
@@ -151,7 +152,6 @@ require (
|
||||
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect
|
||||
golang.org/x/image v0.13.0 // indirect
|
||||
golang.org/x/mod v0.37.0 // indirect
|
||||
golang.org/x/sync v0.22.0 // indirect
|
||||
golang.org/x/sys v0.47.0 // indirect
|
||||
|
||||
Reference in New Issue
Block a user