delphi fonts firemonkey

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.