4,494
edits
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
With the prevalence of [[Unicode]], many systems render APL legibly out-of-the-box. However, for a uniform appearance, the font should be designed with APL in mind.<ref>Phil Chastney: ''[https://web.archive.org/web/20161005120746/http://www.chastney.com/~philip/SImPL/APL_fonts_are_different.pdf APL fonts are different]'' | With the prevalence of [[Unicode]], many systems render APL legibly out-of-the-box. However, for a uniform appearance, the font should be designed with APL in mind.<ref>Phil Chastney: ''[https://web.archive.org/web/20161005120746/http://www.chastney.com/~philip/SImPL/APL_fonts_are_different.pdf APL fonts are different]'' | ||
</ref> This article lists some fonts that are suited for APL, and how to use them. | </ref> This article lists some fonts that are suited for APL, and shows how to use them. | ||
== Monospace == | == Monospace == | ||
{|class=wikitable | {|class=wikitable | ||
Line 63: | Line 63: | ||
|- | |- | ||
| [https://typeof.net/Iosevka/ Iosevka] Recursive Mono Style || [https://github.com/be5invis/Iosevka/releases/download/v10.1.1/ttf-iosevka-fixed-ss17-10.1.1.zip GitHub] || [[File:Iosevka Recursive Mono.png|none]] | | [https://typeof.net/Iosevka/ Iosevka] Recursive Mono Style || [https://github.com/be5invis/Iosevka/releases/download/v10.1.1/ttf-iosevka-fixed-ss17-10.1.1.zip GitHub] || [[File:Iosevka Recursive Mono.png|none]] | ||
|- | |||
| [https://www.jetbrains.com/mono/ JetBrains Mono] || [https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip JetBrains] || Geometric font optimized for reading vertically. || [[File:JetBrains_Mono.png]] | |||
|- | |- | ||
| [https://codeberg.org/Wezl/fonts poultreMono] || [https://codeberg.org/attachments/042040b4-ca97-4ffe-8401-540d4921e534 Codeberg] || A 5×9 pixel font. || [[File:PoultreMono.png|none]] | | [https://codeberg.org/Wezl/fonts poultreMono] || [https://codeberg.org/attachments/042040b4-ca97-4ffe-8401-540d4921e534 Codeberg] || A 5×9 pixel font. || [[File:PoultreMono.png|none]] | ||
Line 115: | Line 117: | ||
# The APL code has to be formatted with an appropriate APL font | # The APL code has to be formatted with an appropriate APL font | ||
# The APL font has to be made available for those users that do not have it installed | # The APL font has to be made available for those users that do not have it installed | ||
All these things can be achieved by inserting the following into the <syntaxhighlight lang=html inline><head></syntaxhighlight> element of the page | All these things can be achieved by inserting the following into the <syntaxhighlight lang=html inline><head></syntaxhighlight> element of the page. | ||
Replace font name and file name with values corresponding to the desired font: | |||
<syntaxhighlight lang=html> | <syntaxhighlight lang=html> | ||
<meta charset="UTF-8"> | <meta charset="UTF-8"> | ||
<style> | <style> | ||
@font-face{ | @font-face { | ||
font-family: APL; src: local("APL385 Unicode"), url(Apl385.ttf) | font-family: APL; | ||
src: local("APL385 Unicode"), url(Apl385.ttf) | |||
} | } | ||
pre, code { | pre, code { | ||
Line 127: | Line 131: | ||
</style> | </style> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
The <syntaxhighlight lang=shell inline>Apl385.ttf</syntaxhighlight> file must | The <syntaxhighlight lang=shell inline>Apl385.ttf</syntaxhighlight> font file must be placed in the same directory as the HTML file, and all APL code must be wrapped in <syntaxhighlight lang=html inline><pre></syntaxhighlight> or <syntaxhighlight lang=html inline><code></syntaxhighlight> elements. | ||
== Bad rendering == | |||
The [[wikipedia:Blink browser engine]] instructs the [[wikipedia:HarfBuzz]] text shaping engine to prefer fidelity in typeface over fidelity in glyph shape. As a consequence, text using a font that lacks the <syntaxhighlight lang=apl inline>≢</syntaxhighlight> glyph ([[Tally]], [[Not Match]]) often ends up looking like <syntaxhighlight lang=apl inline>≡/</syntaxhighlight> (Match reduction), causing great confusion. The issue affects diverse things like Android WebView, Chromium Embedded Framework, all [[wikipedia:Electron (softwareframework)|Electron]] apps, [[wikipedia:Qt software)|Qt software)]], as well as many popular web browsers, like Amazon Silk, Google Chrome, Microsoft Edge, Brave, Opera, Vivaldi, and the Yandex Browser. | |||
In browsers, it is possible to mitigate the problem by overriding the used font, for example using a user style manager, or by setting the browser to override fonts. | |||
== Changing font in Dyalog RIDE == | == Changing font in Dyalog RIDE == |