文本到ASCI字体生成器

时间:2015-06-19 11:37:17

标签: javascript fonts

抱歉模糊的问题标题。请继续阅读,以了解我的想法。

我想创建一个以字符串作为输入并输出ASCI图像

的程序

示例 - 我的字符串是" SAY HI"

输出:

-------------------------------------------------------------------------------| 
    ------      /-------\     |||     |||   ------                             |
     ||        |||     |||    |||     |||   ||                                 |
     \\        |||__ __|||    |||__ _ |||   \\                                 | 
       ==\\    ||| _ _ |||        |||         ==\\                             |  
         ||    |||     |||        |||            ||                            |  
    ------     |||     |||        |||       ------                             |
-------------------------------------------------------------------------------|

--------------------------------------------------------------------------------|
                                                                                |
                     |||    |||  [=========]       |||                          | 
                     |||_ __|||      |||           |||                          |
                     |||__ _|||      |||           |||                          |
                     |||    |||      |||           |||                          |
                     |||    |||      |||           ___                          | 
                     |||    |||  [=========]       |__|                         | 
--------------------------------------------------------------------------------|

实现这一目标的可能方法。

1)(天真的方法)我说服自己为所有可能的字符创建一个二维字符数组,存储它们,并且在输入输入字符串时我们检查单个字符并且分别输入已经存储的二维数组对于那个角色,我们这样做直到我们到达字符串结束。

For Example: We store Char A as. 
char[][] =  
 .----------------. 
| .--------------. |
| |      __      | |
| |     /  \     | |
| |    / /\ \    | |
| |   / ____ \   | |
| | _/ /    \ \_ | |
| ||____|  |____|| |
| |              | |
| '--------------' |
 '----------------' 
Possible logic for this approach is.
foreach(str[i].....str [N])
   identifyCharacter();
   identifyTheCorrespondingCharacter2-DArray();
      iterateThroughEachRowInTheIdentifiedArray.
         printEachRowIn2-DArryInNewLine

same goes with B-Z and 0..9

不要谈论效率和最优性,上面的方法肯定远离最佳,肯定不可扩展,如果有的话,就像我们想要生成不同大小的字体一样,这种方法肯定赢得了#39 ; t帮助。

2)有足够的混淆和无效逻辑的轰炸,不知道该怎么称呼它们,我搜索了#34;文本到ASCI字体生成器",我试图查找网页并浏览前几个链接,让我走向git上的类似项目。

https://github.com/patorjk/figlet.js

哪个看起来可扩展,而且看起来很酷很酷

http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20

这个解决方案的意思是,如果我使用某种特定的语言,它可能会让我的工作更容易,只是说。我已准备好为此学习任何新工具。

那里,所以我想创建一个程序,为输入的字符串输出ASCI图像,与我提供的链接中的相同。

我们的想法是创建一个ASCI园,用户输入字符串并生成ASCI图像,此外我们为他们提供选择选项,比如用户输入字符串" house",我们创建了一个ASCI房子,而不仅仅是字符串房子的ASCI Clone。我希望你能理解我想说的话。

A house
        /\ 
       /  \        
      |....|
      |  []|
      ------

嗯,这不是一些非常有创意的精彩突破,它只是我想要的空闲时间,只是学习一些新工具的动力,只有在我现有的武器库不可能的情况下。 (c ++,PHP,Javascript)。

如果您对此有任何真诚的建议,请告诉我,如果这个问题不合适,我也很乐意让我知道,我很乐意提出这个问题。我不确定这个问题属于哪个适当的标签,我就是建议。

谢谢

1 个答案:

答案 0 :(得分:0)

你可以沿着这些方向做点什么:



var letters = {
    a : [
        ' /-------\\ ',
        '|||     |||',
        '|||__ __|||',
        '||| _ _ |||',
        '|||     |||',
        '|||     |||'
    ],
    s : [
        ' ------',
        ' ||    ',
        ' \\\\    ',
        '   ==\\\\',
        '     ||',
        '------ '
    ], 
    y :  [
        '|||     |||',
        '|||     |||',
        '|||__ _ |||',
        '    |||    ',
        '    |||    ',
        '    |||    '
    ]
};

var text = "Say";
var lines = ['', '', '', '', '', ''];

for(var i = 0; i < text.length; i++){    // For each letter,
    var letter = text[i].toLowerCase();    // Get the current letter,
    for(var j = 0; j < 6; j++){              // For each line that the letters are high,
        lines[j] += letters[letter][j] + '   ';// Add the current line to the result.
    }            // Spacer between letters ^
};
document.getElementById("result").innerHTML = lines.join("\n"); // Output the result.
&#13;
<pre id="result"></pre>
&#13;
&#13;
&#13;

您必须添加一些额外的检查以检查不存在的字符,更不用说手动添加其余字符了,但您明白了。

请记住,JS中的"\\"会在输出中转换为"\"。你需要加倍反斜杠,因为它们会自行逃避。