racket / drracket

DrRacket, IDE for Racket
http://www.racket-lang.org/
Other
444 stars 93 forks source link

Some text in UI shown entirely as hex Unicode blocks #492

Open rrthomas opened 3 years ago

rrthomas commented 3 years ago

I'm using Racket 8.1 from the Ubuntu PPA with Ubuntu 20.04.

Some text in the UI is shown entirely as hex codes, e.g. in the REPL; see the screenshot (the same also applies to the Help→About DrRacket dialog).

I ran drracket with no ~/.racket directory, to avoid any problem caused by my settings.

I feel I'm missing something obvious…I have my Interface Text font set to Cantarell Regular (GNOME default), which is working fine, my Monospace Text font set to Source Code Pro Medium, which seems to be working too, and my Document Text font set to Noto Sans Regular, which should work fine (I tried changing it to Cantarell, but to no avail).

Screenshot from 2021-06-17 16-09-20

rrthomas commented 2 years ago

I'm still having exactly this problem with Racket 8.3.

rrthomas commented 2 years ago

I note that the hex values include ASCII codepoints likely to be present in any normal font, suggesting that DrRacket is specifically asking for a font that I don't have and then falling back to showing codepoints!

rfindler commented 2 years ago

Have you tried building on your own machine? I think that if you have the build-essentials package installed, it should be straightforward to make a build: just type 'make' in the top level directory.

Robby

rrthomas commented 2 years ago

@rfindler No I haven't; what would that be likely to tell me?

rfindler commented 2 years ago

I was just guessing that something about the machine where it was built might have leaked in, in a bad way, and your symptom might go away.

Robby

On Sun, Nov 28, 2021 at 2:58 PM Reuben Thomas @.***> wrote:

@rfindler https://github.com/rfindler No I haven't; what would that be likely to tell me?

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/racket/drracket/issues/492#issuecomment-981150948, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADBNMBGQ22U4YBQVTNWGD3UOKJWZANCNFSM4634OHTQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

rrthomas commented 2 years ago

@rfindler I am building! Will report back.

rfindler commented 2 years ago

@takikawa do you have any ideas?

rrthomas commented 2 years ago

Identical result with Racket built from latest git master.

rfindler commented 2 years ago

Not very helpful, but I built from git on an ubuntu 20 vm and I see the characters properly.

Does this program produce a window with the bad output for you?

#lang racket/gui
(define t (new text%))
(define f (new frame% [label ""] [width 400] [height 400]))
(define ec (new editor-canvas% [parent f] [editor t]))
(define sd (make-object style-delta% 'change-family 'decorative))
(send t insert "abcdef")
(send t change-style sd 0 (send t last-position))
(send f show #t)
rrthomas commented 2 years ago

I get a parse error:

read-syntax: illegal use of `[`

on the first [.

rfindler commented 2 years ago

To run this program you would need to put it into a file, say, tmp.rkt and then, at the command line, run racket tmp.rkt or, if you are running from within DrRacket, choose the "Language | Choose Language..." menu item and select "The Racket Language" (radio button at the top).

Does either of those work?

rrthomas commented 2 years ago

Sorry, I haven't used DrRacket much! I thought it had auto-detected the language. After selecting the right language, the code runs and produces a box of the familiar Unicode hex codes.

rfindler commented 2 years ago

I'd like to ask you to change a specific file in your version of Racket and then check to see if that improves things. Here's how:

1) start drracket 2) use the file|Open Require Path... menu item, type in ra/dr/pr/font-dir and hit return 3) Go to line 59, where you should see this expression:

        [(decorative swiss) (case (system-type)
                              [(windows) "Arial"]
                              [else "Helvetica"])]

4) change it to this:

        [(decorative swiss) (case (system-type)
                              [(windows) "Arial"]
                              [(macosx) "Helvetica"]
                              [else "Nimbus Sans"])]

5) restart drracket and let us know if that fixed things.

Thanks!

rrthomas commented 2 years ago

That worked! So could the problem be that I do have Helvetica?

$ fc-list |grep Helvetica
/home/rrt/.local/share/fonts/HV______.pfb: Helvetica:style=Regular
/home/rrt/.fonts/HVB_____.pfb: Helvetica:style=Bold
/home/rrt/.local/share/fonts/HVO_____.pfb: Helvetica:style=Oblique
/home/rrt/.fonts/HVBO____.pfb: Helvetica:style=Bold Oblique
/home/rrt/.fonts/HV______.pfb: Helvetica:style=Regular
/home/rrt/.local/share/fonts/HVB_____.pfb: Helvetica:style=Bold
/home/rrt/.fonts/HVO_____.pfb: Helvetica:style=Oblique
/home/rrt/.local/share/fonts/HVBO____.pfb: Helvetica:style=Bold Oblique
rfindler commented 2 years ago

What result do you get from calling (get-face-list) (it'll work in the REPL of the previous program)?

rrthomas commented 2 years ago

Does not include Helvetica, despite my having it installed and found by fontconfig!

> (get-face-list)
'("10.15 Saturday Night BRK"
  "10.15 Saturday Night R BRK"
  "18 Holes BRK"
  "36 days ago BRK"
  "36 days ago Thick BRK"
  "3D LET BRK"
  "8-bit Limit BRK"
  "8-bit Limit O BRK"
  "8-bit Limit R BRK"
  "8-bit Limit RO BRK"
  "90 Stars BRK"
  "ALM Fixed"
  "AR PL KaitiM Big5"
  "AR PL KaitiM GB"
  "AR PL Mingti2L Big5"
  "AR PL SungtiL GB"
  "AR PL UKai CN"
  "AR PL UKai HK"
  "AR PL UKai TW"
  "AR PL UKai TW MBE"
  "AR PL UMing CN"
  "AR PL UMing HK"
  "AR PL UMing TW"
  "AR PL UMing TW MBE"
  "Abydos"
  "Abyssinica SIL"
  "Accanthis ADF Std"
  "Accanthis ADF Std No2"
  "Accanthis ADF Std No3"
  "Acid Reflux BRK"
  "Acknowledge TT BRK"
  "Adobe Caslon"
  "Adobe Caslon Alternate"
  "Adobe Caslon Expert"
  "Adobe Caslon Oldstyle Figures"
  "Adobe Caslon Ornaments"
  "Adobe Caslon OsF"
  "Adobe Caslon Pro"
  "Adobe Caslon Semibold"
  "Adobe Caslon Semibold Alternate"
  "Adobe Caslon Semibold Expert"
  "Adobe Caslon SemiboldSC"
  "Adobe Caslon Small Caps & Oldst"
  "Adobe Caslon Swash"
  "Adobe Caslon Swash Semibold"
  "Adobe Pi Std"
  "Aegean"
  "Aegyptus"
  "Aftermath BRK"
  "Akkadian"
  "Alegreya"
  "Alegreya SC"
  "Alegreya Sans"
  "Alegreya Sans SC"
  "Alexander"
  "Alfios"
  "AlgolRevived"
  "Alpha Beta BRK"
  "Amalgamate BRK"
  "Amalgamate O BRK"
  "Amiri"
  "Amiri Quran"
  "Amiri Quran Colored"
  "Amplitude BRK"
  "Anaktoria"
  "Analecta"
  "Anatolian"
  "Andale Mono"
  "Ani"
  "AnjaliOldLipi"
  "Antykwa Poltawskiego"
  "Antykwa Poltawskiego Light"
  "Antykwa Torunska"
  "Antykwa Torunska Condensed"
  "Apple Color Emoji"
  "Arial"
  "Arial Black"
  "Arimo"
  "Aroania"
  "Arthritis BRK"
  "Asana Math"
  "Asap"
  "Asea"
  "Aspartame BRK"
  "Assyrian"
  "Atavyros"
  "Ataxia BRK"
  "Ataxia Outline BRK"
  "Automatica BRK"
  "Avdira"
  "Backlash BRK"
  "Baekmuk Batang"
  "Baekmuk Dotum"
  "Baekmuk Gulim"
  "Baekmuk Headline"
  "Bandwidth BRK"
  "Bandwidth Bandless BRK"
  "Bandwidth Bandmess BRK"
  "Baskervaldx"
  "BaskervilleF"
  "Bend 2 Squares BRK"
  "Bend 2 Squares OL1 BRK"
  "Bend 2 Squares OL2 BRK"
  "Bendable BRK"
  "Berenis ADF Pro"
  "Berenis ADF Pro Math"
  "Beuron"
  "Beuron Condensed"
  "Beuron Extended"
  "Bewilder BRK"
  "Bewilder Thick BRK"
  "Binary 01s BRK"
  "Binary BRK"
  "Binary CHR BRK"
  "Binary X 01s BRK"
  "Binary X BRK"
  "Binary X CHR BRK"
  "Bit Blocks TTF BRK"
  "Bitstream Vera Sans"
  "Bitstream Vera Sans Mono"
  "Bitstream Vera Serif"
  "Blackoninaut BRK"
  "Blackoninaut Bold BRK"
  "Blackoninaut Redux BRK"
  "Bleak Segments BRK"
  "Block Tilt BRK"
  "Blox BRK"
  "Bobcaygeon BRK"
  "Bobcaygeon Plain BRK"
  "Bocuma Angle BRK"
  "Bocuma Angle Dent BRK"
  "Bocuma BRK"
  "Bocuma Batty BRK"
  "Bocuma Dent BRK"
  "Brass Knuckle BRK"
  "Brass Knuckle SS BRK"
  "Brass Knuckle Star BRK"
  "Brigadoom BRK"
  "Brigadoom Wide BRK"
  "Brioso Pro"
  "Bryce"
  "Bumped BRK"
  "C059"
  "C4 Text"
  "CCIcons"
  "CLAW 1 BRK"
  "CLAW 2 BRK"
  "CMU Bright"
  "CMU Classical Serif"
  "CMU Concrete"
  "CMU Sans Serif"
  "CMU Sans Serif Demi Condensed"
  "CMU Serif"
  "CMU Serif Extra"
  "CMU Serif Upright Italic"
  "CMU Typewriter Text"
  "CMU Typewriter Text Variable Width"
  "Cabin"
  "Cabin Condensed"
  "Caladea"
  "Calibri"
  "Cambria"
  "Candara"
  "Candy Stripe BRK"
  "Cantarell"
  "Carlito"
  "Chandas"
  "Charter"
  "Chemical Reaction A BRK"
  "Chemical Reaction B BRK"
  "Chilanka"
  "Chintzy CPU BRK"
  "Chintzy CPU Shadow BRK"
  "Chivo"
  "ChopinScript"
  "Chumbly BRK"
  "Circulate BRK"
  "Clara"
  "Classic Trash 1 BRK"
  "Classic Trash 2 BRK"
  "Cleaved TTR BRK"
  "Cochineal"
  "Code Of Life BRK"
  "Coelacanth"
  "Collective O BRK"
  "Collective RO BRK"
  "Collective RS BRK"
  "Collective S BRK"
  "Combustion I BRK"
  "Combustion II BRK"
  "Combustion Plain BRK"
  "Combustion Tall BRK"
  "Combustion Wide BRK"
  "Comfortaa"
  "Comic Neue"
  "Comic Neue Angular"
  "Comic Sans MS"
  "Compliant Confuse 1o BRK"
  "Compliant Confuse 1s BRK"
  "Compliant Confuse 2o BRK"
  "Compliant Confuse 2s BRK"
  "Compliant Confuse 3o BRK"
  "Compliant Confuse 3s BRK"
  "Conduit 2 BRK"
  "Conduit 2 Italics BRK"
  "Conduit BRK"
  "Consolas"
  "Constantia"
  "Corbel"
  "Corpulent Caps BRK"
  "Corpulent Caps Shadow BRK"
  "Countries of Europe"
  "Courier New"
  "Courier Std"
  "Cousine"
  "Crackdown O1 BRK"
  "Crackdown O2 BRK"
  "Crackdown R BRK"
  "Crackdown R2 BRK"
  "Cretan Hieroglyphs"
  "Crimson"
  "Cyklop"
  "Cypro-Minoan"
  "D050000L"
  "DANTE"
  "DB Layer 1 BRK"
  "DB Layer 2 BRK"
  "DB Layer 3 BRK"
  "DB Layer 4 BRK"
  "Dark Side BRK"
  "Dash Dot BRK"
  "Dastardly BRK"
  "Decrepit BRK"
  "DejaVu Math TeX Gyre"
  "DejaVu Sans"
  "DejaVu Sans Mono"
  "DejaVu Serif"
  "Dented BRK"
  "Dephunked BRK"
  "Detonate BRK"
  "Dijkstra"
  "Discordance BRK"
  "Domitian"
  "Double Bogey BRK"
  "Draggle BRK"
  "Draggle over kerned BRK"
  "Droid Sans Fallback"
  "Dynamic BRK"
  "Dyphusion BRK"
  "Dystorque BRK"
  "Dyuthi"
  "EB Garamond"
  "EB Garamond 12 All SC"
  "EB Garamond Initials"
  "EB Garamond Initials Fill1"
  "EB Garamond Initials Fill2"
  "EB Garamond SC"
  "Ecliptic BRK"
  "Edit Undo BRK"
  "Edit Undo Dot BRK"
  "Edit Undo Line BRK"
  "Elsewhere 2 BRK"
  "Elsewhere BRK"
  "Embossing Tape 1 BRK"
  "Embossing Tape 2 BRK"
  "Embossing Tape 3 BRK"
  "Encapsulate BRK"
  "Encapsulate Plain BRK"
  "Entangled BRK"
  "Entangled Layer A BRK"
  "Entangled Layer B BRK"
  "Entangled Plain BRK"
  "Enthuse BRK"
  "Enthuse Solid BRK"
  "Erewhon Math"
  "Euphoric 3D BRK"
  "Euphoric BRK"
  "Exaggerate BRK"
  "Extraction BRK"
  "False Positive BRK"
  "False Positive Round BRK"
  "Fandol Braille"
  "FandolFang"
  "FandolHei"
  "FandolKai"
  "FandolSong"
  "Fascii BRK"
  "Fascii Cross BRK"
  "Fascii Scraggly BRK"
  "Fascii Smudge BRK"
  "Fascii Twigs BRK"
  "Fatboy Slim BLTC 2 BRK"
  "Fatboy Slim BLTC BRK"
  "Faux Snow BRK"
  "FdSymbol"
  "Fedorovsk Unicode"
  "Fetamont"
  "Fetamont Script"
  "Fidgety BRK"
  "Fira Math"
  "Fira Mono"
  "Fira Sans"
  "Flipside BRK"
  "Font Awesome 5 Brands"
  "Font Awesome 5 Free"
  "FontAwesome"
  "Fontin"
  "Fontin SmallCaps"
  "Forcible BRK"
  "Foreshadow BRK"
  "Foreshadow OL BRK"
  "FoulisGreek"
  "FourierOrns"
  "Franklin Gothic Book"
  "Franklin Gothic Demi"
  "Franklin Gothic Demi Cond"
  "Franklin Gothic Heavy"
  "Franklin Gothic Medium"
  "Franklin Gothic Medium Cond"
  "Freak Turbulence BRK"
  "Frederika2016"
  "FreeMono"
  "FreeSans"
  "FreeSerif"
  "FreeSerifb"
  "Frizzed BRK"
  "Fully Completely BRK"
  "GFS Artemisia"
  "GFS Baskerville"
  "GFS Bodoni"
  "GFS Complutum"
  "GFS Didot"
  "GFS DidotClassic"
  "GFS Neohellenic"
  "GFS Neohellenic Math"
  "GFS Olga"
  "GFS Porson"
  "GFS Solomos"
  "GLYPHICONS Halflings"
  "Galapogos BRK"
  "Galvanize BRK"
  "Gaposis Outline BRK"
  "Gaposis Solid BRK"
  "Garamond Libre"
  "Garamond-Math"
  "Gardiner"
  "Gargi"
  "Garuda"
  "Gasping BRK"
  "Gather BRK"
  "Gather Gapped BRK"
  "Gayathri"
  "Gentium"
  "Gentium Basic"
  "Gentium Book Basic"
  "Gentium Plus"
  "Gentium Plus Compact"
  "GentiumAlt"
  "Georgia"
  "Gesture BRK"
  "Gesture Slant BRK"
  "Gesture Thin BRK"
  "Gesture Thin Slant BRK"
  "Gillius ADF"
  "Gillius ADF Cond"
  "Gillius ADF No2"
  "Gillius ADF No2 Cond"
  "Go"
  "Go Medium"
  "Go Mono"
  "Go Smallcaps"
  "Goose Bumps BRK"
  "Goose Bumps II BRK"
  "Granular BRK"
  "Grapple BRK"
  "Graveyard BRK"
  "Gravitate BRK"
  "Gravitate Segments BRK"
  "Graze BRK"
  "Great Heights BRK"
  "Grecs du Roi WG"
  "Grotesque BRK"
  "Grudge 2 BRK"
  "Grudge BRK"
  "Gubbi"
  "Gyneric 3D BRK"
  "Gyneric BRK"
  "Gyrose BRK"
  "Gyrose Shift BRK"
  "Gyrose Squeeze BRK"
  "Hack"
  "Hack & Slash BRK"
  "Hairball BRK"
  "Hand Me Down O BRK"
  "Hand Me Down S BRK"
  "Harano Aji Gothic"
  "Harano Aji Mincho"
  "Hassle BRK"
  "Head-Ding Maker BRK"
  "Hearts BRK"
  "Heavy Bevel BRK"
  "Heuristica"
  "Hillock BRK"
  "Homespun TT BRK"
  "Hyde BRK"
  "Hyperion Sunset BRK"
  "IBM Plex Mono"
  "IBM Plex Sans"
  "IBM Plex Sans Condensed"
  "IBM Plex Serif"
  "IM FELL English"
  "IM FELL English SC"
  "IPAGothic"
  "IPAMincho"
  "IPAPGothic"
  "IPAPMincho"
  "IPAexGothic"
  "IPAexMincho"
  "ITC Stone Informal"
  "Impact"
  "Impossibilium BRK"
  "Inconsolata"
  "InconsolataN"
  "Inconsolatazi4"
  "Indiction Unicode"
  "Inertia BRK"
  "Inevitable BRK"
  "Ink Swipes BRK"
  "Ink Tank BRK"
  "Inria Sans"
  "Inria Serif"
  "Intersect BRK"
  "Intersect C BRK"
  "Intersect O BRK"
  "Irritate BRK"
  "It Lives In The Swamp BRK"
  "Iwona"
  "Iwona Cond"
  "Iwona Cond Heavy"
  "Iwona Cond Light"
  "Iwona Cond Medium"
  "Iwona Heavy"
  "Iwona Light"
  "Iwona Medium"
  "Jagged BRK"
  "Jamrul"
  "Janken BRK"
  "Jargon BRK"
  "Jasper BRK"
  "Jasper Solid BRK"
  "Jawbreaker BRK"
  "Jawbreaker Hard BRK"
  "Jawbreaker OL1 BRK"
  "Jawbreaker OL2 BRK"
  "Jekyll BRK"
  "Jeopardize BRK"
  "Jeopardize Thick BRK"
  "Johnny Mac Scrawl BRK"
  "Jolt Of Caffeine BRK"
  "Junicode"
  "Jupiter Crash BRK"
  "KacstArt"
  "KacstBook"
  "KacstDecorative"
  "KacstDigital"
  "KacstFarsi"
  "KacstLetter"
  "KacstNaskh"
  "KacstOffice"
  "KacstOne"
  "KacstPen"
  "KacstPoster"
  "KacstQurn"
  "KacstScreen"
  "KacstTitle"
  "KacstTitleL"
  "Kalapi"
  "Kaliber Round BRK"
  "Kaliber Solid BRK"
  "Kaliber Xtreme BRK"
  "Kalimati"
  "Karumbi"
  "Katalyst active BRK"
  "Katalyst inactive BRK"
  "Keraleeyam"
  "Kerkis"
  "Kerkis-Calligraphic"
  "Kerkis-SemiBold"
  "KerkisSans"
  "Key Ridge BRK"
  "Key Ridge alt BRK"
  "Khmer OS"
  "Khmer OS System"
  "Kickflip BRK"
  "Kinkaid BRK"
  "Kinnari"
  "Kirby No Kira Kizzu BRK"
  "Knot BRK"
  "Konector BRK"
  "Konector Eerie BRK"
  "Konector O1 BRK"
  "Konector O2 BRK"
  "Kurier"
  "Kurier Cond"
  "Kurier Cond Heavy"
  "Kurier Cond Light"
  "Kurier Cond Medium"
  "Kurier Heavy"
  "Kurier Light"
  "Kurier Medium"
  "Kurvature BRK"
  "LKLUG"
  "LYNX BRK"
  "Lakeshore BRK"
  "Laksaman"
  "Lamebrain BRK"
  "Larkspur BRK"
  "Latin Modern Math"
  "Latin Modern Mono"
  "Latin Modern Mono Caps"
  "Latin Modern Mono Light"
  "Latin Modern Mono Light Cond"
  "Latin Modern Mono Prop"
  "Latin Modern Mono Prop Light"
  "Latin Modern Mono Slanted"
  "Latin Modern Roman"
  "Latin Modern Roman Caps"
  "Latin Modern Roman Demi"
  "Latin Modern Roman Dunhill"
  "Latin Modern Roman Slanted"
  "Latin Modern Roman Unslanted"
  "Latin Modern Sans"
  "Latin Modern Sans Demi Cond"
  "Latin Modern Sans Quotation"
  "Lato"
  "Lethargic BRK"
  "Liberation Mono"
  "Liberation Sans"
  "Liberation Sans Narrow"
  "Liberation Serif"
  "Libertinus Keyboard"
  "Libertinus Math"
  "Libertinus Mono"
  "Libertinus Sans"
  "Libertinus Serif"
  "Libertinus Serif Display"
  "Libertinus Serif Initials"
  "Libre Baskerville"
  "Libre Bodoni"
  "Libre Caslon Text"
  "Libre Franklin"
  "Licorice Strings BRK"
  "Lights Out BRK"
  "Likhan"
  "Line Dings BRK"
  "Linguistics Pro"
  "Linux Biolinum Keyboard O"
  "Linux Biolinum O"
  "Linux Libertine Display O"
  "Linux Libertine Initials O"
  "Linux Libertine Mono O"
  "Linux Libertine O"
  "Lobster Two"
  "Logix"
  "Lohit Assamese"
  "Lohit Bengali"
  "Lohit Devanagari"
  "Lohit Gujarati"
  "Lohit Gurmukhi"
  "Lohit Kannada"
  "Lohit Malayalam"
  "Lohit Odia"
  "Lohit Tamil"
  "Lohit Tamil Classical"
  "Lohit Telugu"
  "Loma"
  "Loopy BRK"
  "Lowdown BRK"
  "Lucid Type A BRK"
  "Lucid Type A Outline BRK"
  "Lucid Type B BRK"
  "Lucid Type B Outline BRK"
  "Luxi Mono"
  "Luxi Sans"
  "Luxi Serif"
  "Lyneous BRK"
  "Lyneous Linear BRK"
  "Macropsia BRK"
  "Mad's Scrawl BRK"
  "Manjari"
  "MathJax_AMS"
  "MathJax_Caligraphic"
  "MathJax_Fraktur"
  "MathJax_Main"
  "MathJax_Math"
  "MathJax_SansSerif"
  "MathJax_Script"
  "MathJax_Size1"
  "MathJax_Size2"
  "MathJax_Size3"
  "MathJax_Size4"
  "MathJax_Typewriter"
  "MathJax_Vector"
  "MathJax_Vector-Bold"
  "MathJax_WinChrome"
  "MathJax_WinIE6"
  "Maya"
  "MdSymbol"
  "Meera"
  "Menaion Unicode"
  "Miama Nueva"
  "Mincer BRK"
  "Mini Kaliber O TT BRK"
  "Mini Kaliber S TT BRK"
  "Minion Pro"
  "Mint Spirit"
  "Mint Spirit No2"
  "Mishmash 4x4i BRK"
  "Mishmash 4x4o BRK"
  "Mishmash ALT1 BRK"
  "Mishmash ALT2 BRK"
  "Mishmash BRK"
  "Mishmash Fuse BRK"
  "Miss Fajardose"
  "Missaali"
  "Mitra Mono"
  "MnSymbol"
  "Mobilize BRK"
  "Monkey Phonics BRK"
  "Monomakh Unicode"
  "Monospace"
  "Montserrat"
  "Montserrat Alternates"
  "Moronic Misfire BRK"
  "Mukti Narrow"
  "Musica"
  "Myriad Pro"
  "Mysterons BRK"
  "Nakula"
  "Nanosecond Thick BRK"
  "Nanosecond Thin BRK"
  "Nanosecond Wide BRK"
  "NanumBarunGothic"
  "NanumGothic"
  "NanumMyeongjo"
  "NanumSquare"
  "NanumSquareRound"
  "Naughts BRK"
  "Navilu"
  "Neural BRK"
  "Neural Outline BRK"
  "NewCM Sans"
  "NewComputerModern"
  "NewComputerModern Math"
  "NewComputerModern Mono"
  "NewComputerModern Sans"
  "Nilus"
  "Nimbus Mono"
  "Nimbus Mono PS"
  "Nimbus Roman"
  "Nimbus Sans"
  "Nimbus Sans L"
  "Nimbus Sans Narrow"
  "Nominal BRK"
  "Norasi"
  "Nostalgia BRK"
  "Not Quite Right BRK"
  "Noto Color Emoji"
  "Noto Kufi Arabic"
  "Noto Mono"
  "Noto Music"
  "Noto Naskh Arabic"
  "Noto Naskh Arabic UI"
  "Noto Nastaliq Urdu"
  "Noto Sans"
  "Noto Sans Adlam"
  "Noto Sans Adlam Unjoined"
  "Noto Sans Anatolian Hieroglyphs"
  "Noto Sans Arabic"
  "Noto Sans Arabic UI"
  "Noto Sans Armenian"
  "Noto Sans Avestan"
  "Noto Sans Bamum"
  "Noto Sans Bassa Vah"
  "Noto Sans Batak"
  "Noto Sans Bengali"
  "Noto Sans Bengali UI"
  "Noto Sans Bhaiksuki"
  "Noto Sans Brahmi"
  "Noto Sans Buginese"
  "Noto Sans Buhid"
  "Noto Sans CJK HK"
  "Noto Sans CJK JP"
  "Noto Sans CJK KR"
  "Noto Sans CJK SC"
  "Noto Sans CJK TC"
  "Noto Sans Canadian Aboriginal"
  "Noto Sans Carian"
  "Noto Sans Caucasian Albanian"
  "Noto Sans Chakma"
  "Noto Sans Cham"
  "Noto Sans Cherokee"
  "Noto Sans Coptic"
  "Noto Sans Cuneiform"
  "Noto Sans Cypriot"
  "Noto Sans Deseret"
  "Noto Sans Devanagari"
  "Noto Sans Devanagari UI"
  "Noto Sans Display"
  "Noto Sans Duployan"
  "Noto Sans Egyptian Hieroglyphs"
  "Noto Sans Elbasan"
  "Noto Sans Ethiopic"
  "Noto Sans Georgian"
  "Noto Sans Glagolitic"
  "Noto Sans Gothic"
  "Noto Sans Grantha"
  "Noto Sans Gujarati"
  "Noto Sans Gujarati UI"
  "Noto Sans Gunjala Gondi"
  "Noto Sans Gurmukhi"
  "Noto Sans Gurmukhi UI"
  "Noto Sans Hanifi Rohingya"
  "Noto Sans Hanunoo"
  "Noto Sans Hatran"
  "Noto Sans Hebrew"
  "Noto Sans Imperial Aramaic"
  "Noto Sans Indic Siyaq Numbers"
  "Noto Sans Inscriptional Pahlavi"
  "Noto Sans Inscriptional Parthian"
  "Noto Sans Javanese"
  "Noto Sans Kaithi"
  "Noto Sans Kannada"
  "Noto Sans Kannada UI"
  "Noto Sans Kayah Li"
  "Noto Sans Kharoshthi"
  "Noto Sans Khmer"
  "Noto Sans Khmer UI"
  "Noto Sans Khojki"
  "Noto Sans Khudawadi"
  "Noto Sans Lao"
  "Noto Sans Lao UI"
  "Noto Sans Lepcha"
  "Noto Sans Limbu"
  "Noto Sans Linear A"
  "Noto Sans Linear B"
  "Noto Sans Lisu"
  "Noto Sans Lycian"
  "Noto Sans Lydian"
  "Noto Sans Mahajani"
  "Noto Sans Malayalam"
  "Noto Sans Malayalam UI"
  "Noto Sans Mandaic"
  "Noto Sans Manichaean"
  "Noto Sans Marchen"
  "Noto Sans Masaram Gondi"
  "Noto Sans Math"
  "Noto Sans Mayan Numerals"
  "Noto Sans Meetei Mayek"
  "Noto Sans Mende Kikakui"
  "Noto Sans Meroitic"
  "Noto Sans Miao"
  "Noto Sans Modi"
  "Noto Sans Mongolian"
  "Noto Sans Mono"
  "Noto Sans Mono CJK HK"
  "Noto Sans Mono CJK JP"
  "Noto Sans Mono CJK KR"
  "Noto Sans Mono CJK SC"
  "Noto Sans Mono CJK TC"
  "Noto Sans Mro"
  "Noto Sans Multani"
  "Noto Sans Myanmar"
  "Noto Sans Myanmar UI"
  "Noto Sans NKo"
  "Noto Sans Nabataean"
  "Noto Sans New Tai Lue"
  "Noto Sans Newa"
  "Noto Sans Ogham"
  "Noto Sans Ol Chiki"
  "Noto Sans Old Hungarian"
  "Noto Sans Old Italic"
  "Noto Sans Old North Arabian"
  "Noto Sans Old Permic"
  "Noto Sans Old Persian"
  "Noto Sans Old Sogdian"
  "Noto Sans Old South Arabian"
  "Noto Sans Old Turkic"
  "Noto Sans Oriya"
  "Noto Sans Oriya UI"
  "Noto Sans Osage"
  "Noto Sans Osmanya"
  "Noto Sans Pahawh Hmong"
  "Noto Sans Palmyrene"
  "Noto Sans Pau Cin Hau"
  "Noto Sans PhagsPa"
  "Noto Sans Phoenician"
  "Noto Sans Psalter Pahlavi"
  "Noto Sans Rejang"
  "Noto Sans Runic"
  "Noto Sans Samaritan"
  "Noto Sans Saurashtra"
  "Noto Sans Sharada"
  "Noto Sans Shavian"
  "Noto Sans Siddham"
  "Noto Sans Sinhala"
  "Noto Sans Sinhala UI"
  "Noto Sans Sogdian"
  "Noto Sans Sora Sompeng"
  "Noto Sans Soyombo"
  "Noto Sans Sundanese"
  "Noto Sans Syloti Nagri"
  "Noto Sans Symbols"
  "Noto Sans Symbols2"
  "Noto Sans Syriac"
  "Noto Sans Tagalog"
  "Noto Sans Tagbanwa"
  "Noto Sans Tai Le"
  "Noto Sans Tai Tham"
  "Noto Sans Tai Viet"
  "Noto Sans Takri"
  "Noto Sans Tamil"
  "Noto Sans Tamil Supplement"
  "Noto Sans Tamil UI"
  "Noto Sans Telugu"
  "Noto Sans Telugu UI"
  "Noto Sans Thaana"
  "Noto Sans Thai"
  "Noto Sans Thai UI"
  "Noto Sans Tibetan"
  "Noto Sans Tifinagh"
  "Noto Sans Tirhuta"
  "Noto Sans Ugaritic"
  "Noto Sans Vai"
  "Noto Sans Wancho"
  "Noto Sans Warang Citi"
  "Noto Sans Yi"
  "Noto Sans Zanabazar Square"
  "Noto Serif"
  "Noto Serif Ahom"
  "Noto Serif Armenian"
  "Noto Serif Balinese"
  "Noto Serif Bengali"
  "Noto Serif CJK JP"
  "Noto Serif CJK KR"
  "Noto Serif CJK SC"
  "Noto Serif CJK TC"
  "Noto Serif Devanagari"
  "Noto Serif Display"
  "Noto Serif Dogra"
  "Noto Serif Ethiopic"
  "Noto Serif Georgian"
  "Noto Serif Gujarati"
  "Noto Serif Gurmukhi"
  "Noto Serif Hebrew"
  "Noto Serif Kannada"
  "Noto Serif Khmer"
  "Noto Serif Lao"
  "Noto Serif Malayalam"
  "Noto Serif Myanmar"
  "Noto Serif Sinhala"
  "Noto Serif Tamil"
  "Noto Serif Tamil Slanted"
  "Noto Serif Tangut"
  "Noto Serif Telugu"
  "Noto Serif Thai"
  "Noto Serif Tibetan"
  "NovelDeco"
  "Nucleus BRK"
  "Numskull BRK"
  "Nymonak BRK"
  "Obloquy Outline BRK"
  "Obloquy Solid BRK"
  "Obstacle BRK"
  "Obstacle Lines BRK"
  "Off Kilter L BRK"
  "Off Kilter R BRK"
  "Old Glory"
  "Old Standard"
  "Open Sans"
  "Open Sans Condensed"
  "OpenDyslexic"
  "OpenDyslexicAlta"
  "OpenDyslexicMono"
  "OpenSymbol"
  "Opiated BRK"
  "Opus"
  "Opus Chords"
  "Opus Chords Sans"
  "Opus Chords Sans Condensed"
  "Opus Figured Bass"
  "Opus Figured Bass Extras"
  "Opus Function Symbols"
  "Opus Metronome"
  "Opus Note Names"
  "Opus Ornaments"
  "Opus Percussion"
  "Opus PlainChords"
  "Opus Roman Chords"
  "Opus Special"
  "Opus Special Extra"
  "Opus Text"
  "Orbicular BRK"
  "Outer Sider BRK"
  "Overhead BRK"
  "P052"
  "Padauk"
  "Padauk Book"
  "Pagul"
  "Pecita"
  "Perfect Dark BRK"
  "Persuasion BRK"
  "Phaistos"
  "Phetsarath OT"
  "Philokalia"
  "Phorfeit Regular BRK"
  "Phorfeit Slant BRK"
  "Pigiarniq"
  "Pincers BRK"
  "Pindown BRK"
  "Pindown Plain BRK"
  "Pindown X BRK"
  "Pindown X Plain BRK"
  "Pixel Krud BRK"
  "Plasma Drip BRK"
  "Plasma Drip Empty BRK"
  "Playfair Display"
  "Pneumatics BRK"
  "Pneumatics Tall BRK"
  "Pneumatics Wide BRK"
  "Pomorsky"
  "Ponomar Unicode"
  "Pothana2000"
  "Powderworks BRK"
  "ProSyl"
  "Pseudo BRK"
  "Punk Nova"
  "Purisa"
  "QTAbbie"
  "QTAgateType"
  "QTAncientOlive"
  "QTAntiquePost"
  "QTArabian"
  "QTArnieB"
  "QTArtiston"
  "QTAtchen"
  "QTAvanti"
  "QTBasker"
  "QTBeckman"
  "QTBengal"
  "QTBlackForest"
  "QTBlimpo"
  "QTBodini"
  "QTBodiniPoster"
  "QTBookmann"
  "QTBoulevard"
  "QTBrushStroke"
  "QTCaligulatype"
  "QTCanaithtype"
  "QTCascadetype"
  "QTCaslan"
  "QTCaslanOpen"
  "QTCasual"
  "QTChanceryType"
  "QTChicagoland"
  "QTClaytablet"
  "QTCloisteredMonk"
  "QTCoronation"
  "QTDeuce"
  "QTDingBits"
  "QTDoghaus"
  "QTDoghausHeavy"
  "QTDoghausLight"
  "QTDublinIrish"
  "QTEraType"
  "QTEurotype"
  "QTFloraline"
  "QTFlorencia"
  "QTFraktur"
  "QTFrank"
  "QTFrankHeavy"
  "QTFrizQuad"
  "QTFuture"
  "QTFuturePoster"
  "QTGaromand"
  "QTGhoulFace"
  "QTGraphLite"
  "QTGraveure"
  "QTGreece"
  "QTHandwriting"
  "QTHeidelbergType"
  "QTHelvet-Black"
  "QTHelvet-BoldOutline"
  "QTHelvetCnd"
  "QTHelvetCnd-Black"
  "QTHelvetCnd-Light"
  "QTHoboken"
  "QTHowardType"
  "QTHowardTypeFat"
  "QTImpromptu"
  "QTJupiter"
  "QTKooper"
  "QTKorrin"
  "QTKung-Fu"
  "QTLautrecType"
  "QTLetterGoth"
  "QTLinoscroll"
  "QTLinostroke"
  "QTLondonScroll"
  "QTMagicMarker"
  "QTMerryScript"
  "QTMilitary"
  "QTOKCorral"
  "QTOKCorral-Cnd"
  "QTOKCorral-Ext"
  "QTOldGoudy"
  "QTOptimum"
  "QTPalatine"
  "QTPandora"
  "QTParisFrance"
  "QTPeignoir"
  "QTPeignoir-Lite"
  "QTPiltdown"
  "QTPristine"
  "QTRobotic2000"
  "QTSanDiego"
  "QTSchoolCentury"
  "QTSlogantype"
  "QTSnowCaps"
  "QTStoryTimeCaps"
  "QTTechtone"
  "QTTheatre"
  "QTTimeOutline"
  "QTTumbleweed"
  "QTUSA-Uncial"
  "QTVagaRound"
  "QTWeise"
  "QTWestEnd"
  "Qbicle 1 BRK"
  "Qbicle 2 BRK"
  "Qbicle 3 BRK"
  "Qbicle 4 BRK"
  "Qlumpy BRK"
  "Qlumpy Shadow BRK"
  "Quacksalver BRK"
  "Quadratic BRK"
  "Quadratic Cal BRK"
  "Quandary BRK"
  "Quantum Flat BRK"
  "Quantum Flat Hollow BRK"
  "Quantum Round BRK"
  "Quantum Round Hollow BRK"
  "Quantum Taper BRK"
  "Quarantine BRK"
  "Quarterly Thick BRK"
  "Quarterly Thin BRK"
  "Quattrocento"
  "Quattrocento Sans"
  "Queasy BRK"
  "Queasy Outline BRK"
  "Quicksand"
  "Quicksand Light"
  "Quicksand Medium"
  "Quill Experimental O BRK"
  "Quill Experimental S BRK"
  "Quivira"
  "Rachana"
  "RaghuMalayalamSans"
  "Raleway"
  "Rambling BRK"
  "Rasa"
  "Ravaged By Years BRK"
  "Ravenous Caterpillar BRK"
  "Raydiate BRK"
  "Reason BRK"
  "Reason Shadow BRK"
  "Redundant BRK"
  "Regenerate BRK"
  "Registry BRK"
  "Rehearsal Curve BRK"
  "Rehearsal Offset BRK"
  "Rehearsal Point BRK"
  "Rekha"
  "Relapse BRK"
  "Reprise"
  "Reprise Chords"
  "Reprise Metronome"
  "Reprise Rehearsal"
  "Reprise Script"
  "Reprise Special"
  "Reprise Stamp"
  "Reprise Text"
  "Reprise Title"
  "Revert BRK"
  "Revert Round BRK"
  "Roboto"
  "Roboto Condensed"
  "Roboto Mono"
  "Roboto Slab"
  "Rosario"
  "Rotund BRK"
  "Rotund Outline BRK"
  "Rough Day BRK"
  "Ryuker BRK"
  "STEP"
  "STEP Math"
  "STIX"
  "STIX Math"
  "STIX Two Math"
  "STIX Two Text"
  "STIXGeneral"
  "STIXIntegralsD"
  "STIXIntegralsSm"
  "STIXIntegralsUp"
  "STIXIntegralsUpD"
  "STIXIntegralsUpSm"
  "STIXNonUnicode"
  "STIXSizeFiveSym"
  "STIXSizeFourSym"
  "STIXSizeOneSym"
  "STIXSizeThreeSym"
  "STIXSizeTwoSym"
  "STIXVariants"
  "SVRsymbols"
  "Saab"
  "Sahadeva"
  "Samanata"
  "Samyak Devanagari"
  "Samyak Gujarati"
  "Samyak Malayalam"
  "Samyak Tamil"
  "Sanchez"
  "Sans"
  "Sans Forgetica"
  "Sarai"
  "Sarcastic BRK"
  "SauceCodePro NF"
  "SauceCodePro Nerd Font"
  "SauceCodePro Nerd Font Mono"
  "Saunder BRK"
  "Sawasdee"
  "Scalelines BRK"
  "Scalelines Maze BRK"
  "Semafor"
  "Sequence BRK"
  "Serif"
  "Setback TT BRK"
  "Shobhika"
  "Sideways BRK"
  "Simpleton BRK"
  "Skull Capz BRK"
  "Slender BRK"
  "Slender Mini BRK"
  "Slender Stubby BRK"
  "Slender Wide BRK"
  "Snailets BRK"
  "Source Code Pro"
  "Source Sans Pro"
  "Source Serif Pro"
  "Spacious BRK"
  "Spacious Outline BRK"
  "Spastic BRK"
  "Spheroids BRK"
  "Spheroids X BRK"
  "Splatz BRK"
  "Square Route BRK"
  "Stagnation BRK"
  "Standard Symbols PS"
  "Stranded BRK"
  "Supra Genius Curves BRK"
  "Supra Genius Lines BRK"
  "Suruma"
  "Swirled BRK"
  "Symbola"
  "Symmetry BRK"
  "Syndrome BRK"
  "Synthetic BRK"
  "Syracuse BRK"
  "System-ui"
  "TRAGIC BRK"
  "Tahoma"
  "TakaoPGothic"
  "TeX Gyre Adventor"
  "TeX Gyre Bonum"
  "TeX Gyre Bonum Math"
  "TeX Gyre Chorus"
  "TeX Gyre Cursor"
  "TeX Gyre DejaVu Math"
  "TeX Gyre Heros"
  "TeX Gyre Heros Cn"
  "TeX Gyre Pagella"
  "TeX Gyre Pagella Math"
  "TeX Gyre PagellaX"
  "TeX Gyre Schola"
  "TeX Gyre Schola Math"
  "TeX Gyre ScholaX"
  "TeX Gyre Termes"
  "TeX Gyre Termes Math"
  "TeX Gyre TermesX"
  "Tearful BRK"
  "Technique BRK"
  "Technique OL BRK"
  "Telephasic BRK"
  "Tempora"
  "Tetricide BRK"
  "Theano Didot"
  "Theano Modern"
  "Theano Old Style"
  "Thwart BRK"
  "Tibetan Machine Uni"
  "Times New Roman"
  "Tinos"
  "Tiresias Infofont"
  "Tiresias Infofont Z"
  "Tiresias Keyfont V2"
  "Tiresias LPfont"
  "Tiresias PCfont"
  "Tiresias PCfont Z"
  "Tiresias Signfont"
  "Tiresias Signfont Z"
  "Tlwg Mono"
  "Tlwg Typewriter"
  "Tlwg Typist"
  "Tlwg Typo"
  "Tonik BRK"
  "Trebuchet MS"
  "Turmoil BRK"
  "Typesource Extol O BRK"
  "Typesource Extol S BRK"
  "UM Typewriter"
  "UNITED BRK"
  "URW Bookman"
  "URW Gothic"
  "Ubiquity BRK"
  "Ubuntu"
  "Ubuntu Condensed"
  "Ubuntu Mono"
  "Ubuntu-Title"
  "Ume Gothic"
  "Ume Gothic C4"
  "Ume Gothic C5"
  "Ume Gothic O5"
  "Ume Gothic S4"
  "Ume Gothic S5"
  "Ume Hy Gothic"
  "Ume Hy Gothic O5"
  "Ume Mincho"
  "Ume Mincho S3"
  "Ume P Gothic"
  "Ume P Gothic C4"
  "Ume P Gothic C5"
  "Ume P Gothic O5"
  "Ume P Gothic S4"
  "Ume P Gothic S5"
  "Ume P Mincho"
  "Ume P Mincho S3"
  "Ume UI Gothic"
  "Ume UI Gothic O5"
  "Umpush"
  "UnBatang"
  "UnDinaru"
  "UnDotum"
  "UnGraphic"
  "UnGungseo"
  "UnJamoBatang"
  "UnJamoDotum"
  "UnJamoNovel"
  "UnJamoSora"
  "UnPen"
  "UnPenheulim"
  "UnPilgi"
  "UnPilgia"
  "UnShinmun"
  "UnTaza"
  "UnVada"
  "UnYetgul"
  "Unanimous BRK"
  "Unanimous Inverted BRK"
  "Underscore 2 BRK"
  "Underscore BRK"
  "Underwhelmed BRK"
  "Underwhelmed Outline BRK"
  "Unexplored Galaxies BRK"
  "Unexplored Galaxies O BRK"
  "Unexplored Galaxies W BRK"
  "Unexplored Galaxies WO BRK"
  "Unidings"
  "Unifont"
  "Unifont CSUR"
  "Unifont Upper"
  "Universalis ADF Std"
  "Unlearned 2 BRK"
  "Unlearned BRK"
  "Unresponsive BRK"
  "Upheaval TT BRK"
  "Upraise BRK"
  "Uroob"
  "VL Gothic"
  "VL PGothic"
  "Vacant Capz BRK"
  "Vanished BRK"
  "Vantage BRK"
  "Variance BRK"
  "Vemana2000"
  "Verdana"
  "Vertigo 2 BRK"
  "Vertigo BRK"
  "Vertigo Upright 2 BRK"
  "Vertigo Upright BRK"
  "Vigilance BRK"
  "Vindictive BRK"
  "Visitor TT1 BRK"
  "Visitor TT2 BRK"
  "Volatile 1 BRK"
  "Volatile 2 BRK"
  "Vollkorn"
  "Wager BRK"
  "Wager Lost BRK"
  "Wager Won BRK"
  "Waree"
  "Wayward BRK"
  "Wayward Shadow BRK"
  "Weathered BRK"
  "Weathered Solid BRK"
  "Weaver BRK"
  "Webdings"
  "WenQuanYi Micro Hei"
  "WenQuanYi Micro Hei Mono"
  "WenQuanYi Zen Hei"
  "WenQuanYi Zen Hei Mono"
  "WenQuanYi Zen Hei Sharp"
  "Whatever BRK"
  "Whippersnapper BRK"
  "Wiggly Squiggly BRK"
  "Wincing BRK"
  "Wingdings"
  "Wingdings 2"
  "Wingdings 3"
  "Withstand BRK"
  "Wobbly BRK"
  "Wyvern Wings BRK"
  "Wyvern Wings Wyde BRK"
  "XCharter"
  "XITS"
  "XITS Math"
  "Xerox Malfunction BRK"
  "Xhume BRK"
  "Xipital BRK"
  "Xmas Lights BRK"
  "Xtrusion BRK"
  "Yearend BRK"
  "Yesterday BRK"
  "Yielding BRK"
  "Yinit"
  "Yonder BRK"
  "Yoshi's Story game text BRK"
  "Your Complex BRK"
  "Your Complex I BRK"
  "Your Complex O BRK"
  "Yrsa"
  "Z003"
  "Zelda DX TT BRK"
  "Zenith BRK"
  "Zephyrean BRK"
  "Zephyrean Gust BRK"
  "Zero Velocity BRK"
  "Zirconia BRK"
  "Zirconia Cubic BRK"
  "Zoetrope BRK"
  "Zoidal BRK"
  "Zurklez Outline BRK"
  "Zurklez Solid BRK"
  "aakar"
  "cmex10"
  "cmmi10"
  "cmr10"
  "cmsy10"
  "consensus"
  "drm10"
  "drm11"
  "drm12"
  "drm14"
  "drm17"
  "drm24"
  "drm6"
  "drm7"
  "drm8"
  "drm9"
  "drmb10"
  "drmb11"
  "drmb12"
  "drmb14"
  "drmb17"
  "drmb24"
  "drmb6"
  "drmb7"
  "drmb8"
  "drmb9"
  "drmbx10"
  "drmbx11"
  "drmbx12"
  "drmbx14"
  "drmbx17"
  "drmbx24"
  "drmbx6"
  "drmbx7"
  "drmbx8"
  "drmbx9"
  "drmdoz10"
  "drmdoz11"
  "drmdoz12"
  "drmdoz14"
  "drmdoz17"
  "drmdoz24"
  "drmdoz6"
  "drmdoz7"
  "drmdoz8"
  "drmdoz9"
  "drmdozb10"
  "drmdozb11"
  "drmdozb12"
  "drmdozb14"
  "drmdozb17"
  "drmdozb24"
  "drmdozb6"
  "drmdozb7"
  "drmdozb8"
  "drmdozb9"
  "drmdozbx10"
  "drmdozbx11"
  "drmdozbx12"
  "drmdozbx14"
  "drmdozbx17"
  "drmdozbx24"
  "drmdozbx6"
  "drmdozbx7"
  "drmdozbx8"
  "drmdozbx9"
  "drmdozit10"
  "drmdozit11"
  "drmdozit12"
  "drmdozit14"
  "drmdozit17"
  "drmdozit24"
  "drmdozit6"
  "drmdozit7"
  "drmdozit8"
  "drmdozit9"
  "drmdozitbx10"
  "drmdozitbx11"
  "drmdozitbx12"
  "drmdozitbx14"
  "drmdozitbx17"
  "drmdozitbx24"
  "drmdozitbx6"
  "drmdozitbx7"
  "drmdozitbx8"
  "drmdozitbx9"
  "drmdozitsc10"
  "drmdozitsc11"
  "drmdozitsc12"
  "drmdozitsc14"
  "drmdozitsc17"
  "drmdozitsc24"
  "drmdozitsc6"
  "drmdozitsc7"
  "drmdozitsc8"
  "drmdozitsc9"
  "drmdozittc10"
  "drmdozittc11"
  "drmdozittc12"
  "drmdozittc14"
  "drmdozittc17"
  "drmdozittc24"
  "drmdozittc6"
  "drmdozittc7"
  "drmdozittc8"
  "drmdozittc9"
  "drmdozl10"
  "drmdozl11"
  "drmdozl12"
  "drmdozl14"
  "drmdozl17"
  "drmdozl24"
  "drmdozl6"
  "drmdozl7"
  "drmdozl8"
  "drmdozl9"
  "drmdozsc10"
  "drmdozsc11"
  "drmdozsc12"
  "drmdozsc14"
  "drmdozsc17"
  "drmdozsc24"
  "drmdozsc6"
  "drmdozsc7"
  "drmdozsc8"
  "drmdozsc9"
  "drmdozscbx10"
  "drmdozscbx11"
  "drmdozscbx12"
  "drmdozscbx14"
  "drmdozscbx17"
  "drmdozscbx24"
  "drmdozscbx6"
  "drmdozscbx7"
  "drmdozscbx8"
  "drmdozscbx9"
  "drmdozsl10"
  "drmdozsl11"
  "drmdozsl12"
  "drmdozsl14"
  "drmdozsl17"
  "drmdozsl24"
  "drmdozsl6"
  "drmdozsl7"
  "drmdozsl8"
  "drmdozsl9"
  "drmdoztc10"
  "drmdoztc11"
  "drmdoztc12"
  "drmdoztc14"
  "drmdoztc17"
  "drmdoztc24"
  "drmdoztc6"
  "drmdoztc7"
  "drmdoztc8"
  "drmdoztc9"
  "drmdoztcbx10"
  "drmdoztcbx11"
  "drmdoztcbx12"
  "drmdoztcbx14"
  "drmdoztcbx17"
  "drmdoztcbx24"
  "drmdoztcbx6"
  "drmdoztcbx7"
  "drmdoztcbx8"
  "drmdoztcbx9"
  "drmdozui10"
  "drmdozui11"
  "drmdozui12"
  "drmdozui14"
  "drmdozui17"
  "drmdozui24"
  "drmdozui6"
  "drmdozui7"
  "drmdozui8"
  "drmdozui9"
  "drmdozuibx10"
  "drmdozuibx11"
  "drmdozuibx12"
  "drmdozuibx14"
  "drmdozuibx17"
  "drmdozuibx24"
  "drmdozuibx6"
  "drmdozuibx7"
  "drmdozuibx8"
  "drmdozuibx9"
  "drmfigs10"
  "drmfigs11"
  "drmfigs12"
  "drmfigs14"
  "drmfigs17"
  "drmfigs24"
  "drmfigs6"
  "drmfigs7"
  "drmfigs8"
  "drmfigs9"
  "drmgrk10"
  "drminf10"
  "drminf11"
  "drminf12"
  "drminf14"
  "drminf17"
  "drminf24"
  "drminf6"
  "drminf7"
  "drminf8"
  "drminf9"
  "drmit10"
  "drmit11"
  "drmit12"
  "drmit14"
  "drmit17"
  "drmit24"
  "drmit6"
  "drmit7"
  "drmit8"
  "drmit9"
  "drmitbx10"
  "drmitbx11"
  "drmitbx12"
  "drmitbx14"
  "drmitbx17"
  "drmitbx24"
  "drmitbx6"
  "drmitbx7"
  "drmitbx8"
  "drmitbx9"
  "drmitsc10"
  "drmitsc11"
  "drmitsc12"
  "drmitsc14"
  "drmitsc17"
  "drmitsc24"
  "drmitsc6"
  "drmitsc7"
  "drmitsc8"
  "drmitsc9"
  "drmittc10"
  "drmittc11"
  "drmittc12"
  "drmittc14"
  "drmittc17"
  "drmittc24"
  "drmittc6"
  "drmittc7"
  "drmittc8"
  "drmittc9"
  "drml10"
  "drml11"
  "drml12"
  "drml14"
  "drml17"
  "drml24"
  "drml6"
  "drml7"
  "drml8"
  "drml9"
  "drmmi10"
  "drmsc10"
  "drmsc11"
  "drmsc12"
  "drmsc14"
  "drmsc17"
  "drmsc24"
  "drmsc6"
  "drmsc7"
  "drmsc8"
  "drmsc9"
  "drmscbx10"
  "drmscbx11"
  "drmscbx12"
  "drmscbx14"
  "drmscbx17"
  "drmscbx24"
  "drmscbx6"
  "drmscbx7"
  "drmscbx8"
  "drmscbx9"
  "drmsl10"
  "drmsl11"
  "drmsl12"
  "drmsl14"
  "drmsl17"
  "drmsl24"
  "drmsl6"
  "drmsl7"
  "drmsl8"
  "drmsl9"
  "drmsy10"
  "drmsym10"
  "drmsym11"
  "drmsym12"
  "drmsym14"
  "drmsym17"
  "drmsym24"
  "drmsym7"
  "drmsym8"
  "drmsym9"
  "drmtc10"
  "drmtc11"
  "drmtc12"
  "drmtc14"
  "drmtc17"
  "drmtc24"
  "drmtc6"
  "drmtc7"
  "drmtc8"
  "drmtc9"
  "drmtcbx10"
  "drmtcbx11"
  "drmtcbx12"
  "drmtcbx14"
  "drmtcbx17"
  "drmtcbx24"
  "drmtcbx6"
  "drmtcbx7"
  "drmtcbx8"
  "drmtcbx9"
  "drmui10"
  "drmui11"
  "drmui12"
  "drmui14"
  "drmui17"
  "drmui24"
  "drmui6"
  "drmui7"
  "drmui8"
  "drmui9"
  "drmuibx10"
  "drmuibx11"
  "drmuibx12"
  "drmuibx14"
  "drmuibx17"
  "drmuibx24"
  "drmuibx6"
  "drmuibx7"
  "drmuibx8"
  "drmuibx9"
  "dsrom10"
  "erewhon"
  "esint10"
  "eufm10"
  "fbb"
  "genotype H BRK"
  "genotype RH BRK"
  "genotype RS BRK"
  "genotype S BRK"
  "icomoon"
  "jsMath-cmbx10"
  "jsMath-cmex10"
  "jsMath-cmmi10"
  "jsMath-cmr10"
  "jsMath-cmsy10"
  "jsMath-cmti10"
  "mry_KacstQurn"
  "msam10"
  "msbm10"
  "ntxsups"
  "ocrb10"
  "ocrb5"
  "ocrb6"
  "ocrb7"
  "ocrb8"
  "ocrb9"
  "ori1Uni"
  "padmaa"
  "padmaa-Bold.1.1"
  "rsfs10"
  "stmary10"
  "techno overload BRK"
  "wasy10"
  "waver BRK"
  "ztm"
  "Æ Systematic TT BRK"
  "Ænigma Scrawl 4 BRK")
jtecca commented 2 years ago

I'm also having the same issue on Ubuntu 20.04 as well with Racket 8.4. Modifying the file in https://github.com/racket/drracket/issues/492#issuecomment-983230965 also worked for me. Similar to @rrthomas I also have Helvetica installed via font-config but was getting the code points showing. Happy to help run any debug information that I can.

rrthomas commented 1 year ago

Coming back to Racket for the first time in a while, and I see that the issue is still open (and version 8.5 still has the problem). Is there something wrong with the proposed fix, @rfindler?

soegaard commented 1 year ago

Is there any changes if you choose different fonts in the DrRacket preferences?

image
rrthomas commented 1 year ago

Is there any changes if you choose different fonts in the DrRacket preferences?

No change, no. Indeed, I already have an alternative font configured. As far as I can tell, the font preferences do not affect the font used for this case.

rrthomas commented 1 year ago

An existing Racket installation can be fixed using the equivalent fix to that given above by @rfindler:

  1. sudoedit /usr/share/racket/pkgs/draw-lib/racket/draw/private/font-dir.rkt
  2. Go to line 59, where you should see this expression:
        [(decorative swiss) (case (system-type)
                              [(windows) "Arial"]
                              [else "Helvetica"])]
  1. Change it to this:
        [(decorative swiss) (case (system-type)
                              [(windows) "Arial"]
                              [(macosx) "Helvetica"]
                              [else "Nimbus Sans"])]
  2. Restart DrRacket
rfindler commented 1 year ago

@jtecca @rrthomas can you try a different change? If you open that same file and change the cond to this:

        [(decorative swiss) (case (system-type)
                              [(windows) "Arial"]
                              [(macosx) "Helvetica"]
                              [else "Helvetica,Sans"])]

and restart DrRacket, do you get the same improved result?

jtecca commented 1 year ago

@rfindler I'm now on DrRacket 8.5, and the update broke the fix that we talked about earlier in this thread (I was seeing codepoints after I upgraded).

I made your change, but I still see the codepoints instead of the font.

Replacing the else case in the cond with "Nimbus Sans" as @rrthomas works, but I realize that doesn't exactly solve the problem of selecting a generic sans font. I also replaced "Helvetica,Sans" with just "Sans" which properly selected a sans-serif font.

rrthomas commented 1 year ago

@rfindler, I get the same results as @jtecca.

rfindler commented 1 year ago

How did you install Helvetica?

rrthomas commented 1 year ago

I have a PostScript 1 version in my user .fonts directory (this is shown in the output of fc-list, above).

rfindler commented 1 year ago

Is that something I can replicate on my machine? I'm sorry, I'm not as familiar with ubuntu and google isn't turning up any helpful advice.

rrthomas commented 1 year ago

The configuration of a per-user .fonts directory is handled in /etc/fonts/fonts.conf, with the following top-level configuration tag:

        <dir>~/.fonts</dir>

But I would be surprised if the location of the font mattered. It seems to me that there are two odd things here:

  1. Why, although fc-list displays Helvetica, does Racket not get it?
  2. Why does this matter? Is it because there's no fallback in case the requested font is not found?
  3. Bonus point: you seemed to expect above that configuring "Helvetica,Sans" would try Helvetica with a fallback to Sans, but it didn't. What's going on there?
rfindler commented 1 year ago

My best guess currently is that this version of Helvetica is upsetting something somewhere (either in Racket or in the libraries that Racket is using). But I'm not very confident about this, so I was trying to reproduce the issue on my machine, but failing to do so.

A fallback would be to simply change the default to "Sans". This will be a slightly different font for many, but perhaps it will also start working for everyone which would probably be an improvement overall.