フォントは変更されません
GlobalUseDirect2D := false;
それらはすべて「Segoe UI」です。
GDI+ でフォントをカスタマイズできるようにするにはどうすればよいですか?
Delphi XE4、Firemonkey HD フォーム。
フォントは変更されません
GlobalUseDirect2D := false;
それらはすべて「Segoe UI」です。
GDI+ でフォントをカスタマイズできるようにするにはどうすればよいですか?
Delphi XE4、Firemonkey HD フォーム。
ありがとう、私はそれを修正しました。問題についてもう一度: GlobalUseDirect2D をオフにすると、たとえば「Comic Sans MS」であっても、すべてのテキストの FontFamily が「Tahoma」になります。
UPD 完全な修正ではありません。フォントシャッフル。
UPD2 これで修正されました。
FMX.Canvas.GDIP.pas の修正コード:
procedure TTextLayoutGDIPlus.DoRenderLayout;
var
i: Integer;
LRegion: TRegion;
begin
if not Assigned(FStringFormat) or not Assigned(FGraphics) then
Exit;
FreeAndNil(FGPFont);
if Assigned(LayoutCanvas) then
begin
//FIX BEGIN
TCanvasGdiPlus(LayoutCanvas).Font.Assign(Font);
//FIX END
if not TCanvasGdiPlus(LayoutCanvas).FGPFamily.IsStyleAvailable(vgStyleToGPStyle(Font.Style)) then
begin
FGPFont := TGPFont.Create(TCanvasGdiPlus(LayoutCanvas).FGPFamily,
Font.Size * 0.75 * TCanvasGdiPlus(LayoutCanvas).FFontScale, 0);
if not Assigned(FGPFont) then
FGPFont := TGPFont.Create(TCanvasGdiPlus(LayoutCanvas).FGPFamily,
Font.Size * 0.75 * TCanvasGdiPlus(LayoutCanvas).FFontScale,
vgStyleToGPStyle(Font.Style));
end
else
FGPFont := TGPFont.Create(TCanvasGdiPlus(LayoutCanvas).FGPFamily,
Font.Size * 0.75 * TCanvasGdiPlus(LayoutCanvas).FFontScale,
vgStyleToGPStyle(Font.Style),
UnitPoint);
end