Font size property problem (CLOSED)

  • Anonymous - 2017-02-10

    Originally created by: maxime.quidousse

    Hello, I have a problem with the property 'Size' of a Codesys rectangle.

    If I create a rectangle and set properties into the 'Text properties' group (ex: Font=Arial; 12), I have a rectangle with the text in Arial and the size 12 ==> OK
    But if I set properties into the 'Font variables' group with global variables, I don't have the expected result. For the 'Font name', no problem but the size of the text doesn't correspond to my global variable.
    If my global variable is 12, the height of text is 9. Why ?

    Moreover, I noticed that the result was different with different fonts.

    The first rectangle uses global variables CS_Font_Name='Arial' and CI_Font_Size=12

    Another example where the size starts at 1 and ends at 16:

    The height of the last line is 12 pixels but it should be 16 pixels



    IMG: compare.png

    IMG: size_1_to_16.png

  • Anonymous - 2017-02-15

    Originally created by: maxime.quidousse

    I found the answer.

    When I set the property 'Font' (group 'Text properties'), Codesys proposes a list of size in point (pt). But, the real value behind is in pixel (px).
    Unfortunately, Codesys doesn't show the unity of the size. And we can see a different value of the size thanks to the tooltip (16px == 12pt,

    The property 'Size' (group 'Font variables') wants a value in px. But the wanted height is expressed in point (pt).
    There is a conversion between pixel and point depending of the DPI of the device.

    Moreover, the size in pixel corresponds to an abstract square (EM) where each characters of the font is designed. So, I can't be sure that the text has a height equals to my input size.

    Thanks to the FreeType library FAQ:

    A lot of people have difficulties to understand this topic, because they think of glyphs as fixed-width or fixed-height ‘cells’, like those of fonts used in terminals/consoles. This assumption is not valid with most ‘modern’ font formats, even for bitmapped-based ones like PCF or BDF.
    Be aware that the character size that is set either through FT_Set_Char_Size() or FT_Set_Pixel_Sizes() isn't directly related to the dimension of the generated glyph bitmaps!
    Rather, the character size is indeed the size of an abstract square, called the EM, used by typographers to design fonts. Scaling two distinct fonts to the same character size, be it expressed in points or pixels, generally results in bitmaps with distinct dimensions!
    Note that historically, the EM corresponded to the width of a capital ‘M’ in Latin typefaces. However, later improvements in typography led to designs that greatly deviate from this rule. Today, it is not possible to connect the EM size to a specific font ‘feature’ in a reliable way.

    This topic can be closed.

    IMG: codesys_font_size.png


Log in to post a comment.