Hi all,
Attached is a small program that demonstrates how freetype loses
outline flags during auto-hinting.
This is a demonstration:
$ ./outflags /usr/share/fonts/liberation/LiberationSerif-Regular.ttf 0x2
Liberation Serif Regular loaded...
Loading Flags: 0x2
Outline Flags: 0x100
$ ./outflags /usr/share/fonts/liberation/LiberationSerif-Regular.ttf 0x20
Liberation Serif Regular loaded...
Loading Flags: 0x20
Outline Flags: 0 <<<<<< LOST IT
$ ./outflags /usr/share/fonts/liberation/LiberationSerif-Regular.ttf 0x0
Liberation Serif Regular loaded...
Loading Flags: 0
Outline Flags: 0x110
$ ./outflags /usr/share/fonts/default/Type1/n019003l.pfb 0x2
Nimbus Sans L Regular loaded...
Loading Flags: 0x2
Outline Flags: 0x104
$ ./outflags /usr/share/fonts/default/Type1/n019003l.pfb 0x20
Nimbus Sans L Regular loaded...
Loading Flags: 0x20
Outline Flags: 0 <<<<<<< LOST IT
$ ./outflags /usr/share/fonts/default/Type1/n019003l.pfb 0x0
Nimbus Sans L Regular loaded...
Loading Flags: 0
Outline Flags: 0x104
Let me know if you're certain which function needs fixing. I can try
to come up with a patch.
Alexei
#include <stdio.h>
#include <stdlib.h>
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_IMAGE_H
int main(int argc, char *argv[])
{
int glyph_index, load_flag;
FT_Library library;
FT_Face face;
if (FT_Init_FreeType(&library)) {
puts("FT_Init_FreeType Error");
return EXIT_FAILURE;
}
if (argc < 2 || FT_New_Face(library, argv[1], 0, &face)) {
puts("FT_New_Face Error");
return EXIT_FAILURE;
} else
printf("%s %s loaded...\n", face->family_name, face->style_name);
if (FT_Set_Char_Size(face, 0, 16 * 64, 96, 96)) {
puts("FT_Set_Char_Size Error");
return EXIT_FAILURE;
}
glyph_index = FT_Get_Char_Index(face, 0x41);
if (argc < 3)
load_flag = FT_LOAD_DEFAULT;
else
sscanf(argv[2], "%x", &load_flag);
if (FT_Load_Glyph(face, glyph_index, load_flag)) {
puts("FT_Load_Glyph Error");
return EXIT_FAILURE;
}
printf("Loading Flags: %#x\nOutline Flags: %#x\n", load_flag,
face->glyph->outline.flags);
return EXIT_SUCCESS;
}
_______________________________________________
Freetype-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype-devel