FireMekey XE4字体,GlobalUseDirect2D = false

时间:2013-07-29 15:26:17

标签: delphi firemonkey delphi-xe4

字体不会随

而变化
GlobalUseDirect2D := false;

所有这些都是'Segoe UI'。

我可以做些什么,可以使用GDI +自定义字体?

Delphi XE4,Firemonkey HD表格。

1 个答案:

答案 0 :(得分:0)

谢谢,我修好了。还有一次关于这个问题:我关闭了GlobalUseDirect2D并且所有文本都将FontFamily作为'Tahoma',即使它是'Comic Sans MS',例如。

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