I started implementing "Shape" support in my layout engine. What's so special about Shapes is the fact that the text needs to flow around them when wrapping is enabled. Shapes are used a lot e.g. to construct letterheads etc. Good Shape support is absolutely crucial for business documents.
Here is my sample document I used for testing wrap03.docx:
It shows Shape objects with "tight" wrapping and the different wrapping modes as defined in 18.104.22.168 ST_WrapText (Text Wrapping Location) of the OOXML specification:
- both (Both Sides) Specifies that text shall wrap around both sides of the object.
- left (Left Side Only) Specifies that text shall only wrap around the left side of the object.
- right (Right Side Only) Specifies that text shall only wrap around the right side of the object.
I'm really happy to have this key feature in the layout engine. Just to show how difficult this is to implement take a look at what Google Docs makes out of it: wrap03.docx.