Android上“特殊” Font Awesome字符的德尔福问题

时间:2019-03-05 02:38:23

标签: android delphi fonts

Delphi 10.2.2

  
    

现在提供了最小,完整,可验证的示例here 236k

  

我安装了Font Awesome,以将字体用于“箭头”等。我正在用#$ F359(箭头alt-circle-left)进行测试。

请注意,我已经在我的Android应用程序中使用了一种“怪异”字体(Showcard Gothic),一切都很好[请参见下面的注释<1>]。

我创建了一个非常简单的测试应用,可以在Windows上正常运行。在Android上,我获得了“普通”字符的新(Font Awesome)字体。但不是针对上述“特殊”对象。

在两种情况下,很明显,新字体 正在被读取并正确应用。在Windows中,我看到了预期的“特殊字符”。在Android中,我看到了[]“框”。

注意:

  1. 我正在使用(在此处进行测试,并在我的实际应用中)单元FMX.FontGlyphs.Android的“ hack”。被黑的版本在我的源文件夹中。它记录在https://firemonkeyblog.blogspot.com/2014/12/using-custom-fonts-in-android-delphi.html上,并且需要进行以下更改:

    在实现部分,将System.IOUtils添加到uses子句。 在过程TAndroidFontGlyphManager.LoadResource中,添加局部变量FontFile: string;

    最后,紧接之前:

    Typeface := TJTypeface.JavaClass.create(FamilyName, TypefaceFlag);
    

添加:

    FontFile := TPath.GetDocumentsPath + PathDelim + CurrentSettings.Family + '.ttf';
    if FileExists(FontFile) then
    Typeface := TJTypeface.JavaClass.createFromFile(StringToJString(FontFile))
    else
  1. 我将实际的字体文件(Font Awesome 5 Brands-Regular-400.otf)复制到了源文件夹中,并将其重命名为“ fawes.ttf”。

    为确保更改的扩展名不会引起我的问​​题,我将其更改回“ .otf”并在FMX.FontGlyphs.Android中进行了相关更改。没变化。

  2. 我已将此“ .ttf”文件添加到我的部署中。

最后,应用程序:

这是一种形式。两个标签。一键。

我为每个标签设置:AutoSize = True,StyledSettings = [],TextSettings.Font.Size = 32

我将2个标签的Position.X属性设置为相等,将Label1放置在Label2的正上方。

最后,事件处理程序:

procedure TForm1.Button1Click(Sender: TObject);
const
  {$IFDEF MSWINDOWS}
    FAMILY = 'Font Awesome 5 Free Solid';
  {$ELSE}
    FAMILY = 'fawes';
  {$ENDIF}
begin
Label1.Text := 'az';
Label2.Text := 'az' + widechar($F359);
Label2.TextSettings.Font.Family := FAMILY;
end;

仅此而已。有什么想法吗?

0 个答案:

没有答案