8

(我能做些什么呢?)

如果我在 VCL 中创建两个标签并设置一个使用 Arial 和另一个 Arial Narrow,我会看到预期的结果。

在此处输入图像描述

如果我在 Firemonkey 中做同样的事情,第二个标签不会显示在 Arial Narrow 中。它甚至不显示在 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
4

1 回答 1

6

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

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

Arial (天真地包含)

  • 宋体常规
  • 宋体粗体
  • 宋体斜体
  • Arial 粗斜体

然而,“Arial Narrow”与标准样式一起存在于“Arial”系列中 - 即:

Arial (实际包含)

  • 宋体常规
  • 宋体粗体
  • 宋体斜体
  • Arial 粗斜体
  • 宋体窄
  • Arial 窄粗体
  • Arial 窄斜体
  • Arial 窄粗斜体
  • 宋体黑

似乎 FMX 只在任何给定字体系列中查看了一个级别,并且没有查看任何偏离严格 GDI+ 样式定义(Regular、Bold、Italic、Bold Italic)的样式变体。

通过检查,这也会影响 Arial Black - 通过运行您的字体文件夹很容易找到其他示例。Franklin Gothic Demi、Gill Sans Ultra Bold 等……任何遵循上述模式的东西。遇到这些字体时,字体似乎在默认的 Segoe UI 中呈现。

一个权宜之计的解决方案是使用 Arial 并将Scale属性设置为X=0.82- 它并不完美,但它非常接近 Arial Narrow。

Arial 拉伸与 Arial 窄

这可能是一个错误,应该进行 QC。

于 2013-07-18T13:03:54.413 回答