1

フォントは変更されません

GlobalUseDirect2D := false;

それらはすべて「Segoe UI」です。

GDI+ でフォントをカスタマイズできるようにするにはどうすればよいですか?

Delphi XE4、Firemonkey HD フォーム。

4

1 に答える 1

0

ありがとう、私はそれを修正しました。問題についてもう一度: 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
于 2013-07-30T10:42:00.420 に答える