Delphi 为什么压缩字体不能在FireMonkey中正确显示?

Delphi 为什么压缩字体不能在FireMonkey中正确显示?,delphi,fonts,firemonkey,Delphi,Fonts,Firemonkey,(我能做些什么呢?) 如果我在VCL中创建两个标签,并将其中一个设置为使用Arial,另一个设置为使用Arial,我将看到预期的结果 如果我在Firemonkey中也这样做,那么第二个标签不会显示在Arial窄框中。它甚至没有用Arial字体显示(i上的点是圆形的,'s'的形状完全错误等等) 有人知道为什么FM(我用Delphi XE4测试)不能正确显示字体吗?我能做些什么吗 VCL表格的来源: object Form3: TForm3 Left = 0 Top = 0 Capt

(我能做些什么呢?)

如果我在VCL中创建两个标签,并将其中一个设置为使用Arial,另一个设置为使用Arial,我将看到预期的结果

如果我在Firemonkey中也这样做,那么第二个标签不会显示在Arial窄框中。它甚至没有用Arial字体显示(i上的点是圆形的,'s'的形状完全错误等等)

有人知道为什么FM(我用Delphi XE4测试)不能正确显示字体吗?我能做些什么吗

VCL表格的来源:

object Form3: TForm3
  Left = 0
  Top = 0
  Caption = 'Form3'
  ClientHeight = 198
  ClientWidth = 475
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 32
    Width = 134
    Height = 14
    Caption = 'This label is using Arial @11'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'Arial'
    Font.Style = []
    ParentFont = False
  end
  object Label2: TLabel
    Left = 24
    Top = 52
    Width = 152
    Height = 15
    Caption = 'This label is using Arial Narrow @11'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'Arial Narrow'
    Font.Style = []
    ParentFont = False
  end
  object Label3: TLabel
    Left = 24
    Top = 98
    Width = 398
    Height = 36
    Caption = 'This label is using Arial @32'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -32
    Font.Name = 'Arial'
    Font.Style = []
    ParentFont = False
  end
  object Label4: TLabel
    Left = 24
    Top = 140
    Width = 429
    Height = 37
    Caption = 'This label is using Arial Narrow @32'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -32
    Font.Name = 'Arial Narrow'
    Font.Style = []
    ParentFont = False
  end
end
FM表格的来源:

object Form4: TForm4
  Left = 0
  Top = 0
  Caption = 'Form4'
  ClientHeight = 207
  ClientWidth = 558
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [dkDesktop, dkiPhone, dkiPad]
  DesignerMobile = False
  DesignerWidth = 0
  DesignerHeight = 0
  DesignerDeviceName = ''
  DesignerOrientation = 0
  object Label1: TLabel
    Font.Family = 'Arial'
    StyledSettings = [ssSize, ssStyle, ssFontColor]
    Height = 17.000000000000000000
    Position.X = 16.000000000000000000
    Position.Y = 32.000000000000000000
    Text = 'This label is using Arial @11'
    Width = 225.000000000000000000
  end
  object Label2: TLabel
    Font.Family = 'Arial Narrow'
    StyledSettings = [ssSize, ssStyle, ssFontColor]
    Height = 17.000000000000000000
    Position.X = 16.000000000000000000
    Position.Y = 48.000000000000000000
    Text = 'This label is using Arial Narrow @11'
    Width = 225.000000000000000000
  end
  object Label3: TLabel
    Font.Family = 'Arial'
    Font.Size = 32.000000000000000000
    StyledSettings = [ssStyle, ssFontColor]
    Height = 41.000000000000000000
    Position.X = 16.000000000000000000
    Position.Y = 104.000000000000000000
    Text = 'This label is using Arial @32'
    Width = 433.000000000000000000
  end
  object Label4: TLabel
    Font.Family = 'Arial Narrow'
    Font.Size = 32.000000000000000000
    StyledSettings = [ssStyle, ssFontColor]
    Height = 65.000000000000000000
    Position.X = 16.000000000000000000
    Position.Y = 128.000000000000000000
    Text = 'This label is using Arial Narrow @32'
    Width = 545.000000000000000000
  end
end

这似乎只会影响族中的字体-如果字体不存在于其自己的族名称下的字体文件夹中。例如,Arial窄字体是“Arial”字体文件中的一种字体(它存在于一个族中,本身不是一个族)

通常,字体系列仅包括四种样式

Arial(天真地包含)

  • Arial正则
  • Arial粗体
  • Arial斜体
  • Arial粗体斜体
但是,“Arial窄带”与标准样式一起存在于“Arial”系列中,即:

Arial(实际包含)

  • Arial正则
  • Arial粗体
  • Arial斜体
  • Arial粗体斜体
  • Arial狭窄
  • Arial狭义粗体
  • Arial窄斜体
  • Arial窄加粗斜体
  • Arial黑色
FMX似乎只关注任何给定字体系列中的一个级别,没有关注任何偏离严格GDI+样式定义(常规、粗体、斜体、粗体-斜体)的样式变体

通过检查,这也会影响Arial Black-通过运行字体文件夹,很容易找到其他示例。富兰克林哥特式半人形,吉尔无超大胆,等等。。。任何遵循上述模式的东西。当遇到这些字体时,该字体似乎在默认的Segoe UI中呈现

一个权宜之计是使用Arial并将
Scale
属性设置为
X=0.82
——这并不完美,但它非常接近Arial


这可能是一个错误,应该进行质量控制。

您对“正确”的定义是什么?为什么你断言VCL是正确的,而FMX不是?Arial窄字体不是默认的Windows字体。它是通过Windows Office套件安装的。您是否尝试通过其他字体复制此问题?您是否尝试在另一台计算机上复制此问题?对于windows,很多因素都会影响字体的呈现方式。@DavidHeffernan:因为,正如我所指出的,FM表示显然不是Arial系列的字体。我会在所有已安装的字体中尝试这种方法,然后比较VCL和FMX,然后列出失败的字体。也许其中有一个模式。可能是trueType还是OpenType?我也注意到了这一点,在VCL中,如果您在对象检查器中键入例如Segoe UI semibold,它是Segoe UI的子字体,它将正确显示它。但是在Firemonkey中执行同样的操作将不会产生正确的字体。@J。。。我已经衍生了我自己的压缩字体,并在没有任何子字体系列的新名称下安装了它。我曾尝试在FMX中使用此字体,但未被识别,因此被Segoe UI取代。在写字板中,我的字体工作正常。所以这个问题不仅会影响到族中的字体。@slotomo-font-building可能很棘手,我很想看看这种字体。我想很可能是严格标准的某些方面没有得到遵守。当然,FMX对瘦字体的偏见毫无意义。关于这个字体问题,quality.embarcadero.com已经有报道了吗?如果没有,gabr应该创建一个,以便Embarcadero正式知道这一点。如果事后我们被告知报告编号,我们可以跟踪它,如果我们发现新的细节,我们可以为报告作出贡献。