Fonts for BQN

This page shows samples, and a font-selectable REPL at the end, for all free fonts I know of that fully support BQN's character set:

Other than DejaVu, the versions embedded on this page are mostly small subsets and not kept up to date, so you should get your copy from the links above (unless perhaps you want to use them for embedding as well). In addition to these, Pragmata Pro and Everson Mono have full support, but each charges a significant fee for usage and I can't freely embed them here.

The table below shows samples of the whole BQN keyboard (which includes the entire BQN character set plus a few unused characters) and APL characters that don't feature in BQN.

DejaVu Sans Mono BQN
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
BQN386
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
Fairfax HD
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
3270
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
Fairfax
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
Cozette
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
Iosevka Term Extended
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
Julia Mono
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…
JetBrains Mono
`1234567890-= ~!@#$%^&*()_+
 qwertyuiop[]  QWERTYUIOP{}
 asdfghjkl;'\  ASDFGHJKL:"|
 zxcvbnm,./    ZXCVBNM<>?

˜˘¨⁼⌜´˝ ∞¯÷× ¬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆
 𝕨∊↑∧ ⊔⊏⊐π←→𝕎⍷𝕣  ⊑⊒⊣⊢
 𝕤𝕗𝕘⊸∘○⟜𝕊 𝔽𝔾« »·˙
 𝕩↓∨⌊ ≡∾≍≠   ⋈𝕏 ⍒⌈ ≢≤≥

⍬⍺⍵⍴⍳⍸⌷⍨⍤⍥⍣⊖⊂⊃⊆⊇∩∪⊥⊤⍝⍀⌿⍪
⎕⌺⌹⌸⍞⍠⌶⍱⍲⍫∇∆⍢⍙…

And here are code samples taken from this repository.

DejaVu Sans Mono BQN

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
BQN386

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
3270

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
Fairfax HD

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
Fairfax

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
Cozette

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
Iosevka Term Extended

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
Julia Mono

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}
JetBrains Mono

  c𝕩='#'s/00«sm𝕩='''d/dm𝕩='"'
  gq  s¯1d/c qgq                # Open indices
  e g⊏∾2+s 1d-»(0∾+`c)//(𝕩=lf)1 # Matching close indices
  Se{(˜𝕨)Se 1¨((𝕩/𝕨))𝕩}(0=¯1⊑⊢)       # Mark reachable openings

PrecedesGroup  {
  # We prepend a 0 to 𝕨, so that 0 is the "before start" index, with a
  # false value, and normal indices are increased by 1.
  𝕨 ˜ 0
  inds  1 + ↕≠𝕩
  # Zero out indices where 𝕩 was true, and find the greatest index so
  # far at each position.
  last  ` inds × ¬𝕩
  last  𝕨
}

Finally, a REPL where you can enter any code you like (but remember, not all characters from these fonts are embedded—just those likely to be used in BQN).