TAChart: Add InitFonts procedure to TADrawerFPCanvas initialize default font directories. Remove GetDefaultFontName.

(cherry picked from commit 8410f7274b)
This commit is contained in:
wp_xyz 2021-09-16 00:44:40 +02:00
parent 2c9e4125ee
commit 2f4d99f301
2 changed files with 42 additions and 18 deletions

View File

@ -7,13 +7,9 @@ uses
Interfaces, Classes, tachartlazaruspkg { you can add units after this }, Interfaces, Classes, tachartlazaruspkg { you can add units after this },
FPCanvas, FPImage, FPImgCanv, FPCanvas, FPImage, FPImgCanv,
TAGraph, TASeries, TADrawerFPCanvas in '../../TADrawerFPCanvas.pas', TADrawerCanvas, TADrawUtils; TAGraph, TASeries, TADrawerFPCanvas in '../../TADrawerFPCanvas.pas', TADrawerCanvas, TADrawUtils;
const const
{$IFDEF MSWINDOWS} FONT_NAME = 'LiberationSans-Regular.ttf';
FONT_NAME = 'Arial';
{$ENDIF}
{$IFDEF UNIX}
FONT_NAME = '/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf';
{$ENDIF}
var var
chart: TChart; chart: TChart;
@ -22,6 +18,7 @@ var
c: TFPImageCanvas; c: TFPImageCanvas;
d: IChartDrawer; d: IChartDrawer;
begin begin
InitFonts;
chart := TChart.Create(nil); chart := TChart.Create(nil);
chart.Width := 600; chart.Width := 600;
chart.Height := 400; chart.Height := 400;

View File

@ -36,7 +36,6 @@ type
// in horizontal horientation. FMeasureFont is always horizontal. // in horizontal horientation. FMeasureFont is always horizontal.
{$ENDIF} {$ENDIF}
procedure EnsureFont; procedure EnsureFont;
function GetDefaultFontName: String;
procedure SetBrush(ABrush: TFPCustomBrush); procedure SetBrush(ABrush: TFPCustomBrush);
procedure SetFont(AFont: TFPCustomFont); procedure SetFont(AFont: TFPCustomFont);
procedure SetPen(APen: TFPCustomPen); procedure SetPen(APen: TFPCustomPen);
@ -83,6 +82,9 @@ type
procedure SetPenWidth(AWidth: Integer); procedure SetPenWidth(AWidth: Integer);
end; end;
procedure InitFonts;
implementation implementation
uses uses
@ -179,11 +181,6 @@ begin
Result := FPColorToChartColor(FCanvas.Brush.FPColor); Result := FPColorToChartColor(FCanvas.Brush.FPColor);
end; end;
function TFPCanvasDrawer.GetDefaultFontName: String;
begin
Result := 'arial';
end;
function TFPCanvasDrawer.GetFontAngle: Double; function TFPCanvasDrawer.GetFontAngle: Double;
begin begin
{$IFDEF USE_FTFONT} {$IFDEF USE_FTFONT}
@ -326,10 +323,7 @@ begin
AssignFPCanvasHelper(FFont, AFont); AssignFPCanvasHelper(FFont, AFont);
AssignFPCanvasHelper(FMeasureFont, AFont); AssignFPCanvasHelper(FMeasureFont, AFont);
// DoCopyProps performs direct variable assignment, so call SetName by hand. // DoCopyProps performs direct variable assignment, so call SetName by hand.
if AFont.Name = 'default' then FFont.Name := AFont.Name;
FFont.Name := GetDefaultFontName
else
FFont.Name := AFont.Name;
if AFont.Size = 0 then if AFont.Size = 0 then
FFont.Size := DEFAULT_FONT_SIZE FFont.Size := DEFAULT_FONT_SIZE
else else
@ -367,9 +361,8 @@ begin
end; end;
function TFPCanvasDrawer.SimpleTextExtent(const AText: String): TPoint; function TFPCanvasDrawer.SimpleTextExtent(const AText: String): TPoint;
var
fnt: TFreeTypeFont;
begin begin
Result := Point(0, 0);
EnsureFont; EnsureFont;
{$IFDEF USE_FTFONT} {$IFDEF USE_FTFONT}
FCanvas.Font := FMeasureFont; FCanvas.Font := FMeasureFont;
@ -407,5 +400,39 @@ begin
{$ENDIF} {$ENDIF}
end; end;
procedure InitFonts;
begin
{$IFDEF USE_FTFONT}
InitEngine;
// Windows: Search path is set automatically
{$IFDEF LINUX}
FontMgr.SearchPath :=
'/usr/share/cups/fonts/;' +
'/usr/share/fonts/truetype/;' +
'/usr/share/fonts/truetype/liberation/;' +
'/usr/local/lib/X11/fonts/;' +
GetUserDir + '.fonts/';
{$ENDIF}
{$IFDEF LCLCarbon}
FontMgr.SearchPath :=
'/Library/Fonts/;' +
'/System/Library/Fonts/;' +
'/Network/Library/Fonts/;' +
'~/Library/Fonts/';
{$ENDIF}
{$IFDEF LCLCocoa}
FontMgr.SearchPath :=
'/Library/Fonts/;' +
'/System/Library/Fonts/;' +
'/Network/Library/Fonts/;' +
'~/Library/Fonts/';
{$ENDIF}
{$ENDIF}
end;
end. end.