[poppler] Vertical or horizontal writing?

Albert Astals Cid aacid at kde.org
Mon Jul 26 12:15:33 PDT 2010


A Dilluns, 26 de juliol de 2010, mpsuzuki at hiroshima-u.ac.jp va escriure:
> 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.

Good work :-)

But i'd prefer you to use an enum instead of an int, at least on the poppler-
qt4 level, can you do the appropiate changes?

Thanks,
  Albert

> 
> The extention for poppler-glib is work in progress.
> 
> Regards,
> mpsuzuki
> 
> On Mon, 26 Jul 2010 16:31:04 +0800 (CST)
> 
> "cobra.yu" <cobra.yu at hyweb.com.tw> 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:mpsuzuki at hiroshima-u.ac.jp
> >To:cobra.yu at hyweb.com.tw
> >Cc:poppler at lists.freedesktop.org
> >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" <cobra.yu at hyweb.com.tw> 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:mpsuzuki at hiroshima-u.ac.jp
> >>To:cobra.yu at hyweb.com.tw
> >>Cc:poppler at lists.freedesktop.org
> >>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" <cobra.yu at hyweb.com.tw> 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
> >>>poppler at lists.freedesktop.org
> >>>http://lists.freedesktop.org/mailman/listinfo/poppler


More information about the poppler mailing list