我具有被用於產生具有預定義的字體和文本的圖像的小腳本。我想改變它使用多種字體來呈現相同的文本,例如字母A
5種字體。我定義我的字體列表如下:在Python使用正則表達式來產生列表
fonts = [ 'Georgia', 'Consolas', 'Arial'
]
,然後我用它:
for item in enumerate(fonts) :
...
我想生成所有例如列表Times New Roman家庭字體。我試圖用正則表達式生成列表,但沒有運氣。我真的不知道該如何將它嵌入在列表中(帶引號,用/
在開始和結束等)
我已經試過這樣的事情:fonts = [ '/^.Times.*$/' ]
這fonts = [ '/Times.*/g' ]
,但沒有成功。
Seond問題出現了,當我想用3名字的字體像Luicida Console Regular
,然後我得到這個錯誤:
C:\Users\xxx\Desktop\test.py:46: PangoWarning: couldn't load font "Luicid
a Console 40", falling back to "Sans 40", expect ugly output.
pangctx.show_layout (layout)
看起來像腳本是從字體的名稱只得到兩個單詞。
編輯
def main():
surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
context = cairo.Context (surface)
source = context.get_source()
font = sys.argv[1]
fonts = [ 'Georgia', 'Consolas', 'Arial', 'Lucida Console', 'Times New Roman' ]
output = sys.argv[2]
text = sys.argv[3]
background = cairo.SolidPattern (255, 255, 255)
context.rectangle (0, 0, WIDTH, HEIGHT)
context.set_source (background)
context.fill()
pangctx = pangocairo.CairoContext (context)
layout = pangctx.create_layout()
layout.set_width ((WIDTH - 2 * PADDING) * pango.SCALE)
layout.set_single_paragraph_mode (True)
layout.set_wrap (pango.WRAP_CHAR)
size = 40 * pango.SCALE
spacing = 10 * pango.SCALE
markup = ''
for index, item in enumerate(fonts):
print index, item
markup += '<span font="'+ item +'" size="' + str(size) + '" letter_spacing="' + str(spacing) + '">' + text +'</span>'
layout.set_markup (markup)
pangctx.update_layout (layout)
context.new_path()
context.move_to (PADDING, PADDING)
context.set_source (source)
context.set_source_rgb (0, 0, 0)
pangctx.show_layout (layout)
surface.write_to_png (output)
編輯 看來,這仍是攀高launchpad link
爲什麼你認爲一個正則表達式在那裏是有效的,什麼是「Luicida Consol E「? – 2012-02-26 18:08:42
@ IgnacioVazquez-Abrams「Luicida Console Regular」是一種字體 - 至少在我的系統(Win7)上。 '正則表達式在那裏有效'是什麼意思? – Patryk 2012-02-26 18:15:18
不,它不是。是什麼讓你相信一個正則表達式會被你傳遞給它的任何東西所使用? – 2012-02-26 18:18:45