nushell / nushell.github.io

Nushell's main website, blog, book, and more
https://www.nushell.sh/book/
MIT License
183 stars 431 forks source link

Better tables in examples #11

Closed sophiajt closed 3 months ago

sophiajt commented 4 years ago

I noticed some people talking about how tables looked in different browsers on Reddit, and then when I checked nushell.sh I noticed a similar thing. Here's what I see in Firefox+Windows:

image

I wonder if there's a way to either render this the same across browsers, or if maybe we should just put an image there instead.

sophiajt commented 4 years ago

Even fancier: like the scripts we use to create the examples, maybe there's a way to script creating those images (if we end up using images)

Aloso commented 4 years ago

I guess a monospaced webfont which includes the box-drawing characters would work.

Aloso commented 4 years ago

My favourite monospace fonts are Source Code Pro and Fira Code.

Source Code Pro:

Source

Fira Code:

Fira

Source Code Pro:

Source2

Fira Code:

Fira2

I especially like Fira Code because it has fancy ligatures (disabled by default, can be enabled with font-feature-settings).

I'd be happy to make a PR to include a font :)

sophiajt commented 4 years ago

@Aloso - if you include the font, does it work across browsers/platforms?

I assume so, but figured I'd ask just to be sure

sophiajt commented 4 years ago

Either font works for me. I like the fira one in the logo, though having the unbroken table lines with Source Code Pro is also nice

Aloso commented 4 years ago

The line is only that way because I zoomed before taking the screenshot :D It depends on the font size.

I'll pick Source Code Pro, then.

sophiajt commented 4 years ago

@Aloso sounds good

Aloso commented 4 years ago

@jonathandturner I tried this on my phone. To my surprise using one of these fonts doesn't fix the issue. It might be related to the OS' font stack.

Anyway, I found a workaround, which, unfortunately involves some JS and generates a <u> element for each horizontal line character (, ).

sophiajt commented 4 years ago

As @sebastian-xyz points out, our recent fix to get the font rendering issue (dark-on-dark rendering) fixed, we had to unfix this issue.

We should explore a better solution here.

sophiajt commented 4 years ago

@sebastian-xyz - one thing we could do is instead of relying on the monospaced font, we could draw the tables either using markdown tables (or maybe html tables?) or rendering them to images and using those

sophiajt commented 4 years ago

Also strange (but hopeful): the github renderer for markdown looks fine in Firefox on Windows, if we don't us the shell mode for code snippets:

image

Maybe we can switch to using what they're using?

sophiajt commented 4 years ago

Seems like the easiest fix is just to move the table drawing to use the same top and bottom line as the interior line.

The bold line was very subtle to begin with, and I don't think it's really worth keeping if it causes rendering issues across platforms.

sebastian-xyz commented 4 years ago

I started some research on the different markdown processors on the jekyll website and played around with some of the processors. But I didn't have much success until now.

Seems like the easiest fix is just to move the table drawing to use the same top and bottom line as the interior line.

The bold line was very subtle to begin with, and I don't think it's really worth keeping if it causes rendering issues across platforms.

This is how the table looks like with the thin lines thin_lines

The readbiltity is definitely better. Seems like a good quick fix. We definitely need to find a better way to draw the tables.

sophiajt commented 4 years ago

Yeah, let's just convert to thin lines, then. I've updated a few of the pages just to be sure it will work.

I'll also add a PR to update the actual table drawing to use thin lines too. I figure, we might as well :)

homburg commented 4 years ago

Thin lines still needs some css to render width "monospace width" in chrome on macOS. You can use the default macOS terminal font, with fallback to monospace:

font-family: monospace;

Screenshot 2020-01-09 at 20 38 46

font-family: Menlo, monospace;

Screenshot 2020-01-09 at 20 40 37
sebastian-xyz commented 4 years ago

@homburg - Does this font work across platforms and browsers?

homburg commented 4 years ago

I think Menlo is only installed by default on macOS, but other platforms will fall back to the "monospace" definition.

sophiajt commented 4 years ago

@homburg - our previous fix was something like this, where it should fallback between fonts. Unfortunately, we had to remove the fix because it rendered dark text on dark backgrounds for some versions of Firefox.

Aloso commented 4 years ago

@jonathandturner Which versions are you referring to?

I'm sure this can be fixed, either by adjusting some CSS or by using font-feature-settings.

sebastian-xyz commented 4 years ago

I tested this with font-family: Menlo,Consolas,monospace on windows since Consolas is the default terminal font there. This looked pretty good.

I think the fall back might work this time because the fonts don't need to be added to the source of the website because they are part of the system.

sebastian-xyz commented 4 years ago

This was the example in the discord discussion a few days back:

unknown
Aloso commented 4 years ago

I found the discussion on Discord. Here's what I don't understand:

@jonathandturner @sebastian-xyz I vote to enable the web font again, until we know more.

Aloso commented 4 years ago

If a web font is not an option, we need to list monospaced fonts that are available on common operating systems and support box drawing characters. This could work, but I haven't tested it:

font-family: Consolas, Menlo, Monaco, Hack, Roboto Mono, Droid Sans Mono, Liberation Mono, monospace;
sophiajt commented 4 years ago

Let's give it a try and see if it fixes the issue for people

caio commented 3 years ago

Hi,

https://github.com/nushell/nushell.github.io/blob/668f69319021745c6ebf28c5b8e2a82485ed8ce2/.vuepress/theme/layouts/Layout.vue#L20

Shouldn't there be at least a 'monospace' entry here so that the browser can fall back to whatever is the default monospace font the user configured?

My browser doesn't load remote fonts and I don't have any of the listed fonts installed, so it picks up a serif font and the tables at https://www.nushell.sh/book/ end up looking more like spaghetti.

NotTheDr01ds commented 3 months ago

Checking to see if this can be closed - monospace was added over 4 years ago, the issue was closed, then reopened (unfortunately without any explanation) -- Has anyone reported related issues in the intervening 4 years?

fdncred commented 3 months ago

i think we can close this now. thanks for finding it.

Aloso commented 2 months ago

@fdncred check, for example: https://www.nushell.sh/book/quick_tour.html on Chrome for Android or Firefox for Android. The issue is still present.

fdncred commented 2 months ago

@Aloso can you point to the PR where it was fixed and reverted?

NotTheDr01ds commented 2 months ago

@Aloso The Android issue is #83 and is still open, and yes, I confirmed that it is still an issue. However, this issue was about other platforms, including Windows, and it has been resolved AFAICT.