T1ASM(1)

πŸ“¦ version 2026.0, in alpine 3.24

πŸ’– T1ASM πŸ’–

okay bestie, welcome to t1asm β€” the General Commands Manual entry for the little tool that assembles PostScript Type 1 fonts πŸŽ€. yes she's niche. yes she's iconic. let's get into it ✨


✨ NAME ✨

t1asm β€” assemble PostScript Type 1 font πŸ¦‹


🌸 SYNOPSIS 🌸

t1asm [-a|-b] [-l length] [input [output]]

πŸ’… DESCRIPTION πŸ’…

so what does she actually do?? t1asm takes Adobe Type 1 font programs and assembles them into either PFA (hexadecimal) or PFB (binary) formats, starting from a human-readable form. glow-up, basically πŸ’–

  • If the file output is not specified, output goes to the standard output.
  • If the file input is not specified, input comes from the standard input.

t1asm tokenizes the charstring data and performs eexec and charstring encryption as specified in the ``black book,'' Adobe Type 1 Font Format πŸ“– no cap, that's the actual spec.

🫢 the input rules (yes there are rules)

The input must have a line of the form:

/-|{string currentfile exch readstring pop}executeonly def

which defines the command β€” in this case -| β€” that is to start charstring data. It is an error not to define such a command. 😭 Another common name for this command is RD.

After the start of the Subrs array in the input, all open braces { not in a comment begin a charstring. Such a charstring is terminated by the next non-comment close brace }.

Within such a charstring, only comments, integers, and valid charstring commands are allowed. Valid charstring command names can be found in Adobe Type 1 Font Format and other documents describing the newer Type 2 opcodes.

The format within a charstring is unimportant as long as integers and commands are separated by at least a one whitespace (space, tab, newline) character. πŸ‘ˆ seriously, she does not care about your spacing aesthetic.

⚠️ Note that within charstrings, comments are discarded because they cannot be encoded. sorry babe, your little notes are not making it to the font πŸ’€

✨ OPTIONS ✨

  • --pfa, -a β€” Output in PFA (ASCII) format. ✨
  • --pfb, -b β€” Output in PFB (binary) format. This is the default. πŸ‘‘
  • --block-length=num, -l num β€” PFB only: Set the maximum output block length to num. The default length is as large as memory allows. 🧠
  • --line-length=num, -l num β€” PFA only: Set the maximum length of encrypted lines in the output to num. (These are the lines consisting wholly of hexadecimal digits.) The default is 64. 🌈
🫢 heads up bestie: both of those last two use -l. yes, literally both. it's giving "read the docs" energy. iykyk.

πŸŽ€ EXAMPLES πŸŽ€

% t1asm Utopia-Regular.raw > Utopia-Regular.pfb
% t1asm -a Utopia-Regular.raw > Utopia-Regular.pfa

look at her go. ate that. πŸ’…


πŸ”₯ SEE ALSO πŸ”₯

Adobe Type 1 Font Format is available free from Adobe as a PDF file. http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF

The Type 2 Charstring Format, also available from Adobe as a PDF file, describes the newer Type 2 operators, which are also used in some multiple-master Type 1 fonts like Adobe Jenson and Kepler. http://partners.adobe.com/asn/developer/PDFS/TN/5177.Type2.pdf


πŸ’œ AUTHORS πŸ’œ

  • Lee Hetherington (ilh@lcs.mit.edu)
  • Eddie Kohler (ekohler@gmail.com)

and that's the whole page, bestie πŸ¦‹ this was Version 1.42 of the T1ASM(1) manual, brought to you from the General Commands Manual corner of the universe. go assemble something gorgeous πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from