Skip to content

Commit 373d303

Browse files
committed
修复公式计算逻辑
1 parent f0ffe84 commit 373d303

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

  • Workbench/Wmf/KawkaywecaljalKayjaybelfuber

Workbench/Wmf/KawkaywecaljalKayjaybelfuber/Program.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ Encoding CharacterSetToEncoding(CharacterSet characterSet)
9191
return Encoding.GetEncoding(codePageId);
9292
}
9393

94+
float lastXOffset = 0;
95+
9496
for (var i = 0; i < wmfDocument.Records.Count; i++)
9597
{
9698
var wmfDocumentRecord = wmfDocument.Records[i];
@@ -127,6 +129,7 @@ Encoding CharacterSetToEncoding(CharacterSet characterSet)
127129
{
128130
currentX = moveToRecord.X;
129131
currentY = moveToRecord.Y;
132+
lastXOffset = 0;
130133
break;
131134
}
132135
// - [12] {== WmfLineToRecord ==
@@ -238,14 +241,15 @@ Encoding CharacterSetToEncoding(CharacterSet characterSet)
238241
skFont.Typeface = SKTypeface.FromFamilyName(currentFontName);
239242
paint.Style = SKPaintStyle.Fill;
240243

241-
var currentXOffset = currentX + tx;
244+
var currentXOffset = currentX + tx + lastXOffset;
242245

243246
if (dxLength == 0)
244247
{
245248
canvas.DrawText(text, currentXOffset, currentY + ty, skFont, paint);
246249
}
247250
else
248251
{
252+
// 如果这里计算出来不是偶数,则首个需要跳过。这是经过测试验证的。但没有相关说明内容。且跳过的 byte 是有内容的
249253
if (dxLength % sizeof(UInt16) == 1)
250254
{
251255
var r = binaryReader.ReadByte();
@@ -269,6 +273,8 @@ Encoding CharacterSetToEncoding(CharacterSet characterSet)
269273

270274
currentXOffset += dxArray[textIndex];
271275
}
276+
277+
lastXOffset = dxArray[^1];
272278
}
273279

274280
break;

0 commit comments

Comments
 (0)