[{"data":1,"prerenderedAt":764},["ShallowReactive",2],{"guide-figlet-fonts-explained":3},{"id":4,"title":5,"body":6,"date":752,"description":753,"extension":754,"meta":755,"navigation":596,"path":759,"readingTime":760,"seo":761,"stem":762,"__hash__":763},"guides\u002Fguides\u002Ffiglet-fonts-explained.md","FIGlet Fonts Explained: How Text-to-ASCII Rendering Works",{"type":7,"value":8,"toc":733},"minimark",[9,13,18,21,24,28,31,36,39,50,151,166,170,173,176,182,185,189,192,196,199,203,206,210,213,217,220,367,370,374,377,529,533,536,542,548,554,560,564,671,674,678,697,701,716,720,723,729],[10,11,12],"p",{},"Every ASCII text banner you see in a terminal or README starts life as a font definition. FIGlet, the tool that pioneered automated ASCII text rendering, uses a specific file format and a set of layout algorithms to transform plain strings into block-letter art. Understanding how FIGlet fonts work helps you pick the right style for any project.",[14,15,17],"h2",{"id":16},"a-brief-history-of-figlet","A Brief History of FIGlet",[10,19,20],{},"Leslie Ayers, Ian Chai, and Christiaan Keet created FIGlet in 1991. The name is a play on \"Frank, Ian, and Glenn's letters\" — the original contributors. FIGlet solved a simple problem: no one wanted to hand-draw large text banners for every script, welcome message, or BBS login screen.",[10,22,23],{},"FIGlet's design philosophy was straightforward. Define each character as a grid of ASCII glyphs, store those definitions in a font file, and render arbitrary strings by stitching characters together. That core approach has not changed in over three decades.",[14,25,27],{"id":26},"the-flf-font-file-format","The FLF Font File Format",[10,29,30],{},"FIGlet fonts use the FLF (FIGlet Letter Font) format. An FLF file is a plain-text file with two sections: a header and the character definitions.",[32,33,35],"h3",{"id":34},"the-header","The Header",[10,37,38],{},"The first line of an FLF file contains six fields separated by whitespace:",[40,41,46],"pre",{"className":42,"code":44,"language":45},[43],"language-text","flf2a$ 6 5 16 15 11 0\n","text",[47,48,44],"code",{"__ignoreMap":49},"",[51,52,53,66],"table",{},[54,55,56],"thead",{},[57,58,59,63],"tr",{},[60,61,62],"th",{},"Field",[60,64,65],{},"Meaning",[67,68,69,84,94,104,111,121,131,141],"tbody",{},[57,70,71,77],{},[72,73,74],"td",{},[47,75,76],{},"flf2a$",[72,78,79,80,83],{},"Magic string and hardblank character (here ",[47,81,82],{},"$",")",[57,85,86,91],{},[72,87,88],{},[47,89,90],{},"6",[72,92,93],{},"Height of each character in lines",[57,95,96,101],{},[72,97,98],{},[47,99,100],{},"5",[72,102,103],{},"Baseline position (lines from top to baseline)",[57,105,106,108],{},[72,107],{},[72,109,110],{},"Not used directly in rendering",[57,112,113,118],{},[72,114,115],{},[47,116,117],{},"16",[72,119,120],{},"Max character width",[57,122,123,128],{},[72,124,125],{},[47,126,127],{},"15",[72,129,130],{},"Number of comment lines after the header",[57,132,133,138],{},[72,134,135],{},[47,136,137],{},"11",[72,139,140],{},"Print direction — 0 for left-to-right",[57,142,143,148],{},[72,144,145],{},[47,146,147],{},"0",[72,149,150],{},"Full layout code (controls smushing rules)",[10,152,153,154,158,159,161,162,165],{},"The ",[155,156,157],"strong",{},"hardblank"," character is critical. It represents a space that should never be removed during smushing (character merging). Typically set to ",[47,160,82],{}," or ",[47,163,164],{},"@",", it prevents the gaps between character strokes from collapsing.",[32,167,169],{"id":168},"character-definitions","Character Definitions",[10,171,172],{},"After the header and comment lines, each character is defined as successive lines of text, terminated by a line containing ONLY the end marker (usually a newline-like character pair). Characters are listed in order starting from code point 32 (space).",[10,174,175],{},"A simple three-line font might define the letter \"A\" like this:",[40,177,180],{"className":178,"code":179,"language":45},[43],"  #\n # #\n#####\n#   #\n#   #\n",[47,181,179],{"__ignoreMap":49},[10,183,184],{},"Each line is exactly the same width for that character. FIGlet reads these definitions character by character and assembles them into a complete output.",[14,186,188],{"id":187},"how-rendering-works-layout-modes","How Rendering Works: Layout Modes",[10,190,191],{},"FIGlet does not simply place characters side by side. It applies layout rules to merge adjacent characters, reducing gaps and creating a more cohesive visual appearance. There are three primary layout modes.",[32,193,195],{"id":194},"full-width","Full Width",[10,197,198],{},"Characters are placed with their full defined width, including trailing spaces. No merging occurs. This produces the widest output with visible gaps between letters.",[32,200,202],{"id":201},"horizontal-fitting-kerning","Horizontal Fitting (Kerning)",[10,204,205],{},"Characters are shifted left until at least one pair of adjacent columns contains a non-space character in both the left and right characters. This tightens the output like kerning in typography.",[32,207,209],{"id":208},"smushing","Smushing",[10,211,212],{},"Smushing is the most aggressive layout mode. After kerning, FIGlet continues shifting characters left and attempts to merge overlapping characters into a single character. Smushing only works when specific rules allow the merge.",[14,214,216],{"id":215},"the-six-smushing-rules","The Six Smushing Rules",[10,218,219],{},"Smushing is governed by six rules, each controlling when two overlapping characters can merge into one. These rules are encoded in the font header's layout code.",[51,221,222,235],{},[54,223,224],{},[57,225,226,229,232],{},[60,227,228],{},"Rule",[60,230,231],{},"Name",[60,233,234],{},"Merge Condition",[67,236,237,254,272,299,331,357],{},[57,238,239,242,245],{},[72,240,241],{},"1",[72,243,244],{},"Equal Character",[72,246,247,248,251,252,83],{},"Both characters are the same (e.g., two ",[47,249,250],{},"\u002F"," merge into one ",[47,253,250],{},[57,255,256,259,262],{},[72,257,258],{},"2",[72,260,261],{},"Underscore",[72,263,264,265,268,269],{},"One character is ",[47,266,267],{},"_"," and the other is one of ",[47,270,271],{},"|\u002F,",[57,273,274,277,280],{},[72,275,276],{},"3",[72,278,279],{},"Hierarchy",[72,281,282,283,286,287,286,290,286,293,286,296],{},"One character belongs to a higher class: ",[47,284,285],{},"|"," > ",[47,288,289],{},"\u002F\\",[47,291,292],{},"[]",[47,294,295],{},"{}",[47,297,298],{},"()",[57,300,301,304,307],{},[72,302,303],{},"4",[72,305,306],{},"Opposite Pairs",[72,308,309,310,312,313,312,316,312,318,312,321,312,323,312,326,312,328],{},"Characters form a pair: ",[47,311,289],{},", ",[47,314,315],{},"\\\u002F",[47,317,298],{},[47,319,320],{},")(",[47,322,292],{},[47,324,325],{},"][",[47,327,295],{},[47,329,330],{},"}{",[57,332,333,335,338],{},[72,334,100],{},[72,336,337],{},"Big X",[72,339,340,341,161,344,347,348,350,351,354,355,83],{},"Characters combine into ",[47,342,343],{},">",[47,345,346],{},"\u003C"," (e.g., ",[47,349,250],{}," and ",[47,352,353],{},"\\"," become ",[47,356,343],{},[57,358,359,361,364],{},[72,360,90],{},[72,362,363],{},"Hardblank",[72,365,366],{},"Two hardblanks merge into a single hardblank",[10,368,369],{},"When none of the enabled rules apply, the characters cannot merge and FIGlet stops shifting. The super-smushing mode (rule 6 combined with others) produces the tightest possible output.",[14,371,373],{"id":372},"ten-popular-figlet-fonts-compared","Ten Popular FIGlet Fonts Compared",[10,375,376],{},"FIGlet ships with a standard set of fonts, and the community has contributed hundreds more. Here are ten widely used fonts with their characteristics:",[51,378,379,395],{},[54,380,381],{},[57,382,383,386,389,392],{},[60,384,385],{},"Font",[60,387,388],{},"Height",[60,390,391],{},"Style",[60,393,394],{},"Best For",[67,396,397,410,423,437,450,463,476,489,502,516],{},[57,398,399,402,404,407],{},[72,400,401],{},"Standard",[72,403,90],{},[72,405,406],{},"Classic block letters",[72,408,409],{},"General use, README headers",[57,411,412,415,417,420],{},[72,413,414],{},"Slant",[72,416,90],{},[72,418,419],{},"Italic\u002Fleaning style",[72,421,422],{},"Emphasized text, logos",[57,424,425,428,431,434],{},[72,426,427],{},"Banner",[72,429,430],{},"7",[72,432,433],{},"Wide, heavy block letters",[72,435,436],{},"Terminal welcome banners",[57,438,439,442,444,447],{},[72,440,441],{},"Block",[72,443,90],{},[72,445,446],{},"Double-stroke outlined",[72,448,449],{},"Visual hierarchy, section headers",[57,451,452,455,457,460],{},[72,453,454],{},"Digital",[72,456,90],{},[72,458,459],{},"LCD\u002F7-segment display",[72,461,462],{},"Tech-themed projects",[57,464,465,468,470,473],{},[72,466,467],{},"Small",[72,469,303],{},[72,471,472],{},"Compact lowercase-like",[72,474,475],{},"Space-constrained areas",[57,477,478,481,483,486],{},[72,479,480],{},"Shadow",[72,482,90],{},[72,484,485],{},"Characters with drop shadow",[72,487,488],{},"Decorative headers",[57,490,491,494,496,499],{},[72,492,493],{},"Speed",[72,495,303],{},[72,497,498],{},"Thin, diagonal strokes",[72,500,501],{},"Narrow terminals",[57,503,504,507,510,513],{},[72,505,506],{},"Star Wars",[72,508,509],{},"8",[72,511,512],{},"Wide cinematic style",[72,514,515],{},"Fun, entertainment projects",[57,517,518,521,523,526],{},[72,519,520],{},"Graffiti",[72,522,509],{},[72,524,525],{},"Bold, rounded strokes",[72,527,528],{},"Creative, informal contexts",[14,530,532],{"id":531},"choosing-the-right-font-for-your-project","Choosing the Right Font for Your Project",[10,534,535],{},"Consider these factors when selecting a FIGlet font:",[10,537,538,541],{},[155,539,540],{},"Terminal width constraints."," If your banner must fit in an 80-column terminal, measure the rendered width before committing. Fonts like Banner and Star Wars produce very wide output — a 10-character string can easily exceed 100 columns.",[10,543,544,547],{},[155,545,546],{},"Readability at a glance."," Some fonts prioritize style over legibility. If the text needs to be instantly readable, Standard or Slant are safer choices than Speed or Digital.",[10,549,550,553],{},[155,551,552],{},"Visual tone."," A corporate CLI tool calls for a different font than a personal dotfiles repo. Standard and Block feel professional. Shadow and Graffiti feel playful.",[10,555,556,559],{},[155,557,558],{},"Output destination."," Code comments and log files benefit from compact fonts like Small. README files and terminal splash screens have room for taller fonts like Banner.",[14,561,563],{"id":562},"practical-usage-tips","Practical Usage Tips",[40,565,569],{"className":566,"code":567,"language":568,"meta":49,"style":49},"language-bash shiki shiki-themes github-light github-dark","# List all available fonts\nfiglet -I2\n\n# Render text in a specific font\nfiglet -f slant \"Deploy\"\n\n# Center output within 80 columns\nfiglet -c -w 80 \"Hello\"\n\n# Clamp maximum width\nfiglet -w 60 \"Long Project Name\"\n","bash",[47,570,571,580,591,598,604,619,624,630,647,652,658],{"__ignoreMap":49},[572,573,576],"span",{"class":574,"line":575},"line",1,[572,577,579],{"class":578},"sJ8bj","# List all available fonts\n",[572,581,583,587],{"class":574,"line":582},2,[572,584,586],{"class":585},"sScJk","figlet",[572,588,590],{"class":589},"sj4cs"," -I2\n",[572,592,594],{"class":574,"line":593},3,[572,595,597],{"emptyLinePlaceholder":596},true,"\n",[572,599,601],{"class":574,"line":600},4,[572,602,603],{"class":578},"# Render text in a specific font\n",[572,605,607,609,612,616],{"class":574,"line":606},5,[572,608,586],{"class":585},[572,610,611],{"class":589}," -f",[572,613,615],{"class":614},"sZZnC"," slant",[572,617,618],{"class":614}," \"Deploy\"\n",[572,620,622],{"class":574,"line":621},6,[572,623,597],{"emptyLinePlaceholder":596},[572,625,627],{"class":574,"line":626},7,[572,628,629],{"class":578},"# Center output within 80 columns\n",[572,631,633,635,638,641,644],{"class":574,"line":632},8,[572,634,586],{"class":585},[572,636,637],{"class":589}," -c",[572,639,640],{"class":589}," -w",[572,642,643],{"class":589}," 80",[572,645,646],{"class":614}," \"Hello\"\n",[572,648,650],{"class":574,"line":649},9,[572,651,597],{"emptyLinePlaceholder":596},[572,653,655],{"class":574,"line":654},10,[572,656,657],{"class":578},"# Clamp maximum width\n",[572,659,661,663,665,668],{"class":574,"line":660},11,[572,662,586],{"class":585},[572,664,640],{"class":589},[572,666,667],{"class":589}," 60",[572,669,670],{"class":614}," \"Long Project Name\"\n",[10,672,673],{},"You can also use FIGlet programmatically in shell scripts to generate dynamic banners for deployment logs, CI pipelines, or server startup messages.",[14,675,677],{"id":676},"key-takeaways","Key Takeaways",[679,680,681,685,688,691,694],"ul",{},[682,683,684],"li",{},"FLF files define each ASCII character as a grid and include metadata for layout rules",[682,686,687],{},"FIGlet supports three layout modes: full width, horizontal fitting, and smushing",[682,689,690],{},"Six smushing rules control how overlapping characters merge, producing tighter output",[682,692,693],{},"Font selection depends on terminal width, readability needs, and visual tone",[682,695,696],{},"Always test rendered output in the target environment — width and rendering vary",[14,698,700],{"id":699},"related-guides","Related Guides",[679,702,703,710],{},[682,704,705],{},[706,707,709],"a",{"href":708},"\u002Fguides\u002Fascii-art-guide","ASCII Art Guide: Creating Text-Based Visual Designs",[682,711,712],{},[706,713,715],{"href":714},"\u002Fguides\u002Ftext-art-history","The History of Text Art: From Typewriters to Digital ASCII",[14,717,719],{"id":718},"try-it-yourself","Try It Yourself",[10,721,722],{},"Explore FIGlet fonts interactively with our free online ASCII Art generator. Switch between fonts, adjust width, and preview your banner before copying it to your project.",[10,724,725],{},[706,726,728],{"href":727},"\u002Ftools\u002Fascii-art","Open the ASCII Art Generator — Free Online Tool",[730,731,732],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":49,"searchDepth":582,"depth":582,"links":734},[735,736,740,745,746,747,748,749,750,751],{"id":16,"depth":582,"text":17},{"id":26,"depth":582,"text":27,"children":737},[738,739],{"id":34,"depth":593,"text":35},{"id":168,"depth":593,"text":169},{"id":187,"depth":582,"text":188,"children":741},[742,743,744],{"id":194,"depth":593,"text":195},{"id":201,"depth":593,"text":202},{"id":208,"depth":593,"text":209},{"id":215,"depth":582,"text":216},{"id":372,"depth":582,"text":373},{"id":531,"depth":582,"text":532},{"id":562,"depth":582,"text":563},{"id":676,"depth":582,"text":677},{"id":699,"depth":582,"text":700},{"id":718,"depth":582,"text":719},"2026-05-28","Deep dive into FIGlet font format and how ASCII text generators render characters using smushing, kerning, and FLF files.","md",{"keywords":756},[757,758],"ascii-art","figlet-fonts-explained","\u002Fguides\u002Ffiglet-fonts-explained",null,{"title":5,"description":753},"guides\u002Ffiglet-fonts-explained","Oq6vmVc3z5e7TolztyfyyIcSAd5nyFn0zk4ANH_u19o",1780401328041]