我目前正在开发Windows 8.1和OSX Yosemite的应用程序。
Firemonkey使用Segoe UI(12)和Helvetica(13)作为默认字体系列和大小。
有人知道改变这些默认设置或完全取消它们的方法:
由于默认字体具有不同的字体大小(12和13),因此很难获得相同的外观。
正如你所看到的,除了默认值之外,其他尺寸看起来都相同。
如果要在OSX中显示文本大小为12的字体,则必须在运行时执行此操作。那是因为如果你在设计器中设置文本大小12,它会自动切换到(默认)并在编译mac时将其更改为13.
答案 0 :(得分:5)
您可以通过替换IFMXSystemFontService来更改默认字体和大小:
unit My.FontService;
interface
uses
FMX.Platform;
type
TmyFMXSystemFontService = class(TInterfacedObject, IFMXSystemFontService)
public
function GetDefaultFontFamilyName: string;
function GetDefaultFontSize: Single;
end;
implementation
function TmyFMXSystemFontService.GetDefaultFontFamilyName: string;
begin
Result := 'Lato';
end;
function TmyFMXSystemFontService.GetDefaultFontSize: Single;
begin
Result := 12;
end;
procedure InitFont;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXSystemFontService) then
TPlatformServices.Current.RemovePlatformService(IFMXSystemFontService);
TPlatformServices.Current.AddPlatformService(IFMXSystemFontService, TmyFMXSystemFontService.Create);
end;
initialization
InitFont;
end.
默认字体大小(在XE10中,不知道XE7)
答案 1 :(得分:0)
我希望默认意味着它使用了样式中的设置。您可以在“工具”菜单上的“位图样式设计器”中打开样式,进行任何更改以及“另存为FireMonkey”样式。
我不确定是否有一种简单的方法可以更改默认值。这可能意味着单独更改每种字体。
答案 2 :(得分:0)
解决方法:
var
Settings: ITextSettings;
Instance: TComponent;
i: integer;
begin
for i := 0 to ComponentCount - 1 do
begin
Instance := Components[i];
if IInterface(Instance).QueryInterface(ITextSettings, Settings) = S_OK then
begin
Settings.TextSettings.BeginUpdate;
try
Settings.DefaultTextSettings.Font.Size := 12;
Settings.DefaultTextSettings.Font.Family := 'Comic Sans MS';
finally
Settings.TextSettings.EndUpdate;
end;
end;
end;
答案 3 :(得分:0)
真正的问题是,此属性的默认值使用不当。 这是Embarcadero的一个错误。当然!
我的解决方案,在TStyleBooks组件中,放置一个值,接近12,但不是12。
具体来说我使用" 11.9"。 Delphi属性编辑器不会将此值假定为默认值。但是当您运行该程序时,系统会以字体大小将其正确转换为12。在Mac OS X和Windows中也是如此。