bar icon indicating copy to clipboard operation
bar copied to clipboard

Weird hinting problem for block characters

Open rr- opened this issue 10 years ago • 10 comments

I try to display a progressbar using █ characters like this: ███(change color)███.

However, it's rendered weird no matter what font or size I use:

2015-06-03-200456_456x114_escrotum

Note how it works in urxvt properly, while it's rendered with blue tint in lemonbar. Here's my font config:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font" >
        <edit mode="assign" name="rgba" >
            <const>rgb</const>
        </edit>
    </match>
    <match target="font" >
        <edit mode="assign" name="hinting" >
            <bool>true</bool>
        </edit>
    </match>
    <match target="font" >
        <edit mode="assign" name="hintstyle" >
            <const>hintslight</const>
        </edit>
    </match>
    <match target="font" >
        <edit mode="assign" name="antialias" >
            <bool>true</bool>
        </edit>
    </match>
    <match target="font">
        <edit mode="assign" name="lcdfilter">
            <const>lcddefault</const>
        </edit>
    </match>

    <!-- Reject bitmap fonts -->
    <selectfont>
        <rejectfont>
            <pattern>
                <patelt name="scalable"><bool>false</bool></patelt>
            </pattern>
        </rejectfont>
    </selectfont>
</fontconfig>

rr- avatar Jun 03 '15 18:06 rr-

Trying to do specify fonts like this:

Literation Mono Powerline:pixelsize=13:hintstyle=hintnone:antialias=false:rgb=none:hinting=none

doesn't seem to help. (I believe these options don't work in this context...)

rr- avatar Jun 03 '15 18:06 rr-

Confirmed that disabling antialias in font config removes this issue. However, it screws ups every other font and every other character. Is it possible to specify antialias settings in lemonbar's -f?

rr- avatar Jun 03 '15 19:06 rr-

2015-06-03-210427_1920x1080_scrot

I was able to reproduce it using lcdfilter. Top is lcdfilter = lcdnone Bottom is lcdfilter = lcddefault

Is it possible to specify antialias settings in lemonbar's -f?

I dont think so.

krypt-n avatar Jun 03 '15 19:06 krypt-n

Yeah, but after disabling it system-wide, everything looks like this:

2015-06-03-211014_360x208_escrotum

Making an exception using <test/> in font config for one font isn't greatest either.

rr- avatar Jun 03 '15 19:06 rr-

I will look into how urxvt handles that

krypt-n avatar Jun 03 '15 19:06 krypt-n

Please note that urxvt uses .Xresources which is separate from font config. However, I can see the blocks render just fine also in Firefox, and Firefox does use font config - otherwise I wouldn't be able to obtain the screenshot above (which happened after changing font config).

rr- avatar Jun 03 '15 19:06 rr-

If I change the call to XftDrawString16 to draw more than just one character at a time, it works fine. Perhaps there's something wrong with "gluing" the characters? Anyway, a quick fix would be to change draw_char and ifs before to a while that collects all consecutive UTF8/ASCII characters that do not belong to any %{Command}, and then pass whole such string to XftDrawString16.

rr- avatar Jun 03 '15 19:06 rr-

Is there a fix coming for this?

FWIW, a workaround for this is to use a bitmap font to draw the box characters, using %{T}. Bitmap fonts seem to render fine.

easysid avatar Dec 14 '16 15:12 easysid

Well #12 fixes this. I would really like to integrate it and the ucs branch into the main branch, however I am not using lemombar anymore and did not invest much time into it over the last year.

Do you think people use the xft-fork to render bitmap fonts? Would be a huge simplification to just remove the bitmap code.

krypt-n avatar Dec 14 '16 15:12 krypt-n

#12 would probably suffice for my use case, which is just generating simple blocks.

easysid avatar Dec 14 '16 15:12 easysid