明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 583|回复: 3

[【高飞鸟】] 获取系统字体列表

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
下面程序可以用来获取Windows已经安装的字体列表:
  1. (defun getSysFonts (/ FONTS FONTSFOLDER I ITEM LST SH STR)
  2.   (setq sh (vlax-create-object "shell.application"))
  3.   (setq fontsFolder (vlax-invoke sh 'Namespace 20))
  4.   (vlax-release-object sh)
  5.   (setq fonts (vlax-invoke fontsFolder 'items))
  6.   (setq i 0)
  7.   (setq lst nil)
  8.   (repeat (vlax-get fonts 'count)
  9.     (setq item (vlax-invoke fonts 'item i))
  10.     (setq str (vlax-invoke fontsFolder 'GetDetailsOf item 0)) ;1是类型
  11.     (setq lst (cons str lst))
  12.     (setq i (1+ i))
  13.   )
  14.   (acad_strlsort lst)
  15. )


也可以用powershell来获取,代码为:
  1. (defun getsysFonts ( / myCommand wsh txt lst)
  2.   (setq myCommand
  3.     (strcat
  4.       "powershell.exe -WindowStyle Hidden "
  5.       "Add-Type -AssemblyName System.Drawing;"
  6.       "Write-Host '系统中已安装的字体名称 (使用 System.Drawing):'"
  7.       "(New-Object System.Drawing.Text.InstalledFontCollection).Families | Select-Object -ExpandProperty Name"
  8.     )
  9.   )
  10.   (setq wsh (vlax-create-object "wscript.shell"))
  11.   (setq res (vlax-invoke wsh 'exec myCommand))
  12.   (setq txt (vlax-invoke (vlax-get res 'stdout) 'readall))
  13.   (setq lst (cdr (mysplit txt "[FontFamily: Name=")))
  14.   (setq lst (mapcar '(lambda (x) (substr x 1 (- (strlen x) 2))) lst))
  15.   (vlax-release-object wsh)
  16.   lst
  17. )

  18. ;;;分割字符串
  19. (defun mysplit (str delim / lst i len s)
  20.   (setq len (strlen delim))
  21.   (while (setq i (vl-string-search delim str))   
  22.     (setq s (substr str 1 i))
  23.     (if (/= s "")
  24.       (setq lst (cons s lst))
  25.     )
  26.     (setq str (substr str (+ 1 len i)))
  27.   )
  28.   (if (/= str "")
  29.     (setq lst (cons str lst))
  30.   )
  31.   (reverse lst)
  32. )



也可以通过读取系统注册表来获取已安装的字体。
其它方法还有读取windows  字体目录,通过文件名来获取,不过这样获取到的一般是英文名。
大家还有什么好的方法不妨贴出来共享。

评分

参与人数 5明经币 +5 金钱 +10 收起 理由
这只胆小鬼 + 1 很给力!
tigcat + 1 + 10 感谢高版分享
1028695446 + 1 很给力!
guosheyang + 1 赞一个!
ssyfeng + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
为大佬顶一个!
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
本帖最后由 kucha007 于 2025-4-12 16:30 编辑

也是读注册表。但是Win10有两个路径:
http://bbs.mjtd.com/thread-191808-1-1.html
回复 支持 反对

使用道具 举报

发表于 前天 13:21 | 显示全部楼层
感谢大佬分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-16 08:49 , Processed in 0.246351 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表