> >>> I've still not found time to have a closer look at the issue, sorry
>>> >>> (still on vacation more or less).  Please try to debug it by
>>> >>> yourself also – I can only assist, since it's actually your job to
>>> >>> find the bug...
>>> >>
>>> >> Yes, I am working on it.  If you could just give me a lead like
>>> >> where should I look upon and like possible sources of errors, it
>>> >> will be great help.
>>> >
>>> > I'm quite sure this is not a problem of `ftview'.  Similarly, I'm
>>> > quite sure it is not a problem of FreeType's caching code either.
>>>
>>> I've now done some debugging:
>>>
>>>   gdb --args /home/wl/git/freetype/freetype2-demos.parth/bin/ftstring
>>> 20 cmr10.600gf
>>>   (gdb) r
>>>   Program received signal SIGSEGV, Segmentation fault.
>>>   0x00007ffff6817ea6 in __strcmp_ssse3 () from /lib64/libc.so.6
>>>   (gdb) up
>>>   #1  0x00000000004088af in my_face_requester (face_id=0x762110,
>>>       lib=0x747df0, request_data=0x0, aface=0x770118) at
>>> src/ftcommon.c:239
>>>   239           if ( !strcmp( format, "Type 1" ) )
>>>   (gdb) p format
>>>   $1 = 0x0
>>>   (gdb) l
>>>   234         if ( !error )
>>>   235         {
>>>   236           const char*  format = FT_Get_Font_Format( *aface );
>>>   237
>>>   238
>>>   239           if ( !strcmp( format, "Type 1" ) )
>>>   240           {
>>>   241             char   orig[5];
>>>   242             char*  suffix        = (char*)strrchr(
>>> font->filepathname, '.' );
>>>   243             int    has_extension = suffix
>>>       &&
>>>
>>> This clearly shows that the problem is in `FT_Get_Font_Format'; this
>>> function returns zero which looks very fishy according to its
>>> documentation.
>>>
>>>   (gdb) b FT_Get_Font_Format
>>>   (gdb) r
>>>   Breakpoint 1, FT_Get_Font_Format (face=0x7703c0) at
>>>     /home/wl/git/freetype/freetype2.parth/src/base/ftfntfmt.c:30
>>>   30          const char*  result = NULL;
>>>   (gdb) n
>>>   33          if ( face )
>>>   (gdb)
>>>   34            FT_FACE_FIND_SERVICE( face, result, FONT_FORMAT );
>>>   (gdb)
>>>   36          return result;
>>>   (gdb) p result
>>>   $2 = 0x0
>>>
>>> Obviously, there is a problem with the `FONT_FORMAT' service in the GF
>>> driver; let's check the winfnt driver for comparison.
>>>
>>>   cd winfonts
>>>   git grep FONT_FORMAT
>>>     winfnt.c:#include FT_SERVICE_FONT_FORMAT_H
>>>     winfnt.c:    { FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_WINFNT },
>>>
>>>   cd gf
>>>   git grep FONT_FORMAT
>>>     gfdrivr.c:#include FT_SERVICE_FONT_FORMAT_H
>>>
>>> Ouch, the service is completely missing...
>>>
>>> Tadaa!
>>>
>>> Have a look into `include/freetype/internal/services/svfntfmt.h'.
>>>
>>
>> Yes! indeed! Thank you so much for that.
>>
>>
>>> Please tell me why you wasn't able to identify the problem by
>>> yourself!
>>
>>
>> Actually, I thought that these services are not a regular part of the
>> module
>> and are defined only if there are functions of the driver required
>> outside the
>> driver, so I did not define them. But, I was unaware that the services
>> are
>> used by the demo program. As I was first debugging with `ftview' and I
>> was
>> going function by function to debug it and I was stuck at the `FTC'
>> functions.
>> Then when you told to debug through `ftstring', I thought to do it later
>> as I was in middle of learning about the `vf' fonts.
>>
>>
>>> Perhaps there is some missing documentation or a missing
>>> explanatory comment in the code...
>>>
>>
> Now `ftview' displays the gf glyphs too!
> I am attaching a screenshot of the output from `ftview' and `ftstring'!
> [...]
>
Attaching a cropped image.
_______________________________________________
Freetype-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to