delphi - ¿Por qué las fuentes condensadas no se muestran correctamente en FireMonkey?
fonts (1)
(¿Y qué puedo hacer al respecto?)
Si creo dos etiquetas en VCL y configuro una para usar Arial y otra Arial Narrow, veré un resultado esperado.
Si hago lo mismo en Firemonkey, la segunda etiqueta no se muestra en Arial Narrow. Incluso no se muestra en Arial (los puntos en i son redondos, la forma de ''s'' está mal, etc.).
¿Alguien sabe por qué FM (estaba probando esto con Delphi XE4) no muestra la fuente correctamente? ¿Hay algo que pueda hacer al respecto?
Fuente para el formulario 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
Fuente para el formulario 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
Esto parece afectar únicamente a las fuentes dentro de las familias, si la fuente no existe en la carpeta de fuentes con su propio apellido. Arial Narrow, por ejemplo, es una fuente dentro del archivo de fuente "Arial" (existe dentro de una familia y no es, per se, una familia en sí misma).
Normalmente, una familia de fuentes incluiría solo los cuatro estilos
Arial (contiene ingenuamente)
- Arial Regular
- Arial Bold
- Arial Italic
- Arial Bold Italic
"Arial Narrow", sin embargo, existe dentro de la familia "Arial" junto con los estilos estándar, es decir:
Arial (en realidad contiene)
- Arial Regular
- Arial Bold
- Arial Italic
- Arial Bold Italic
- Arial Narrow
- Arial Narrow Bold
- Arial Narrow Italic
- Arial Narrow Bold Italic
- Arial Negro
Parece que FMX solo busca un nivel de profundidad dentro de cualquier familia de fuentes dada y no está mirando ninguna variante de estilo que se desvíe de las definiciones de estilo estrictas de GDI + (Regular, Negrita, Cursiva, Negrita Cursiva).
Esto también, mediante inspección, afecta a Arial Black; otros ejemplos son fáciles de encontrar al ejecutar a través de la carpeta de fuentes. Franklin Gothic Demi, Gill Sans Ultra Bold, etc. ... cualquier cosa que siga el patrón anterior. La fuente parece procesarse en la interfaz de usuario de Segoe predeterminada cuando se encuentran estas fuentes.
Una solución provisional es usar Arial y establecer la propiedad Scale
en X=0.82
; no es perfecta, pero es bastante similar a Arial Narrow.
Esto es probablemente un error y debe ser QC''d.