Re: 2.10.3 BW renderer changes

Davide Rizzo <[email protected]> Wed, 11 Jan 2023 09:29:27 +0100
Newsgroups gmane.comp.fonts.freetype.user
Organization Eidos
Message-ID <[email protected]>
Hi,

You're right.

I wrote a very simple test program to evidence the difference in the output.

I attach the program, the font we use (a standard arial.ttf) and the 
different outputs I obtain at size 58.

With freetype up to 2.10.2 I obtain the desired nice bitmap, with 
freetype since 2.10.3 (including the last 2.12.1) I obtain a different 
bitmap.

My question is if it's possible with some parameter to obtain the "old" 
bitmap with freetype 2.12.1.

Thank you

Davide Rizzo


Il 10/01/23 00:03, Alexei Podtelezhnikov ha scritto:
> Davide,
>
>> The new output is much worse, most of chars have single dots protruding
> in the external outline.
>
> We won't be able to help you unless you help us to reproduce or see
> the issue. At the very least you should name the font and the size,
> and give a screenshot.  Also, in our mind, only bugs in 2.12.1 are
> worth fixing. You should try this most recent version in case it is
> fixed already. There could be other software that disabled the hinting
> too. Therefore, we prefer that you show the issue using freetype demos
> like ftview or ftgrid.
>
> Does this make sense? Your report does not have any details. You can
> use https://gitlab.freedesktop.org/freetype/freetype/-/issues once you
> have mode details.
>
> Can you help us to help you?
>
> Alexei
test-freetype.cpp (text/x-c++src, 1.7 KB)
//============================================================================
// Name        : test-freetype.cpp
// Author      :
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include "ft2build.h"
#include "freetype/freetype.h"
#include FT_RENDER_H
#include "stdio.h"

int main(int argc, char **argv)
{
	int major, minor, patch, sz = 100;
	if(argc == 2)
		sz = atoi(argv[1]);
	FT_Library library;
	FT_Face face;
	FT_StreamRec_ ft_st = { nullptr, 0, 0, {-1}, {0}, nullptr, nullptr, nullptr, nullptr, nullptr };
	FT_Open_Args ft_oa = { FT_OPEN_PATHNAME, nullptr, 0, (FT_String *)"/usr/fonts/arial.ttf", &ft_st, 0, 0, nullptr };
	FT_Init_FreeType(&library);
	FT_Open_Face(library, &ft_oa, 0, &face);
	FT_Library_Version(library, &major, &minor, &patch);
	FT_Set_Charmap(face, face->charmaps[0]);
	FT_Set_Pixel_Sizes(face, sz, sz);
	FT_Load_Char(face, 'e', FT_LOAD_DEFAULT | FT_LOAD_TARGET_LIGHT | FT_LOAD_MONOCHROME | FT_LOAD_NO_BITMAP);
	FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO);
	printf("Freetype V.%d.%d.%d - size:%d\n", major, minor, patch, sz);
	unsigned int row, column;
	for(column = 0; column < face->glyph->bitmap.width; column++)
		printf("--");
	printf("\n");
	for(row = 0; row < face->glyph->bitmap.rows; row++)
	{
		for(column = 0; column < face->glyph->bitmap.width; column++)
			printf((0x80 >> (column & 0x7)) & face->glyph->bitmap.buffer[row * face->glyph->bitmap.pitch + column / 8] ? "XX" : "  ");
		printf("\n");
	}
	for(column = 0; column < face->glyph->bitmap.width; column++)
		printf("--");
	printf("\n");
	FT_Done_Face(face);
	FT_Done_FreeType(library);
	return 0;
}
render-differences.txt (text/plain, 3.9 KB)
root@xto-N00001:~# /tmp/test-freetype2 58
Freetype V.2.10.2 - size:58
--------------------------------------------------------
                                                        
                  XXXXXXXXXXXXXXXXXXXXXX                
              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX            
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX          
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        
      XXXXXXXXXXXXXX                XXXXXXXXXXXXXX      
      XXXXXXXXXXXX                      XXXXXXXXXXXX    
    XXXXXXXXXXXX                          XXXXXXXXXX    
  XXXXXXXXXXXX                            XXXXXXXXXXXX  
  XXXXXXXXXX                                XXXXXXXXXX  
  XXXXXXXXXX                                XXXXXXXXXX  
  XXXXXXXXXX                                XXXXXXXXXX  
XXXXXXXXXXXX                                XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX                                              
XXXXXXXXXXXX                                            
XXXXXXXXXXXX                                            
XXXXXXXXXXXX                                            
  XXXXXXXXXX                                XXXXXXXX    
  XXXXXXXXXXXX                              XXXXXXXXXX  
  XXXXXXXXXXXX                            XXXXXXXXXXXX  
    XXXXXXXXXXXX                          XXXXXXXXXXXX  
    XXXXXXXXXXXXXX                      XXXXXXXXXXXX    
      XXXXXXXXXXXXXXXX              XXXXXXXXXXXXXX      
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX            
                  XXXXXXXXXXXXXXXXXXXXXX                
                                                        
--------------------------------------------------------

root@xto-N00001:~# /tmp/test-freetype2 58
Freetype V.2.12.1 - size:58
--------------------------------------------------------
                            XX                          
                  XXXXXXXXXXXXXXXXXXXXXX                
              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX            
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX          
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        
      XXXXXXXXXXXXXX                XXXXXXXXXXXXXX      
      XXXXXXXXXXXX                      XXXXXXXXXXXX    
    XXXXXXXXXXXX                          XXXXXXXXXX    
  XXXXXXXXXXXX                            XXXXXXXXXXXX  
  XXXXXXXXXX                                XXXXXXXXXX  
  XXXXXXXXXX                                XXXXXXXXXX  
  XXXXXXXXXX                                XXXXXXXXXX  
XXXXXXXXXXXX                                XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX                                              
XXXXXXXXXXXX                                            
XXXXXXXXXXXX                                            
XXXXXXXXXXXX                                            
  XXXXXXXXXX                                XXXXXXXX    
  XXXXXXXXXXXX                              XXXXXXXXXX  
  XXXXXXXXXXXX                            XXXXXXXXXXXX  
    XXXXXXXXXXXX                          XXXXXXXXXXXX  
    XXXXXXXXXXXXXX                      XXXXXXXXXXXX    
      XXXXXXXXXXXXXXXX              XXXXXXXXXXXXXX      
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        
            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX            
                  XXXXXXXXXXXXXXXXXXXXXX                
                            XX                          
--------------------------------------------------------
arial.ttf (font/ttf, 285.8 KB) - not displayed