|
|
#1 |
|
Connoisseur
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 52
Karma: 66200
Join Date: Oct 2020
Location: Germany, Rhein-Main
Device: PocketBook Touch HD 3
|
Strange vertical offset between normal and bold font
I'm currently continuing developing my puzzle collection, and I ran into a strange problem.
The example below is a 2x2 grid of the 'solo' (sudoku clone) puzzle. I want to draw the given fixed clue numbers in bold, and the user filled numbers in normal font. Worked so far, but the different fonts are drawn with a strange and annoying vertical offset to each other. See the attachment, where I draw red lines to illustrate the problem. Horizontally both are aligned correctly. I handle bold and normal fonts in completely the same way for drawing, only difference is I load "LiberationSans" or "LiberationSans-Bold". The characters themselves are drawn all in the same height, both Bold and Normal. This is the text drawing function: Code:
void ink_draw_text(void *handle, int x, int y, int fonttype, int fontsize,
int align, int colour, const char *text) {
ifont *tempfont;
int sw, sh, flags;
bool is_bold = (fonttype == FONT_FIXED) || (fonttype == FONT_VARIABLE);
bool is_mono = (fonttype == FONT_FIXED) || (fonttype == FONT_FIXED_NORMAL);
tempfont = OpenFont( is_mono && is_bold ? "LiberationMono-Bold" :
is_bold ? "LiberationSans-Bold" :
is_mono ? "LiberationMono" :
"LiberationSans",
fontsize, 0);
flags = 0x000;
if (align & ALIGN_VNORMAL) flags |= VALIGN_TOP;
if (align & ALIGN_VCENTRE) flags |= VALIGN_MIDDLE;
if (align & ALIGN_HLEFT) flags |= ALIGN_LEFT;
if (align & ALIGN_HCENTRE) flags |= ALIGN_CENTER;
if (align & ALIGN_HRIGHT) flags |= ALIGN_RIGHT;
SetFont(tempfont, convertColor(colour));
sw = StringWidth(text);
sh = TextRectHeight(sw, text, flags);
if (align & ALIGN_VNORMAL) y -= sh;
else if (align & ALIGN_VCENTRE) y -= sh/2;
if (align & ALIGN_HCENTRE) x -= sw/2;
else if (align & ALIGN_HRIGHT) x -= sw;
DrawString(fe->xoffset + x, fe->yoffset + y, text);
CloseFont(tempfont);
}
Any clue what I am doing wrong? |
|
|
|
|
|
#2 |
|
Zealot
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 142
Karma: 669192
Join Date: Nov 2013
Device: Kindle 4.1.1 no touch
|
I would assume it's the font's fault.
Did you try other fonts? |
|
|
|
| Advert | |
|
|
![]() |
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| How can I change body text from bold to normal? | Michaelus | Calibre | 13 | 07-28-2022 05:42 PM |
| Two strange vertical lines appearing in koreader | Pajamaman | KOReader | 2 | 04-12-2020 12:31 AM |
| How to converse bold font into normal font output in calibre? | Percivale | Kobo Reader | 3 | 11-09-2015 10:21 PM |
| Re Entering Title in Bold or Bold And Colour Font | pricespringer | Library Management | 1 | 05-09-2011 05:45 AM |
| italic, bold etc to normal | cybmole | Sigil | 11 | 03-04-2011 11:37 AM |