注册 登录
编程论坛 VFP论坛

如果字体不存在,换另外一种字体,怎么写代码?

su0527 发布于 2017-11-24 10:07, 1952 次点击
比如label1的字体设置为“幼圆”,如果电脑中没有装该字体,则设置label1的字体为“微软雅黑”,如果该字体也没有在该电脑中安装,则设置label1的字体为“宋体”。
请问代码如何写?
5 回复
#2
吹水佬2017-11-24 10:31
可以先看看字体信息再作处理。
AFONT(aFontName)                    && 取字体
FOR i = 1 TO ALEN(aFontName)
    AFONT(aFontSize, aFontName[i])  && 取字体的字号
    cMsg = IIF((aFontSize[1] == -1), "可缩放字体","不可缩放字体")+","
    cMsg = cMsg + aFontName[i] +","
    FOR j = 1 TO ALEN(aFontSize)
      cMsg = cMsg + " " + TRANSFORM(aFontSize[j])
    ENDFOR
    ? cMsg
    IF ((i % 20) == 0)
        WAIT
    ENDIF
ENDFOR
? "结束.............."




#3
su05272017-11-25 12:24
回复 2楼 吹水佬
接下来如何处理?
只能选用可放缩字体吗?


[此贴子已经被作者于2017-11-25 12:26编辑过]

#4
su05272017-11-25 12:49
吹水佬,如下可否:
if afont(s,"幼圆")=.t.       &&返回值为真,说明该字体可用
thisform.label1.fontname="幼圆"
else
if afont(s,"微软雅黑")=.t.
thisform.label1.fontname="微软雅黑"
else
thisform.label1.fontname="宋体"
endif
endif
#5
吹水佬2017-11-25 15:08
以下是引用su0527在2017-11-25 12:49:31的发言:

吹水佬,如下可否:
if afont(s,"幼圆")=.t.       &&返回值为真,说明该字体可用
thisform.label1.fontname="幼圆"
else
if afont(s,"微软雅黑")=.t.
thisform.label1.fontname="微软雅黑"
else
thisform.label1.fontname="宋体"
endif
endif

可以,也可以这样:
AFONT(arr)
thisform.label1.fontname = ICASE(;
    ASCAN(arr,"幼圆")>0,"幼圆",;
    ASCAN(arr,"微软雅黑")>0,"微软雅黑","宋体")
#6
gs25367856782018-02-18 08:21
我一直用[宋体]
1