У меня есть небольшой скрипт, который используется для создания изображения с предопределенным шрифтом и текстом. Я хотел бы изменить его, чтобы использовать несколько шрифтов для отображения одного и того же текста, например. письмо A
в 5 шрифтах. Я определяю мой список шрифтов, как:Использование регулярного выражения в Python для создания списка
fonts = [ 'Georgia', 'Consolas', 'Arial'
]
, а затем я использую его в:
for item in enumerate(fonts) :
...
Я хотел бы создать список со всеми, например, Времена Новые римские семейные шрифты. Я пытался создать список с регулярным выражением, но без везения. Я не знаю, как вставлять его в списке (в кавычках, с /
в начале и в конце, и т.д.)
Я пытался что-то вроде этого: 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)
выглядит как сценарий получает только два слова из названия шрифта.
EDIT
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)
EDIT кажется, что это все-таки ошибка в Панго launchpad link
Почему вы считаете, что существует регулярное выражение, и что, черт возьми, «Luicida Consol е "? –
@ IgnacioVazquez-Abrams «Luicida Console Regular» - это шрифт - по крайней мере, в моей системе (Win7). Что вы подразумеваете под «regex is valid there»? – Patryk
Нет, это не так. Что привело вас к мысли, что регулярное выражение будет использоваться тем, что вы передаете? –