https://bugs.documentfoundation.org/show_bug.cgi?id=145322

--- Comment #10 from Mark Hung <mark...@gmail.com> ---
@himajin100000

Printing in vertical layout always uses ExTextOutRenderer[1]. That is, it uses
ancient, magical, messy Win32 API, ExtTextOutW, to render the text.

To render CJK upright text in vertical writing with ExtTextOutW, one has to
prepend a '@' to the font name and call CreateFontIndirectW to create a
different font. But for some other characters, one needs to create different
font with altered escapement and orientation to force 90 degree rotation. Those
were removed in bibisected fault commit[2]. 

Even if the commit is reverted, I still don't know how to make offset correct
for ExtTextOutW. Positions from HarfBuzz doesn't work well with ExtTextOutW.

More correct way other than tweaking the position by experiments:
- Make DWriteTextOutRednerer works with a printing DC, maybe by create a
compatible DC and bitbliting it, or create command list feature introduce in
Windows8.
- Make Skia works with printing. Check with Luboš Luňák, maybe he has an idea
how to print on SKia.
- Treat different logical font created with CreateFontIndirectW(), as fallback
font. ( i.e. Glyphs that needs a force rotated font has to be renered in
fallback layout with the rotated font. )

Non of them are easy for me, but I'll try to come out a commit that revert[2],
that at least improves character orienation.

[1]
https://opengrok.libreoffice.org/xref/core/vcl/win/gdi/winlayout.cxx?r=677434a5#276
[2]
https://cgit.freedesktop.org/libreoffice/core/commit/?id=5686c1aca40beb9514d40c86b4a3780a8a1334ba
[3]
https://docs.microsoft.com/en-us/windows/win32/direct2d/printing-and-command-lists

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to