我正在为一家试图用特定字体标记自己品牌的公司开发一个应用程序。他们给了我其他产品使用的字体的所有.otf文件。是否可以设置小部件(如按钮和静态文本)上的字体以使用这些外部文件? 如果是这样,它是否与平台无关?
由于
答案 0 :(得分:2)
尚未,但很快就可能实现。我最近在wxWidgets Trac。中看到了一个关于它的补丁和讨论。
答案 1 :(得分:0)
我自己对此感兴趣,并将一些东西拼凑起来试试。我查看http://wiki.wxpython.org/UsingFonts并尝试使用wx.TheFontList.FindOrCreateFont方法尝试将字体加载到wxpython中。这失败了,因为AddFontResourceA调用返回0,这是failure code;它没有提供进一步的信息。谢谢MICROSOFT !!
如果您将字体安装到系统(假设是Windows),则字体选择有效。
我在wxpython 2.8,Windows 7 64bit和Proggy fonts
上尝试过此操作from ctypes import *
import os
gdi32= WinDLL("gdi32.dll")
font_path = os.path.abspath("ProggySquare.tff")
print font_path
print gdi32.AddFontResourceA(font_path)
import wx
class DrawPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_PAINT, self.OnPaint)
def OnPaint(self, event=None):
face = "ProggySquareTT"
prog_font = wx.TheFontList.FindOrCreateFont(28, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
def_font = wx.Font(12, wx.MODERN, wx.NORMAL, wx.NORMAL)
dc = wx.PaintDC(self)
dc.Clear()
dc.SetFont(prog_font)
dc.DrawText("Modern font Family", 50, 50)
app = wx.App(0)
frame = wx.Frame(None, title="Font Family")
DrawPanel(frame)
frame.Show()
#data = wx.FontData()
#data.EnableEffects(True)
#dlg = wx.FontDialog(None, data)
#if dlg.ShowModal() == wx.ID_OK:
# data = dlg.GetFontData()
# font = data.GetChosenFont()
#e = wx.FontEnumerator()
#e.EnumerateFacenames()
#elist= e.GetFacenames()
#elist.sort()
#print elist
app.MainLoop()