!/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. java 计算器基于工厂模式和功能单一模式

    import java.util.Scanner; public class CaculationTest { public static void main(String[] args) { Sca ...

  2. socket模块

    1 1.1 server: #!/use/local/env python# -*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1', 99 ...

  3. vi 常用命令行

    vi 常用命令行 1.vi 模式  a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了.  b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作.等按下‘i,I ...

  4. Floating Action Button(漂浮按钮)

    参考:http://blog.csdn.net/pengkv/article/details/46427891 效果图: 步骤一: 在build.gradle添加以下代码,导入包 dependenci ...

  5. asp.net之ajax

    ajax主要的作用是无刷新的情况进行提交. 常用于客户端组件信息的提交.服务器组件在asp.net中能够正常的提交,而html组件则不能正常提交,在此情况下,就可以采用jquery的方式进行数据的异步 ...

  6. 让Js顺序执行且回调之

    <script src="aaa"></script> <script type="aaasdf" id="asdf&q ...

  7. android dimens 读取 px&dp问题

    1.dimens.xml文件:     <resources> <dimen name="area_margin_top">100dp</dimen& ...

  8. asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码

    用 asp.net获取当前网页地址的一些信息. 设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http:// ...

  9. Message,MessageQueue,Looper,Handler详解+实例

    Message,MessageQueue,Looper,Handler详解+实例 原文地址 Android的Handler使用(这篇简单介绍Handler的使用) 一.几个关键概念 1.Message ...

  10. Hibernate3.3用户手册摘要-1-辅助类,session

    1.1.6. 启动和辅助类 是时候来加载和储存一些 Event 对象了,但首先我们得编写一些基础的代码以完成设置.我们必须启动 Hibernate,此过程包括创建一个全局的 SessoinFactor ...