zoukankan      html  css  js  c++  java
  • Direct2D (35) : 通过 DirectWrite 获取字体列表


    uses Direct2D, D2D1;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      iFontCollection: IDWriteFontCollection;     //字体集合
      iFontFamily: IDWriteFontFamily;             //字族
      iLocalizedStrings: IDWriteLocalizedStrings; //按区域设置名称编制索引的字符串集合
      i,j: Integer;
      buf: array[0..LF_FACESIZE] of Char;
    begin
      ListBox1.Clear;
      DWriteFactory.GetSystemFontCollection(iFontCollection);
      for i := 0 to iFontCollection.GetFontFamilyCount - 1 do
      begin
        iFontCollection.GetFontFamily(i, iFontFamily);
        iFontFamily.GetFamilyNames(iLocalizedStrings);
        for j := 0 to iLocalizedStrings.GetCount - 1 do
        begin
          iLocalizedStrings.GetString(j, buf, Length(buf));
          ListBox1.Items.Add(buf);
        end;
      end;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var
      iFontCollection: IDWriteFontCollection;
      iFontFamily: IDWriteFontFamily;
      iLocalizedStrings: IDWriteLocalizedStrings;
      buf: array[0..LOCALE_NAME_MAX_LENGTH] of Char;
      cn: string;
      n: Cardinal;
      b: LongBool;
      i: Integer;
    begin
      ListBox1.Clear;
      LCIDToLocaleName(GetUserDefaultLangID, buf, Length(buf), 0);
      cn := buf; //'zh-CN'
      DWriteFactory.GetSystemFontCollection(iFontCollection);
      for i := 0 to iFontCollection.GetFontFamilyCount - 1 do
      begin
        iFontCollection.GetFontFamily(i, iFontFamily);
        iFontFamily.GetFamilyNames(iLocalizedStrings);
        iLocalizedStrings.FindLocaleName(cn[1], n, b);
        if not b then Continue;
        iLocalizedStrings.GetString(n, buf, Length(buf));
        ListBox1.Items.Add(buf);
      end;
    end;
    


    效果图:



  • 相关阅读:
    提高效率
    kill 挂起 Apache Web Server
    /var/spool/mail/root
    https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/connections.py
    top swap
    top load average
    Difference between exit() and sys.exit() in Python
    八进制权限掩码 3位 4位 setuid setgid sticky
    以二进制和八进制方式表示文件模式
    0 lrwxrwxrwx. 1 root root 13 Nov 20 12:44 scala -> scala-2.12.4
  • 原文地址:https://www.cnblogs.com/del/p/2012802.html
Copyright © 2011-2022 走看看