如果我在VCL中创建两个标签并设置一个使用Arial和另一个Arial Narrow,我会看到预期的结果.
如果我在Firemonkey中执行相同操作,则第二个标签不会显示在Arial Narrow中.它甚至没有在Arial中显示(我的圆点是圆的,’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,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 Regular
> Arial Bold
> Arial斜体
> Arial Bold Italic
然而,“Arial Narrow”存在于“Arial”系列中,与标准风格一致 – 即:
Arial(实际上包含)
> Arial Regular
> Arial Bold
> Arial斜体
> Arial Bold Italic
> Arial Narrow
> Arial Narrow Bold
> Arial Narrow Italic
> Arial Narrow Bold Italic
> Arial Black
似乎FMX只在任何给定的字体系列中看起来只有一层,并且没有看到任何偏离严格的GDI样式定义(Regular,Bold,Italic,Bold Italic)的样式变体.
这也通过检查影响Arial Black – 通过运行fonts文件夹很容易找到其他示例. Franklin Gothic Demi,Gill Sans Ultra Bold等……任何遵循上述模式的东西.遇到这些字体时,字体似乎在默认的Segoe UI中呈现.
权宜之计解决方案是使用Arial并将Scale属性设置为X = 0.82 – 它并不完美,但它与Arial Narrow非常接近.
这可能是一个错误,应该是QC’d.