Hi,
I've patched and rebuilt the poppler-qt4 binding so far, and it's ok.
Now, I'm not sure whether to design a new search function by considering
both horizontal and vertical modes at the same time by wMode() directly or just
do the regular horizontal search first and vertical one afterwards benefits.
The former seems a bit of complicated but more useful. :-(
In fact, I wrote a vertical search function by reconstructing the TEXTBOX
list in every page by the top-to-bottom and right-to-left order. So, it seems
the latter would reduce the coding work.
I'll finish the evaluation ASAP. Thx.
Cobra
-----Original message-----
From:[email protected]
To:[email protected]
Cc:[email protected]
Date:Mon, 26 Jul 2010 18:57:14 +0900
Subject:Re: [poppler] Vertical or horizontal writing?
Hi,
Attached is a draft patch to do:
1) extend poppler's FontInfo object to hold writing mode info.
2) extend poppler-qt4's FontInfo object to provide an API to
return writing mode info copied from poppler's FontInfo.
3) extend qt4/tests/poppler-fonts to show writing mode info.
Also I attached a sample PDF including vertical/horizontal
Japanese text, generated by MS Word + Adobe Acrobat.
poppler-fonts detects the writing mode aslike:
$ ./qt4/tests/poppler-fonts vert-horiz-ipa-std.pdf
name type emb sub font file wmode
------------------------------------ ------------ --- --- --------- -----
LDGIFP+IPAMincho CID TrueType yes yes Vert
LDGIFP+IPAMincho CID TrueType yes yes Hori
I think the diff for poppler-fonts.cpp shows how to use the
extended API. Cobra, please check if the extended API can help
your application.
The extention for poppler-glib is work in progress.
Regards,
mpsuzuki
On Mon, 26 Jul 2010 16:31:04 +0800 (CST)
"cobra.yu" <[email protected]> wrote:
>Hi,
>
>Hmm, it seems that...
>1) I'm only familiar with the poppler-qt4 binding for the present time. But,
>for my application, I really needs some CJK-related information through
>poppler.
>2) I can't exactly figure out all the necessary steps to accomplish what you
>said. But, I think, I could try, of course, by your help.
>3) So, let's work it out. :-)
>
> Cobra
>-----Original message-----
>From:[email protected]
>To:[email protected]
>Cc:[email protected]
>Date:Mon, 26 Jul 2010 17:07:30 +0900
>Subject:Re: [poppler] Vertical or horizontal writing?
>
>Hi,
>
>Hmm, it seems that...
>
>1) poppler-qt4 can access FontInfo object for a font used in PDF,
>but cannot access GfxFont object that poppler creates before FontInfo
>object internally.
>
>2) either poppler-glib can access FontInfo object for a font used
>in PDF, but cannot access GfxFont object that poppler creates before
>FontInfo object internally.
>
>3) according to FontInfo.h (and FontInfo.cc), FontInfo object does
>not have a method to obtain the writing mode of its source GfxFont
>object.
>
>Thus, glib binding does not help your work. If we are forced to use
>current poppler without modification, we will have to use both of
>poppler-qt4 and raw poppler library. I'm afraid it makes your software
>difficult to maintain. If we have sufficient time, I think, making
>a proposal patch to add writing mode info to FontInfo object, and
>extend poppler-{qt4,glib} to access the info is better.
>
>I think adding writing mode to FontInfo is not difficult (I can
>draft), but making poppler-qt4 to access it is not so easy for
>me because I have no experience in Qt4 development. If you have
>sufficient time, I will ask you to draft the patch for poppler-qt4.
>How do you think of?
>
>Regards,
>mpsuzuki
>
>On Mon, 26 Jul 2010 15:46:43 +0800 (CST)
>"cobra.yu" <[email protected]> wrote:
>
>>Hi,
>>
>> Thanks a lot! I think it would be a great help to me. I'm only using
>> poppler-qt4 binding for my application now. So, I guess, I would have to use
>> both Qt4 and cpp/glib bindings in my application, right?
>>
>> Cobra
>>-----Original message-----
>>From:[email protected]
>>To:[email protected]
>>Cc:[email protected]
>>Date:Mon, 26 Jul 2010 16:24:40 +0900
>>Subject:Re: [poppler] Vertical or horizontal writing?
>>
>>Hi,
>>
>>Yet I'm not sure how you use poppler in your application,
>>but GfxFont class has a method to obtain "writing mode"
>>in PDF terminology. Please see GfxFont.h, you can find:
>>
>> /* this is default */
>>
>> 106 class GfxFont {
>> 107 public:
>> 108
>>...
>> 206 // Return the writing mode (0=horizontal, 1=vertical).
>> 207 virtual int getWMode() { return 0; }
>>
>> /* this is for CID-keyed font */
>> 321 class GfxCIDFont: public GfxFont {
>> 322 public:
>>...
>> 333 // Return the writing mode (0=horizontal, 1=vertical).
>> 334 virtual int getWMode();
>>
>>And, you can find how poppler identify the writing mode
>>in GfxFont.cc:
>>
>> 1763 int GfxCIDFont::getWMode() {
>> 1764 return cMap ? cMap->getWMode() : 0;
>> 1765 }
>>
>>Is this what you want?
>>
>>Regards,
>>mpsuzuki
>>
>>On Mon, 26 Jul 2010 14:49:38 +0800 (CST)
>>"cobra.yu" <[email protected]> wrote:
>>
>>>Hi,
>>>
>>> Is there any way by poppler to acquire the correct writing mode for any
>>> Document/Page/Paragraph? I'm writing some code for the vertical Chinese
>>> writing mode text search, but finding that it seems no way to know the
>>> exact mode by poppler.
>>> Any suggestions are welcome! Thx.
>>>
>>> Cobra
>>>_______________________________________________
>>>poppler mailing list
>>>[email protected]
>>>http://lists.freedesktop.org/mailman/listinfo/poppler
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler