Disregard my last comment.  I'm just confusing things. Thanks for the
mention Nenad.

I put some output in each constructor (PdfFontMetricsObject,
PdfFontMetricsFreetype, and base_14) and only the PdfFontMetricsObject
constructor is called.

You probably already knew this anyway.



On Wed, Oct 28, 2015 at 9:08 PM, Svetlana Watkins <
svetlana.watk...@gmail.com> wrote:

> I just thought I would add that the GetGlyphID function and several others
> won't work for embedded fonts.  That's pretty much it.
>
> So, the approach I have been taking makes the assumption that these fonts
> lie on my system when in fact the fonts are embedded.
>
> I personally think knowing this requires a deeper understanding of podofo
> the average user won't have.  It might be worth putting that information
> into the documentation.  Just a suggestion.
>
> We have spent some time on this now and have just realized the approach we
> have been taking is all wrong.
>
> On Mon, Oct 26, 2015 at 3:17 AM, Svetlana Watkins <
> svetlana.watk...@gmail.com> wrote:
>
>> Something I forgot to add.  In one of the Pdf's I was using, I am able to
>> get the font name using: PdfFontMetrics::GetFontname() which returns
>> LNCKCK+TimesNewRomanPSMT .   I'm beginning to think that the reason the
>> PdfFontMetricsObject version of GetGlyphID is being called is due to some
>> kind of limitation with my system.  I'm using Windows XP SP3.
>>
>> I even deleted the FontCache file in my Win32 folder and restarted the
>> computer (enabling it to be rebuilt) but it hasn't made any difference.
>>
>> Could it be that the loaded font isn't recognized as something managed by
>> Freetype2 or a Base14 font so it's defaulting the PdfFontMetricsObject
>> every time?  I'm certain my problem has something to do with the font.
>>
>>
>>
>> On Mon, Oct 26, 2015 at 3:11 AM, Svetlana Watkins <
>> svetlana.watk...@gmail.com> wrote:
>>
>>> I really appreciate the help with this, thanks very much.  I realize
>>> you're probably very busy.
>>>
>>> Unfortunately your code snipped produced the same result.  The
>>> GetGlyphID function returned 0 again so I placed some messages in the
>>> source code to see what was going on.
>>>
>>> As the PdfFontMetrics object doesn't contain a definition for GetGlyphID
>>> (I'm assuming that this is because it's only an abstract class), the
>>> PdfFontMetricsObject::GetGlyphID function is being called.
>>>
>>> Here's the definition of this method: * It explains why I'm getting a
>>> zero. *
>>>
>>> long PdfFontMetricsObject::GetGlyphId( long ) const
>>> {
>>>     // TODO
>>> cout << "PdfFontMetricsObject_GetGlyphID Returning" << endl;
>>>     return 0; // OC 13.08.2010 BugFix: Avoid microsoft compiler error
>>> }
>>>
>>> My coding skills aren't as advanced as any of yours so I'm not sure I
>>> understand what the reason is for this?  I'm assuming that it's yet to be
>>> completed.
>>>
>>> On the other hand, my program could be referencing this method instead
>>> of the method contained in PdfFontMetricsFreetype because of something I've
>>> done wrong.
>>>
>>> Domonik ... The code I posted wasn't just some snipped.  It was a small
>>> functioning (or malfunctioning) program I wrote to highlight a point.
>>>
>>> On Tue, Oct 20, 2015 at 1:49 PM, Svetlana Watkins <
>>> svetlana.watk...@gmail.com> wrote:
>>>
>>>> I am having trouble getting the PdfFontMetrics::GetGlyphID(long
>>>> lunicode) function to work.  I have pasted some very simplified code
>>>> below.  For the current font some functions are working as shown below.
>>>> For example I can successfully get the Char Width and Font Size for each
>>>> character but for some reason not the Glyph ID.  I am using the latest
>>>> version on the Podofo website 0.9.3 but am having trouble with the
>>>> subversion link (i'm using SV Tortoise to download the files.  Could it be
>>>> that this issue has already been fixed with a patch that is only
>>>> incorporated in the latest SVN version?
>>>>
>>>> Could someone please test my code below and maybe indicate what I have
>>>> done wrong here?   If you look down to the inline comment
>>>> "// NOW ATTEMPT TO EXTRACT GLYPH INFORMATION" just below that is where
>>>> I have applied the GetGlyphID method.   Thanks
>>>>
>>>>
>>>>
>>>>
>>>> #include <iostream>
>>>> #include <string>
>>>> #include <cstdlib>
>>>> #include <podofo/podofo.h>
>>>> #include <stack>
>>>>
>>>>
>>>> using namespace PoDoFo;
>>>> using namespace std;
>>>>
>>>>
>>>> PdfMemDocument doc;
>>>> int page_count;
>>>> PdfPage *page;
>>>>
>>>> EPdfContentsType type;
>>>> PdfVariant var;
>>>> const char* token;
>>>>
>>>> PdfFont *Font;
>>>> const PdfFontMetrics *met;
>>>>
>>>> PdfArray pArray; // for extracting text under TJ operator
>>>> int size_of_array;
>>>> string TJ_string;
>>>>
>>>> stack<PdfVariant> PdfStack;
>>>>
>>>> // THE PURPOSE OF THIS SMALL PROGRAM IS TO SHOW HOW I AM EXTRACTING THE
>>>> GLYPH ID.
>>>> long GlyphID;
>>>>
>>>>
>>>> int main(int argc, char **argv)
>>>> {
>>>> try{
>>>>
>>>> doc.Load(argv[1]);
>>>> page_count = doc.GetPageCount();
>>>>
>>>> for(int i = 0; i < page_count;i++)
>>>> {
>>>>     page = doc.GetPage(i);
>>>>     PdfContentsTokenizer tokenizer(page); // tokenize page
>>>>
>>>>
>>>>
>>>> while(tokenizer.ReadNext(type,token,var))
>>>> {
>>>>
>>>>     if(type==ePdfContentsType_Keyword)
>>>>     {
>>>>         string keyword;
>>>>         keyword = token;
>>>>
>>>>        if(keyword == "Tf")
>>>>        {
>>>>
>>>>            PdfStack.pop(); //pop the font size off the stack.
>>>>            PdfName name_of_font = PdfStack.top().GetName();
>>>>            PdfObject *ofont =
>>>> page->GetFromResources(PdfName("Font"),name_of_font);
>>>>            Font = doc.GetFont(ofont);
>>>>            met = Font->GetFontMetrics(); // get the font metrics for
>>>> current font.
>>>>            //met is global.
>>>>        }
>>>>
>>>>        if(keyword == "TJ")
>>>>         {
>>>>
>>>>             pArray = PdfStack.top().GetArray();
>>>>             PdfStack.pop();
>>>>             size_of_array = pArray.GetSize();
>>>>
>>>>             for(int x = 0; x < size_of_array; x++)
>>>>             {
>>>>                 if(pArray[x].IsHexString()|| pArray[x].IsString())
>>>>                 {
>>>>                     TJ_string = pArray[x].GetString().GetString();
>>>>
>>>>                     // Now to test the font metrics.
>>>>                    for (int s = 0; s < TJ_string.length(); s++)
>>>>                     {
>>>>                         unsigned char individual_character =
>>>> TJ_string[s];
>>>>
>>>>                     //THE BELOW CALL TO CURRENT FONT DATA WORKS FINE
>>>>                     cout << "Font Size is: " << met->GetFontSize() <<
>>>> endl;
>>>>                     cout << "Character Width is: " <<
>>>> met->CharWidth(individual_character) << endl;
>>>>
>>>>                     // NOW ATTEMPT TO EXTRACT GLYPH INFORMATION
>>>>                     GlyphID =
>>>> met->GetGlyphId((long)individual_character);
>>>>                     cout << "************************* THE GLYPH ID IS:
>>>> " << GlyphID << endl;
>>>>
>>>>
>>>>                     }
>>>>
>>>>                 }
>>>>             }
>>>>
>>>>
>>>>         }
>>>>
>>>>
>>>>     }
>>>>     else if(type==ePdfContentsType_Variant)
>>>>     {
>>>>         PdfStack.push(var);
>>>>     }
>>>>
>>>>
>>>> }
>>>>
>>>> }
>>>> }
>>>> catch(PdfError &err)
>>>> {
>>>>     cout << "The Error is: " << err.what() << endl;
>>>> }
>>>>
>>>>
>>>> }
>>>>
>>>
>>>
>>
>
------------------------------------------------------------------------------
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to