!/usr/bin/env python

from future import print_function

import os.path

import sys

from optparse import OptionParser

from pyfiglet import Figlet

from subprocess import Popen, PIPE

try:

from colorama import init

init(strip=not sys.stdout.isatty())

from termcolor import cprint

except:

def cprint(text, color):

print(text)

version = '0.1'

def fail(text):

cprint(text, 'red')

def win(text):

cprint(text, 'green')

def dump(text):

for line in text.split('\n'):

print(repr(line))

class Test(object):

def init(self, opts):

self.opts = opts

self.ok = 0

self.fail = 0

self.failed = []

self.oked = []

# known bugs...

self.skip = ['runic', 'pyramid', 'eftifont', 'DANC4', 'dietcola']

# Toilet fonts that we don't handle identically, yet

self.skip += ['emboss', 'emboss2', 'future', 'letter', 'pagga',

'smblock', 'smbraille', 'wideterm']

# fonts that throw Unicode decoding errors

self.skip += ['dosrebel', 'konto', 'kontoslant']

self.f = Figlet()

def outputUsingFigletorToilet(self, text, font, fontpath):
if os.path.isfile(fontpath + '.flf'):
cmd = ('figlet', '-d', 'pyfiglet/fonts', '-f', font, text)
elif os.path.isfile(fontpath + '.tlf'):
cmd = ('toilet', '-d', 'pyfiglet/fonts', '-f', font, text)
else:
raise Exception('Missing font file: {}'.format(fontpath)) p = Popen(cmd, bufsize=4096, stdout=PIPE)
try:
outputFiglet = p.communicate()[0].decode('utf8')
except UnicodeDecodeError as e:
print("Unicode Error handling font {}".format(font))
outputFiglet = ''
return outputFiglet def validate_font_output(self, font, outputFiglet, outputPyfiglet):
if outputPyfiglet == outputFiglet:
win('[OK] %s' % font)
self.ok += 1
self.oked.append(font)
return fail('[FAIL] %s' % font)
self.fail += 1
self.failed.append(font)
self.show_result(outputFiglet, outputPyfiglet, font) def show_result(self, outputFiglet, outputPyfiglet, font):
if self.opts.show is True:
print('[PYTHON] *** %s\n\n' % font)
dump(outputPyfiglet)
print('[FIGLET] *** %s\n\n' % font)
dump(outputFiglet)
raw_input() def check_font(self, text, font):
if font in self.skip:
return
fontpath = os.path.join('pyfiglet', 'fonts', font) self.f.setFont(font=font) outputPyfiglet = self.f.renderText(text)
outputFiglet = self.outputUsingFigletorToilet(text, font, fontpath) # Our TLF rendering isn't perfect, yet
strict = os.path.isfile(fontpath + '.flf')
if not strict:
outputPyfiglet = outputPyfiglet.strip('\n')
outputFiglet = outputFiglet.strip('\n') self.validate_font_output(font, outputFiglet, outputPyfiglet) def check_text(self, text):
for font in self.f.getFonts():
self.check_font(text, font) def check_result(self):
print('OK = %d, FAIL = %d' % (self.ok, self.fail))
if len(self.failed) > 0:
print('FAILED = %s' % repr(self.failed)) return self.failed, self.oked

def banner(text):

cprint(Figlet().renderText(text), "blue")

def main():

parser = OptionParser(version=version)

parser.add_option('-s', '--show', action='store_true', default=False,
help='pause at each failure and compare output '
'(default: %default)') opts, args = parser.parse_args()
test = Test(opts)
banner("Hangzhou,shit")
test.check_text("foo")
banner("TESTING cut at space")
test.check_text("This is a very long text with many spaces and little words")
banner("TESTING cut at last char")
test.check_text("Averylongwordthatwillbecutatsomepoint I hope")
banner("TESTING explicit new line")
test.check_text("this text\nuse new line")
if len(test.check_result()[0]) == 0:
return 0
else:
return 1

if name == 'main':

sys.exit(main())

python实现字体闪图的更多相关文章

  1. flutter 新增安卓ios 闪图

    ios 中新增闪图 flutter 中用xcode 打开 ios 项目 ios 在 Asset.xcassets中新增图片 如果 图片名称不一样需要修改配置文件 Contents.json 2.在安卓 ...

  2. 使用python绘制根轨迹图

    最近在学自动控制原理,发现根轨迹这一张全是绘图的,然而书上教的全是使用matlab进行计算机辅助绘图.但国内对于使用python进行这种绘图的资料基本没有,后来发现python-control包已经将 ...

  3. python爬虫我是斗图之王

    python爬虫我是斗图之王 本文会以斗图啦网站为例,爬取所有表情包. 阅读之前需要对线程池.连接池.正则表达式稍作了解. 分析网站 页面url分析 打开斗图啦网站,简单翻阅之后发现最新表情每页包含的 ...

  4. 酷炫字体背景图的实现——神奇的background-clip: text

    愉快的时光总是飞快,七天小长假已接近尾声,抓住假期的尾巴,再学个新知识点——css的background-clip: text属性...会不会有种陌生的感觉,毕竟在我们的印象里,background- ...

  5. Python绘制语谱图+时域波形

    """Python绘制语谱图""" """Python绘制时域波形""" # 导 ...

  6. Python程序设计基本方法图

    Python程序设计基本方法图

  7. 用Python实现一个Picgo图床工具

    PyPicGo PyPicGo 是一款图床工具,是PicGo是Python版实现,并支持各种插件自定义插件,目前PyPicGo自带了gitee.github.SM.MS和七牛云图传,以及rename. ...

  8. python批量制作雷达图

    老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...

  9. [Python Study Notes]折线图绘制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

随机推荐

  1. 采用PHP函数uniqid生成一个唯一的ID

    http://www.daimajiayuan.com/sitejs-17815-1.html

  2. 暂且解决INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误

    有时候我们在APK安装时由于工程制定了UID,换过签名后可能出现 类似 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 或 INSTALL_FAILED_UPDATE_ ...

  3. XML中CDATA及其字符实体的使用

    在写xml文档时,偶尔会用到一些特殊字符,如<.>.&等,如下面这段程序: <?xml version="1.0"?> <y>if x& ...

  4. Unicode基本概念

    Unicode是计算机可以支持这个星球上多种语言的秘密武器.通过使用一个或者多个字节来表示一个字符的方法突破了ASCII的限制.Unicode可以表示超过90000个字符. 使用方式:a=u'hell ...

  5. 在jQuery EasyUI中实现对DataGrid进行编辑

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  6. C#实现通过模板自动创建Word文档的方法

    原文地址:http://www.jb51.net/article/55332.htm   本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...

  7. oracle参数与启停

    oracle随系统启动而启动 cs65-64桌面版orcle-11.2.0.4 启动监听器,后台进程,OEM. 注意: 如果只做一和三,只能启动后台进程,监听器不启动,如果只做二和三,只能启动监听器, ...

  8. 【转】UVa Problem 100 The 3n+1 problem (3n+1 问题)——(离线计算)

    // The 3n+1 problem (3n+1 问题) // PC/UVa IDs: 110101/100, Popularity: A, Success rate: low Level: 1 / ...

  9. 【转】Android Drawable Resource学习(十一)、RotateDrawable

    对另一个drawable资源,基于当前的level,进行旋转的drawable. 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDra ...

  10. android数据存储之Sqlite(一)

    SQLite学习笔记 1. Sqlite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...