2013-07-17 33 views
8

凝縮されたフォントがFireMonkeyで正しく表示されないのはなぜですか?

VCLで2つのラベルを作成し、ArialとArial Narrowを使用するように設定すると、予想される結果が表示されます。

enter image description here

私はFireMonkeyの中で同じことを行う場合は、第二の標識はArial Narrowのには表示されません。それはArialにも表示されていません(私は丸い形、 's'の形はすべて間違っています)。

enter image description here

FM(Iは、Delphi XE4でこれをテストしていたが)適切にフォントが表示されていない理由を誰もが知っていますか?私はそれについて何かできることはありますか? VCLフォームの

出典:FMフォームの

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 

が出典:

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 
+0

"適切に"あなたの定義は何ですか? VCLが適切であり、FMXが適切ではないと主張する理由は何ですか? –

+0

Arial NarrowはデフォルトのWindowsフォントではありません。 Windows Officeスイートを介してインストールされます。他のフォントでこの問題を再現しようとしましたか?この問題を別のコンピュータに再現しようとしましたか?ウィンドウでは、フォントがどのようにレンダリングされるかが大きく影響します。 – Peter

+4

@DavidHeffernan:私が指摘したように、FM表現は明らかにArialファミリーのフォントではありません。 – gabr

答えて

6

これが唯一の家族内のフォントに影響を与えているようだ - フォントがフォントに存在しない場合は下のフォルダそれ自身の姓。たとえば、Arial Narrowは、 "Arial"フォントファイル内のフォントです(家族内に存在し、それ自体は家族ではありません)。

通常フォントファミリは、4つのスタイルだけ

のArial(単純に含まれている)

  • Arialの正規
  • Arialの太字
  • のArial斜体
  • Arialの太字斜体
  • が含まれるであろう

"Arial Narrowのは、" しかし、標準スタイルと並んで "ゴシック" ファミリ内に存在する - すなわち:

のArial(実際に含まれている)

  • Arialの正規
  • Arialの太字Arial Italic
  • Arial Bold Italic
  • Arial Narrow
  • Arial Narrowの太字
  • ゴシック斜体Arial Narrowの太字斜体
  • Arialの黒

FMXだけで任意のフォントファミリ内の深い1つのレベルを見ていると、任意のを見ていないようです厳密なGDI +スタイル定義(Regular、Bold、Italic、Bold Italic)から逸脱したスタイルの変形です。

これも検査でArial Blackに影響します。他の例は、あなたのフォントフォルダを実行することで簡単に見つかります。フランクリンゴシックデミ、ギルサンズウルトラボールドなど。これらのフォントに遭遇すると、フォントはデフォルトのSegoe UIでレンダリングされているようです。

Arialを使用してScaleプロパティをX=0.82に設定してください。完全ではありませんが、Arial Narrowに非常に近いです。

Arial stretch vs Arial Narrow

これはおそらくバグでQC'dする必要があります。

+0

また、Segoe UIのサブフォントであるSegoe UI semiboldなどのオブジェクトインスペクタタイプのVCLでは正しく表示されます。しかし、Firemonkeyで同じことをしても、正しいフォントは生成されません。 – Peter

+0

@J ...私は自分の凝縮したフォントを派生させ、サブフォントファミリーなしで新しい名前でインストールしました。 FMXでこのフォントを使用しようとしましたが、認識されず、したがってSegoe UIに置き換えられました。ワードパッドで私のフォントが正しく動作します。この問題は、家族内のフォントに影響するだけではありません。 – slotomo

+0

@slotomo - フォントビルディングは難しいかもしれませんが、私はこのフォントを見ることに興味があります。私は、厳格な基準のいくつかの側面が遵守されていない可能性が最も高いと考えています。確かに、FMXがスキニーフォントに対する偏見を持つことはほとんど意味がない。 –

関連する問題