Qt5: fixed font weight values according to Qt5 specs.

This commit is contained in:
zeljan1 2022-11-11 13:34:17 +01:00
parent b5ca6b01fa
commit 8d55bd36cc

View File

@ -562,14 +562,14 @@ begin
// Others are guesses. The best would be to test different values for those // Others are guesses. The best would be to test different values for those
// See: http://doc.trolltech.com/4.1/qfont.html#Weight-enum // See: http://doc.trolltech.com/4.1/qfont.html#Weight-enum
case LogFont.lfWeight of case LogFont.lfWeight of
FW_THIN : QtFont.setWeight(10); FW_THIN : QtFont.setWeight(0);
FW_EXTRALIGHT : QtFont.setWeight(15); FW_EXTRALIGHT : QtFont.setWeight(12);
FW_LIGHT : QtFont.setWeight(25); FW_LIGHT : QtFont.setWeight(25);
FW_NORMAL : QtFont.setWeight(50); FW_NORMAL : QtFont.setWeight(50);
FW_MEDIUM : QtFont.setWeight(55); FW_MEDIUM : QtFont.setWeight(57);
FW_SEMIBOLD : QtFont.setWeight(63); FW_SEMIBOLD : QtFont.setWeight(63);
FW_BOLD : QtFont.setWeight(75); FW_BOLD : QtFont.setWeight(75);
FW_EXTRABOLD : QtFont.setWeight(80); FW_EXTRABOLD : QtFont.setWeight(81);
FW_HEAVY : QtFont.setWeight(87); FW_HEAVY : QtFont.setWeight(87);
end; end;
@ -1840,11 +1840,26 @@ var
var var
Font: QFontH; Font: QFontH;
WStr: WideString; WStr: WideString;
FontWeight: Integer;
begin begin
WStr := UTF8ToUTF16(AFontName); WStr := UTF8ToUTF16(AFontName);
Font := QFont_create(@WStr); Font := QFont_create(@WStr);
ALogFontA.lfItalic := Byte(QFont_italic(Font)); ALogFontA.lfItalic := Byte(QFont_italic(Font));
ALogFontA.lfWeight := QFont_weight(Font); FontWeight := QFont_weight(Font);
case FontWeight of
0: ALogFontA.lfWeight := FW_THIN;
12: ALogFontA.lfWeight := FW_EXTRALIGHT;
25: ALogFontA.lfWeight := FW_LIGHT;
50: ALogFontA.lfWeight := FW_NORMAL;
57: ALogFontA.lfWeight := FW_MEDIUM;
63: ALogFontA.lfWeight := FW_SEMIBOLD;
75: ALogFontA.lfWeight := FW_BOLD;
81: ALogFontA.lfWeight := FW_EXTRABOLD;
87: ALogFontA.lfWeight := FW_HEAVY;
else
ALogFontA.lfWeight := Round(FontWeight * 9.5);
end;
// ALogFontA.lfWeight := QFont_weight(Font);
ALogFontA.lfHeight := QFont_pointSize(Font); ALogFontA.lfHeight := QFont_pointSize(Font);
ALogFontA.lfUnderline := Byte(QFont_underline(Font)); ALogFontA.lfUnderline := Byte(QFont_underline(Font));
ALogFontA.lfStrikeOut := Byte(QFont_strikeOut(Font)); ALogFontA.lfStrikeOut := Byte(QFont_strikeOut(Font));
@ -3177,15 +3192,17 @@ begin
ALogFont^.lfHeight := AFont.getPixelSize; ALogFont^.lfHeight := AFont.getPixelSize;
ALogFont^.lfEscapement := AFont.Angle; ALogFont^.lfEscapement := AFont.Angle;
case AFont.getWeight of case AFont.getWeight of
10: ALogFont^.lfWeight := FW_THIN; 0: ALogFont^.lfWeight := FW_THIN;
15: ALogFont^.lfWeight := FW_EXTRALIGHT; 12: ALogFont^.lfWeight := FW_EXTRALIGHT;
25: ALogFont^.lfWeight := FW_LIGHT; 25: ALogFont^.lfWeight := FW_LIGHT;
50: ALogFont^.lfWeight := FW_NORMAL; 50: ALogFont^.lfWeight := FW_NORMAL;
55: ALogFont^.lfWeight := FW_MEDIUM; 57: ALogFont^.lfWeight := FW_MEDIUM;
63: ALogFont^.lfWeight := FW_SEMIBOLD; 63: ALogFont^.lfWeight := FW_SEMIBOLD;
75: ALogFont^.lfWeight := FW_BOLD; 75: ALogFont^.lfWeight := FW_BOLD;
80: ALogFont^.lfWeight := FW_EXTRABOLD; 81: ALogFont^.lfWeight := FW_EXTRABOLD;
87: ALogFont^.lfWeight := FW_HEAVY; 87: ALogFont^.lfWeight := FW_HEAVY;
else
ALogFont^.lfWeight := Round(AFont.getWeight * 9.5);
end; end;
ALogFont^.lfItalic := Ord(AFont.getItalic) * High(Byte); ALogFont^.lfItalic := Ord(AFont.getItalic) * High(Byte);
@ -4306,7 +4323,7 @@ end;
function TQtWidgetSet.GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean; function TQtWidgetSet.GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean;
var var
QtFontMetrics: TQtFontMetrics; QtFontMetrics: TQtFontMetrics;
FontFamily: WideString; // FontFamily: WideString;
QtDC: TQtDeviceContext absolute DC; QtDC: TQtDeviceContext absolute DC;
FontWeight: Integer; FontWeight: Integer;
begin begin
@ -4338,10 +4355,14 @@ begin
TM.tmMaxCharWidth := QtFontMetrics.maxWidth; TM.tmMaxCharWidth := QtFontMetrics.maxWidth;
FontWeight := QtDC.font.getWeight; FontWeight := QtDC.font.getWeight;
case FontWeight of case FontWeight of
0: TM.tmWeight := FW_THIN;
12: TM.tmWeight := FW_EXTRALIGHT;
25: TM.tmWeight := FW_LIGHT; 25: TM.tmWeight := FW_LIGHT;
50: TM.tmWeight := FW_NORMAL; 50: TM.tmWeight := FW_NORMAL;
57: TM.tmWeight := FW_MEDIUM;
63: TM.tmWeight := FW_SEMIBOLD; 63: TM.tmWeight := FW_SEMIBOLD;
75: TM.tmWeight := FW_BOLD; 75: TM.tmWeight := FW_BOLD;
81: TM.tmWeight := FW_EXTRABOLD;
87: TM.tmWeight := FW_HEAVY; 87: TM.tmWeight := FW_HEAVY;
else else
TM.tmWeight := Round(FontWeight * 9.5); TM.tmWeight := Round(FontWeight * 9.5);
@ -4357,7 +4378,7 @@ begin
TM.tmUnderlined := Ord(QtDC.Font.getUnderline); TM.tmUnderlined := Ord(QtDC.Font.getUnderline);
TM.tmStruckOut := Ord(QtDC.Font.getStrikeOut); TM.tmStruckOut := Ord(QtDC.Font.getStrikeOut);
QtDC.font.family(@FontFamily); // QtDC.font.family(@FontFamily);
{ Defaults to a TrueType font. { Defaults to a TrueType font.
Note that the meaning of the FIXED_PITCH constant is the opposite of Note that the meaning of the FIXED_PITCH constant is the opposite of