Šķîþ ţö ḿàîñ çöñţéñţ

Đöçẋ þàŕàĝŕàþĥ ŕéþļàý

Àñ üñţŕàñšļàţéđ ŕöüñđ ţŕîþ ţĥŕöüĝĥ core/formats/openxml ŕéţüŕñš 151 öƒ ţĥé 185 đöçẋ ƒîẋţüŕéš üþšţŕéàḿ Okapi šĥîþš ƃýţé ƒöŕ ƃýţé, ƃéšîđé 86 öƒ 87 ẋļšẋ àñđ 86 öƒ 86 þþţẋ. Ţĥîš ñöţé đéšçŕîƃéš ţĥé ḿéçĥàñîšḿ ţĥàţ đöéš îţ ƒöŕ ŴöŕđþŕöçéššîñĝḾĻ, ŵĥàţ îţ đéçļîñéš ţö ŕéþļàý, àñđ ŵĥàţ ţĥé çöŕþüš ţéšţ àñđ ţĥé þàŕîţý šļîçé ḿéàšüŕé. Þàŕéñţ ÀĐ: É-02: Ţĥé ƒöŕḿàţ šýšţéḿ. Ţĥé šţöŕé ḿéçĥàñîçš îţ ƃüîļđš öñ àŕé îñ Šķéļéţöñ šţöŕé àñđ šţŕéàḿîñĝ.

Ţĥé ŵŕîţéŕ þŕöĵéçţš àñ éẋţŕàçţéđ þàŕàĝŕàþĥ ƒŕöḿ ţĥé ḿöđéļ, šö à þàŕàĝŕàþĥ ţĥàţ îš ŕéƃüîļţ îš ŕé-šéŕîàļîšéđ: îţš šţàŕţ-ţàĝ àţţŕîƃüţéš, ţĥé šéļƒ-çļöšîñĝ ƒöŕḿš îñšîđé îţ, ţĥé çĥàŕàçţéŕ ŕéƒéŕéñçéš, ţĥé ŵĥîţéšþàçé à þŕöđüçéŕ îñđéñţéđ îţ ŵîţĥ, ţĥé ŕüñš ţĥé ŕéàđéŕ ḿéŕĝéđ, àñđ ţĥé ŕüñ þŕöþéŕţîéš îţ ŕéƃüîļţ àļļ çöḿé öüţ îñ ţĥé ŵŕîţéŕ'š šþéļļîñĝ. Ŕéþļàý ķééþš ţĥé šöüŕçé'š šþéļļîñĝ ŵĥéŕéṽéŕ ñöţĥîñĝ çĥàñĝéđ.

Ŵĥàţ à ŕéƃüîļţ þàŕàĝŕàþĥ ļöšéš

Ḿéàšüŕéđ öṽéŕ ţĥé 185 ƒîẋţüŕéš ƃéƒöŕé ŕéþļàý éẋîšţéđ, ŵîţĥ éàçĥ đéŕîñĝ þàŕàĝŕàþĥ ñöŕḿàļîšéđ öñé šţéþ àţ à ţîḿé üñţîļ ƃöţĥ šîđéš àĝŕééđ. Ţĥé ƒîŕšţ çöļüḿñ çöüñţš ƒîẋţüŕéš îñ ŵĥîçĥ ţĥé ḿéçĥàñîšḿ îš öƃšéŕṽàƃļé, ţĥé šéçöñđ çöüñţš þàŕàĝŕàþĥš, àñđ ţĥé ţĥîŕđ çöüñţš þàŕàĝŕàþĥš ŵĥéŕé ţĥàţ ḿéçĥàñîšḿ àļöñé éẋþļàîñš ţĥé ŵĥöļé đéŕéñçé.

ḾéçĥàñîšḿƑîẋţüŕéšÞàŕàĝŕàþĥšŠüƒƒîçîéñţ
<w:t> àţţŕîƃüţéš ŕéŵŕîţţéñ (xml:space)154105839
<w:p> šţàŕţ àţţŕîƃüţéš đŕöþþéđ (w:rsid*, w14:paraId, w14:textId)15317580
Šéļƒ-çļöšîñĝ ƒöŕḿ éẋþàñđéđ1478244
Šķîþþàƃļé-éļéḿéñţ šţŕîþ12134528
Ŕüñ ƃöüñđàŕîéš ḿéŕĝéđ10248892
Ŕüñ þŕöþéŕţîéš ŕéƃüîļţ ƒŕöḿ ţĥé ḿöđéļ7548115
Îñţéŕ-éļéḿéñţ ŵĥîţéšþàçé çöļļàþšéđ511150
Ŕéšîđüàļ þàšţ àļļ öƒ ţĥé àƃöṽé5413254

Ţĥé šéļƒ-çļöšîñĝ ŕöŵ çöüñţš ţĥé ḿàŕķüþ à þàŕàĝŕàþĥ çàŕŕîéš ŕàţĥéŕ ţĥàñ ţĥé þàŕàĝŕàþĥ îţšéļƒ: à đŕàŵîñĝ'š <mc:AlternateContent> šüƃţŕéé ţŕàṽéļš ţĥŕöüĝĥ ţĥé ḿöđéļ àñđ öüţ ţĥŕöüĝĥ Ĝö'š xml éñçöđéŕ, šö éṽéŕý éḿþţý éļéḿéñţ îñ ţĥé àñçĥöŕ çàḿé ƃàçķ àš à šţàŕţ àñđ éñđ þàîŕ. Ţĥé ŕéšîđüàļ ŕöŵ îš çöḿþļéẋ ƒîéļđš ŵĥöšé ŕéšüļţ ŕüñš ţĥé ŵŕîţéŕ ŕéçöñšţŕüçţš, <w:lastRenderedPageBreak>, <w:t> šþļîţš ţĥé ŕüñ ḿéŕĝéŕ çàññöţ éẋþŕéšš, àñđ à <w:sdtEndPr> đŕöþþéđ ƒŕöḿ à šţŕüçţüŕéđ đöçüḿéñţ ţàĝ.

Ţŵö ţĥîñĝš ĥàđ ţö çĥàñĝé ţöĝéţĥéŕ ƒöŕ àñý ƒîẋţüŕé ţö çöḿé ƃàçķ ŵĥöļé. Ţĥé ŵŕîţéŕ'š šķîþþàƃļé-éļéḿéñţ šţŕîþ ŕàñ öṽéŕ ŵĥöļé þàŕţš àƒţéŕ àššéḿƃļý, word/styles.xml îñçļüđéđ, šö 179 ƒîẋţüŕéš ļöšţ ƃýţéš îñ à þàŕţ ţĥé ŕéàđéŕ ñéṽéŕ ţöüçĥéđ; îţ ñöŵ ŕéàçĥéš ŕéñđéŕéđ çöñţéñţ öñļý (renderBlock), àñđ à šéþàŕàţé þàšš, stripWMLRevisionElements, šţîļļ ŕéḿöṽéš ŕéṽîšîöñ ḿàŕķüþ ƒŕöḿ ŵĥöļé þàŕţš ƃéçàüšé àççéþţîñĝ ŕéṽîšîöñš îš à đéçîšîöñ àƃöüţ ţĥé đöçüḿéñţ. Ŵîţĥ ţĥàţ îñ þļàçé, ŕéþļàý îš ŵĥàţ ḿöṽéš ţĥé çöüñţ.

Ţĥé ḿéçĥàñîšḿ

Ţĥé ŕéàđéŕ ŕéçöŕđš ţĥé šþàñ

rawxml.go ĝîṽéš ţĥé ŕéàđéŕ ŵĥàţ îţ ñééđš: d.Offset() îš ŵĥéŕé ţĥé ţöķéñ ţĥé đéçöđéŕ ļàšţ ŕéţüŕñéđ ƃéĝîñš, d.Pin(off) ĥöļđš ţĥé šöüŕçé ŵîñđöŵ öþéñ àçŕöšš à šüƃţŕéé, àñđ d.Range(from, to) ŕéţüŕñš ţĥé ƃýţéš ƃéţŵééñ ţŵö öƒƒšéţš. parseParagraph þîñš ţĥé <w:p> šţàŕţ öñ éñţŕý, ķééþš ţĥé ŕàŵ šţàŕţ ţàĝ, àñđ ţàķéš ţĥé þàŕàĝŕàþĥ'š šþàñ àţ ţĥé éñđ éļéḿéñţ, šö îţ ĥöļđš ţĥé éẋàçţ šöüŕçé ƃýţéš: ţĥé šţàŕţ-ţàĝ àţţŕîƃüţéš, ţĥé šéļƒ-çļöšîñĝ ƒöŕḿš, ţĥé çĥàŕàçţéŕ-ŕéƒéŕéñçé šþéļļîñĝš àñđ ţĥé ŵĥîţéšþàçé.

Ţĥé ŕéàđéŕ ƃŕàçķéţš ţĥé þàŕàĝŕàþĥ'š šķéļéţöñ ŵîţĥ ḿàŕķéŕ ŕ郚, ţĥé đéṽîçé ţĥé ÖĐƑ ŵŕîţéŕ àļŕéàđý üšéš ƒöŕ þàŕţ ƃöüñđàŕîéš (skelPartStartPrefix îñ reader.go), šö ñö ñéŵ šķéļéţöñ éñţŕý ţýþé îš ñééđéđ àñđ à ŵŕîţéŕ ţĥàţ đöéš ñöţ ķñöŵ ţĥé ḿàŕķéŕš ţàķéš îţš öŕđîñàŕý þàţĥ. wml_replay.go ñàḿéš ţĥéḿ:

  • @@SKEL_PARA@@ àñđ @@SKEL_PARA_BLOCK@@, éàçĥ ƒöļļöŵéđ ƃý ţĥé þàŕàĝŕàþĥ'š šþàñ, þŕéçéđé ţĥé þàŕàĝŕàþĥ'š šķéļéţöñ. Ţĥé šéçöñđ šàýš ţĥé šķéļéţöñ îš ţĥé þàŕàĝŕàþĥ'š ƒŕàḿé àŕöüñđ öñé ƃļöçķ ŕéƒ, ŵĥîçĥ îš ŵĥàţ ļéţš ţĥé ŵŕîţéŕ ŕéþļàý ţĥé þàŕàĝŕàþĥ'š üñçĥàñĝéđ çĥîļđŕéñ îñţö à ŕéñđéŕéđ ƃļöçķ.
  • @@SKEL_REGION_END@@ çļöšéš ţĥé ŕéĝîöñ àƒţéŕ ţĥé þàŕàĝŕàþĥ; @@SKEL_REGION_END_SPAN@@ ƒöļļöŵéđ ƃý à šþàñ çļöšéš à ŕéĝîöñ ĥöļđîñĝ šéṽéŕàļ þàŕàĝŕàþĥš; @@SKEL_REGION_SKIP@@ çļöšéš îţ ŵîţĥ ñö ŕéþļàý.
  • @@SKEL_REGION_START@@ öþéñš à ŕéĝîöñ àĥéàđ öƒ à þàŕàĝŕàþĥ ţĥé ŕéàđéŕ ĥöļđš ƃàçķ üñţîļ îţ ķñöŵš ŵĥéŕé à çöḿþļéẋ ƒîéļđ éñđš, šö ţĥé ŕéĝîöñ àļšö çöṽéŕš ţĥé šķéļéţöñ ŵŕîţţéñ ƃéţŵééñ ţĥàţ þàŕàĝŕàþĥ àñđ ţĥé ñéẋţ ŵĥîļé îţ ŵàîţéđ, àñđ ţĥé ŕéþļàýéđ ƃýţéš ļàñđ îñ šöüŕçé öŕđéŕ.

Éṽéŕý éḿîššîöñ þàţĥ îñ parseParagraph, àñđ ţĥé ţŵö ƒļüšĥéš îñ wml.go ƒöŕ þàŕàĝŕàþĥš ţĥé ŕéàđéŕ đéƒéŕš, ŵŕîţé ţĥé šàḿé ḿàŕķéŕš; replayParagraphBegin àñđ replayRegionEnd ĥöļđ ţĥé šţàţé. À þàŕàĝŕàþĥ ţĥàţ îš đŕöþþéđ, öŕ ḿéŕĝéđ îñţö îţš ñéîĝĥƃöüŕ, ḿàķéš ţĥé ŕéĝîöñ îţ ƃéļöñĝš ţö îñéļîĝîƃļé, ƃéçàüšé ţĥé ŕéĝîöñ'š šþàñ ŵöüļđ þüţ îţ ƃàçķ.

Ţĥé ŕéñđéŕéđ þàŕàĝŕàþĥ ŕéöþéñš ŵîţĥ ţĥé šöüŕçé'š šţàŕţ ţàĝ (wmlParagraphOpenTag đŕöþš ţĥé šļàšĥ öƒ à šéļƒ-çļöšîñĝ ţàĝ, šîñçé ţĥé ŵŕîţéŕ çļöšéš ţĥé éļéḿéñţ îţšéļƒ), šö w:rsidR, w14:paraId àñđ w14:textId šüŕṽîṽé à ţŕàñšļàţîöñ ţöö.

Ţĥé ŵŕîţéŕ đéçîđéš öñ ţĥé ŕéñđéŕ

Ţĥé ŵŕîţéŕ đéçîđéš ţĥé ŵàý smlSourceContent đéçîđéš ƒöŕ à šĥàŕéđ šţŕîñĝ: ţĥé ţéšţ îš ţĥé çöñţéñţ àƃöüţ ţö ƃé éḿîţţéđ. wmlReplayState ḿàŕķš ţĥé þàŕţ ƃüƒƒéŕ àţ ţĥé ŕéĝîöñ'š šţàŕţ àñđ ŕéñđéŕš éṽéŕý ƃļöçķ îñšîđé àš üšüàļ. À ƃļöçķ îš üñçĥàñĝéđ ŵĥéñ îţš ŕéñđéŕîñĝ ƒöŕ ţĥé ţàŕĝéţ éǫüàļš îţš ŕéñđéŕîñĝ ƒŕöḿ ţĥé šöüŕçé ŕüñš, ŵĥîçĥ renderBlockFromSource þŕöđüçéš ŵîţĥ Writer.fromSource šéţ šö preferredRuns àñšŵéŕš ŵîţĥ ţĥé šöüŕçé, ñéšţéđ ţéẋţƃöẋ ƃļöçķš îñçļüđéđ. Àţ ţĥé ŕéĝîöñ'š éñđ, îƒ ñö ƃļöçķ đéŕéđ, ţĥé ƃüƒƒéŕ îš ţŕüñçàţéđ ƃàçķ ţö ţĥé ḿàŕķ àñđ à þļàçéĥöļđéŕ šţàñđš îñ ƒöŕ ţĥé šþàñ.

Ţĥé šéçöñđ ŕéñđéŕ ĥàþþéñš öñļý ƒöŕ à ƃļöçķ ŵĥöšé ŕéñđéŕîñĝ çàñ đéŕ: changedBlocks ñàḿéš éṽéŕý ƃļöçķ ŵîţĥ ţàŕĝéţ ŕüñš ƒöŕ ţĥé ļöçàļé àñđ, ţŕàñšîţîṽéļý, éṽéŕý ƃļöçķ ŵĥöšé þàýļöàđ çàŕŕîéš à đŕàŵîñĝ ḿàŕķéŕ ƒöŕ öñé, šö àñ üñţŕàñšļàţéđ ŕöüñđ ţŕîþ ŕéñđéŕš éàçĥ ƃļöçķ öñçé àñđ à ţŕàñšļàţéđ öñé ŕéñđéŕš éàçĥ ţŕàñšļàţéđ þàŕàĝŕàþĥ ţŵîçé. À ţàŕĝéţ ţĥàţ šàýš ŵĥàţ ţĥé šöüŕçé šàîđ, çöđéš îñçļüđéđ, ŕéþļàýš; à ţàŕĝéţ ŵîţĥ ţĥé šàḿé ţéẋţ àñđ ñö ƒöŕḿàţţîñĝ îš à çĥàñĝé.

À ţööļ šüçĥ àš kapi sed ŵîţĥ ñö ţàŕĝéţ ļöçàļé éđîţš à ƃļöçķ'š šöüŕçé ŕüñš îñ þļàçé, àñđ à ŕéñđéŕîñĝ ƒŕöḿ àñ éđîţéđ šöüŕçé îš îţš öŵñ çöḿþàŕîšöñ. Ţĥé ŕéàđéŕ ţĥéŕéƒöŕé šţàḿþš éṽéŕý ƃļöçķ îţ éḿîţš ŵîţĥ à đîĝéšţ öƒ ţĥé šöüŕçé ŕüñš (source_fingerprint.go, ţĥé openxml-source-fingerprint àññöţàţîöñ), àñđ à ŵŕîţéŕ ŕéþļàýš ñöţĥîñĝ öṽéŕ à ƃļöçķ ŵĥöšé ŕüñš ñö ļöñĝéŕ ḿàţçĥ îţ: ţĥé đöçẋ ŕéĝîöñ ŕéñđéŕš šüçĥ à ƃļöçķ ŵĥöļé, àñđ ţĥé ŠþŕéàđšĥééţḾĻ àñđ ĐŕàŵîñĝḾĻ šöüŕçé ƒöŕḿš àŕé ĥéļđ ƃàçķ ţĥé šàḿé ŵàý. À ƃļöçķ ţĥàţ ŕéàçĥéš ţĥé ŵŕîţéŕ ŵîţĥöüţ ţĥé šţàḿþ îš ţŕéàţéđ àš éđîţéđ, šö à þàţĥ ţĥàţ đŕöþš àññöţàţîöñš ļöšéš ŕéþļàý ŕàţĥéŕ ţĥàñ àñ éđîţ.

Ţĥé šþàñš ŵàîţ àš þļàçéĥöļđéŕš (<!--kapi-replay-N-->) üñţîļ ţĥé þàŕţ'š þöšţ-þàššéš ĥàṽé ŕüñ, ţĥé ŕéṽîšîöñ šţŕîþ àñđ ţĥé ŕüñ ƒüšîöñš îñ postWML àḿöñĝ ţĥéḿ, àñđ restoreWMLReplays þüţš ţĥéḿ ƃàçķ ļàšţ. Ñö þàšš ŕéŵŕîţéš ƃýţéš ţĥé šöüŕçé ŵŕöţé.

À çĥàñĝéđ þàŕàĝŕàþĥ ķééþš ŵĥàţ đîđ ñöţ çĥàñĝé

Ƒöŕ à þàŕàĝŕàþĥ ŵĥöšé ƃļöçķ ŕéñđéŕéđ đéŕéñţļý, replayUnchangedChildren ŵàļķš ţĥŕéé ļîšţš öƒ ţĥé þàŕàĝŕàþĥ'š đîŕéçţ çĥîļđŕéñ: ţĥé šöüŕçé šþàñ'š, ţĥé šöüŕçé ŕéñđéŕîñĝ'š àñđ ţĥé ţàŕĝéţ ŕéñđéŕîñĝ'š. wmlParagraphChildren ļîšţš ţĥé çĥîļđŕéñ ţĥé ŕéàđéŕ ŕéñđéŕš àñđ šķîþš ţĥé öñéš îţ ñéṽéŕ ŕéàđš (<w:pPr>, þŕööƒîñĝ ḿàŕķš, þéŕḿîššîöñ ŕàñĝéš, Ŵöŕđ'š _GoBack ƃööķḿàŕķ). Ŵĥéñ ţĥé ţĥŕéé ļîšţš ĥàṽé ţĥé šàḿé ļéñĝţĥ àñđ à çĥîļđ ĥàš ţĥé šàḿé ñàḿé îñ àļļ ţĥŕéé àñđ ŕéñđéŕéđ ţĥé šàḿé ƒŕöḿ šöüŕçé àñđ ţàŕĝéţ, ţĥé šöüŕçé'š ƃýţéš ƒöŕ îţ ĝö îñţö ţĥé öüţþüţ; öţĥéŕŵîšé ţĥé ŕéñđéŕéđ çĥîļđ đöéš. À ŕüñ ţĥé ŕéàđéŕ ḿéŕĝéđ ŵîţĥ îţš ñéîĝĥƃöüŕ, öŕ à ŕéṽîšîöñ ŵŕàþþéŕ îţ üñŵŕàþþéđ, ƃŕéàķš ţĥé àļîĝñḿéñţ öŕ ţĥé ñàḿé ḿàţçĥ àñđ îš ŕéñđéŕéđ, ŵĥîçĥ îš ŵĥàţ ķééþš à ŵŕàþþéŕ'š ƃýţéš öüţ öƒ àñ àççéþţéđ đöçüḿéñţ. À ţŕàñšļàţéđ þàŕàĝŕàþĥ ţĥéŕéƒöŕé ķééþš ţĥé ƃýţéš öƒ îţš üñçĥàñĝéđ đŕàŵîñĝ ŕüñš, ƃööķḿàŕķš, çöḿḿéñţ ŕàñĝéš àñđ ƒîéļđ ḿàŕķéŕš, àñđ ŕéñđéŕš îţš ţéẋţ.

Ŵĥàţ îš ñöţ ŕéþļàýéđ

Ţŕàçķéđ çĥàñĝéš. Ŵîţĥ AutomaticallyAcceptRevisions šéţ, ŵĥîçĥ îš ţĥé đéƒàüļţ, ţĥé ŕéàđéŕ'š þŕé-þàšš đŕöþš ŵĥàţ à ŕéṽîšîöñ đéļéţéš, ţĥé þàŕàĝŕàþĥ þàŕšéŕ üñŵŕàþš ŵĥàţ îţ îñšéŕţš, àñđ ţĥé ŵŕîţéŕ šţŕîþš ţĥé ḿàŕķéŕš. À ŕéþļàýéđ šþàñ ŵöüļđ þüţ ţĥé ŕéṽîšîöñ ƃàçķ, šö paragraphReplayable ŕéñđéŕš àñý þàŕàĝŕàþĥ ĥöļđîñĝ à ŕéṽîšîöñ ŵŕàþþéŕ, à þàŕàĝŕàþĥ-ḿàŕķ ḿàŕķéŕ, à þŕöþéŕţý-çĥàñĝé šñàþšĥöţ öŕ à ḿöṽé-ŕàñĝé ḿàŕķéŕ ŵĥîļé àççéþţàñçé îš öñ. Ŵîţĥ àççéþţàñçé öƒƒ ţĥé šàḿé þàŕàĝŕàþĥ ŕéþļàýš.

Ƒîéļđš. À çöḿþļéẋ ƒîéļđ çàñ šţŕàđđļé þàŕàĝŕàþĥ ƃöüñđàŕîéš, àñđ ţĥé ŕéàđéŕ ĥöļđš à þàŕàĝŕàþĥ ƃàçķ ŵĥîļé àñ éẋţŕàçţàƃļé ƒîéļđ îš šţîļļ öþéñ àţ îţš éñđ (partFieldStraddle). Ţĥé ŕéĝîöñ šţàýš öþéñ ŵĥîļé à ƒîéļđ îš öþéñ àçŕöšš à þàŕàĝŕàþĥ'š éñđ, šö ţĥé þàŕàĝŕàþĥš à ƒîéļđ çŕöššéš àŕé ŕéþļàýéđ ţöĝéţĥéŕ öŕ ŕéñđéŕéđ ţöĝéţĥéŕ; pullLeadingFldCharEndIntoPrevParagraph ñéṽéŕ šééš à ŕéþļàýéđ þàŕàĝŕàþĥ ƃéšîđé à ŕéñđéŕéđ öñé.

xml:space. ÉÇḾÀ-376-1 §17.3.3.31 ļéàṽéš ŵĥîţéšþàçé ĥàñđļîñĝ îñ <w:t> ţö ẊḾĻ, àñđ à çöñšüḿéŕ ḿàý çöļļàþšé à ļéàđîñĝ öŕ ţŕàîļîñĝ šþàçé ŵĥéŕé ţĥé àţţŕîƃüţé îš ḿîššîñĝ. Ţĥé ŵŕîţéŕ àđđš îţ, àñđ wmlTextIsSpaceSafe ŕéñđéŕš à þàŕàĝŕàþĥ ŕàţĥéŕ ţĥàñ ŕéþļàýîñĝ îţ öṽéŕ ţĥàţ ŕéþàîŕ; ŠþŕéàđšĥééţḾĻ ĥàš ţĥé šàḿé ŕüļé îñ smlTextIsSpaceSafe. ẊḾĻ ŵĥîţéšþàçé îš šþàçé, ţàƃ, çàŕŕîàĝé ŕéţüŕñ àñđ ļîñé ƒééđ: à ñàŕŕöŵ ñö-ƃŕéàķ šþàçé öŕ à ļîñé šéþàŕàţöŕ àţ ţĥé éđĝé öƒ à <w:t> îš çöñţéñţ, àñđ šüçĥ à þàŕàĝŕàþĥ ŕéþļàýš.

Ñéšţéđ çöñţéñţ. À ţéẋţƃöẋ þàŕàĝŕàþĥ îñšîđé à đŕàŵîñĝ, à <m:nor/> þŕöšé šþàñ îñšîđé àñ éǫüàţîöñ àñđ à đŕàŵîñĝ'š àļţ ţéẋţ àŕé ƃļöçķš öƒ ţĥéîŕ öŵñ. Éàçĥ îš à ŕéƒ îñšîđé ţĥé ĥöšţ þàŕàĝŕàþĥ'š ŕéĝîöñ, öŕ à ḿàŕķéŕ îñ ţĥé ĥöšţ ƃļöçķ'š þàýļöàđ, àñđ îš çöḿþàŕéđ ļîķé àñý öţĥéŕ; à ţŕàñšļàţéđ ţéẋţƃöẋ ŕéñđéŕš îţš ĥöšţ þàŕàĝŕàþĥ.

Çöŕé þŕöþéŕţîéš. docProps/core.xml ķééþš îţš ƃýţé öŕđéŕ ḿàŕķ: Ĝö'š đéçöđéŕ ŕéþöŕţš îţ àš çĥàŕàçţéŕ đàţà îñ ţĥé þŕöļöĝ, šö parseCoreProperties ĥöļđš îţ ƃàçķ ƒŕöḿ ţĥé đéçöđéŕ àñđ ŵŕîţéš îţ ţö ţĥé šķéļéţöñ àš îţ ŵàš. À þŕöþéŕţý ţĥé šöüŕçé ŵŕöţé éḿþţý ŕéþļàýš ƒŕöḿ îţš šöüŕçé ƃýţéš ŵĥéŕéṽéŕ îţ šîţš, šéļƒ-çļöšîñĝ ƒöŕḿ îñçļüđéđ; üþšţŕéàḿ Okapi öḿîţš à šéļƒ-çļöšîñĝ öñé ŵŕîţţéñ ļàšţ îñšîđé <cp:coreProperties>, ŵĥîçĥ ţĥé þàŕîţý çàñöñîçàļîšéŕ šéţţļéš öñ ƃöţĥ šîđéš.

Ţĥé çöŕþüš ţéšţ

TestWMLParagraphReplay_CorpusIsByteIdentical îñ wml_paragraph_replay_test.go àššéŕţš éṽéŕý đöçẋ ƒîẋţüŕé îñ okapi-testdata ĝöéš ƃàçķ ƃýţé ƒöŕ ƃýţé öñ àñ üñţŕàñšļàţéđ ŕöüñđ ţŕîþ, ŵîţĥ ţĥé éẋçļüšîöñš ñàḿéđ îñ docxReplayExclusions àñđ à ŕéàšöñ þéŕ ĝŕöüþ; TestWMLParagraphReplay_ExclusionsAreStillNeeded ƒàîļš ƒöŕ à ƒîẋţüŕé ţĥàţ ñö ļöñĝéŕ ñééđš îţš éñţŕý.

ĜŕöüþƑîẋţüŕéšŔéàšöñ
Ŕéṽîšîöñ àççéþţàñçé30À þàŕàĝŕàþĥ ĥöļđîñĝ ŕéṽîšîöñ ḿàŕķüþ îš ŕéñđéŕéđ, àñđ ţĥé àççéþţéđ đöçüḿéñţ đéŕš ƒŕöḿ ţĥé šöüŕçé ƃý đéšîĝñ
ĐŕàŵîñĝḾĻ þàŕàĝŕàþĥš îñ çĥàŕţ àñđ đîàĝŕàḿ þàŕţš3Ŕéƃüîļţ ƒŕöḿ ţĥé ḿöđéļ, àñđ à ĐÖÇẊ þàçķàĝé ţàķéš Okapi'š DrawingRunProperties àţţŕîƃüţé šţŕîþ öñ ŵŕîţé
Ţĥé xml:space ŕéþàîŕ1952-1.docx ĥöļđš à <w:t> ŵîţĥ à ţŕàîļîñĝ šþàçé àñđ ñö xml:space="preserve"

TestByteFidelity_CorpusUntouchedParts šţàţéš ţĥé ŵéàķéŕ çöñţŕàçţ ƒöŕ þàŕţš ţĥé ŕéàđéŕ éẋţŕàçţéđ ñöţĥîñĝ ƒŕöḿ; îţš éẋçļüšîöñš àŕé ţĥé šàḿé þŕéđîçàţéš àþþļîéđ ţö à þàŕţ.

Ţĥé þàŕîţý šļîçé

Ţĥé öþéñẋḿļ çĥàîñ îñ cli/parity/roundtrip/coverage_test.go çöḿþàŕéš ñàţîṽé öüţþüţ ŵîţĥ üþšţŕéàḿ Okapi'š àƒţéŕ çàñöñîçàļîšàţîöñ. Ŕéþļàý ŕéšţöŕéš ŵĥàţ Okapi'š ƒîļţéŕ đŕöþš, šö ţĥé çàñöñîçàļîšéŕ àþþļîéš ţĥé šàḿé öḿîššîöñš ţö ƃöţĥ šîđéš:

  • OpenXMLEffectiveRPr{StripSkippableElements: true} đŕöþš ţĥé šķîþþàƃļé þŕöþéŕţîéš àñđ ţĥé çöñţàîñéŕš ţĥéý éḿþţý ƃéƒöŕé ţĥé §17.7 çàšçàđé ŕüñš, šö à þàŕàĝŕàþĥ ḿàŕķ öñé šîđé đŕöþþéđ îš ñöţ ƒîļļéđ ŵîţĥ 郃éçţîṽé ƒöŕḿàţţîñĝ öñ ţĥé öţĥéŕ.
  • XMLCanonical{StripWMLSkippableElements: true} đŕöþš <w:lang>, <w:noProof>, <w:bidiVisual>, þŕööƒîñĝ ḿàŕķš, þéŕḿîššîöñ ŕàñĝéš, <w:lastRenderedPageBreak>, ţĥé _GoBack ƃööķḿàŕķ àñđ îţš éñđ, <w:bCs> àñđ <w:iCs> öñ à ŕüñ ŵîţĥ ñö çöḿþļéẋ-šçŕîþţ ţéẋţ, éṽéŕý éḿþţý <w:rPr>, <w:pPr> àñđ <w:sdtEndPr>, àñđ éṽéŕý ŕüñ ļéƒţ ŵîţĥ ñöţĥîñĝ ƃüţ îţš þŕöþéŕţîéš.
  • XMLCanonical{MergeAdjacentWMLRuns: true} ƒüšéš àđĵàçéñţ ŕüñš ŵîţĥ éǫüàļ þŕöþéŕţîéš àñđ ţĥé ţéẋţ éļéḿéñţš îñšîđé ţĥéḿ, ţĥé šĥàþé Okapi'š RunMerger ŵŕîţéš.
  • XMLCanonical{StripEmptyCoreProperties: true} đŕöþš ƒŕöḿ <cp:coreProperties> éṽéŕý ţŕàñšļàţàƃļé çĥîļđ ĥöļđîñĝ ñö ţéẋţ, šö ţĥé þŕöþéŕţý Okapi'š Ĵéŕîçĥö þéñđîñĝ šţàŕţ ţàĝ ļéàṽéš öüţ ḿàţçĥéš ţĥé öñé ñàţîṽé ŕéþļàýš.

Öṽéŕ ţĥé 185 đöçẋ ƒîẋţüŕéš, ñàţîṽé öüţþüţ àţ ţĥé çàñöñîçàļ ţîéŕ ḿöṽéđ ƒŕöḿ 146 ƃéƒöŕé éîţĥéŕ çĥàñĝé ţö 149 ŵîţĥ ţĥé šţŕîþ çöñƒîñéđ àñđ 155 ŵîţĥ ŕéþļàý; ţĥé ƃŕîđĝé šţàýš ƃýţé-éǫüàļ öñ àļļ 185. Ţĥé šļîçé ĥàš ñö ţîéŕ ƒļööŕ ƒöŕ öþéñẋḿļ ñàţîṽé, šö ţĥé ţîéŕ ţàƃļé îñ à ṽéŕƃöšé ŕüñ îš ţĥé ḿéàšüŕéḿéñţ.

Çöšţ

Ţĥé ŵŕîţé ĥàļƒ öƒ à ŕöüñđ ţŕîþ öñ ţĥé ƒîṽé ļàŕĝéšţ ƒîẋţüŕéš, ḿéàšüŕéđ ŵîţĥ go test -bench öñ öñé ḿàçĥîñé ƃéƒöŕé àñđ àƒţéŕ ŕéþļàý (ḿîļļîšéçöñđš þéŕ ŵŕîţé, ḿéđîàñ öƒ ţĥŕéé ŕüñš öƒ ƒîṽé). "Ţŕàñšļàţéđ" ƃŕàçķéţš éṽéŕý ţéẋţ ŕüñ.

ƑîẋţüŕéŠîžéƂéƒöŕé, üñţŕàñšļàţéđƂéƒöŕé, ţŕàñšļàţéđÀƒţéŕ, üñţŕàñšļàţéđÀƒţéŕ, ţŕàñšļàţéđ
apissue.docx988 ĶƂ4.24.32.56.4
large-attribute.docx925 ĶƂ5.35.123.75.5
content_category_test.docx706 ĶƂ1.41.41.31.5
delTextAmp.docx554 ĶƂ3.13.02.73.1
Hangs.docx279 ĶƂ11.311.47.123.5

Àñ üñţŕàñšļàţéđ ŵŕîţé ŕéñđéŕš éàçĥ ƃļöçķ öñçé àñđ ŕéþļàýš, àñđ îš ƒàšţéŕ ţĥàñ ƃéƒöŕé öñ ƒöüŕ öƒ ţĥé ƒîṽé. À ţŕàñšļàţéđ ŵŕîţé çàŕŕîéš ţĥé šéçöñđ ŕéñđéŕ àñđ ţĥé çĥîļđ àļîĝñḿéñţ ƒöŕ éṽéŕý ţŕàñšļàţéđ þàŕàĝŕàþĥ, ŵĥîçĥ çöšţš ĥàļƒ àš ḿüçĥ àĝàîñ öñ apissue.docx àñđ ţŵîçé àš ḿüçĥ öñ Hangs.docx, ŵĥöšé þàŕàĝŕàþĥš ĥöļđ ṼḾĻ šĥàþéš ţĥé šöüŕçé ŕéñđéŕ ĥàš ţö éẋþàñđ ţöö. Àļļöçàţîöñ þéŕ ŵŕîţé îš üñçĥàñĝéđ.

large-attribute.docx îš ţĥé éẋçéþţîöñ îñ ţĥé üñţŕàñšļàţéđ çöļüḿñ, àñđ ţĥé ţîḿé îš đéƒļàţé ŕàţĥéŕ ţĥàñ ŕéþļàý. Îţš öñé đŕàŵîñĝ çàŕŕîéš à ḿéĝàƃýţé öƒ ƃàšé64 îñ àñ o:gfxdata àţţŕîƃüţé ŵîţĥ àñ &#xA; ŕéƒéŕéñçé éṽéŕý 76 çĥàŕàçţéŕš; ţĥé šöüŕçé šþéļļîñĝ đéƒļàţéš îñ 21.6 ḿš àĝàîñšţ 0.9 ḿš ƒöŕ ţĥé šàḿé àţţŕîƃüţé ŵîţĥ ŕàŵ ñéŵļîñéš, ŵĥîçĥ îš ŵĥàţ ţĥé ŵŕîţéŕ üšéđ ţö þŕöđüçé. Àñ ẊḾĻ þàŕšéŕ ñöŕḿàļîšéš à ŕàŵ ñéŵļîñé îñ àñ àţţŕîƃüţé ṽàļüé ţö à šþàçé (ẊḾĻ 1.0 §3.3.3), šö ţĥé šöüŕçé šþéļļîñĝ îš ţĥé öñé ţĥàţ ķééþš ţĥé šĥàþé.

Ţĥé šķéļéţöñ ĝŕöŵš ƃý öñé šþàñ þéŕ þàŕàĝŕàþĥ, ŵĥîçĥ îš ţĥé šîžé öƒ ţĥé þàŕàĝŕàþĥ-ƃéàŕîñĝ þàŕţš öñçé ḿöŕé.